summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am65
-rw-r--r--configure.ac36
-rw-r--r--libnm-core/meson.build29
-rw-r--r--meson.build13
-rw-r--r--src/settings/plugins/ifcfg-rh/meson.build1
5 files changed, 110 insertions, 34 deletions
diff --git a/Makefile.am b/Makefile.am
index f61b4e5cb8..c1615108a1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -620,14 +620,6 @@ dflt_cppflags_libnm_core = \
$(SANITIZER_LIB_CFLAGS) \
$(NULL)
-if WITH_GNUTLS
-dflt_cppflags_libnm_core += $(GNUTLS_CFLAGS)
-endif
-
-if WITH_NSS
-dflt_cppflags_libnm_core += $(NSS_CFLAGS)
-endif
-
noinst_LTLIBRARIES += libnm-core/libnm-core.la
GLIB_GENERATED += \
@@ -673,7 +665,6 @@ nodist_libnm_core_libnm_core_la_SOURCES = \
$(libnm_core_lib_c_mkenums)
libnm_core_libnm_core_la_LIBADD = \
- shared/libcsiphash.la \
$(GLIB_LIBS) \
$(UUID_LIBS) \
$(LIBUDEV_LIBS) \
@@ -683,16 +674,6 @@ libnm_core_libnm_core_la_LDFLAGS = \
$(CODE_COVERAGE_LDFLAGS) \
$(SANITIZER_LIB_LDFLAGS)
-if WITH_GNUTLS
-libnm_core_lib_c_real += libnm-core/nm-crypto-gnutls.c
-libnm_core_libnm_core_la_LIBADD += $(GNUTLS_LIBS)
-endif
-
-if WITH_NSS
-libnm_core_lib_c_real += libnm-core/nm-crypto-nss.c
-libnm_core_libnm_core_la_LIBADD += $(NSS_LIBS)
-endif
-
EXTRA_DIST += \
libnm-core/nm-crypto-gnutls.c \
libnm-core/nm-crypto-nss.c \
@@ -718,6 +699,46 @@ dist_dependencies += \
###############################################################################
+if HAVE_CRYPTO_GNUTLS
+if WITH_GNUTLS
+libnm_crypto_lib = libnm-core/libnm-crypto-gnutls.la
+else
+check_ltlibraries += libnm-core/libnm-crypto-gnutls.la
+endif
+
+libnm_core_libnm_crypto_gnutls_la_SOURCES = libnm-core/nm-crypto-gnutls.c
+libnm_core_libnm_crypto_gnutls_la_CPPFLAGS = \
+ $(libnm_core_libnm_core_la_CPPFLAGS) \
+ $(GNUTLS_CFLAGS)
+libnm_core_libnm_crypto_gnutls_la_LDFLAGS = \
+ $(libnm_core_libnm_core_la_LDFLAGS)
+libnm_core_libnm_crypto_gnutls_la_LIBADD = \
+ $(libnm_core_libnm_core_la_LIBADD) \
+ $(GNUTLS_LIBS)
+endif
+
+if HAVE_CRYPTO_NSS
+if WITH_NSS
+libnm_crypto_lib = libnm-core/libnm-crypto-nss.la
+else
+check_ltlibraries += libnm-core/libnm-crypto-nss.la
+endif
+
+libnm_core_libnm_crypto_nss_la_SOURCES = libnm-core/nm-crypto-nss.c
+libnm_core_libnm_crypto_nss_la_CPPFLAGS = \
+ $(libnm_core_libnm_core_la_CPPFLAGS) \
+ $(NSS_CFLAGS)
+libnm_core_libnm_crypto_nss_la_LDFLAGS = \
+ $(libnm_core_libnm_core_la_LDFLAGS)
+libnm_core_libnm_crypto_nss_la_LIBADD = \
+ $(libnm_core_libnm_core_la_LIBADD) \
+ $(NSS_LIBS)
+endif
+
+noinst_LTLIBRARIES += $(libnm_crypto_lib)
+
+###############################################################################
+
check_programs += \
libnm-core/tests/test-compare \
libnm-core/tests/test-crypto \
@@ -764,6 +785,8 @@ nodist_libnm_core_tests_test_general_SOURCES = \
libnm_core_tests_ldadd = \
libnm-core/libnm-core.la \
+ shared/libcsiphash.la \
+ $(libnm_crypto_lib) \
$(GLIB_LIBS)
libnm_core_tests_ldflags = \
@@ -968,6 +991,8 @@ libnm_libnm_utils_la_SOURCES = \
libnm_libnm_utils_la_LIBADD = \
libnm-core/libnm-core.la \
+ shared/libcsiphash.la \
+ $(libnm_crypto_lib) \
introspection/libnmdbus.la \
$(GLIB_LIBS)
@@ -1593,6 +1618,8 @@ endif
src_libNetworkManagerBase_la_LIBADD = \
libnm-core/libnm-core.la \
+ shared/libcsiphash.la \
+ $(libnm_crypto_lib) \
$(GLIB_LIBS) \
$(SYSTEMD_JOURNAL_LIBS) \
$(LIBUDEV_LIBS) \
diff --git a/configure.ac b/configure.ac
index ea1c43f12f..62c7e0392e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -668,21 +668,41 @@ else
fi
AC_SUBST(NM_MODIFY_SYSTEM_POLICY)
+PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.12], [have_crypto_gnutls=yes], [have_crypto_gnutls=no])
+PKG_CHECK_MODULES(NSS, [nss], [have_crypto_nss=yes], [have_crypto_nss=yes])
+if test "${have_crypto_nss}" = "yes"; then
+ # Work around a pkg-config bug (fdo #29801) where exists != usable
+ FOO=`$PKG_CONFIG --cflags --libs nss`
+ if test x"$?" != "x0"; then
+ have_crypto_nss=no
+ fi
+fi
+AM_CONDITIONAL(HAVE_CRYPTO_GNUTLS, test "${have_crypto_gnutls}" = 'yes')
+AM_CONDITIONAL(HAVE_CRYPTO_NSS, test "${have_crypto_nss}" = 'yes')
+if test "${have_crypto_gnutls}" = 'yes'; then
+ AC_DEFINE(HAVE_CRYPTO_GNUTLS, 1, [Define if you have gnutls support])
+else
+ AC_DEFINE(HAVE_CRYPTO_GNUTLS, 0, [Define if you have gnutls support])
+fi
+if test "${have_crypto_nss}" = 'yes'; then
+ AC_DEFINE(HAVE_CRYPTO_NSS, 1, [Define if you have nss support])
+else
+ AC_DEFINE(HAVE_CRYPTO_NSS, 0, [Define if you have nss support])
+fi
+
AC_ARG_WITH(crypto,
AS_HELP_STRING([--with-crypto=nss|gnutls],
[Cryptography library to use for certificate and key operations]),
with_crypto=$withval,
with_crypto=nss)
if test "$with_crypto" = 'nss'; then
- PKG_CHECK_MODULES(NSS, [nss])
-
- # Work around a pkg-config bug (fdo #29801) where exists != usable
- FOO=`$PKG_CONFIG --cflags --libs nss`
- if test x"$?" != "x0"; then
- AC_MSG_ERROR([No usable NSS found])
+ if test "${have_crypto_nss}" != "yes"; then
+ AC_MSG_ERROR([No usable NSS found for --with-crypto=nss])
fi
elif test "$with_crypto" = 'gnutls'; then
- PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.12])
+ if test "${have_crypto_gnutls}" != "yes"; then
+ AC_MSG_ERROR([No usable gnutls found for --with-crypto=gnutls])
+ fi
else
AC_MSG_ERROR([Please choose either 'nss' or 'gnutls' for certificate and crypto operations])
fi
@@ -1385,7 +1405,7 @@ echo " code coverage: $enable_code_coverage"
echo " LTO: $enable_lto"
echo " linker garbage collection: $enable_ld_gc"
echo " JSON validation for libnm: $enable_json_validation"
-echo " crypto: $with_crypto"
+echo " crypto: $with_crypto (have-gnutls: $have_crypto_gnutls, have-nss: $have_crypto_nss)"
echo " sanitizers: $sanitizers"
echo " Mozilla Public Suffix List: $with_libpsl"
echo
diff --git a/libnm-core/meson.build b/libnm-core/meson.build
index 5596ab5716..eb6fcce94b 100644
--- a/libnm-core/meson.build
+++ b/libnm-core/meson.build
@@ -108,7 +108,6 @@ libnm_core_settings_sources = files(
libnm_core_sources = libnm_core_settings_sources + files(
'nm-crypto.c',
- 'nm-crypto-' + crypto + '.c',
'nm-connection.c',
'nm-dbus-utils.c',
'nm-errors.c',
@@ -136,7 +135,6 @@ libnm_core_enum = gnome.mkenums(
)
deps = [
- crypto_dep,
dl_dep,
libudev_dep,
shared_dep,
@@ -154,6 +152,32 @@ if enable_json_validation
deps += jansson_dep
endif
+if (crypto_gnutls_dep.found())
+ libnm_crypto_gnutls = static_library(
+ 'nm-crypto-gnutls',
+ sources: [ 'nm-crypto-gnutls.c' ],
+ dependencies: deps + [ crypto_gnutls_dep ],
+ c_args: cflags
+ )
+endif
+
+if (crypto_nss_dep.found())
+ libnm_crypto_nss = static_library(
+ 'nm-crypto-nss',
+ sources: [ 'nm-crypto-nss.c' ],
+ dependencies: deps + [ crypto_nss_dep ],
+ c_args: cflags
+ )
+endif
+
+if crypto == 'gnutls'
+ libnm_crypto = libnm_crypto_gnutls
+elif crypto == 'nss'
+ libnm_crypto = libnm_crypto_nss
+else
+ error('bug')
+endif
+
libnm_core_sources_all = libnm_core_sources
libnm_core_sources_all += libnm_core_enum
libnm_core_sources_all += shared_nm_meta_setting_c
@@ -165,6 +189,7 @@ libnm_core = static_library(
'nm-core',
sources: libnm_core_sources_all,
dependencies: deps,
+ link_with: libnm_crypto,
c_args: cflags
)
diff --git a/meson.build b/meson.build
index 4695efb2a2..44a7ee7ff5 100644
--- a/meson.build
+++ b/meson.build
@@ -470,12 +470,16 @@ if enable_polkit_agent
endif
config_h.set10('WITH_POLKIT_AGENT', enable_polkit_agent)
-# crypto
+crypto_gnutls_dep = dependency('gnutls', version: '>= 2.12', required: false)
+crypto_nss_dep = dependency('nss', required: false)
+
crypto = get_option('crypto')
if crypto == 'nss'
- crypto_dep = dependency('nss')
+ assert(crypto_nss_dep.found(), 'Requires gnutls crypto support')
+elif crypto == 'gnutls'
+ assert(crypto_gnutls_dep.found(), 'Requires gnutls crypto support')
else
- crypto_dep = dependency('gnutls', version: '>= 2.12')
+ error('bug')
endif
dbus_conf_dir = get_option('dbus_conf_dir')
@@ -1022,7 +1026,8 @@ output += '\n'
output += ' code coverage: ' + get_option('b_coverage').to_string() + '\n'
output += ' LTO: ' + get_option('b_lto').to_string() + '\n'
output += ' Linker garbage collection: ' + enable_ld_gc.to_string() + '\n'
-output += ' JSON validation for libnm: ' + enable_json_validation.to_string () + '\n'
+output += ' JSON validation for libnm: ' + enable_json_validation.to_string() + '\n'
+output += ' crypto: ' + crypto + ' (have-gnutls: ' + crypto_gnutls_dep.found().to_string() + ', have-nss: ' + crypto_nss_dep.found().to_string() + ')\n'
output += ' sanitizers: ' + get_option('b_sanitize') + '\n'
output += ' Mozilla Public Suffix List: ' + enable_libpsl.to_string() + '\n'
message(output)
diff --git a/src/settings/plugins/ifcfg-rh/meson.build b/src/settings/plugins/ifcfg-rh/meson.build
index 00892c22f4..5d9689a52c 100644
--- a/src/settings/plugins/ifcfg-rh/meson.build
+++ b/src/settings/plugins/ifcfg-rh/meson.build
@@ -27,7 +27,6 @@ sources = files(
)
deps = [
- crypto_dep,
nm_dep
]