ci: enable the new python 3.7 developer mode during tests
[pygobject.git] / meson.build
blob188f979c42f17f6d9aa1f21c82d24cba1edd1093
1 project('pygobject', 'c',
2   version : '3.29.3',
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   '-Winline',
73   '-Wjump-misses-init',
74   '-Wlogical-op',
75   '-Wmissing-declarations',
76   '-Wmissing-format-attribute',
77   '-Wmissing-include-dirs',
78   '-Wmissing-noreturn',
79   '-Wmissing-prototypes',
80   '-Wnested-externs',
81   '-Wnull-dereference',
82   '-Wold-style-definition',
83   '-Wpacked',
84   '-Wpointer-arith',
85   '-Wrestrict',
86   '-Wreturn-type',
87   '-Wshadow',
88   '-Wsign-compare',
89   '-Wstrict-aliasing',
90   '-Wstrict-prototypes',
91   '-Wundef',
92   '-Wunused-but-set-variable',
93   '-Wwrite-strings',
94   '-Wconversion',
97 main_c_args += [
98   '-Wno-incompatible-pointer-types-discards-qualifiers',
99   '-Wno-missing-field-initializers',
100   '-Wno-unused-parameter',
101   '-Wno-discarded-qualifiers',
102   '-Wno-sign-conversion',
103   '-Wno-cast-function-type',
106 main_c_args += [
107   '-fno-strict-aliasing',
108   '-fvisibility=hidden',
111 if not ['3.3', '3.4'].contains(python.language_version())
112   main_c_args += [
113     '-Wswitch-default',
114   ]
115 endif
117 main_c_args = cc.get_supported_arguments(main_c_args)
119 pyext_c_args = ['-DPY_SSIZE_T_CLEAN']
121 cdata = configuration_data()
123 cdata.set('PYGOBJECT_MAJOR_VERSION', pygobject_version_major)
124 cdata.set('PYGOBJECT_MINOR_VERSION', pygobject_version_minor)
125 cdata.set('PYGOBJECT_MICRO_VERSION', pygobject_version_micro)
127 configure_file(output : 'config.h', configuration : cdata)
129 pkgconf = configuration_data()
131 pkgconf.set('prefix', join_paths(get_option('prefix')))
132 pkgconf.set('exec_prefix', '${prefix}')
133 pkgconf.set('includedir', join_paths('${prefix}', get_option('includedir')))
134 pkgconf.set('datarootdir', join_paths('${prefix}', get_option('datadir')))
135 pkgconf.set('datadir', '${datarootdir}')
136 pkgconf.set('VERSION', pygobject_version)
138 pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
140 configure_file(input : 'pygobject-@0@.pc.in'.format(platform_version),
141   output : 'pygobject-@0@.pc'.format(platform_version),
142   configuration : pkgconf,
143   install_dir : pkg_install_dir)
145 pygobject_dep = declare_dependency(
146   include_directories: include_directories('gi'),
147   dependencies: [gobject_dep, ffi_dep],
148   version: meson.project_version(),
151 if pygobject_version_minor.is_odd()
152   py_version = '@0@.dev0'.format(pygobject_version)
153 else
154   py_version = pygobject_version
155 endif
157 pkginfo_conf = configuration_data()
158 pkginfo_conf.set('VERSION', py_version)
159 configure_file(input : 'PKG-INFO.in',
160   output : 'PyGObject-@0@.egg-info'.format(py_version),
161   configuration : pkginfo_conf,
162   install_dir : python.get_install_dir())
164 subdir('gi')
165 subdir('pygtkcompat')
166 subdir('tests')