diff --git a/configure b/configure index 4deca94235ccc887b607f5191e94bb7ca7a8a5bc..313579019d11de6c0e4d45358b4cce473a8857d2 100755 --- a/configure +++ b/configure @@ -322,7 +322,6 @@ trace_file="trace" coroutine="" tls_priority="NORMAL" plugins="$default_feature" -secret_keyring="$default_feature" meson="" meson_args="" ninja="" @@ -1009,10 +1008,6 @@ for opt do ;; --gdb=*) gdb_bin="$optarg" ;; - --enable-keyring) secret_keyring="yes" - ;; - --disable-keyring) secret_keyring="no" - ;; --enable-gio) gio=yes ;; --disable-gio) gio=no @@ -2440,41 +2435,6 @@ case "$slirp" in ;; esac -########################################## -# check for usable __NR_keyctl syscall - -if test "$linux" = "yes" ; then - - have_keyring=no - cat > $TMPC << EOF -#include <errno.h> -#include <asm/unistd.h> -#include <linux/keyctl.h> -#include <unistd.h> -int main(void) { - return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0); -} -EOF - if compile_prog "" "" ; then - have_keyring=yes - fi -fi -if test "$secret_keyring" != "no" -then - if test "$have_keyring" = "yes" - then - secret_keyring=yes - else - if test "$secret_keyring" = "yes" - then - error_exit "syscall __NR_keyctl requested, \ -but not implemented on your system" - else - secret_keyring=no - fi - fi -fi - ########################################## # End of CC checks # After here, no more $cc or $ld runs @@ -2760,10 +2720,6 @@ if test -n "$gdb_bin"; then fi fi -if test "$secret_keyring" = "yes" ; then - echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak -fi - echo "ROMS=$roms" >> $config_host_mak echo "MAKE=$make" >> $config_host_mak echo "PYTHON=$python" >> $config_host_mak diff --git a/crypto/meson.build b/crypto/meson.build index 19c44bea8980a18aaabf1b8b1e18260ebf4de8cf..f065f2f277bba9bdc09751244a2865d05a885a94 100644 --- a/crypto/meson.build +++ b/crypto/meson.build @@ -34,7 +34,9 @@ else crypto_ss.add(files('hash-glib.c', 'hmac-glib.c', 'pbkdf-stub.c')) endif -crypto_ss.add(when: 'CONFIG_SECRET_KEYRING', if_true: files('secret_keyring.c')) +if have_keyring + crypto_ss.add(files('secret_keyring.c')) +endif if have_afalg crypto_ss.add(if_true: files('afalg.c', 'cipher-afalg.c', 'hash-afalg.c')) endif diff --git a/meson.build b/meson.build index 9c0343675679bc0faae2fa883cd3e1ffa1d0fc62..64161dffe72a1567fe4d9cee034e9ed432293684 100644 --- a/meson.build +++ b/meson.build @@ -1940,6 +1940,19 @@ config_host_data.set('CONFIG_GETAUXVAL', cc.links(gnu_source_prefix + ''' return getauxval(AT_HWCAP) == 0; }''')) +have_keyring = get_option('keyring') \ + .require(targetos == 'linux', error_message: 'keyring is only available on Linux') \ + .require(cc.compiles(''' + #include <errno.h> + #include <asm/unistd.h> + #include <linux/keyctl.h> + #include <sys/syscall.h> + #include <unistd.h> + int main(void) { + return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0); + }'''), error_message: 'keyctl syscall not available on this system').allowed() +config_host_data.set('CONFIG_SECRET_KEYRING', have_keyring) + have_cpuid_h = cc.links(''' #include <cpuid.h> int main(void) { @@ -3698,7 +3711,7 @@ if nettle.found() endif summary_info += {'AF_ALG support': have_afalg} summary_info += {'rng-none': get_option('rng_none')} -summary_info += {'Linux keyring': config_host.has_key('CONFIG_SECRET_KEYRING')} +summary_info += {'Linux keyring': have_keyring} summary(summary_info, bool_yn: true, section: 'Crypto') # Libraries diff --git a/meson_options.txt b/meson_options.txt index 3bdf4094970bb359fd5af95c1ab05014e9a69a63..8efdd0193aad481c74731f865ab7c9fb5b0ec1bf 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -90,6 +90,8 @@ option('avx2', type: 'feature', value: 'auto', description: 'AVX2 optimizations') option('avx512f', type: 'feature', value: 'disabled', description: 'AVX512F optimizations') +option('keyring', type: 'feature', value: 'auto', + description: 'Linux keyring support') option('attr', type : 'feature', value : 'auto', description: 'attr/xattr support') diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 838aa38df9f1008d9b9d4ad9f0fbe14937f573c8..3ba4aaf1321caeffc4ac82c1c75bab03d44aac56 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -68,6 +68,7 @@ meson_options_help() { printf "%s\n" ' hvf HVF acceleration support' printf "%s\n" ' iconv Font glyph conversion support' printf "%s\n" ' jack JACK sound support' + printf "%s\n" ' keyring Linux keyring support' printf "%s\n" ' kvm KVM acceleration support' printf "%s\n" ' l2tpv3 l2tpv3 network backend support' printf "%s\n" ' libdaxctl libdaxctl support' @@ -229,6 +230,8 @@ _meson_option_parse() { --disable-install-blobs) printf "%s" -Dinstall_blobs=false ;; --enable-jack) printf "%s" -Djack=enabled ;; --disable-jack) printf "%s" -Djack=disabled ;; + --enable-keyring) printf "%s" -Dkeyring=enabled ;; + --disable-keyring) printf "%s" -Dkeyring=disabled ;; --enable-kvm) printf "%s" -Dkvm=enabled ;; --disable-kvm) printf "%s" -Dkvm=disabled ;; --enable-l2tpv3) printf "%s" -Dl2tpv3=enabled ;;