build: Modernise the API reference
[platform/upstream/atk.git] / meson.build
1 project('atk', 'c',
2         version: '2.24.0',
3         license: 'LGPLv2.1+',
4         default_options: [
5           'buildtype=debugoptimized',
6           'warning_level=1',
7           'c_std=c99',
8         ],
9         meson_version : '>= 0.40.1')
10
11 cc = meson.get_compiler('c')
12 host_system = host_machine.system()
13
14 version = meson.project_version().split('.')
15 atk_major_version = version[0].to_int()
16 atk_minor_version = version[1].to_int()
17 atk_micro_version = version[2].to_int()
18
19 atk_interface_age = 1
20 atk_binary_age = 10000 * atk_major_version + 100 * atk_minor_version + 10 + atk_micro_version
21
22 atk_api_version = '1.0'
23 atk_api_path = 'atk-@0@/atk'.format(atk_api_version)
24
25 atk_prefix = get_option('prefix')
26 atk_libdir = join_paths(atk_prefix, get_option('libdir'))
27 atk_sysconfdir = join_paths(atk_prefix, get_option('sysconfdir'))
28 atk_includedir = join_paths(atk_prefix, get_option('includedir'))
29 atk_datadir = join_paths(atk_prefix, get_option('datadir'))
30 atk_libexecdir = join_paths(atk_prefix, get_option('libexecdir'))
31
32 atk_conf = configuration_data()
33
34 atk_conf.set_quoted('VERSION', meson.project_version())
35 atk_conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
36
37 # Maintain version scheme with libtool
38 atk_soversion = '0.@0@.@1@'.format((atk_binary_age - atk_interface_age), atk_interface_age)
39
40 add_project_arguments([ '-DG_DISABLE_SINGLE_INCLUDES', '-DATK_DISABLE_SINGLE_INCLUDES' ], language: 'c')
41
42 # Compiler and linker flags
43 common_cflags = []
44 common_ldflags = []
45
46 test_cflags = []
47
48 # Symbol visibility
49 if get_option('default_library') != 'static'
50   if host_system == 'windows'
51     atk_conf.set('DLL_EXPORT', true)
52     atk_conf.set('_ATK_EXTERN', '__declspec(dllexport) extern')
53     if cc.get_id() != 'msvc'
54       test_cflags += ['-fvisibility=hidden']
55     endif
56   else
57     atk_conf.set('_ATK_EXTERN', '__attribute__((visibility("default"))) extern')
58     test_cflags += ['-fvisibility=hidden']
59   endif
60 endif
61
62 # Check all compiler flags
63 foreach cflag: test_cflags
64   if cc.has_argument(cflag)
65     common_cflags += [ cflag ]
66   endif
67 endforeach
68
69 # Linker flags
70 if host_machine.system() == 'linux'
71   foreach ldflag: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', ]
72     if cc.has_argument(ldflag)
73       common_ldflags += [ ldflag ]
74     endif
75   endforeach
76 endif
77
78 # Maintain compatibility with autotools on macOS
79 if host_machine.system() == 'darwin'
80   common_ldflags += [ '-compatibility_version=1', '-current_version=1.0', ]
81 endif
82
83 # Functions
84 checked_funcs = [
85   'bind_textdomain_codeset',
86 ]
87
88 foreach f: checked_funcs
89   if cc.has_function(f)
90     atk_conf.set('HAVE_' + f.underscorify().to_upper(), 1)
91   endif
92 endforeach
93
94 # Dependencies
95 gobject_req_version = '>= 2.31.2'
96
97 gobject_dep = dependency('gobject-2.0', version: gobject_req_version)
98
99 # Compat variables for pkgconfig
100 pkgconf = configuration_data()
101 pkgconf.set('prefix', atk_prefix)
102 pkgconf.set('exec_prefix', atk_prefix)
103 pkgconf.set('libdir', atk_libdir)
104 pkgconf.set('includedir', atk_includedir)
105 pkgconf.set('VERSION', meson.project_version())
106 pkgconf.set('GLIB_PACKAGES', 'gobject-2.0')
107 pkgconf.set('ATK_API_VERSION', atk_api_version)
108 pkgconf.set('srcdir', '.')
109
110 foreach pkg: [ 'atk.pc', ]
111   configure_file(input: pkg + '.in',
112                  output: pkg,
113                  configuration: pkgconf,
114                  install: true,
115                  install_dir: join_paths(atk_libdir, 'pkgconfig'))
116 endforeach
117
118 gnome = import('gnome')
119
120 # Internal configuration header
121 configure_file(output: 'config.h', configuration: atk_conf)
122
123 root_inc = include_directories('.')
124
125 subdir('atk')
126 subdir('tests')
127 subdir('po')
128
129 if get_option('enable_docs')
130   subdir('docs')
131 endif