about summary refs log tree commit diff
path: root/src/meson.build
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2019-01-25 10:49:37 +0100
committerSebastien Bacher <seb128@ubuntu.com>2019-01-25 10:49:37 +0100
commit404ebe62622150e77e311777dff8617eb974e834 (patch)
treecc7f73d3e435d5b3ee85e2bef833e8de1fb133e3 /src/meson.build
parent227c401a10a930af6fd5f123aef345fcd130d6aa (diff)
parent3626b425d1bc017fdc6f1ea0cfd329d1e1681641 (diff)
Merge remote-tracking branch 'salsa/upstream' into upstream
Diffstat (limited to 'src/meson.build')
-rw-r--r--src/meson.build169
1 files changed, 79 insertions, 90 deletions
diff --git a/src/meson.build b/src/meson.build
index e60ab93f..28fcfa8f 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,
@@ -285,9 +214,6 @@ if enable_tests
     test_cflags += ['-DREQUIRE_ROOT_TESTS=1']
   endif
 
-  platform = (host_machine.system().contains('linux') ? 'linux' : 'fake')
-  test_cflags_platform = '-DSETUP=nm_' + platform + '_platform_setup'
-
   libnetwork_manager_test = static_library(
     nm_name + 'Test',
     sources: sources,
@@ -302,6 +228,16 @@ if enable_tests
     link_with: libnetwork_manager_test
   )
 
+  test_nm_dep_fake = declare_dependency(
+    dependencies: test_nm_dep,
+    compile_args: ['-DSETUP=nm_fake_platform_setup']
+  )
+
+  test_nm_dep_linux = declare_dependency(
+    dependencies: test_nm_dep,
+    compile_args: ['-DSETUP=nm_linux_platform_setup']
+  )
+
   subdir('dnsmasq/tests')
   subdir('ndisc/tests')
   subdir('platform/tests')
@@ -316,4 +252,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