diff --git a/fuzz/meson.build b/fuzz/meson.build index e0d59238d7..3886616ccd 100644 --- a/fuzz/meson.build +++ b/fuzz/meson.build @@ -6,8 +6,8 @@ subdir('tests') fuzz_sources = ['fuzz.cc', 'fuzz.h'] cpp_flags = [ - f'-DKEA_LFC_INSTALLATION="@PREFIX@/sbin/kea-lfc"', - f'-DKEA_LFC_SOURCES="@TOP_BUILD_DIR@/src/bin/lfc/kea-lfc"', + f'-DKEA_LFC_INSTALLATION="@KEA_LFC_INSTALLED@"', + f'-DKEA_LFC_SOURCES="@KEA_LFC_BUILT@"', ] if FUZZING_WITH_CLUSTERFUZZLITE cpp_flags = ['-fsanitize=fuzzer', '-gdwarf-4'] diff --git a/meson.build b/meson.build index d5a79bf79a..c483c40021 100644 --- a/meson.build +++ b/meson.build @@ -45,11 +45,15 @@ PREFIX = get_option('prefix') SBINDIR = get_option('sbindir') SYSCONFDIR = get_option('sysconfdir') -DHCP_DATA_DIR = LOCALSTATEDIR / 'run/kea' -DEFAULT_HOOKS_PATH = PREFIX / 'lib/kea/hooks' -TEST_CA_DIR = TOP_SOURCE_DIR / 'src/lib/asiolink/testutils/ca' DATABASE_SCRIPTS_DIR = TOP_BUILD_DIR / 'src/share/database/scripts' +DHCP_DATA_DIR = LOCALSTATEDIR / 'run/kea' +DEFAULT_HOOKS_PATH = PREFIX / LIBDIR / 'kea/hooks' +KEA_ADMIN_BUILT = TOP_BUILD_DIR / 'src/bin/lfc/kea-admin' +KEA_ADMIN_INSTALLED = PREFIX / SBINDIR / 'kea-admin' +KEA_LFC_BUILT = TOP_BUILD_DIR / 'src/bin/lfc/kea-lfc' +KEA_LFC_INSTALLED = PREFIX / SBINDIR / 'kea-lfc' LEGAL_LOG_DIR = PREFIX / LOCALSTATEDIR / 'lib/kea' +TEST_CA_DIR = TOP_SOURCE_DIR / 'src/lib/asiolink/testutils/ca' #### Build Options diff --git a/src/bin/admin/meson.build b/src/bin/admin/meson.build index 26ce35c4b1..6ba28e8db5 100644 --- a/src/bin/admin/meson.build +++ b/src/bin/admin/meson.build @@ -1,14 +1,14 @@ kea_admin_conf_data = configuration_data() kea_admin_conf_data.set('prefix', PREFIX) -kea_admin_conf_data.set('exec_prefix', PREFIX) -kea_admin_conf_data.set('datarootdir', PREFIX / DATADIR) +kea_admin_conf_data.set('exec_prefix', '${prefix}') +kea_admin_conf_data.set('datarootdir', '${prefix}/@DATADIR@') kea_admin_conf_data.set('PACKAGE', 'kea') kea_admin_conf_data.set('PACKAGE_NAME', 'kea') kea_admin_conf_data.set('PACKAGE_VERSION', PROJECT_VERSION) kea_admin_conf_data.set('EXTENDED_VERSION', PROJECT_VERSION + ' (tarball)') kea_admin_conf_data.set('abs_top_builddir', TOP_BUILD_DIR) kea_admin_conf_data.set('abs_top_srcdir', TOP_SOURCE_DIR) -kea_admin_conf_data.set('sbindir', PREFIX / SBINDIR) +kea_admin_conf_data.set('sbindir', f'${prefix}/@SBINDIR@') kea_admin_conf_data.set('variables', 'variables') configure_file( input: 'kea-admin.in', diff --git a/src/bin/agent/meson.build b/src/bin/agent/meson.build index fa66ad2b88..3385ae7f27 100644 --- a/src/bin/agent/meson.build +++ b/src/bin/agent/meson.build @@ -20,7 +20,7 @@ executable( dependencies: [CRYPTO_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [agent_lib] + LIBS_BUILT_SO_FAR, ) subdir('tests') diff --git a/src/bin/d2/meson.build b/src/bin/d2/meson.build index dd2467cde9..70166296da 100644 --- a/src/bin/d2/meson.build +++ b/src/bin/d2/meson.build @@ -24,7 +24,7 @@ executable( dependencies: [CRYPTO_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [d2_lib] + LIBS_BUILT_SO_FAR, ) subdir('tests') diff --git a/src/bin/dhcp4/meson.build b/src/bin/dhcp4/meson.build index 1d4cebb517..7ea035d934 100644 --- a/src/bin/dhcp4/meson.build +++ b/src/bin/dhcp4/meson.build @@ -19,7 +19,7 @@ kea_dhcp4 = executable( dependencies: [CRYPTO_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [dhcp4_lib] + LIBS_BUILT_SO_FAR, ) subdir('tests') diff --git a/src/bin/dhcp4/tests/meson.build b/src/bin/dhcp4/tests/meson.build index 6a0d33c149..4f699eb56a 100644 --- a/src/bin/dhcp4/tests/meson.build +++ b/src/bin/dhcp4/tests/meson.build @@ -138,7 +138,7 @@ kea_dhcp4_tests = executable( f'-DCFG_EXAMPLES="@TOP_SOURCE_DIR@/doc/examples/kea4"', f'-DDHCP_DATA_DIR="@current_build_dir@"', f'-DSYNTAX_FILE="@current_source_dir@/../dhcp4_parser.yy"', - f'-DKEA_LFC_EXECUTABLE="@TOP_BUILD_DIR@/src/bin/lfc/kea-lfc"', + f'-DKEA_LFC_EXECUTABLE="@KEA_LFC_BUILT@"', f'-DTEST_CA_DIR="@TEST_CA_DIR@"', ], dependencies: dhcp4_tests_deps, diff --git a/src/bin/dhcp6/meson.build b/src/bin/dhcp6/meson.build index 359a77559b..5c9a707e00 100644 --- a/src/bin/dhcp6/meson.build +++ b/src/bin/dhcp6/meson.build @@ -20,7 +20,7 @@ kea_dhcp6 = executable( dependencies: [CRYPTO_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [dhcp6_lib] + LIBS_BUILT_SO_FAR, ) subdir('tests') diff --git a/src/bin/dhcp6/tests/meson.build b/src/bin/dhcp6/tests/meson.build index ccc69ce498..c62f05bd24 100644 --- a/src/bin/dhcp6/tests/meson.build +++ b/src/bin/dhcp6/tests/meson.build @@ -140,7 +140,7 @@ kea_dhcp6_tests = executable( f'-DCFG_EXAMPLES="@TOP_SOURCE_DIR@/doc/examples/kea6"', f'-DDHCP_DATA_DIR="@current_build_dir@"', f'-DSYNTAX_FILE="@current_source_dir@/../dhcp6_parser.yy"', - f'-DKEA_LFC_EXECUTABLE="@TOP_BUILD_DIR@/src/bin/lfc/kea-lfc"', + f'-DKEA_LFC_EXECUTABLE="@KEA_LFC_BUILT@"', f'-DTEST_CA_DIR="@TEST_CA_DIR@"', ], dependencies: dhcp6_tests_deps, diff --git a/src/bin/keactrl/meson.build b/src/bin/keactrl/meson.build index 5d72d2e093..c1b3fe34a7 100644 --- a/src/bin/keactrl/meson.build +++ b/src/bin/keactrl/meson.build @@ -1,9 +1,9 @@ keactrl_conf_data = configuration_data() keactrl_conf_data.set('prefix', PREFIX) -keactrl_conf_data.set('sysconfdir', PREFIX / SYSCONFDIR) +keactrl_conf_data.set('sysconfdir', '${prefix}/@SYSCONFDIR@') keactrl_conf_data.set('PACKAGE', 'kea') -keactrl_conf_data.set('exec_prefix', PREFIX) -keactrl_conf_data.set('sbindir', PREFIX / SBINDIR) +keactrl_conf_data.set('exec_prefix', '${prefix}') +keactrl_conf_data.set('sbindir', '${prefix}/' + SBINDIR) if NETCONF_DEP.found() keactrl_conf_data.set('HAVE_NETCONF', 'yes') else diff --git a/src/bin/lfc/meson.build b/src/bin/lfc/meson.build index 2a74ce48fc..e66e6210f8 100644 --- a/src/bin/lfc/meson.build +++ b/src/bin/lfc/meson.build @@ -10,7 +10,7 @@ kea_lfc = executable( 'main.cc', include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [lfc_lib] + LIBS_BUILT_SO_FAR, ) subdir('tests') diff --git a/src/bin/netconf/meson.build b/src/bin/netconf/meson.build index 291eee3e3c..8de19b0302 100644 --- a/src/bin/netconf/meson.build +++ b/src/bin/netconf/meson.build @@ -31,7 +31,7 @@ executable( dependencies: [NETCONF_DEP, CRYPTO_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [netconf_lib] + LIBS_BUILT_SO_FAR, override_options: ['cpp_std=c++20'], ) diff --git a/src/bin/perfdhcp/meson.build b/src/bin/perfdhcp/meson.build index 36c8353d9e..635a5fa008 100644 --- a/src/bin/perfdhcp/meson.build +++ b/src/bin/perfdhcp/meson.build @@ -18,7 +18,7 @@ executable( 'main.cc', include_directories: [include_directories('.')] + INCLUDES, install: true, - install_dir: 'sbin', + install_dir: SBINDIR, link_with: [perfdhcp_lib] + LIBS_BUILT_SO_FAR, ) subdir('tests') diff --git a/src/lib/dhcpsrv/meson.build b/src/lib/dhcpsrv/meson.build index b5aa74bea8..8d4b1ab470 100644 --- a/src/lib/dhcpsrv/meson.build +++ b/src/lib/dhcpsrv/meson.build @@ -93,7 +93,7 @@ kea_dhcpsrv_lib = shared_library( sources, cpp_args: [ f'-DDHCP_DATA_DIR="@PREFIX@/@DHCP_DATA_DIR@"', - f'-DKEA_LFC_EXECUTABLE="@PREFIX@/@SBINDIR@/kea-lfc"', + f'-DKEA_LFC_EXECUTABLE="@KEA_LFC_INSTALLED@"', ], dependencies: [CRYPTO_DEP], include_directories: [include_directories('.')] + INCLUDES, diff --git a/src/lib/dhcpsrv/tests/meson.build b/src/lib/dhcpsrv/tests/meson.build index 13e98a130d..1d2ebc2b87 100644 --- a/src/lib/dhcpsrv/tests/meson.build +++ b/src/lib/dhcpsrv/tests/meson.build @@ -131,7 +131,7 @@ kea_dhcpsrv_tests = executable( cpp_args: [ f'-DTEST_DATA_BUILDDIR="@current_build_dir@"', f'-DDHCP_DATA_DIR="@current_build_dir@"', - f'-DKEA_LFC_BUILD_DIR="@TOP_BUILD_DIR@/src/bin/lfc"', + f'-DKEA_LFC_BUILD_DIR="@KEA_LFC_BUILT@"', f'-DDEFAULT_HOOKS_PATH="@DEFAULT_HOOKS_PATH@"', ], dependencies: [CRYPTO_DEP, GTEST_DEP], diff --git a/src/lib/mysql/meson.build b/src/lib/mysql/meson.build index c750222ac9..e3142ef243 100644 --- a/src/lib/mysql/meson.build +++ b/src/lib/mysql/meson.build @@ -6,7 +6,7 @@ kea_mysql_lib = shared_library( 'kea-mysql', 'mysql_binding.cc', 'mysql_connection.cc', - cpp_args: [f'-DKEA_ADMIN="@PREFIX@/@SBINDIR@/kea-admin"'], + cpp_args: [f'-DKEA_ADMIN="@KEA_ADMIN_INSTALLED@"'], dependencies: [MYSQL_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, diff --git a/src/lib/mysql/tests/meson.build b/src/lib/mysql/tests/meson.build index c494058479..58e3040a69 100644 --- a/src/lib/mysql/tests/meson.build +++ b/src/lib/mysql/tests/meson.build @@ -14,7 +14,7 @@ kea_mysql_tests = executable( 'run_unittests.cc', cpp_args: [ f'-DTEST_CA_DIR="@TEST_CA_DIR@"', - f'-DKEA_ADMIN="@TOP_BUILD_DIR@/src/bin/admin/kea-admin"', + f'-DKEA_ADMIN="@KEA_ADMIN_BUILT@"', ], dependencies: [GTEST_DEP, MYSQL_DEP], include_directories: [include_directories('.')] + INCLUDES, diff --git a/src/lib/pgsql/meson.build b/src/lib/pgsql/meson.build index 41de5ce4d0..31e223dbce 100644 --- a/src/lib/pgsql/meson.build +++ b/src/lib/pgsql/meson.build @@ -6,7 +6,7 @@ kea_pgsql_lib = shared_library( 'kea-pgsql', 'pgsql_connection.cc', 'pgsql_exchange.cc', - cpp_args: [f'-DKEA_ADMIN="@PREFIX@/@SBINDIR@/kea-admin"'], + cpp_args: [f'-DKEA_ADMIN="@KEA_ADMIN_INSTALLED@"'], dependencies: [POSTGRESQL_DEP], include_directories: [include_directories('.')] + INCLUDES, install: true, diff --git a/src/lib/pgsql/tests/meson.build b/src/lib/pgsql/tests/meson.build index d86b221383..3173241c16 100644 --- a/src/lib/pgsql/tests/meson.build +++ b/src/lib/pgsql/tests/meson.build @@ -15,7 +15,7 @@ kea_pgsql_tests = executable( 'run_unittests.cc', cpp_args: [ f'-DTEST_CA_DIR="@TEST_CA_DIR@"', - f'-DKEA_ADMIN="@TOP_BUILD_DIR@/src/bin/admin/kea-admin"', + f'-DKEA_ADMIN="@KEA_ADMIN_BUILT@"', ], dependencies: [GTEST_DEP, POSTGRESQL_DEP], include_directories: [include_directories('.')] + INCLUDES, diff --git a/subprojects/krb5/meson.build b/subprojects/krb5/meson.build index 7f1dad7589..28622555b7 100644 --- a/subprojects/krb5/meson.build +++ b/subprojects/krb5/meson.build @@ -4,11 +4,27 @@ krb5 = disabler() krb5_config = find_program('krb5-config', required: false) if krb5_config.found() + # Detect vendor. + vendor_cmd = run_command([krb5_config, '--vendor'], check: false) + vendor = 'unknown' + if vendor_cmd.returncode() == 0 + vendor = vendor_cmd.stdout().strip() + else + all = run_command([krb5_config, '--all'], check: false) + if all.returncode() == 0 + foreach i : all.stdout().split('\n') + if i.startswith('Vendor') + vendor = i.split(':')[1].strip() + break + endif + endforeach + endif + endif + cflags = run_command([krb5_config, '--cflags', 'gssapi'], check: false) libs = run_command([krb5_config, '--libs', 'gssapi'], check: false) version = run_command([krb5_config, '--version'], check: false) - vendor = run_command([krb5_config, '--vendor'], check: false) - if cflags.returncode() == 0 and libs.returncode() == 0 and version.returncode() == 0 and vendor.returncode() == 0 + if cflags.returncode() == 0 and libs.returncode() == 0 and version.returncode() == 0 krb5_version = version.stdout().strip() krb5 = declare_dependency( compile_args: cflags.stdout().split(),