diff options
-rw-r--r-- | meson.build | 220 | ||||
-rw-r--r-- | meson_options.txt | 20 | ||||
-rw-r--r-- | src/meson.build | 17 |
3 files changed, 91 insertions, 166 deletions
diff --git a/meson.build b/meson.build index a5f71b879d..6d0b295922 100644 --- a/meson.build +++ b/meson.build @@ -6,7 +6,7 @@ project( 'buildtype=debugoptimized', 'c_std=gnu99' ], - meson_version: '>= 0.43.0' + meson_version: '>= 0.44.0' ) nm_name = meson.project_name() @@ -538,12 +538,9 @@ enable_ppp = get_option('ppp') if enable_ppp assert(cc.has_header('pppd/pppd.h'), 'couldn\'t find pppd.h. pppd development headers are required') - pppd_path = get_option('pppd') - if pppd_path == '' - pppd = find_program('pppd', '/sbin/pppd', '/usr/sbin/pppd', required: false) - assert(pppd.found(), 'pppd required but not found, please provide a valid pppd path or use -Dppp=false to disable it') - pppd_path = pppd.path() - endif + locations = get_option('pppd') + pppd = find_program(locations, required: false) + assert(pppd.found(), 'pppd required but not found, please provide a valid pppd path or use -Dppp=false to disable it') pppd_plugin_dir = get_option('pppd_plugin_dir') if pppd_plugin_dir == '' @@ -571,104 +568,63 @@ enable_ofono = get_option('ofono') config_h.set10('WITH_OFONO', enable_ofono) # DHCP client support with dhcpcanon -dhcpcanon_path = get_option('dhcpcanon') -enable_dhcpcanon = (dhcpcanon_path != 'no') +locations = get_option('dhcpcanon') +enable_dhcpcanon = (locations != ['no']) if enable_dhcpcanon - if dhcpcanon_path == '' - name = 'dhcpcanon' - locations = [ - name, - '/sbin/' + name, - '/usr/sbin/' + name, - '/usr/local/sbin/' + name, - '/usr/bin/' + name, - '/usr/local/bin/' + name - ] - else - locations = dhcpcanon_path - endif - dhcpcanon = find_program(locations, required: false) enable_dhcpcanon = dhcpcanon.found() - dhcpcanon_path = (enable_dhcpcanon ? dhcpcanon.path() : '') -endif -if enable_dhcpcanon - config_h.set_quoted('DHCPCANON_PATH', dhcpcanon_path) + if enable_dhcpcanon + config_h.set_quoted('DHCPCANON_PATH', dhcpcanon.path()) + endif endif config_h.set10('WITH_DHCPCANON', enable_dhcpcanon) # DHCP client support -dhclient_path = get_option('dhclient') -enable_dhclient = (dhclient_path != 'no') +locations = get_option('dhclient') +enable_dhclient = (locations != ['no']) if enable_dhclient - if dhclient_path == '' - name = 'dhclient' - locations = [ - name, - '/sbin/' + name, - '/usr/sbin/' + name, - '/usr/local/sbin/' + name - ] - else - locations = dhclient_path - endif - dhclient = find_program(locations, required: false) enable_dhclient = dhclient.found() - dhclient_path = (enable_dhclient ? dhclient.path() : '') -endif -if enable_dhclient - res = run_command(dhclient, '--version') - # FIXME: dhcp outputs the version string through stderr!? - if not res.stderr().strip().contains('isc-dhclient-4.') - message('Seems version of dhclient ' + dhclient_path + ' is too old, version 4.x or newer is required') + if enable_dhclient + res = run_command(dhclient, '--version') + # FIXME: dhcp outputs the version string through stderr!? + if not res.stderr().strip().contains('isc-dhclient-4.') + message('Seems version of dhclient ' + dhclient.path() + ' is too old, version 4.x or newer is required') + endif + config_h.set_quoted('DHCLIENT_PATH', dhclient.path()) endif - config_h.set_quoted('DHCLIENT_PATH', dhclient_path) endif config_h.set10('WITH_DHCLIENT', enable_dhclient) -dhcpcd_path = get_option('dhcpcd') -enable_dhcpcd = (dhcpcd_path != 'no') +locations = get_option('dhcpcd') +enable_dhcpcd = (locations != ['no']) +enable_dhcpcd_supports_ipv6 = false if enable_dhcpcd - if dhcpcd_path == '' - name = 'dhcpcd' - locations = [ - name, - '/sbin/' + name, - '/usr/sbin/' + name, - '/usr/local/sbin/' + name - ] - else - locations = dhcpcd_path - endif - dhcpcd = find_program(locations, required: false) enable_dhcpcd = dhcpcd.found() - dhcpcd_path = (enable_dhcpcd ? dhcpcd.path() : '') -endif -enable_dhcpcd_supports_ipv6 = false -if enable_dhcpcd - res = run_command(dhcpcd, '--version').stdout().strip() - dhcpcd_version = res.split(' ')[1] - if not dhcpcd_version.version_compare('> 4') - message('Seems version of dhcpcd ' + dhcpcd_path + ' is too old, version 4.x or newer is required') - endif - - enable_dhcpcd_supports_ipv6 = get_option('dhcpcd_supports_ipv6') - if dhcpcd_version.version_compare('> 6') - if not enable_dhcpcd_supports_ipv6 - message('Seems version of dhcpcd ' + dhcpcd_path + ' supports IPv6, but compiling without IPv6 support.') + if enable_dhcpcd + res = run_command(dhcpcd, '--version').stdout().strip() + dhcpcd_version = res.split(' ')[1] + if not dhcpcd_version.version_compare('> 4') + message('Seems version of dhcpcd ' + dhcpcd.path() + ' is too old, version 4.x or newer is required') endif - else - if enable_dhcpcd_supports_ipv6 - message('Seems version of dhcpcd ' + dhcpcd_path +' does not support IPv6, but compiling with IPv6 support.') + + enable_dhcpcd_supports_ipv6 = get_option('dhcpcd_supports_ipv6') + if dhcpcd_version.version_compare('> 6') + if not enable_dhcpcd_supports_ipv6 + message('Seems version of dhcpcd ' + dhcpcd.path() + ' supports IPv6, but compiling without IPv6 support.') + endif + else + if enable_dhcpcd_supports_ipv6 + message('Seems version of dhcpcd ' + dhcpcd.path() +' does not support IPv6, but compiling with IPv6 support.') + endif endif + config_h.set('DHCPCD_SUPPORTS_IPV6', enable_dhcpcd_supports_ipv6) + config_h.set_quoted('DHCPCD_PATH', dhcpcd.path()) endif - config_h.set('DHCPCD_SUPPORTS_IPV6', enable_dhcpcd_supports_ipv6) - config_h.set_quoted('DHCPCD_PATH', dhcpcd_path) endif config_h.set10('WITH_DHCPCD', enable_dhcpcd) @@ -694,48 +650,26 @@ if enable_ovs endif # resolvconf and netconfig support -resolvconf_path = get_option('resolvconf') -enable_resolvconf = (resolvconf_path != 'no') +locations = get_option('resolvconf') +enable_resolvconf = (locations != ['no']) if enable_resolvconf - if resolvconf_path == '' - name = 'resolvconf' - locations = [ - name, - '/sbin/' + name, - '/usr/sbin/' + name, - '/usr/local/sbin/' + name - ] - else - locations = resolvconf_path - endif - resolvconf = find_program(locations, required: false) enable_resolvconf = resolvconf.found() -endif -if enable_resolvconf - config_h.set_quoted('RESOLVCONF_PATH', resolvconf.path()) -endif -netconfig_path = get_option('netconfig') -enable_netconfig = (netconfig_path != 'no') -if enable_netconfig - if netconfig_path == '' - name = 'netconfig' - locations = [ - name, - '/sbin/' + name, - '/usr/sbin/' + name, - '/usr/local/sbin/' + name - ] - else - locations = netconfig_path + if enable_resolvconf + config_h.set_quoted('RESOLVCONF_PATH', resolvconf.path()) endif +endif +locations = get_option('netconfig') +enable_netconfig = (locations != ['no']) +if enable_netconfig netconfig = find_program(locations, required: false) enable_netconfig = netconfig.found() -endif -if enable_netconfig - config_h.set_quoted('NETCONFIG_PATH', netconfig.path()) + + if enable_netconfig + config_h.set_quoted('NETCONFIG_PATH', netconfig.path()) + endif endif config_dns_rc_manager_default = get_option('config_dns_rc_manager_default') @@ -750,36 +684,14 @@ endif config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_RC_MANAGER', config_dns_rc_manager_default) # iptables path -iptables_path = get_option('iptables') -if iptables_path == '' - iptables_path = find_program('iptables', '/sbin/iptables', '/usr/sbin/iptables').path() -endif -config_h.set_quoted('IPTABLES_PATH', iptables_path) +config_h.set_quoted('IPTABLES_PATH', find_program(get_option('iptables')).path()) # dnsmasq path -dnsmasq_path = get_option('dnsmasq') -if dnsmasq_path == '' - dnsmasq_path = find_program('dnsmasq', '/sbin/dnsmasq', '/usr/sbin/dnsmasq').path() -endif -config_h.set_quoted('DNSMASQ_PATH', dnsmasq_path) +config_h.set_quoted('DNSMASQ_PATH', find_program(get_option('dnsmasq')).path()) # dnssec-trigger-script path -dnssec_trigger_path = get_option('dnssec_trigger') -if dnssec_trigger_path == '' - locations = [ - 'dnssec-trigger-script', - '/usr/local/libexec/dnssec-trigger-script', - '/usr/local/lib/dnssec-trigger-script', - '/usr/local/lib/dnssec-trigger/dnssec-trigger-script', - '/usr/libexec/dnssec-trigger-script', - '/usr/lib/dnssec-trigger-script', - '/usr/lib/dnssec-trigger/dnssec-trigger-script' - ] - - dnssec_trigger_script = find_program(locations, required: false) - dnssec_trigger_path = (dnssec_trigger_script.found() ? dnssec_trigger_script.path() : '/usr/libexec/dnssec-trigger-script') -endif -config_h.set_quoted('DNSSEC_TRIGGER_SCRIPT', dnssec_trigger_path) +dnssec_trigger_script = find_program(get_option('dnssec_trigger'), required: false) +config_h.set_quoted('DNSSEC_TRIGGER_SCRIPT', (dnssec_trigger_script.found() ? dnssec_trigger_script.path() : '/usr/libexec/dnssec-trigger-script')) # system CA certificates path system_ca_path = get_option('system_ca_path') @@ -861,13 +773,13 @@ enable_tests = (tests != 'no') require_root_tests = (tests == 'root') # valgrind -valgrind_path = get_option('valgrind') -if valgrind_path != 'no' - valgrind = find_program('valgrind', required: false) - valgrind_path = (valgrind.found() ? valgrind.path() : 'no') +locations = get_option('valgrind') +enable_valgrind = (locations != ['no']) +if enable_valgrind + valgrind = find_program(locations, required: false) + enable_valgrind = valgrind.found() endif -enable_valgrind = (valgrind_path != 'no') if enable_valgrind valgrind_suppressions_path = get_option('valgrind_suppressions') if valgrind_suppressions_path == '' @@ -1051,7 +963,7 @@ output += ' wifi: ' + enable_wifi.to_string() + '\n' output += ' iwd: ' + enable_iwd.to_string() + '\n' output += ' pppd: ' + enable_ppp.to_string() if enable_ppp - output += ' ' + pppd_path + output += ' ' + pppd.path() endif output += '\n' output += ' modemmanager-1: ' + enable_modem_manager.to_string() + '\n' @@ -1082,17 +994,17 @@ output += ' config-dns-rc-manager-default: ' + config_dns_rc_manager_default + output += '\nDHCP clients (default ' + config_dhcp_default + '):\n' output += ' dhcpcanon: ' + enable_dhcpcanon.to_string() if enable_dhcpcd - output += ' ' + dhcpcanon_path + output += ' ' + dhcpcanon.path() endif output += '\n' output += ' dhclient: ' + enable_dhclient.to_string() if enable_dhclient - output += ' ' + dhclient_path + output += ' ' + dhclient.path() endif output += '\n' output += ' dhcpcd: ' + enable_dhcpcd.to_string() if enable_dhcpcd - output += ' ' + dhcpcd_path + output += ' ' + dhcpcd.path() endif output += '\n' output += ' dhcpcd-supports-ipv6: ' + enable_dhcpcd_supports_ipv6.to_string() + '\n' @@ -1105,7 +1017,11 @@ output += ' tests: ' + tests + '\n' output += ' more-asserts: @0@\n'.format(more_asserts) output += ' more-logging: ' + more_logging.to_string() + '\n' output += ' warning-level: ' + get_option('warning_level') + '\n' -output += ' valgrind: ' + valgrind_path + '\n' +output += ' valgrind: ' + enable_valgrind.to_string() +if enable_valgrind + output += ' ' + valgrind.path() +endif +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' diff --git a/meson_options.txt b/meson_options.txt index 55f9ee7030..5786462116 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -7,9 +7,9 @@ option('dbus_ifaces_dir', type: 'string', value: '', description: 'where D-Bus i option('dbus_sys_dir', type: 'string', value: '', description: 'where D-Bus system service directory is') option('polkit_dir', type: 'string', value: '', description: 'where PolicyKit policy directory is') option('kernel_firmware_dir', type: 'string', value: '/lib/firmware', description: 'where kernel firmware directory is (default is /lib/firmware)') -option('iptables', type: 'string', value: '', description: 'path to iptables') -option('dnsmasq', type: 'string', value: '', description: 'path to dnsmasq') -option('dnssec_trigger', type: 'string', value: '', description: 'path to unbound dnssec-trigger-script') +option('iptables', type: 'array', value: ['iptables', '/sbin/iptables', '/usr/sbin/iptables'], description: 'path to iptables') +option('dnsmasq', type: 'array', value: ['dnsmasq', '/sbin/dnsmasq', '/usr/sbin/dnsmasq'], description: 'path to dnsmasq') +option('dnssec_trigger', type: 'array', value: ['dnssec-trigger-script', '/usr/local/libexec/dnssec-trigger-script', '/usr/local/lib/dnssec-trigger-script', '/usr/local/lib/dnssec-trigger/dnssec-trigger-script', '/usr/libexec/dnssec-trigger-script', '/usr/lib/dnssec-trigger-script', '/usr/lib/dnssec-trigger/dnssec-trigger-script'], description: 'path to unbound dnssec-trigger-script') # platform option('dist_version', type: 'string', value: '', description: 'Define the NM\'s distribution version string') @@ -30,7 +30,7 @@ option('wext', type: 'boolean', value: true, description: 'Enable or disable Lin option('wifi', type: 'boolean', value: true, description: 'enable Wi-Fi support') option('iwd', type: 'boolean', value: false, description: 'enable iwd support (experimental)') option('ppp', type: 'boolean', value: true, description: 'enable PPP/PPPoE support') -option('pppd', type: 'string', value: '', description: 'path to pppd binary') +option('pppd', type: 'array', value: ['pppd', '/sbin/pppd', '/usr/sbin/pppd'], description: 'path to pppd binary') option('pppd_plugin_dir', type: 'string', value: '', description: 'path to the pppd plugins directory') option('modem_manager', type: 'boolean', value: true, description: 'Enable new ModemManager1 interface support') option('ofono', type: 'boolean', value: false, description: 'Enable oFono support (experimental)') @@ -51,14 +51,14 @@ option('ifupdown', type: 'boolean', value: false, description: 'enable ifupdown option('ifnet', type: 'boolean', value: false, description: 'enable ifnet configuration plugin (Gentoo)') # handlers for resolv.conf -option('resolvconf', type: 'string', value: '', description: 'Enable resolvconf support') -option('netconfig', type: 'string', value: '', description: 'Enable SUSE netconfig support') +option('resolvconf', type: 'array', value: ['resolvconf', '/sbin/resolvconf', '/usr/sbin/resolvconf', '/usr/local/sbin/resolvconf'], description: 'Enable resolvconf support') +option('netconfig', type: 'array', value: ['netconfig', '/sbin/netconfig', '/usr/sbin/netconfig', '/usr/local/sbin/netconfig'], description: 'Enable SUSE netconfig support') option('config_dns_rc_manager_default', type: 'combo', choices: ['symlink', 'file', 'netconfig', 'resolvconf'], value: 'symlink', description: 'Configure default value for main.rc-manager setting') # dhcp clients -option('dhcpcanon', type: 'string', value: '', description: 'Enable dhcpcanon support (experimental)') -option('dhclient', type: 'string', value: '', description: 'Enable dhclient 4.x support') -option('dhcpcd', type: 'string', value: '', description: 'Enable dhcpcd 4.x support') +option('dhcpcanon', type: 'array', value: ['dhcpcanon', '/sbin/dhcpcanon', '/usr/sbin/dhcpcanon', '/usr/local/sbin/dhcpcanon', '/usr/bin/dhcpcanon', '/usr/local/bin/dhcpcanon'], description: 'Enable dhcpcanon support (experimental)') +option('dhclient', type: 'array', value: ['dhclient', '/sbin/dhclient', '/usr/sbin/dhclient', '/usr/local/sbin/dhclient'], description: 'Enable dhclient 4.x support') +option('dhcpcd', type: 'array', value: ['dhcpcd', '/sbin/dhcpcd', '/usr/sbin/dhcpcd', '/usr/local/sbin/dhcpcd'], description: 'Enable dhcpcd 4.x support') option('config_dhcp_default', type: 'combo', choices: ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal'], value: 'internal', description: 'Default configuration option for main.dhcp setting, used as fallback if the configuration option is unset') option('dhcpcd_supports_ipv6', type: 'boolean', value: true, description: 'Whether using dhcpcd >= 6.x which has IPv6 support') @@ -69,7 +69,7 @@ option('docs', type: 'boolean', value: false, description: 'use to build documen option('tests', type: 'combo', choices: ['yes', 'no', 'root'], value: 'yes', description: 'Build NetworkManager tests') option('more_asserts', type: 'string', value: 'all', description: 'Enable more assertions for debugging (0 = none, 100 = all, default: all)') option('more_logging', type: 'boolean', value: true, description: 'Enable more debug logging') -option('valgrind', type: 'string', value: 'no', description: 'Use valgrind to memory-check the tests') +option('valgrind', type: 'array', value: ['no'], description: 'Use valgrind to memory-check the tests') option('valgrind_suppressions', type: 'string', value: '', description: 'Use specific valgrind suppression file') option('ld_gc', type: 'boolean', value: true, description: 'Enable garbage collection of unused symbols on linking') option('libpsl', type: 'boolean', value: true, description: 'Link against libpsl') diff --git a/src/meson.build b/src/meson.build index a87c36e62b..5335fdea06 100644 --- a/src/meson.build +++ b/src/meson.build @@ -43,12 +43,21 @@ common_cflags = [ '-DNMPLUGINDIR="@0@"'.format(nm_pkglibdir), '-DNMRUNDIR="@0@"'.format(nm_pkgrundir), '-DNMSTATEDIR="@0@"'.format(nm_pkgstatedir), - '-DNMLIBDIR="@0@"'.format(nm_pkglibdir), - '-DDHCPCANON_PATH="@0@"'.format(dhcpcanon_path), - '-DDHCLIENT_PATH="@0@"'.format(dhclient_path), - '-DDHCPCD_PATH="@0@"'.format(dhcpcd_path) + '-DNMLIBDIR="@0@"'.format(nm_pkglibdir) ] +if enable_dhcpcanon + common_cflags += '-DDHCPCANON_PATH="@0@"'.format(dhcpcanon.path()) +endif + +if enable_dhclient + common_cflags += '-DDHCLIENT_PATH="@0@"'.format(dhclient.path()) +endif + +if enable_dhcpcd + common_cflags += '-DDHCPCD_PATH="@0@"'.format(dhcpcd.path()) +endif + sources = files( 'dhcp/nm-dhcp-client.c', 'dhcp/nm-dhcp-manager.c', |