tests: don't test for specific device labels
[pygobject.git] / meson.build
blobab78229c149ed20163ec96fd487eafd4841730d8
1 project('pygobject', 'c',
2   version : '3.29.4',
3   meson_version : '>= 0.46.0',
4   default_options : [ 'warning_level=1',
5                       'buildtype=debugoptimized'])
7 pygobject_version = meson.project_version()
8 version_arr = pygobject_version.split('.')
9 pygobject_version_major = version_arr[0].to_int()
10 pygobject_version_minor = version_arr[1].to_int()
11 pygobject_version_micro = version_arr[2].to_int()
13 platform_version = '@0@.0'.format(pygobject_version_major)
15 pymod = import('python')
16 python = pymod.find_installation(get_option('python'))
18 python_dep = python.dependency()
20 glib_version_req = '>= 2.38.0'
21 gi_version_req = '>= 1.46.0'
22 pycairo_version_req = '>= 1.11.1'
23 libffi_version_req = '>= 3.0'
25 gi_dep = dependency('gobject-introspection-1.0', version : gi_version_req,
26   fallback: ['gobject-introspection', 'girepo_dep'])
27 glib_dep = dependency('glib-2.0', version : glib_version_req,
28   fallback: ['glib', 'libglib_dep'])
29 gobject_dep = dependency('gobject-2.0', version : glib_version_req,
30   fallback: ['glib', 'libgobject_dep'])
31 gio_dep = dependency('gio-2.0', version : glib_version_req,
32   fallback: ['glib', 'libgio_dep'])
33 gmodule_dep = dependency('gmodule-2.0', version : glib_version_req,
34   fallback: ['glib', 'libgmodule_dep'])
35 ffi_dep = dependency('libffi', version : '>= 3.0',
36   fallback : ['libffi', 'ffi_dep'])
38 with_pycairo = get_option('pycairo')
40 if with_pycairo
41   cairo_dep = dependency('cairo')
42   cairo_gobject_dep = dependency('cairo-gobject')
44   if python.language_version().version_compare('>= 3.0')
45     pycairo_name = 'py3cairo'
46   else
47     pycairo_name = 'pycairo'
48   endif
50   pycairo_dep = dependency(
51     pycairo_name,
52     version: pycairo_version_req,
53     fallback: ['pycairo', 'pycairo_dep'],
54     default_options: ['python=' + get_option('python')],
55   )
56 endif
58 cc = meson.get_compiler('c')
60 main_c_args = [
61   '-Wall',
62   '-Warray-bounds',
63   '-Wcast-align',
64   '-Wdeclaration-after-statement',
65   '-Wduplicated-branches',
66   '-Wextra',
67   '-Wformat=2',
68   '-Wformat-nonliteral',
69   '-Wformat-security',
70   '-Wimplicit-function-declaration',
71   '-Winit-self',
72   '-Wjump-misses-init',
73   '-Wlogical-op',
74   '-Wmissing-declarations',
75   '-Wmissing-format-attribute',
76   '-Wmissing-include-dirs',
77   '-Wmissing-noreturn',
78   '-Wmissing-prototypes',
79   '-Wnested-externs',
80   '-Wnull-dereference',
81   '-Wold-style-definition',
82   '-Wpacked',
83   '-Wpointer-arith',
84   '-Wrestrict',
85   '-Wreturn-type',
86   '-Wshadow',
87   '-Wsign-compare',
88   '-Wstrict-aliasing',
89   '-Wstrict-prototypes',
90   '-Wundef',
91   '-Wunused-but-set-variable',
92   '-Wwrite-strings',
93   '-Wconversion',
96 main_c_args += [
97   '-Wno-incompatible-pointer-types-discards-qualifiers',
98   '-Wno-missing-field-initializers',
99   '-Wno-unused-parameter',
100   '-Wno-discarded-qualifiers',
101   '-Wno-sign-conversion',
102   '-Wno-cast-function-type',
105 main_c_args += [
106   '-fno-strict-aliasing',
107   '-fvisibility=hidden',
110 if not ['3.3', '3.4'].contains(python.language_version())
111   main_c_args += [
112     '-Wswitch-default',
113   ]
114 endif
116 main_c_args = cc.get_supported_arguments(main_c_args)
118 pyext_c_args = ['-DPY_SSIZE_T_CLEAN']
120 cdata = configuration_data()
122 cdata.set('PYGOBJECT_MAJOR_VERSION', pygobject_version_major)
123 cdata.set('PYGOBJECT_MINOR_VERSION', pygobject_version_minor)
124 cdata.set('PYGOBJECT_MICRO_VERSION', pygobject_version_micro)
126 configure_file(output : 'config.h', configuration : cdata)
128 pkgconf = configuration_data()
130 pkgconf.set('prefix', join_paths(get_option('prefix')))
131 pkgconf.set('exec_prefix', '${prefix}')
132 pkgconf.set('includedir', join_paths('${prefix}', get_option('includedir')))
133 pkgconf.set('datarootdir', join_paths('${prefix}', get_option('datadir')))
134 pkgconf.set('datadir', '${datarootdir}')
135 pkgconf.set('VERSION', pygobject_version)
137 pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
139 configure_file(input : 'pygobject-@0@.pc.in'.format(platform_version),
140   output : 'pygobject-@0@.pc'.format(platform_version),
141   configuration : pkgconf,
142   install_dir : pkg_install_dir)
144 pygobject_dep = declare_dependency(
145   include_directories: include_directories('gi'),
146   dependencies: [gobject_dep, ffi_dep],
147   version: meson.project_version(),
150 if pygobject_version_minor.is_odd()
151   py_version = '@0@.dev0'.format(pygobject_version)
152 else
153   py_version = pygobject_version
154 endif
156 pkginfo_conf = configuration_data()
157 pkginfo_conf.set('VERSION', py_version)
158 configure_file(input : 'PKG-INFO.in',
159   output : 'PyGObject-@0@.egg-info'.format(py_version),
160   configuration : pkginfo_conf,
161   install_dir : python.get_install_dir())
163 subdir('gi')
164 subdir('pygtkcompat')
165 subdir('tests')