[Date Prev][Date Next]
Re: (ITS#8483) CMake buildsystem support for LMDB
Content-Type: text/plain; charset="UTF-8"
On 2016-08-20 at 03:32 +0100, Howard Chu wrote:
> firstname.lastname@example.org wrote:
> > Full_Name: Ivan Shapovalov
> > Version: LMDB 0.9.18
> > OS: GNU/Linux
> > URL: ftp://ftp.openldap.org/incoming/ivan-shapovalov-160820.patch
> > Submission from: (NULL) (18.104.22.168)
> > This patch adds a CMake buildsystem for LMDB, side-by-side with
> > existing
> > Makefile.
> > It builds the same targets except coverage tests.
> I am not a fan of CMake. Using it requires learning a whole new set
> documentation in addition to knowing the rules of Make. It comes with
> a huge=C2=A0
> footprint of dependencies, and most people using it are misusing it.
Mastering CMake is a lot easier than just learning to use Make...
> > Rationale for this change: CMake simplifies building of LMDB with
> > non-standard
> > toolchains
> > such as Android NDK which only support their custom buildsystem and
> > CMake (via
> > a
> > provided CMake toolchain configuration file).
> Building for Android is trivial using e.g. agcc
This "agcc" has all flags hard-coded and simply does not work with
third-party NDKs such as CrystaX NDK, which is exactly the point I'm
trying to make.
> > This way, one does not need to extract required compiler flags
> > manually.
> > Moreover, this simplifies life for projects which use CMake and
> > LMDB, because a
> > proper CMake buildsystem allows to e. g. automatically pass
> > transitive
> > dependencies like pthreads to dependent projects.
> Using agcc allows one to build for Android any project that simply
> uses Make,=C2=A0
> which was 100% of them before CMake came along.
This is false, as shown above.
> Transitive dependencies like pthreads, which you have now embedded
> into your=C2=A0
> CMakeLists.txt file, are actually compiler and platform dependent.
> That's why=C2=A0
> the LMDB Makefile sets it in an overridable macro, that a programmer
> easily change on the commandline when invoking make on their chosen
True; this can be fixed.
> Rejecting this patch and all future patches involving CMake. We will
> not use=C2=A0
> this tool ourselves and we will not maintain files that it uses in
> the LMDB=C2=A0
> source tree.
If you don't like CMake out of personal motives, please just say so and
don't cover it with made-up reasons.
> If you need to integrate LMDB into a particular CMake-based project,
> it's a=C2=A0
> lot simpler than this. E.g.,
> There's no reason to duplicate the entire Makefile when you're
> embedding LMDB=C2=A0
> into some other project. This also shows the correct way to use CMake
> propagate threads dependencies.
This file does not cover packaging and exporting targets, which is
crucial when building multiple dependent projects in a staging tree (e.
g. cross-compiling stuff). You see, it is easier to have a single
correct build script in the upstream repo than to have many ad-hoc
build scripts in each project, each deficient in its own regard.
Ivan Shapovalov / intelfx /
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
-----END PGP SIGNATURE-----