NetworkManager/src/libnm-client-impl/meson.build
Wen Liang e8618f03d7
support loopback interface
Support managing the loopback interface through NM as the users want to
set the proper mtu for loopback interface when forwarding the packets.
Additionally, the IP addresses, DNS, route and routing rules are also
allowed to configure for the loopback connection profiles.

https://bugzilla.redhat.com/show_bug.cgi?id=2060905
2022-11-23 20:51:22 +01:00

240 lines
5.9 KiB
Meson

# SPDX-License-Identifier: LGPL-2.1-or-later
libnm_client_impl_sources = files(
'nm-access-point.c',
'nm-active-connection.c',
'nm-checkpoint.c',
'nm-client.c',
'nm-conn-utils.c',
'nm-dbus-helpers.c',
'nm-device-6lowpan.c',
'nm-device-adsl.c',
'nm-device-bond.c',
'nm-device-bridge.c',
'nm-device-bt.c',
'nm-device-dummy.c',
'nm-device-ethernet.c',
'nm-device-generic.c',
'nm-device-infiniband.c',
'nm-device-ip-tunnel.c',
'nm-device-loopback.c',
'nm-device-macsec.c',
'nm-device-macvlan.c',
'nm-device-modem.c',
'nm-device-olpc-mesh.c',
'nm-device-ovs-bridge.c',
'nm-device-ovs-interface.c',
'nm-device-ovs-port.c',
'nm-device-ppp.c',
'nm-device-team.c',
'nm-device-tun.c',
'nm-device-veth.c',
'nm-device-vlan.c',
'nm-device-vrf.c',
'nm-device-vxlan.c',
'nm-device-wifi-p2p.c',
'nm-device-wifi.c',
'nm-device-wimax.c',
'nm-device-wireguard.c',
'nm-device-wpan.c',
'nm-device.c',
'nm-dhcp-config.c',
'nm-dhcp4-config.c',
'nm-dhcp6-config.c',
'nm-dns-manager.c',
'nm-ip-config.c',
'nm-ip4-config.c',
'nm-ip6-config.c',
'nm-libnm-utils.c',
'nm-object.c',
'nm-remote-connection.c',
'nm-secret-agent-old.c',
'nm-vpn-connection.c',
'nm-vpn-editor.c',
'nm-vpn-plugin-old.c',
'nm-vpn-service-plugin.c',
'nm-wifi-p2p-peer.c',
'nm-wimax-nsp.c',
)
libnm_client_impl = static_library(
'nm-client-impl',
sources: libnm_client_impl_sources + libnm_client_public_enum_sources,
dependencies: [
libnmdbus_dep,
libnm_core_public_dep,
libnm_client_public_dep,
libudev_dep,
glib_dep,
],
)
linker_script = join_paths(meson.current_source_dir(), 'libnm.ver')
libnm = shared_library(
'nm',
version: libnm_version,
dependencies: [
libnm_core_public_dep,
libnm_client_public_dep,
libudev_dep,
glib_dep,
],
link_whole: [
libnm_client_impl,
libnm_core_aux_intern,
libnm_core_impl,
libnm_crypto,
libnm_base,
libnm_udev_aux,
libnm_systemd_shared,
libnm_log_null,
libnm_glib_aux,
libnm_std_aux,
libnmdbus,
libc_siphash,
],
link_args: '-Wl,--version-script,@0@'.format(linker_script),
link_depends: linker_script,
install: true,
)
libnm_dep = declare_dependency(
dependencies: [
libnm_core_public_dep,
libnm_client_public_dep,
glib_dep,
],
link_with: libnm,
)
pkg.generate(
libraries: libnm,
version: nm_version,
name: libnm_name,
description: 'Convenience library for clients of NetworkManager',
filebase: libnm_name,
subdirs: libnm_name,
requires: 'gio-2.0',
variables: [
'exec_prefix=${prefix}',
'vpnservicedir=' + join_paths('${prefix}', 'lib', nm_name, 'VPN'),
],
)
if enable_tests
test(
'check-local-exports-' + libnm_name,
check_exports,
args: [libnm.full_path(), linker_script],
)
endif
if enable_introspection
libnm_gir = gnome.generate_gir(
libnm,
sources: libnm_core_settings_sources + libnm_core_impl_sources + libnm_core_public_enum_sources + libnm_core_headers + libnm_client_impl_sources + libnm_client_headers + libnm_client_public_enum_sources + [nm_version_macro_header],
includes: 'Gio-2.0',
include_directories: [
libnm_core_public_inc,
libnm_client_public_inc,
src_inc,
top_inc,
],
dependencies: [
declare_dependency(
compile_args: [
'-UGLIB_VERSION_MIN_REQUIRED',
'-UGLIB_VERSION_MAX_ALLOWED',
],
),
],
nsversion: nm_gir_version,
namespace: 'NM',
identifier_prefix: nm_id_prefix,
symbol_prefix: nm_id_prefix.to_lower(),
header: 'NetworkManager.h',
export_packages: libnm_name,
extra_args: [
'-DNETWORKMANAGER_COMPILATION',
],
install: true,
)
infos = [ 'dbus', 'nmcli', 'keyfile' ]
if enable_ifcfg_rh
infos += [ 'ifcfg-rh' ]
endif
foreach info: infos
t = custom_target(
'nm-propery-infos-' + info + '.xml',
input: libnm_core_settings_sources,
output: 'nm-propery-infos-' + info + '.xml',
command: [
python.path(),
join_paths(meson.source_root(), 'tools', 'generate-docs-nm-property-infos.py'),
info,
'@OUTPUT@',
'@INPUT@'
],
)
# meson 0.47 doesn't support non-static keys for dicts
# nor extending dicts incrementally. Workaround.
if info == 'dbus'
nm_property_infos_xml_dbus = t
elif info == 'keyfile'
nm_property_infos_xml_keyfile = t
elif info == 'ifcfg-rh'
nm_property_infos_xml_ifcfg_rh = t
elif info == 'nmcli'
nm_property_infos_xml_nmcli = t
else
assert(false)
endif
endforeach
if enable_ifcfg_rh
nm_property_infos_xml = {
'dbus': nm_property_infos_xml_dbus,
'keyfile': nm_property_infos_xml_keyfile,
'nmcli': nm_property_infos_xml_nmcli,
'ifcfg-rh': nm_property_infos_xml_ifcfg_rh,
}
else
nm_property_infos_xml = {
'dbus': nm_property_infos_xml_dbus,
'keyfile': nm_property_infos_xml_keyfile,
'nmcli': nm_property_infos_xml_nmcli,
}
endif
gi_typelib_path = run_command('printenv', 'GI_TYPELIB_PATH').stdout()
if gi_typelib_path != ''
gi_typelib_path = ':' + gi_typelib_path
endif
gi_typelib_path = meson.current_build_dir() + gi_typelib_path
ld_library_path = run_command('printenv', 'LD_LIBRARY_PATH').stdout()
if ld_library_path != ''
ld_library_path = ':' + ld_library_path
endif
ld_library_path = meson.current_build_dir() + ld_library_path
nm_settings_docs_xml_gir = custom_target(
'nm-settings-docs-gir.xml',
input: libnm_gir[0],
output: 'nm-settings-docs-gir.xml',
command: [
'env',
'GI_TYPELIB_PATH=' + gi_typelib_path,
'LD_LIBRARY_PATH=' + ld_library_path,
python.path(),
join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-gir.py'),
'--lib-path', meson.current_build_dir(),
'--gir', '@INPUT@',
'--output', '@OUTPUT@'
],
depends: libnm_gir,
)
endif