summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build220
-rw-r--r--meson_options.txt20
-rw-r--r--src/meson.build17
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',