[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 1/2] crypto: fix build with gcrypt enabled
From: |
Daniel P . Berrangé |
Subject: |
[PATCH v2 1/2] crypto: fix build with gcrypt enabled |
Date: |
Tue, 1 Sep 2020 14:30:49 +0100 |
If nettle is disabled and gcrypt enabled, the compiler and linker flags
needed for gcrypt are not passed.
Gnutls was also not added as a dependancy when gcrypt is enabled.
Attempting to add the library dependencies at the same time as the
source dependencies is error prone, as there are alot of different
rules for picking which sources to use, and some of the source files
use code level conditionals intead. It is thus clearer to add the
library dependencies separately.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
configure | 2 ++
crypto/meson.build | 42 +++++++++++++++++++++++++++++++-----------
meson.build | 5 +++++
3 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/configure b/configure
index 8dc981684b..3dc2431722 100755
--- a/configure
+++ b/configure
@@ -6979,6 +6979,8 @@ if test "$gcrypt" = "yes" ; then
if test "$gcrypt_hmac" = "yes" ; then
echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
fi
+ echo "GCRYPT_CFLAGS=$gcrypt_cflags" >> $config_host_mak
+ echo "GCRYPT_LIBS=$gcrypt_libs" >> $config_host_mak
fi
if test "$nettle" = "yes" ; then
echo "CONFIG_NETTLE=y" >> $config_host_mak
diff --git a/crypto/meson.build b/crypto/meson.build
index 18da7c8541..f6f5ce1ecd 100644
--- a/crypto/meson.build
+++ b/crypto/meson.build
@@ -23,24 +23,35 @@ crypto_ss.add(files(
'tlssession.c',
))
-if 'CONFIG_GCRYPT' in config_host
- wo_nettle = files('hash-gcrypt.c', 'pbkdf-gcrypt.c')
+if 'CONFIG_NETTLE' in config_host
+ crypto_ss.add(files('hash-nettle.c', 'hmac-nettle.c', 'pbkdf-nettle.c'))
+elif 'CONFIG_GCRYPT' in config_host
+ crypto_ss.add(files('hash-gcrypt.c', 'pbkdf-gcrypt.c'))
+ if 'CONFIG_GCRYPT_HMAC' in config_host
+ crypto_ss.add(files('hmac-gcrypt.c'))
+ else
+ crypto_ss.add(files('hmac-glib.c'))
+ endif
else
- wo_nettle = files('hash-glib.c', 'pbkdf-stub.c')
-endif
-if 'CONFIG_GCRYPT_HMAC' not in config_host
- wo_nettle += files('hmac-glib.c')
+ crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c'))
endif
-crypto_ss.add(when: [nettle, 'CONFIG_NETTLE'],
- if_true: files('hash-nettle.c', 'hmac-nettle.c',
'pbkdf-nettle.c'),
- if_false: wo_nettle)
crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true:
files('secret_keyring.c'))
crypto_ss.add(when: 'CONFIG_QEMU_PRIVATE_XTS', if_true: files('xts.c'))
-crypto_ss.add(when: 'CONFIG_GCRYPT_HMAC', if_true: files('hmac-gcrypt.c'))
crypto_ss.add(when: 'CONFIG_AF_ALG', if_true: files('afalg.c',
'cipher-afalg.c', 'hash-afalg.c'))
crypto_ss.add(when: 'CONFIG_GNUTLS', if_true: files('tls-cipher-suites.c'))
+if 'CONFIG_NETTLE' in config_host
+ crypto_ss.add(nettle)
+elif 'CONFIG_GCRYPT' in config_host
+ crypto_ss.add(gcrypt)
+endif
+
+if 'CONFIG_GNUTLS' in config_host
+ crypto_ss.add(gnutls)
+endif
+
+
crypto_ss = crypto_ss.apply(config_host, strict: false)
libcrypto = static_library('crypto', crypto_ss.sources() + genh,
dependencies: [crypto_ss.dependencies()],
@@ -52,12 +63,21 @@ crypto = declare_dependency(link_whole: libcrypto,
util_ss.add(files('aes.c'))
util_ss.add(files('init.c'))
+
if 'CONFIG_GCRYPT' in config_host
util_ss.add(files('random-gcrypt.c'))
elif 'CONFIG_GNUTLS' in config_host
- util_ss.add(files('random-gnutls.c'), gnutls)
+ util_ss.add(files('random-gnutls.c'))
elif 'CONFIG_RNG_NONE' in config_host
util_ss.add(files('random-none.c'))
else
util_ss.add(files('random-platform.c'))
endif
+
+if 'CONFIG_GCRYPT' in config_host
+ util_ss.add(gcrypt)
+endif
+
+if 'CONFIG_GNUTLS' in config_host
+ util_ss.add(gnutls)
+endif
diff --git a/meson.build b/meson.build
index 1e7aee85e3..bc6aac4ce7 100644
--- a/meson.build
+++ b/meson.build
@@ -114,6 +114,11 @@ urcubp = not_found
if 'CONFIG_TRACE_UST' in config_host
urcubp = declare_dependency(link_args: config_host['URCU_BP_LIBS'].split())
endif
+gcrypt = not_found
+if 'CONFIG_GCRYPT' in config_host
+ gcrypt = declare_dependency(compile_args:
config_host['GCRYPT_CFLAGS'].split(),
+ link_args: config_host['GCRYPT_LIBS'].split())
+endif
nettle = not_found
if 'CONFIG_NETTLE' in config_host
nettle = declare_dependency(compile_args:
config_host['NETTLE_CFLAGS'].split(),
--
2.26.2