summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2022-05-23 19:51:36 -0500
committerFederico Mena Quintero <federico@gnome.org>2022-05-23 19:51:36 -0500
commit16dd869a73dfa386f31b74896cf15933330f4867 (patch)
tree95530506d0fb7ef27051088433036d9d6340baeb /meson.build
parenta0c5a2694b81318e412776bf6aefda35a625f4ec (diff)
downloadat-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.build78
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')