diff options
author | Federico Mena Quintero <federico@gnome.org> | 2022-05-23 19:51:36 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2022-05-23 19:51:36 -0500 |
commit | 16dd869a73dfa386f31b74896cf15933330f4867 (patch) | |
tree | 95530506d0fb7ef27051088433036d9d6340baeb /meson.build | |
parent | a0c5a2694b81318e412776bf6aefda35a625f4ec (diff) | |
download | at-spi2-core-16dd869a73dfa386f31b74896cf15933330f4867.tar.gz |
Build atk as part of at-spi2-core
This is basically about merging atk-toplevel-files/meson.build into
the toplevel meson.build, and fixing up some meson variable names.
One notable change is that ATK's version is kept separate from
at-spi2-core's version, namely in the atk_version variable from
meson. This gets put as ATK_VERSION in config.h.
Then, atk_get_version() is changed to return that ATK_VERSION instead
of the plain VERSION, to avoid confusion. (at-spi2-core does not put
a VERSION macro anywhere, so there's no chance of using the wrong
value, but I prefer to have a namespaced value with an ATK prefix.)
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/meson.build b/meson.build index 79f5c89e..941b31ba 100644 --- a/meson.build +++ b/meson.build @@ -17,10 +17,84 @@ host_system = host_machine.system() soversion = '0.0.1' +# This is just for atk - preserve the versioning scheme from the unmerged repositories +# until we decide what to do about the versions of different sub-libraries. +atk_version = '2.38.1' +version = atk_version.split('.') +atk_major_version = version[0].to_int() +atk_minor_version = version[1].to_int() +atk_micro_version = version[2].to_int() + +atk_interface_age = 1 +atk_binary_age = 10000 * atk_major_version + 100 * atk_minor_version + 10 + atk_micro_version + +atk_api_version = '1.0' +atk_api_name = 'atk-@0@'.format(atk_api_version) +atk_api_path = '@0@/atk'.format(atk_api_name) + +# Maintain version scheme with libtool +atk_soversion = 0 +current = atk_binary_age - atk_interface_age +atk_libversion = '@0@.@1@.@2@'.format(atk_soversion, current, atk_interface_age) +darwin_versions = ['@0@'.format(current + 1), '@0@.@1@'.format(current + 1, atk_interface_age)] + +add_project_arguments([ '-DG_DISABLE_SINGLE_INCLUDES', '-DATK_DISABLE_SINGLE_INCLUDES' ], language: 'c') + +if cc.get_id() == 'msvc' + add_project_arguments(cc.get_supported_arguments(['-FImsvc_recommended_pragmas.h', '-utf-8']), language: 'c') +endif + +# Compiler and linker flags +common_cflags = [] +common_ldflags = [] + +test_cflags = [] + at_spi_conf = configuration_data() -at_spi_conf.set('GETTEXT_PACKAGE', meson.project_name()) +at_spi_conf.set_quoted('ATK_VERSION', atk_version) +at_spi_conf.set_quoted('GETTEXT_PACKAGE', meson.project_name()) + +# Symbol visibility +if get_option('default_library') != 'static' + if host_system == 'windows' + atspi_conf.set('DLL_EXPORT', true) + at_spi_conf.set('_ATK_EXTERN', '__declspec(dllexport) extern') + if cc.get_id() != 'msvc' + test_cflags += ['-fvisibility=hidden'] + endif + else + at_spi_conf.set('_ATK_EXTERN', '__attribute__((visibility("default"))) extern') + test_cflags += ['-fvisibility=hidden'] + endif +endif + +# Check all compiler flags +common_cflags += cc.get_supported_arguments(test_cflags) + +# Linker flags +if host_machine.system() == 'linux' + test_ldflags = [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', ] + common_ldflags += cc.get_supported_link_arguments(test_ldflags) +endif + +# Maintain compatibility with autotools on macOS +if host_machine.system() == 'darwin' + common_ldflags += [ '-compatibility_version', darwin_versions[0], '-current_version', darwin_versions[1]] +endif + +# Functions +checked_funcs = [ + 'bind_textdomain_codeset', +] + +foreach f: checked_funcs + if cc.has_function(f) + at_spi_conf.set('HAVE_' + f.underscorify().to_upper(), 1) + endif +endforeach root_inc = include_directories('.') +atk_inc = include_directories('atk') registryd_inc = include_directories('registryd') atspi_prefix = get_option('prefix') @@ -118,12 +192,14 @@ xgettext = find_program('xgettext', required : false) configure_file(output: 'config.h', configuration: at_spi_conf) +pkgconfig = import('pkgconfig') gnome = import('gnome') subdir('dbind') subdir('atspi') subdir('bus') subdir('registryd') +subdir('atk') subdir('tests') if get_option('docs') |