--- a/meson.build +++ b/meson.build @@ -300,7 +300,6 @@ endif # Google Test GTEST_DEP = dependency( 'gtest', - fallback: ['gtest', 'gtest_dep'], required: FUZZ_OPT.enabled() or TESTS_OPT.enabled(), ) @@ -363,167 +362,80 @@ conf_data.set('HAVE_PGSQL', POSTGRESQL_D #### Compiler Checks -# The required keyword in cpp.run() is an 1.5.0 feature. -result = cpp.run( - fs.read('compiler-checks/get-cpp-standard.cc'), - name: 'Get cpp standard', -) -if result.returncode() == 0 - cpp_standard = result.stdout().strip() -else - error('C++ standard is unknown') -endif -message(f'Detected C++ standard (__cplusplus value) is @cpp_standard@.') -cpp_std_opt = get_option('cpp_std') -no_cpp_std_opt_msg = 'Please set a C++ standard by passing the -D cpp_std argument to meson.' -cpp_std_opt_msg = f'-D cpp_std=@cpp_std_opt@ is not enough.' -if cpp_standard.version_compare('<201100') - msgs = [ - 'Kea requires at least C++11 to build.', - 'Recommended C++ standard is C++14 but some dependencies require at least C++20', - ] - if cpp_std_opt == 'none' - msgs += no_cpp_std_opt_msg - else - msgs += cpp_std_opt_msg - endif - error('\n'.join(msgs)) -endif -if cpp_standard.version_compare('<201400') - result = cpp.run( - fs.read('compiler-checks/boost-math-cpp14.cc'), - name: 'BOOST_MATH_REQUIRES_CPP14', - dependencies: [boost_dep, threads_dep], - ) - if result.returncode() != 0 - msgs = ['Boost Math requires at least C++14.'] - if cpp_std_opt == 'none' - msgs += no_cpp_std_opt_msg - else - msgs += cpp_std_opt_msg - endif - error('\n'.join(msgs)) - endif -endif -if NETCONF_DEP.found() and cpp_standard.version_compare('<202000') - msgs = ['NETCONF dependency requires at least C++20.'] - if cpp_std_opt == 'none' - msgs += no_cpp_std_opt_msg - else - msgs += cpp_std_opt_msg - endif - if netconf_opt.enabled() - error('\n'.join(msgs)) - else - msgs += 'Disabling NETCONF.' - warning('\n'.join(msgs)) - NETCONF_DEP = disabler() - endif -endif -if CRYPTO_DEP.name() == botan.name() and cpp_standard.version_compare('<202000') - msgs = ['Botan dependency requires at least C++20.'] - if cpp_std_opt == 'none' - msgs += no_cpp_std_opt_msg - else - msgs += cpp_std_opt_msg - endif - error('\n'.join(msgs)) -endif - -result = cpp.run( - fs.read('compiler-checks/boost-has-threads.cc'), - dependencies: [boost_dep, threads_dep], - name: 'BOOST_HAS_THREADS', -) -if result.returncode() != 0 - error('boost is not configured to use threads') -endif - -if cpp.has_header('boost/regex.h', dependencies: [boost_dep], required: false) - result = cpp.run( - fs.read('compiler-checks/boost-regex.cc'), - dependencies: [boost_dep, threads_dep], - name: 'GET_SYSTEM_VS_BOOST_REGEX_HEADER', - ) - if result.returncode() != 0 - error('boost/regex.h is used in place of system regex.h') - endif -endif - -result = cpp.run( +result = cpp.compiles( fs.read('compiler-checks/chrono-same-duration.cc'), name: 'CHRONO_SAME_DURATION', ) -conf_data.set('CHRONO_SAME_DURATION', result.returncode() == 0) +conf_data.set('CHRONO_SAME_DURATION', result) if CRYPTO_DEP.name() == openssl.name() - result1 = cpp.run( + result1 = cpp.compiles( fs.read('compiler-checks/have-generic-tls-method.cc'), name: 'HAVE_GENERIC_TLS_METHOD', dependencies: [boost_dep, CRYPTO_DEP, threads_dep], ) - result2 = cpp.run( + result2 = cpp.compiles( fs.read('compiler-checks/stream-truncated-error.cc'), name: 'HAVE_STREAM_TRUNCATED_ERROR', dependencies: [boost_dep, CRYPTO_DEP, threads_dep], ) - if result1.returncode() != 0 or result2.returncode() != 0 + if not result1 or not result2 error('Boost TLS support broken.') endif endif if CRYPTO_DEP.name() == botan.name() - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/botan-hash.cc'), name: 'CHECK_BOTAN_LIBRARY', dependencies: [boost_dep, CRYPTO_DEP, threads_dep], ) - if result.returncode() != 0 + if not result error('Botan library does not work.') endif endif -result = cpp.run( +result = cpp.compiles( fs.read('compiler-checks/have-optreset.cc'), name: 'HAVE_OPTRESET', ) -conf_data.set('HAVE_OPTRESET', result.returncode() == 0) +conf_data.set('HAVE_OPTRESET', result) -result = cpp.run(fs.read('compiler-checks/have-sa-len.cc'), name: 'HAVE_SA_LEN') -conf_data.set('HAVE_SA_LEN', result.returncode() == 0) +result = cpp.compiles(fs.read('compiler-checks/have-sa-len.cc'), name: 'HAVE_SA_LEN') +conf_data.set('HAVE_SA_LEN', result) -result = cpp.run( +result = cpp.compiles( fs.read('compiler-checks/log4cplus-initializer.cc'), name: 'LOG4CPLUS_INITIALIZER_H', dependencies: [LOG4CPLUS_DEP], ) -conf_data.set('LOG4CPLUS_INITIALIZER_H', result.returncode() == 0) +conf_data.set('LOG4CPLUS_INITIALIZER_H', result) if MYSQL_DEP.found() - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/mysql-my-bool.cc'), name: 'MYSQL_MY_BOOL', dependencies: [MYSQL_DEP], ) - conf_data.set('HAVE_MYSQL_MY_BOOL', result.returncode() == 0) + conf_data.set('HAVE_MYSQL_MY_BOOL', result) - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/mysql-get-option.cc'), name: 'HAVE_MYSQL_GET_OPTION', dependencies: [MYSQL_DEP], ) - conf_data.set('HAVE_MYSQL_GET_OPTION', result.returncode() == 0) + conf_data.set('HAVE_MYSQL_GET_OPTION', result) endif -result = cpp.run( +result = cpp.compiles( fs.read('compiler-checks/fuzzing-with-clusterfuzzlite.cc'), name: 'FUZZING_WITH_CLUSTERFUZZLITE', ) -FUZZING_WITH_CLUSTERFUZZLITE = result.returncode() == 0 +FUZZING_WITH_CLUSTERFUZZLITE = result have_afl = false -result = cpp.run(fs.read('compiler-checks/have-afl.cc'), name: 'HAVE_AFL') -if result.returncode() == 0 +result = cpp.compiles(fs.read('compiler-checks/have-afl.cc'), name: 'HAVE_AFL') +if result have_afl = true endif conf_data.set('HAVE_AFL', have_afl) @@ -534,22 +446,22 @@ if GTEST_DEP.found() if GTEST_DEP.type_name() == 'internal' conf_data.set('HAVE_CREATE_UNIFIED_DIFF', true) else - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/have-create-unified-diff.cc'), name: 'HAVE_CREATE_UNIFIED_DIFF', dependencies: [GTEST_DEP], ) - conf_data.set('HAVE_CREATE_UNIFIED_DIFF', result.returncode() == 0) + conf_data.set('HAVE_CREATE_UNIFIED_DIFF', result) endif endif if KRB5_DEP.found() - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/have-gss-str-to-oid.cc'), name: 'HAVE_GSS_STR_TO_OID', dependencies: [KRB5_DEP], ) - conf_data.set('HAVE_GSS_STR_TO_OID', result.returncode() == 0) + conf_data.set('HAVE_GSS_STR_TO_OID', result) endif #### Other checks. @@ -753,7 +665,7 @@ if result.returncode() == 0 else report_conf_data.set('CXX_VERSION', 'unknown') endif -report_conf_data.set('CXX_STANDARD', cpp_standard) +report_conf_data.set('CXX_STANDARD', '20') compile_args += cpp_args_opt report_conf_data.set('CXX_ARGS', ' '.join(compile_args)) report_conf_data.set('LD_ID', cpp.get_linker_id()) @@ -762,29 +674,25 @@ report_conf_data.set('LD_ARGS', ' '.join report_conf_data.set('PYTHON_PATH', PYTHON.full_path()) report_conf_data.set('PYTHON_VERSION', PYTHON.version()) report_conf_data.set('PKGPYTHONDIR', PKGPYTHONDIR) -result = cpp.run( +result = cpp.compiles( fs.read('compiler-checks/get-boost-version.cc'), dependencies: [boost_dep, threads_dep], name: 'Get Boost version', ) -if result.returncode() == 0 - report_conf_data.set('BOOST_VERSION', result.stdout().strip()) +if result + report_conf_data.set('BOOST_VERSION', boost_dep.version()) else report_conf_data.set('BOOST_VERSION', 'unknown version') endif if CRYPTO_DEP.name() == botan.name() report_conf_data.set('CRYPTO_NAME', 'Botan') report_conf_data.set('SPACES', ' ') - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/get-botan-version.cc'), name: 'Get Botan version', dependencies: [CRYPTO_DEP], ) - if result.returncode() == 0 - version = result.stdout().strip() - else - version = botan.version() - endif + version = botan.version() if version == 'unknown' version = 'unknown version' endif @@ -792,31 +700,23 @@ if CRYPTO_DEP.name() == botan.name() elif CRYPTO_DEP.name() == openssl.name() report_conf_data.set('CRYPTO_NAME', 'OpenSSL') report_conf_data.set('SPACES', ' ') - result = cpp.run( + result = cpp.compiles( fs.read('compiler-checks/get-openssl-version.cc'), name: 'Get OpenSSL version', dependencies: [CRYPTO_DEP], ) - if result.returncode() == 0 - version = result.stdout().strip() - else - version = openssl.version() - endif + version = openssl.version() if version == 'unknown' version = 'unknown version' endif report_conf_data.set('CRYPTO_VERSION', version) endif -result = cpp.run( +result = cpp.compiles( fs.read('compiler-checks/get-log4cplus-version.cc'), name: 'Get Log4cplus version', dependencies: [LOG4CPLUS_DEP], ) -if result.returncode() == 0 - version = result.stdout().strip() -else - version = log4cplus.version() -endif +version = LOG4CPLUS_DEP.version() if version == 'unknown' version = 'unknown version' endif @@ -1091,13 +991,6 @@ pkg.generate( #### More Custom Targets -if TARGETS_GEN_MESSAGES.length() > 0 - alias_target('messages', TARGETS_GEN_MESSAGES) -else - error( - 'No messages to generate. This is probably an error in the meson.build files.', - ) -endif if TARGETS_GEN_PARSER.length() > 0 alias_target('parser', TARGETS_GEN_PARSER) else