Bump the requirement to v2, which means we can remove the
HAVE_ENCHANT_GET_VERSION workaround.
It was released over 8 years ago, with 8 new feature releases since
then and dozens of bugfix releases throughout.
The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 2.2.8 and 2.2.15 respectively.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Bump the requirement to v5.3, which means we can remove all the ifdef
guards.
It was released over 10 years ago, with 2 new feature releases since
then and half a dozen of bugfix releases in the 5.3 branch.
The oldest distributions we target Ubuntu 20.04 and Debian Bullseye,
have 5.3.3 and 5.4.2 respectively.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Remove the local cmake file and associated hacks used to manage GnuTLS.
This gives us less build-system glue code and makes it easier to enforce
a minimum version for GnuTLS.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Use pkg-config to detect libgcrypt, since command `libgcrypt-config` is not
available any more.
Remove patches for Debian/Raspbian Buster and Ubuntu Bionic: detection of
libgcrypt don't work any more with version 1.8.4 on Debian Buster and 1.8.1 on
Ubuntu Bionic (both versions don't provide the file `libgcrypt.pc`).
In python 3.8, in order to link to -lpython3.8, you need to use the
exported pkg-config interface 'python3-embed' (or 'python3-config --libs
--embed'), see https://bugs.python.org/issue36721 for details.
cmake documentation is absolutely atrocious, and I don't know why they
mention all the wrong things to use, and the cargo cult of successfully
writing a cmake build definition (copy-pasting what works from other
projects) also uses all the wrong things. But it turns out it is
possible to correctly link a PkgConfig target despite all that, at
least, *iff* you use cmake >= 3.13. I've chosen option 2, which is to
vendor in cmake >= 3.13's FindPkgConfig module in the previous commit.
Using IMPORTED_TARGET GLOBAL in a pkg-config check will result in a
proper linker target being created. For comparison, this is like using
meson's dependency() target, except meson forces you to do this by
default. The result is that the build system's internal representation
of how to link something, is used instead of manually passing build
flags defined in variables.
This is an important distinction to make, because cmake does not have a
list datatype, and instead turns lists into strings separated by ';'
which are indistinguishable from, like, strings which contain ';'
characters. When you pass the resulting list-which-isn't-really-a-list
to link an executable/library, you either need to preprocess the
variable to replace ';' with ' ' (just in case there are multiple
elements) or use cmake functions which magically know to do this
themselves -- or at least, I assume there are cmake functions that
correctly handle so-called "lists", or there would be no need for
"lists" to exist.
The IMPORTED_TARGET will define a bunch of INTERFACE_* properties which
do seem to do exactly this. The resulting build definition should
actually, correctly, link python, thereby fixing #1398 in a better way.
The current one is anciently ancient, and dates back to commit
4d2925ef1c which vendored this "for old
versions of cmake". Well, currently it just stops using new versions of
FindPkgConfig, so we're stuck on the 2006 version from cmake 2.5.0.
Instead of deleting it entirely (the minimum version of cmake is
currently 3.0) make this vendored file continue to be useful by using it
to vendor in the latest version of FindPkgConfig from cmake 3.16.0-rc3
with a bunch of useful improvements.