Commit 123aa38f authored by Inigo Martínez's avatar Inigo Martínez Committed by Thomas Haller

build: Move default path values to options file

Since meson 0.44 there is a new option type called `array`, which
allows to use an array with different values in those options.

These fits the needs of different options that are used to pass
binary paths, which have multiple paths as an alternate locations.

meson's version has been bumped to 0.44 and different options have
been changed to `array` type options.

https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00062.html
parent cc692a69
......@@ -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'
......
......@@ -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')
......
......@@ -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',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment