From d2763f29cb3e2a32d7f2211e956be3bb79005a2c Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Sun, 21 May 2017 16:09:28 +0100 Subject: [PATCH] Add Meson build system Meson is a fast, portable, easy to understand meta-build system. It is currently being adopted in various projects inside GNOME alongside Autotools, in the hope of making it the default build system for future releases. --- atk-adaptor/adaptors/meson.build | 31 ++++++++++++++++ atk-adaptor/meson.build | 49 +++++++++++++++++++++++++ droute/meson.build | 18 ++++++++++ meson.build | 71 ++++++++++++++++++++++++++++++++++++ meson_options.txt | 4 +++ tests/dummyatk/meson.build | 23 ++++++++++++ tests/meson.build | 77 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 273 insertions(+) create mode 100644 atk-adaptor/adaptors/meson.build create mode 100644 atk-adaptor/meson.build create mode 100644 droute/meson.build create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 tests/dummyatk/meson.build create mode 100644 tests/meson.build diff --git a/atk-adaptor/adaptors/meson.build b/atk-adaptor/adaptors/meson.build new file mode 100644 index 0000000..11022d6 --- /dev/null +++ b/atk-adaptor/adaptors/meson.build @@ -0,0 +1,31 @@ +source = [ + 'accessible-adaptor.c', + 'action-adaptor.c', + 'application-adaptor.c', + 'cache-adaptor.c', + 'collection-adaptor.c', + 'component-adaptor.c', + 'document-adaptor.c', + 'editabletext-adaptor.c', + 'hyperlink-adaptor.c', + 'hypertext-adaptor.c', + 'image-adaptor.c', + 'selection-adaptor.c', + 'socket-adaptor.c', + 'table-adaptor.c', + 'table-cell-adaptor.c', + 'text-adaptor.c', + 'value-adaptor.c', +] + +libatk_bridge_adaptors = static_library('atk-bridge-adaptors', source, + include_directories: [ + root_inc, + include_directories('..'), + ], + dependencies: [ libdbus_dep, atspi_dep, atk_dep ], + c_args: p2p_cflags) + +libatk_bridge_adaptors_dep = declare_dependency(link_with: libatk_bridge_adaptors, + dependencies: [ libdbus_dep, atspi_dep, atk_dep ], + include_directories: include_directories('.')) diff --git a/atk-adaptor/meson.build b/atk-adaptor/meson.build new file mode 100644 index 0000000..16ca9c7 --- /dev/null +++ b/atk-adaptor/meson.build @@ -0,0 +1,49 @@ +subdir('adaptors') + +atk_bridge_sources = [ + 'accessible-leasing.c', + 'accessible-cache.c', + 'accessible-register.c', + 'accessible-stateset.c', + 'introspection.c', + 'bridge.c', + 'object.c', + 'event.c', + 'spi-dbus.c', +] + +install_headers([ 'atk-bridge.h' ], subdir: join_paths(meson.project_name(), '2.0')) + +libatk_bridge = shared_library('atk-bridge-2.0', atk_bridge_sources, + include_directories: root_inc, + dependencies: [ + libatk_bridge_adaptors_dep, + libdroute_dep, + libdbus_dep, + gmodule_dep, + atk_dep, + atspi_dep, + ], + c_args: p2p_cflags, + version: atk_bridge_libversion, + soversion: atk_bridge_soversion, + install: true) + +libatk_bridge_dep = declare_dependency(link_with: libatk_bridge, + include_directories: [ + root_inc, + include_directories('.') + ]) + +atk_bridge_module = shared_module('atk-bridge', 'gtk-2.0/module.c', + include_directories: root_inc, + dependencies: [ + libatk_bridge_dep, + libdbus_dep, + atk_dep, + atspi_dep, + gmodule_dep, + ], + c_args: p2p_cflags, + install: true, + install_dir: join_paths(get_option('libdir'), 'gtk-2.0', 'modules')) diff --git a/droute/meson.build b/droute/meson.build new file mode 100644 index 0000000..3a1128f --- /dev/null +++ b/droute/meson.build @@ -0,0 +1,18 @@ +droute_sources = [ + 'droute.c', + 'droute-variant.c', + 'droute-pairhash.c', +] + +libdroute = static_library('droute', droute_sources, + dependencies: [ glib_dep, libdbus_dep ], + include_directories: root_inc) + +libdroute_dep = declare_dependency(link_with: libdroute, + dependencies: [ glib_dep, libdbus_dep ], + include_directories: include_directories('.')) + +droute_test = executable('droute-test', 'droute-test.c', + dependencies: [ libdroute_dep, atspi_dep ], + include_directories: root_inc) +test('droute-test', droute_test) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..e7753d6 --- /dev/null +++ b/meson.build @@ -0,0 +1,71 @@ +project('at-spi2-atk', 'c', + version: '2.25.1', + license: 'LGPLv2.1+', + default_options: [ + 'buildtype=debugoptimized', + 'warning_level=1', + 'c_std=c99', + ], + meson_version : '>= 0.40.1') + +atk_bridge_soversion = 0 +atk_bridge_libversion = '0.0.0' + +cc = meson.get_compiler('c') +host_system = host_machine.system() + +# XXX: for strcasecmp(); should use g_ascii_strcasecmp() +add_project_arguments([ '-D_DEFAULT_SOURCE', ], language: 'c') + +# XXX: Unused +at_spi_conf = configuration_data() +at_spi_conf.set('GETTEXT_PACKAGE', meson.project_name()) +configure_file(output: 'config.h', + configuration: at_spi_conf) + +root_inc = include_directories('.') + +# Dependencies +libdbus_req_version = '>= 1.5' +glib_req_version = '>= 2.32.0' +gobject_req_version = '>= 2.0.0' +gmodule_req_version = '>= 2.0.0' +atk_req_version = '>= 2.15.4' +atspi_req_version = '>= 2.17.90' +libxml_req_version = '>= 2.9.1' + +libdbus_dep = dependency('dbus-1', version: libdbus_req_version) +glib_dep = dependency('glib-2.0', version: glib_req_version) +gobject_dep = dependency('gobject-2.0', version: gobject_req_version) +gmodule_dep = dependency('gmodule-2.0', version: gmodule_req_version) +atk_dep = dependency('atk', version: atk_req_version) +atspi_dep = dependency('atspi-2', version: atspi_req_version) +libxml_dep = dependency('libxml-2.0', version: libxml_req_version, required: false) + +if get_option('disable_p2p') + p2p_cflags = [ '-DDISABLE_P2P' ] +else + p2p_cflags = [] +endif + +import('gnome') + +pkg_conf = configuration_data() +pkg_conf.set('prefix', get_option('prefix')) +pkg_conf.set('exec_prefix', get_option('prefix')) +pkg_conf.set('libdir', get_option('libdir')) +pkg_conf.set('includedir', get_option('includedir')) +pkg_conf.set('VERSION', meson.project_version()) + +configure_file(input: 'atk-bridge-2.0.pc.in', + output: 'atk-bridge-2.0.pc', + configuration: pkg_conf, + install: true, + install_dir: join_paths(get_option('libdir'), 'pkgconfig')) + +install_data('at-spi2-atk.desktop', + install_dir: join_paths(get_option('libdir'), 'gnome-settings-daemon-3.0', 'gtk-modules')) + +subdir('droute') +subdir('atk-adaptor') +subdir('tests') diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..24c9228 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,4 @@ +option('disable_p2p', + description: 'Disable peer-to-peer DBus connections', + type: 'boolean', + value: false) diff --git a/tests/dummyatk/meson.build b/tests/dummyatk/meson.build new file mode 100644 index 0000000..4f98989 --- /dev/null +++ b/tests/dummyatk/meson.build @@ -0,0 +1,23 @@ +dummyatk_sources = [ + 'my-atk-action.c', + 'my-atk-component.c', + 'my-atk-document.c', + 'my-atk-editable-text.c', + 'my-atk-hyperlink.c', + 'my-atk-hypertext.c', + 'my-atk-image.c', + 'my-atk-text.c', + 'my-atk-object.c', + 'my-atk-table.c', + 'my-atk-table-cell.c', + 'my-atk-selection.c', + 'my-atk-value.c', +] + +dummyatk = static_library('dummyatk', dummyatk_sources, + include_directories: root_inc, + dependencies: [ glib_dep, gobject_dep, atk_dep ]) + +dummyatk_dep = declare_dependency(link_with: dummyatk, + dependencies: [ glib_dep, gobject_dep, atk_dep ], + include_directories: include_directories('.')) diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..ce6d444 --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,77 @@ +subdir('dummyatk') + +xmlloader = static_library('xmlloader', [ 'atk-object-xml-loader.c' ], + dependencies: [ glib_dep, gobject_dep, libxml_dep, atk_dep, dummyatk_dep ], + include_directories: [ root_inc, include_directories('.') ]) +xmlloader_dep = declare_dependency(link_with: xmlloader) + +testutils = static_library('testutils', [ 'atk_test_util.c' ], + dependencies: [ glib_dep, atspi_dep ], + include_directories: [ root_inc, include_directories('.') ]) +testutils_dep = declare_dependency(link_with: testutils) + +# tests: +# - name +# - sources +# - dependencies +tests = [ + [ + 'atk-test', [ + 'atk_suite.c', + 'atk_test_accessible.c', + 'atk_test_action.c', + 'atk_test_component.c', + 'atk_test_collection.c', + 'atk_test_document.c', + 'atk_test_editable_text.c', + 'atk_test_hyperlink.c', + 'atk_test_hypertext.c', + 'atk_test_image.c', + 'atk_test_selection.c', + 'atk_test_state_set.c', + 'atk_test_table.c', + 'atk_test_table_cell.c', + 'atk_test_text.c', + 'atk_test_value.c', + ], + [ + glib_dep, + atspi_dep, + xmlloader_dep, + testutils_dep, + dummyatk_dep, + ] + ], + + [ + 'app-test', + [ + 'test-application.c', + ], + [ + glib_dep, + atk_dep, + xmlloader_dep, + testutils_dep, + dummyatk_dep, + libatk_bridge_dep, + ] + ], +] + +foreach t: tests + test_name = t[0] + test_sources = t[1] + test_deps = t[2] + + test_bin = executable(test_name, test_sources, + dependencies: test_deps, + include_directories: root_inc, + c_args: [ + '-DTESTS_BUILD_DIR="@0@"'.format(meson.current_build_dir()), + '-DTESTS_SRC_DIR="@0@"'.format(meson.current_source_dir()), + '-DTESTS_DATA_DIR="@0@"'.format(join_paths(meson.current_source_dir(), 'data')), + ]) + + test(test_name, test_bin) +endforeach -- 2.7.4