diff options
Diffstat (limited to 'src/meson.build')
| -rw-r--r-- | src/meson.build | 156 |
1 files changed, 69 insertions, 87 deletions
diff --git a/src/meson.build b/src/meson.build index e60ab93f..87c57671 100644 --- a/src/meson.build +++ b/src/meson.build @@ -17,35 +17,7 @@ nm_dep = declare_dependency( compile_args: nm_cflags ) -cflags = nm_cflags + [ - '-DPREFIX="@0@"'.format(nm_prefix), - '-DBINDIR="@0@"'.format(nm_bindir), - '-DDATADIR="@0@"'.format(nm_datadir), - '-DLIBEXECDIR="@0@"'.format(nm_libexecdir), - '-DLOCALSTATEDIR="@0@"'.format(nm_localstatedir), - '-DRUNSTATEDIR="@0@"'.format(nm_runstatedir), - '-DSBINDIR="@0@"'.format(nm_sbindir), - '-DSYSCONFDIR="@0@"'.format(nm_sysconfdir), - '-DRUNDIR="@0@"'.format(nm_pkgrundir), - '-DNMCONFDIR="@0@"'.format(nm_pkgconfdir), - '-DNMLOCALEDIR="@0@"'.format(nm_localedir), - '-DNMPLUGINDIR="@0@"'.format(nm_plugindir), - '-DNMRUNDIR="@0@"'.format(nm_pkgrundir), - '-DNMSTATEDIR="@0@"'.format(nm_pkgstatedir), - '-DNMLIBDIR="@0@"'.format(nm_pkglibdir) -] - -if enable_dhcpcanon - cflags += '-DDHCPCANON_PATH="@0@"'.format(dhcpcanon.path()) -endif - -if enable_dhclient - cflags += '-DDHCLIENT_PATH="@0@"'.format(dhclient.path()) -endif - -if enable_dhcpcd - cflags += '-DDHCPCD_PATH="@0@"'.format(dhcpcd.path()) -endif +cflags = nm_cflags sources = files( 'dhcp/nm-dhcp-client.c', @@ -55,8 +27,9 @@ sources = files( 'ndisc/nm-lndp-ndisc.c', 'ndisc/nm-ndisc.c', 'platform/nm-netlink.c', - 'platform/wifi/wifi-utils-nl80211.c', - 'platform/wifi/wifi-utils.c', + 'platform/wifi/nm-wifi-utils-nl80211.c', + 'platform/wifi/nm-wifi-utils.c', + 'platform/wpan/nm-wpan-utils.c', 'platform/nm-linux-platform.c', 'platform/nm-platform.c', 'platform/nm-platform-utils.c', @@ -79,7 +52,7 @@ deps = [ ] if enable_wext - sources += files('platform/wifi/wifi-utils-wext.c') + sources += files('platform/wifi/nm-wifi-utils-wext.c') endif libnetwork_manager_base = static_library( @@ -92,6 +65,7 @@ libnetwork_manager_base = static_library( sources = files( 'devices/nm-acd-manager.c', + 'devices/nm-device-6lowpan.c', 'devices/nm-device-bond.c', 'devices/nm-device-bridge.c', 'devices/nm-device.c', @@ -109,6 +83,8 @@ sources = files( 'devices/nm-device-veth.c', 'devices/nm-device-vlan.c', 'devices/nm-device-vxlan.c', + 'devices/nm-device-wireguard.c', + 'devices/nm-device-wpan.c', 'devices/nm-lldp-listener.c', 'dhcp/nm-dhcp-dhclient.c', 'dhcp/nm-dhcp-dhclient-utils.c', @@ -167,86 +143,39 @@ sources = files( 'nm-sleep-monitor.c' ) -deps = [ +nm_deps = [ dl_dep, libndp_dep, - # FIXME: Some files use introspection/dbus* headers, so - # this dependency might be needed - #libnmdbus_dep, libudev_dep, nm_core_dep, - shared_n_acd_dep + shared_n_acd_dep, + logind_dep, ] if enable_concheck - deps += libcurl_dep + nm_deps += libcurl_dep endif if enable_libaudit - deps += libaudit_dep + nm_deps += libaudit_dep endif if enable_libpsl - deps += libpsl_dep + nm_deps += libpsl_dep endif if enable_selinux - deps += selinux_dep -endif - -if enable_session_tracking - deps += logind_dep + nm_deps += selinux_dep endif libnetwork_manager = static_library( nm_name, sources: sources, - dependencies: deps, + dependencies: nm_deps, c_args: cflags, link_with: [libnetwork_manager_base, libsystemd_nm] ) -ldflags = ['-rdynamic'] - -# FIXME: this doesn't work and it depends on libtool -''' -src/NetworkManager.ver: src/libNetworkManager.la $(core_plugins) - $(AM_V_GEN) NM="$(NM)" "$(srcdir)/tools/create-exports-NetworkManager.sh" --called-from-make "$(srcdir)" - -src_NetworkManager_LDFLAGS = \ - -rdynamic \ - -Wl,--version-script="src/NetworkManager.ver" - -nm = find_program('gcc-nm', 'nm') -create_exports_networkmanager = join_paths(meson.source_root(), 'tools', 'create-exports-NetworkManager.sh') - -symbol_map_name = 'NetworkManager.ver' - -linker_script = custom_target( - symbol_map_name, - input: meson.source_root(), - output: symbol_map_name, - capture: true, - #command: ['NM=' + nm.path(), create_exports_networkmanager, '--called-from-make', '@INPUT@'] - command: [create_exports_networkmanager, '--called-from-make', '@INPUT@'] -) - -ldflags += '-Wl,--version-script,@0@'.format(linker_script) -''' - -network_manager = executable( - nm_name, - 'main.c', - dependencies: deps, - c_args: cflags, - link_with: libnetwork_manager, - link_args: ldflags, - #FIXME - #link_depends: linker_script, - install: true, - install_dir: nm_sbindir -) - deps = [ dl_dep, libndp_dep, @@ -316,4 +245,57 @@ if enable_ppp endif subdir('devices') +subdir('initrd') subdir('settings/plugins') + +# NetworkManager binary + +create_exports_networkmanager = join_paths(meson.source_root(), 'tools', 'create-exports-NetworkManager.sh') +symbol_map_name = 'NetworkManager.ver' + +# libNetworkManager.a, as built by meson doesn't contain all symbols +# from libNetworkManagerBase.a and other static libraries, unless we +# add dependencies with link_whole, only supported in meson >= 0.46. +# Create an executable with full symbols that we use in place of the +# library to enumerate the symbols. +network_manager_sym = executable( + 'nm-full-symbols', + 'main.c', + c_args: nm_cflags, + link_args: '-Wl,--no-gc-sections', + dependencies: nm_deps, + link_whole: [libnetwork_manager, libnetwork_manager_base, libnm_core], + install: false, +) + +# this uses symbols from nm-full-symbols instead of libNetworkManager.a +ver_script = custom_target( + symbol_map_name, + input: meson.source_root(), + output: symbol_map_name, + depends: [ network_manager_sym, core_plugins ], + command: [create_exports_networkmanager, '--called-from-build', '@INPUT@'] +) + +ldflags = ['-rdynamic', '-Wl,--version-script,@0@'.format(ver_script.full_path())] + +network_manager = executable( + nm_name, + 'main.c', + dependencies: nm_deps, + c_args: nm_cflags, + link_with: libnetwork_manager, + link_args: ldflags, + link_depends: ver_script, + install: true, + install_dir: nm_sbindir +) + +if enable_tests + foreach plugin : core_plugins + test ('sym/' + plugin.full_path().split('/')[-1], + network_manager, + args: '--version', + env: ['LD_BIND_NOW=1', 'LD_PRELOAD=' + plugin.full_path()]) + endforeach +endif |