diff options
author | Iñigo Martínez <inigomartinez@gmail.com> | 2017-11-25 11:39:06 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-12-13 15:48:50 +0100 |
commit | 4000cea235b5576b0b78cdd6f8f35f408edb1f3e (patch) | |
tree | 3330fed2a9ad0f45c0c993a8aac6d3dee42ed101 /libnm-util | |
parent | 9c29905e10e0d40b03b2fad71e7cf78e8335ee1c (diff) |
build: add initial support for meson build system
meson is a build system focused on speed an ease of use, which
helps speeding up the software development. This patch adds meson
support along autotools.
[thaller@redhat.com: rebased patch and adjusted for iwd support]
https://mail.gnome.org/archives/networkmanager-list/2017-December/msg00022.html
Diffstat (limited to 'libnm-util')
-rw-r--r-- | libnm-util/meson.build | 220 | ||||
-rw-r--r-- | libnm-util/tests/meson.build | 51 |
2 files changed, 271 insertions, 0 deletions
diff --git a/libnm-util/meson.build b/libnm-util/meson.build new file mode 100644 index 000000000..bca88a91e --- /dev/null +++ b/libnm-util/meson.build @@ -0,0 +1,220 @@ +libnm_util_inc = include_directories('.') + +enums_headers = [version_header] + files( + 'nm-connection.h', + 'nm-setting-8021x.h', + 'nm-setting-adsl.h', + 'nm-setting-bluetooth.h', + 'nm-setting-bond.h', + 'nm-setting-bridge.h', + 'nm-setting-bridge-port.h', + 'nm-setting-cdma.h', + 'nm-setting-connection.h', + 'nm-setting-dcb.h', + 'nm-setting-generic.h', + 'nm-setting-gsm.h', + 'nm-setting.h', + 'nm-setting-infiniband.h', + 'nm-setting-ip4-config.h', + 'nm-setting-ip6-config.h', + 'nm-setting-olpc-mesh.h', + 'nm-setting-ppp.h', + 'nm-setting-pppoe.h', + 'nm-setting-serial.h', + 'nm-setting-team.h', + 'nm-setting-team-port.h', + 'nm-setting-vlan.h', + 'nm-setting-vpn.h', + 'nm-setting-wimax.h', + 'nm-setting-wired.h', + 'nm-setting-wireless.h', + 'nm-setting-wireless-security.h', + 'nm-utils.h', + 'nm-version.h' +) + +headers = enums_headers + files( + 'NetworkManager.h', + 'NetworkManagerVPN.h' +) + +install_headers( + headers, + subdir: nm_name +) + +enums = 'nm-utils-enum-types' + +libnm_utils_enums_h = gnome.mkenums( + enums + '.h', + sources: enums_headers, + identifier_prefix: nm_id_prefix, + fhead: '/* Generated by glib-mkenums. Do not edit */\n\n#ifndef __NM_UTILS_ENUM_TYPES_H__\n#define __NM_UTILS_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n', + vhead: 'GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())\n', + ftail: 'G_END_DECLS\n\n#endif /* __NM_UTILS_ENUM_TYPES_H__ */', + install_header: true, + install_dir: nm_pkgincludedir +) + +libnm_utils_enums_c = gnome.mkenums( + enums + '.c', + sources: enums_headers, + identifier_prefix: nm_id_prefix, + fhead: '/* Generated by glib-mkenums. Do not edit */\n\n#include "config.h"\n\n#include "nm-utils-enum-types.h"\n\n#include "nm-version-macros.h" \n#include "nm-connection.h" \n#include "nm-setting.h" \n#include "nm-setting-8021x.h" \n#include "nm-setting-adsl.h" \n#include "nm-setting-bluetooth.h" \n#include "nm-setting-bond.h" \n#include "nm-setting-team.h" \n#include "nm-setting-team-port.h" \n#include "nm-setting-bridge.h" \n#include "nm-setting-bridge-port.h" \n#include "nm-setting-connection.h" \n#include "nm-setting-dcb.h" \n#include "nm-setting-infiniband.h" \n#include "nm-setting-ip4-config.h" \n#include "nm-setting-vlan.h" \n#include "nm-setting-ip6-config.h" \n#include "nm-setting-ppp.h" \n#include "nm-setting-pppoe.h" \n#include "nm-setting-serial.h" \n#include "nm-setting-generic.h" \n#include "nm-setting-gsm.h" \n#include "nm-setting-cdma.h" \n#include "nm-setting-olpc-mesh.h" \n#include "nm-setting-wimax.h" \n#include "nm-setting-wired.h" \n#include "nm-setting-wireless.h" \n#include "nm-setting-wireless-security.h" \n#include "nm-setting-vpn.h" \n#include "nm-utils.h" \n#include "nm-version.h"\n\n', + vhead: 'GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n\n if (g_once_init_enter (&g_define_type_id__volatile))\n {\n static const G@Type@Value values[] = {\n', + vprod: ' { @VALUENAME@, "@VALUENAME@", "@valuenick@" },\n', + vtail: ' { 0, NULL, NULL }\n };\n GType g_define_type_id =\n g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n\n return g_define_type_id__volatile;\n}\n' +) + +libnm_utils_enums = [libnm_utils_enums_c, libnm_utils_enums_h] + +sources = shared_utils + files( + 'crypto.c', + 'crypto_' + crypto + '.c', + 'nm-connection.c', + 'nm-param-spec-specialized.c', + 'nm-setting-8021x.c', + 'nm-setting-adsl.c', + 'nm-setting-bluetooth.c', + 'nm-setting-bridge.c', + 'nm-setting-bridge-port.c', + 'nm-setting-bond.c', + 'nm-setting.c', + 'nm-setting-cdma.c', + 'nm-setting-connection.c', + 'nm-setting-dcb.c', + 'nm-setting-generic.c', + 'nm-setting-gsm.c', + 'nm-setting-infiniband.c', + 'nm-setting-ip4-config.c', + 'nm-setting-ip6-config.c', + 'nm-setting-olpc-mesh.c', + 'nm-setting-ppp.c', + 'nm-setting-pppoe.c', + 'nm-setting-serial.c', + 'nm-setting-team.c', + 'nm-setting-team-port.c', + 'nm-setting-wimax.c', + 'nm-setting-wired.c', + 'nm-setting-wireless.c', + 'nm-setting-wireless-security.c', + 'nm-setting-vlan.c', + 'nm-setting-vpn.c', + 'nm-utils.c', + 'nm-value-transforms.c' +) + +incs = [ + top_inc, + shared_inc +] + +deps = [ + crypto_dep, + dbus_dep, + dbus_glib_dep, + glib_dep, + uuid_dep +] + +cflags = [ + '-DG_LOG_DOMAIN="libnm-util"', + '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIB_LEGACY', + '-DLOCALEDIR="@0@"'.format(nm_localedir) +] + +symbol_map = join_paths(meson.current_source_dir(), 'libnm-util.ver') + +ldflags = [] +if have_version_script + ldflags += '-Wl,--version-script,@0@'.format(symbol_map) +endif + +libnm_util = shared_library( + 'nm-util', + sources: sources + libnm_utils_enums, + version: libnm_util_version, + include_directories: incs, + dependencies: deps, + c_args: cflags, + link_args: ldflags, + link_depends: symbol_map, + install: true, + install_dir: get_option('libdir') +) + +libnm_util_dep = declare_dependency( + link_with: libnm_util, + include_directories: libnm_util_inc +) + +pkg.generate( + libraries: libnm_util, + version: nm_version, + name: 'libnm-util', + description: 'Convenience library for clients of NetworkManager', + filebase: 'libnm-util', + subdirs: nm_name, + requires: 'NetworkManager >= ' + nm_version + ' glib-2.0 dbus-glib-1', + variables: 'exec_prefix=${prefix}', + install_dir: join_paths(nm_libdir, 'pkgconfig') +) + +if enable_introspection + gir_sources = sources + headers + libnm_utils_enums + + gir_includes = [ + 'DBusGLib-1.0', + 'GObject-2.0' + ] + + gir_dir = join_paths(nm_datadir, 'gir-' + nm_gir_version) + typelib_dir = join_paths(nm_libdir, 'girepository-' + nm_gir_version) + + libnm_util_gir = gnome.generate_gir( + libnm_util, + sources: gir_sources, + nsversion: nm_gir_version, + namespace: nm_name, + identifier_prefix: nm_id_prefix, + symbol_prefix: nm_id_prefix.to_lower(), + export_packages: 'libnm-util', + includes: gir_includes, + install: true, + install_dir_gir: gir_dir, + install_dir_typelib: typelib_dir + ) + + libnm_util_gir_dep = declare_dependency( + link_with: libnm_util, + sources: libnm_util_gir + ) +endif + +run_target( + 'check-local-exports-libnm-util', + command: [check_exports, libnm_util.full_path(), symbol_map], + depends: libnm_util +) + +sources = files( + 'crypto.c', + 'crypto_' + crypto + '.c' +) + +deps = [ + crypto_dep, + glib_dep +] + +libtest_crypto = static_library( + 'test-crypto', + sources: sources, + include_directories: incs, + dependencies: deps, + c_args: cflags +) + +if enable_tests + subdir('tests') +endif diff --git a/libnm-util/tests/meson.build b/libnm-util/tests/meson.build new file mode 100644 index 000000000..387b0db92 --- /dev/null +++ b/libnm-util/tests/meson.build @@ -0,0 +1,51 @@ +incs = [ + top_inc, + shared_inc +] + +deps = [ + dbus_dep, + dbus_glib_dep, + glib_dep, + libnm_util_dep +] + +cflags = [ + '-DBUILD_DIR="@0@"'.format(meson.current_source_dir()), + '-DTEST_CERT_DIR="@0@"'.format(test_cert_dir) +] + +test = 'test-libnm-linking' + +test_libnm_linking = executable( + test, + [test + '.c', libnm_utils_enums_h], + include_directories: incs, + dependencies: deps + [libnm_dep], + c_args: cflags +) + +test_units = [ + ['test-crypto', [libtest_crypto], []], + ['test-general', [], [test_libnm_linking]], + ['test-secrets', [], []], + ['test-setting-8021x', [], []], + ['test-setting-dcb', [], []], + ['test-settings-defaults', [], []] +] + +foreach test_unit: test_units + name = 'libnm-utils-' + test_unit[0] + + exe = executable( + name, + [test_unit[0] + '.c', libnm_utils_enums_h], + include_directories: incs, + dependencies: deps, + c_args: cflags, + link_with: test_unit[1], + link_depends: test_unit[2] + ) + + test(name, exe) +endforeach |