diff options
Diffstat (limited to 'meson.build')
| -rw-r--r-- | meson.build | 190 |
1 files changed, 114 insertions, 76 deletions
diff --git a/meson.build b/meson.build index 967c97e0..0af69f35 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,7 @@ project( # - add corresponding NM_VERSION_x_y_z macros in # "shared/nm-version-macros.h.in" # - update number in configure.ac - version: '1.20.8', + version: '1.22.0', license: 'GPL2+', default_options: [ 'buildtype=debugoptimized', @@ -65,6 +65,27 @@ libnm_pkgincludedir = join_paths(nm_includedir, libnm_name) nm_debug = get_option('buildtype').contains('debug') +gnome = import('gnome') +i18n = import('i18n') +pkg = import('pkgconfig') + +source_root = meson.current_source_dir() +build_root = meson.current_build_dir() + +po_dir = join_paths(meson.source_root(), 'po') + +intltool_merge = find_program('intltool-merge') +intltool_cache = join_paths(po_dir, '.intltool-merge-cache') +intltool_desktop_cmd = [intltool_merge, '-d', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@'] +intltool_xml_cmd = [intltool_merge, '-x', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@'] + +top_inc = include_directories('.') + +perl = find_program('perl') +xsltproc = find_program('xsltproc') + +check_exports = find_program(join_paths(source_root, 'tools', 'check-exports.sh')) + cc = meson.get_compiler('c') config_h = configuration_data() @@ -116,18 +137,18 @@ common_ldflags = [] enable_ld_gc = get_option('ld_gc') if enable_ld_gc - test_cflags = [ + test_c_flags = [ '-fdata-sections', '-ffunction-sections', ] test_ldflags = ['-Wl,--gc-sections'] - foreach cflag: test_cflags + test_ldflags + foreach cflag: test_c_flags + test_ldflags assert(cc.has_argument(cflag), 'Unused symbol eviction requested but not supported. Use -Dld_gc=false to build without it.') endforeach - common_flags += test_cflags + common_flags += test_c_flags common_ldflags += test_ldflags endif @@ -172,9 +193,9 @@ endif add_project_arguments(common_flags, language: 'c') add_project_link_arguments(common_ldflags, language: 'c') -linker_script_binary = join_paths(meson.source_root(), 'linker-script-binary.ver') -linker_script_devices = join_paths(meson.source_root(), 'linker-script-devices.ver') -linker_script_settings = join_paths(meson.source_root(), 'linker-script-settings.ver') +linker_script_binary = join_paths(source_root, 'linker-script-binary.ver') +linker_script_devices = join_paths(source_root, 'linker-script-devices.ver') +linker_script_settings = join_paths(source_root, 'linker-script-settings.ver') ldflags_linker_script_binary = [ '-Wl,--version-script,@0@'.format(linker_script_binary) ] ldflags_linker_script_devices = [ '-Wl,--version-script,@0@'.format(linker_script_devices) ] @@ -259,9 +280,7 @@ config_h.set_quoted('NM_DIST_VERSION', dist_version) enable_wifi = get_option('wifi') enable_iwd = get_option('iwd') -if enable_iwd - assert(enable_wifi, 'Enabling iwd support requires Wi-Fi support as well') -endif +assert((not enable_iwd) or enable_wifi, 'Enabling iwd support requires Wi-Fi support as well') config_h.set10('WITH_IWD', enable_iwd) enable_wext = get_option('wext') @@ -295,19 +314,19 @@ if enable_introspection assert(gir_dep.found(), 'introspection support was requested, but the gobject-introspection library is not available. Use -Dintrospection=false to build without it.') endif -udev_dir = get_option('udev_dir') -install_udev_dir = (udev_dir != 'no') +udev_udevdir = get_option('udev_dir') +install_udevdir = (udev_udevdir != 'no') -if install_udev_dir and udev_dir == '' - udev_dir = dependency('udev').get_pkgconfig_variable('udevdir') +if install_udevdir and udev_udevdir == '' + udev_udevdir = dependency('udev').get_pkgconfig_variable('udevdir') endif -systemd_system_unit_dir = get_option('systemdsystemunitdir') -install_systemd_unit_dir = (systemd_system_unit_dir != 'no') +systemd_systemdsystemunitdir = get_option('systemdsystemunitdir') +install_systemdunitdir = (systemd_systemdsystemunitdir != 'no') -if install_systemd_unit_dir and systemd_system_unit_dir == '' +if install_systemdunitdir and systemd_systemdsystemunitdir == '' assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it') - systemd_system_unit_dir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir') + systemd_systemdsystemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir') endif enable_systemd_journal = get_option('systemd_journal') @@ -442,11 +461,14 @@ config_h.set10('WITH_JSON_VALIDATION', enable_json_validation) enable_polkit = get_option('polkit') if enable_polkit # FIXME: policydir should be relative to `datadir`, not `prefix`. Fixed in https://gitlab.freedesktop.org/polkit/polkit/merge_requests/2 - polkit_dir = dependency('polkit-gobject-1').get_pkgconfig_variable('policydir', define_variable: ['prefix', nm_prefix]) + polkit_gobject_policydir = dependency('polkit-gobject-1').get_pkgconfig_variable('policydir', define_variable: ['prefix', nm_prefix]) endif -config_default_main_auth_polkit = enable_polkit.to_string() -config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT', config_default_main_auth_polkit) +config_auth_polkit_default = get_option('config_auth_polkit_default') +if config_auth_polkit_default == 'default' + config_auth_polkit_default = (enable_polkit ? 'true' : 'false') +endif +config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT', config_auth_polkit_default) enable_modify_system = get_option('modify_system') @@ -456,14 +478,18 @@ if enable_polkit_agent endif config_h.set10('WITH_POLKIT_AGENT', enable_polkit_agent) -crypto_gnutls_dep = dependency('gnutls', version: '>= 2.12', required: false) -crypto_nss_dep = dependency('nss', required: false) crypto = get_option('crypto') if crypto == 'nss' - assert(crypto_nss_dep.found(), 'Requires gnutls crypto support') + crypto_dep = dependency('nss', required: false) + assert(crypto_dep.found(), 'Requires nss crypto support') elif crypto == 'gnutls' - assert(crypto_gnutls_dep.found(), 'Requires gnutls crypto support') + crypto_dep = dependency( + 'gnutls', + version: '>= 2.12', + required: false, + ) + assert(crypto_dep.found(), 'Requires gnutls crypto support') else error('bug') endif @@ -471,11 +497,11 @@ endif dbus_conf_dir = get_option('dbus_conf_dir') if dbus_conf_dir == '' assert(dbus_dep.found(), 'D-Bus required but not found, please provide a valid system bus config dir') - dbus_conf_dir = join_paths(dbus_dep.get_pkgconfig_variable('sysconfdir'), 'dbus-1', 'system.d') + dbus_conf_dir = join_paths(dbus_dep.get_pkgconfig_variable('sysconfdir', define_variable: ['sysconfdir', nm_sysconfdir]), 'dbus-1', 'system.d') endif -dbus_ifaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir', define_variable: ['datadir', nm_datadir]) -dbus_sys_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir', define_variable: ['datadir', nm_datadir]) +dbus_interfaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir', define_variable: ['datadir', nm_datadir]) +dbus_system_bus_services_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir', define_variable: ['datadir', nm_datadir]) # pppd enable_ppp = get_option('ppp') @@ -502,6 +528,9 @@ config_h.set10('WITH_PPP', enable_ppp) enable_modem_manager = get_option('modem_manager') if enable_modem_manager mm_glib_dep = dependency('mm-glib', version: '>= 0.7.991') + + mobile_broadband_provider_info_database = dependency('mobile-broadband-provider-info').get_pkgconfig_variable('database') + config_h.set_quoted('MOBILE_BROADBAND_PROVIDER_INFO_DATABASE', mobile_broadband_provider_info_database) endif # Bluez5 DUN support @@ -635,9 +664,10 @@ if enable_libpsl endif config_h.set10('WITH_LIBPSL', enable_libpsl) +libcurl_dep = dependency('libcurl', version: '>= 7.24.0', required: false) + enable_concheck = get_option('concheck') if enable_concheck - libcurl_dep = dependency('libcurl', version: '>= 7.24.0', required: false) assert(libcurl_dep.found(), 'concheck requires libcurl library. Use -Dconcheck=false to disable it') endif config_h.set10('WITH_CONCHECK', enable_concheck) @@ -668,6 +698,11 @@ if enable_nmtui assert(newt_dep.found(), 'You must have libnewt installed to build nmtui. Use -Dnmtui=false to disable it') endif +enable_nm_cloud_setup = get_option('nm_cloud_setup') +if enable_nm_cloud_setup + assert(libcurl_dep.found(), 'nm-cloud-setup requires libcurl library. Use -Dnm_cloud_setup=false to disable it') +endif + more_asserts = get_option('more_asserts') if more_asserts == 'no' more_asserts = 0 @@ -715,7 +750,7 @@ endif tests = get_option('tests') enable_tests = (tests != 'no') require_root_tests = (tests == 'root') -test_script = find_program(join_paths(meson.source_root(), 'tools', 'run-nm-test.sh')) +test_script = find_program(join_paths(source_root, 'tools', 'run-nm-test.sh')) # valgrind locations = get_option('valgrind') @@ -728,13 +763,13 @@ endif if enable_valgrind valgrind_suppressions_path = get_option('valgrind_suppressions') if valgrind_suppressions_path == '' - valgrind_suppressions_path = join_paths(meson.source_root(), 'valgrind.suppressions') + valgrind_suppressions_path = join_paths(source_root, 'valgrind.suppressions') endif endif test_args = [ '--called-from-make', - meson.build_root(), + build_root, '', enable_valgrind ? valgrind.path() : '', enable_valgrind ? valgrind_suppressions_path : '', @@ -748,6 +783,27 @@ if python.found() config_h.set_quoted('TEST_NM_PYTHON', python.path()) endif +data_conf = configuration_data() +data_conf.set('DISTRO_NETWORK_SERVICE', (enable_ifcfg_rh ? 'network.service' : '')) +data_conf.set('NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT', config_default_logging_audit) +data_conf.set('NM_CONFIG_DEFAULT_LOGGING_BACKEND_TEXT', config_logging_backend_default) +data_conf.set('NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_TEXT', config_auth_polkit_default) +data_conf.set('NM_CONFIG_DEFAULT_MAIN_DHCP', config_dhcp_default) +data_conf.set('NM_CONFIG_DEFAULT_MAIN_RC_MANAGER', config_dns_rc_manager_default) +data_conf.set('NM_MAJOR_VERSION', nm_major_version) +data_conf.set('NM_MICRO_VERSION', nm_micro_version) +data_conf.set('NM_MINOR_VERSION', nm_minor_version) +data_conf.set('NM_MODIFY_SYSTEM_POLICY', (enable_modify_system ? 'yes' : 'auth_admin_keep')) +data_conf.set('NM_VERSION', nm_version) +data_conf.set('VERSION', nm_version) +data_conf.set('bindir', nm_bindir) +data_conf.set('libexecdir', nm_libexecdir) +data_conf.set('localstatedir', nm_localstatedir) +data_conf.set('nmrundir', nm_pkgrundir) +data_conf.set('nmstatedir', nm_pkgstatedir) +data_conf.set('sbindir', nm_sbindir) +data_conf.set('sysconfdir', nm_sysconfdir) + # check if we can build setting property documentation ''' build_docs=no @@ -780,39 +836,8 @@ else fi ''' -gnome = import('gnome') -i18n = import('i18n') -pkg = import('pkgconfig') - -po_dir = join_paths(meson.source_root(), 'po') - -intltool_merge = find_program('intltool-merge') -intltool_cache = join_paths(po_dir, '.intltool-merge-cache') -intltool_desktop_cmd = [intltool_merge, '-d', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@'] -intltool_xml_cmd = [intltool_merge, '-x', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@'] - -perl = find_program('perl') -xsltproc = find_program('xsltproc') - -check_exports = find_program(join_paths(meson.source_root(), 'tools', 'check-exports.sh')) - content_files = [] -# FIXME: every plugin calls to this: -''' -set_sanitizer_env = \ - [ -n "$(SANITIZER_ENV)" ] && export $(SANITIZER_ENV) ; \ - if [ -n "$(1)" ] && echo $(CFLAGS) | grep -e -fsanitize=address ; then \ - export LD_PRELOAD="$${LD_PRELOAD}:$$(ldd $(1) | grep libasan\.so\.. -o | head -n 1)"; \ - fi - -check_so_symbols = \ - $(call set_sanitizer_env,$(1)); \ - LD_BIND_NOW=1 LD_PRELOAD=$${LD_PRELOAD}:$(1) $(builddir)/src/NetworkManager --version >/dev/null -''' - -top_inc = include_directories('.') - subdir('introspection') subdir('shared') subdir('libnm-core') @@ -832,6 +857,11 @@ subdir('examples/C/glib') enable_qt = get_option('qt') if enable_qt add_languages('cpp') + + qt_core_dep = dependency('QtCore', version: '>= 4') + qt_dbus_dep = dependency('QtDBus') + qt_network_dep = dependency('QtNetwork') + subdir('examples/C/qt') endif @@ -844,11 +874,9 @@ if enable_docs subdir('docs') endif -config = 'config.h' - configure_file( - input: config + '.meson', - output: config, + input: 'config.h.meson', + output: '@BASENAME@', configuration: config_h, ) @@ -865,8 +893,8 @@ config_extra_h.set_quoted('NMPLUGINDIR', nm_plugindir) config_extra_h.set_quoted('NMRUNDIR', nm_pkgrundir) config_extra_h.set_quoted('NMSTATEDIR', nm_pkgstatedir) config_extra_h.set_quoted('NMVPNDIR', nm_vpndir) -config_extra_h.set_quoted('NM_BUILD_BUILDDIR', meson.build_root()) -config_extra_h.set_quoted('NM_BUILD_SRCDIR', meson.source_root()) +config_extra_h.set_quoted('NM_BUILD_BUILDDIR', build_root) +config_extra_h.set_quoted('NM_BUILD_SRCDIR', source_root) if enable_ppp config_extra_h.set_quoted('PPPD_PLUGIN_DIR', pppd_plugin_dir) endif @@ -876,7 +904,7 @@ config_extra_h.set_quoted('SYSCONFDIR', nm_sysconfdir) configure_file( input: 'config-extra.h.meson', - output: 'config-extra.h', + output: '@BASENAME@', configuration: config_extra_h, ) @@ -887,14 +915,18 @@ meson.add_install_script( nm_pkgconfdir, nm_pkglibdir, nm_pkgstatedir, - enable_docs ? 'install_docs' : '', nm_mandir, + nm_sysconfdir, + enable_docs ? '1' : '0', + enable_ifcfg_rh ? '1' : '0', + enable_nm_cloud_setup ? '1' : '0', + install_systemdunitdir ? '1' : '0', ) output = '\nSystem paths:\n' output += ' prefix: ' + nm_prefix + '\n' output += ' exec_prefix: ' + nm_prefix + '\n' -output += ' systemdunitdir: ' + systemd_system_unit_dir + '\n' +output += ' systemdunitdir: ' + systemd_systemdsystemunitdir + '\n' output += ' nmbinary: ' + nm_pkgsbindir + '\n' output += ' nmconfdir: ' + nm_pkgconfdir + '\n' output += ' nmlibdir: ' + nm_pkglibdir + '\n' @@ -906,10 +938,15 @@ output += ' nmplugindir: ' + nm_plugindir + '\n' output += '\nPlatform:\n' output += ' session tracking: ' + ','.join(session_trackers) + '\n' output += ' suspend/resume: ' + suspend_resume + '\n' -output += ' policykit: ' + enable_polkit.to_string() +output += ' policykit: ' + enable_polkit.to_string() + ' (default: ' + config_auth_polkit_default + ')' if enable_polkit - modify = (enable_modify_system ? 'permissive' : 'restrictive') - output += ' (' + modify + ' modify.system) (default: main.auth-polkit=true)' + output += ' (' + if enable_modify_system + output += 'permissive' + else + output += 'restrictive' + endif + output += ' modify.system)' endif output += '\n' output += ' polkit agent: ' + enable_polkit_agent.to_string() + '\n' @@ -933,6 +970,7 @@ output += ' libteamdctl: ' + enable_teamdctl.to_string() + '\n' output += ' ovs: ' + enable_ovs.to_string() + '\n' output += ' nmcli: ' + enable_nmcli.to_string() + '\n' output += ' nmtui: ' + enable_nmtui.to_string() + '\n' +output += ' nm-cloud-setup: ' + enable_nm_cloud_setup.to_string() + '\n' output += '\nConfiguration_plugins (main.plugins=' + config_plugins_default + ')\n' output += ' ifcfg-rh: ' + enable_ifcfg_rh.to_string() + '\n' output += ' ifupdown: ' + enable_ifupdown.to_string() + '\n' @@ -959,7 +997,7 @@ output += ' code coverage: ' + get_option('b_coverage').to_string() + '\n' output += ' LTO: ' + enable_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 += ' crypto: ' + crypto + ' (have-gnutls: ' + crypto_gnutls_dep.found().to_string() + ', have-nss: ' + crypto_nss_dep.found().to_string() + ')\n' +output += ' crypto: ' + crypto + '\n' output += ' sanitizers: ' + get_option('b_sanitize') + '\n' output += ' Mozilla Public Suffix List: ' + enable_libpsl.to_string() + '\n' output += ' vapi: ' + enable_vapi.to_string() + '\n' |