diff options
Diffstat (limited to 'src/meson.build')
| -rw-r--r-- | src/meson.build | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..e60ab93f --- /dev/null +++ b/src/meson.build @@ -0,0 +1,319 @@ +src_inc = include_directories('.') + +install_data( + 'org.freedesktop.NetworkManager.conf', + install_dir: dbus_conf_dir +) + +subdir('systemd') + +core_plugins = [] + +nm_cflags = ['-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_DAEMON'] + +nm_dep = declare_dependency( + include_directories: src_inc, + dependencies: nm_core_dep, + 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 + +sources = files( + 'dhcp/nm-dhcp-client.c', + 'dhcp/nm-dhcp-manager.c', + 'dhcp/nm-dhcp-systemd.c', + 'dhcp/nm-dhcp-utils.c', + '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/nm-linux-platform.c', + 'platform/nm-platform.c', + 'platform/nm-platform-utils.c', + 'platform/nmp-netns.c', + 'platform/nmp-object.c', + 'main-utils.c', + 'NetworkManagerUtils.c', + 'nm-core-utils.c', + 'nm-dbus-object.c', + 'nm-dbus-utils.c', + 'nm-ip4-config.c', + 'nm-ip6-config.c', + 'nm-logging.c' +) + +deps = [ + libsystemd_dep, + libudev_dep, + nm_core_dep +] + +if enable_wext + sources += files('platform/wifi/wifi-utils-wext.c') +endif + +libnetwork_manager_base = static_library( + nm_name + 'Base', + sources: sources, + dependencies: deps, + c_args: cflags, + link_with: libnm_core +) + +sources = files( + 'devices/nm-acd-manager.c', + 'devices/nm-device-bond.c', + 'devices/nm-device-bridge.c', + 'devices/nm-device.c', + 'devices/nm-device-dummy.c', + 'devices/nm-device-ethernet.c', + 'devices/nm-device-ethernet-utils.c', + 'devices/nm-device-factory.c', + 'devices/nm-device-generic.c', + 'devices/nm-device-infiniband.c', + 'devices/nm-device-ip-tunnel.c', + 'devices/nm-device-macsec.c', + 'devices/nm-device-macvlan.c', + 'devices/nm-device-ppp.c', + 'devices/nm-device-tun.c', + 'devices/nm-device-veth.c', + 'devices/nm-device-vlan.c', + 'devices/nm-device-vxlan.c', + 'devices/nm-lldp-listener.c', + 'dhcp/nm-dhcp-dhclient.c', + 'dhcp/nm-dhcp-dhclient-utils.c', + 'dhcp/nm-dhcp-dhcpcanon.c', + 'dhcp/nm-dhcp-dhcpcd.c', + 'dhcp/nm-dhcp-listener.c', + 'dns/nm-dns-dnsmasq.c', + 'dns/nm-dns-manager.c', + 'dns/nm-dns-plugin.c', + 'dns/nm-dns-systemd-resolved.c', + 'dns/nm-dns-unbound.c', + 'dnsmasq/nm-dnsmasq-manager.c', + 'dnsmasq/nm-dnsmasq-utils.c', + 'ppp/nm-ppp-manager-call.c', + 'settings/plugins/keyfile/nms-keyfile-connection.c', + 'settings/plugins/keyfile/nms-keyfile-plugin.c', + 'settings/plugins/keyfile/nms-keyfile-reader.c', + 'settings/plugins/keyfile/nms-keyfile-utils.c', + 'settings/plugins/keyfile/nms-keyfile-writer.c', + 'settings/nm-agent-manager.c', + 'settings/nm-secret-agent.c', + 'settings/nm-settings.c', + 'settings/nm-settings-connection.c', + 'settings/nm-settings-plugin.c', + 'supplicant/nm-supplicant-config.c', + 'supplicant/nm-supplicant-interface.c', + 'supplicant/nm-supplicant-manager.c', + 'supplicant/nm-supplicant-settings-verify.c', + 'vpn/nm-vpn-connection.c', + 'vpn/nm-vpn-manager.c', + 'nm-active-connection.c', + 'nm-act-request.c', + 'nm-audit-manager.c', + 'nm-auth-manager.c', + 'nm-auth-subject.c', + 'nm-auth-utils.c', + 'nm-dbus-manager.c', + 'nm-checkpoint.c', + 'nm-checkpoint-manager.c', + 'nm-config.c', + 'nm-config-data.c', + 'nm-connectivity.c', + 'nm-dcb.c', + 'nm-dhcp4-config.c', + 'nm-dhcp6-config.c', + 'nm-dispatcher.c', + 'nm-firewall-manager.c', + 'nm-hostname-manager.c', + 'nm-manager.c', + 'nm-netns.c', + 'nm-pacrunner-manager.c', + 'nm-policy.c', + 'nm-proxy-config.c', + 'nm-rfkill-manager.c', + 'nm-session-monitor.c', + 'nm-sleep-monitor.c' +) + +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 +] + +if enable_concheck + deps += libcurl_dep +endif + +if enable_libaudit + deps += libaudit_dep +endif + +if enable_libpsl + deps += libpsl_dep +endif + +if enable_selinux + deps += selinux_dep +endif + +if enable_session_tracking + deps += logind_dep +endif + +libnetwork_manager = static_library( + nm_name, + sources: sources, + dependencies: 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, + libudev_dep, + nm_core_dep +] + +name = 'nm-iface-helper' + +executable( + name, + name + '.c', + dependencies: deps, + c_args: cflags, + link_with: [libnetwork_manager_base, libsystemd_nm], + link_args: ldflags_linker_script_binary, + link_depends: linker_script_binary, + install: true, + install_dir: nm_libexecdir +) + +if enable_tests + sources = files( + 'ndisc/nm-fake-ndisc.c', + 'platform/tests/test-common.c', + 'platform/nm-fake-platform.c' + ) + + deps = [ + libudev_dep, + nm_core_dep + ] + + test_cflags = ['-DNETWORKMANAGER_COMPILATION_TEST'] + if require_root_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, + dependencies: deps, + c_args: cflags + test_cflags, + link_with: libnetwork_manager + ) + + test_nm_dep = declare_dependency( + dependencies: nm_dep, + compile_args: test_cflags, + link_with: libnetwork_manager_test + ) + + subdir('dnsmasq/tests') + subdir('ndisc/tests') + subdir('platform/tests') + subdir('supplicant/tests') + subdir('tests') +endif + +subdir('dhcp') + +if enable_ppp + subdir('ppp') +endif + +subdir('devices') +subdir('settings/plugins') |