1 project('pygobject', 'c',
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')
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'
47 pycairo_name = 'pycairo'
50 pycairo_dep = dependency(
52 version: pycairo_version_req,
53 fallback: ['pycairo', 'pycairo_dep'],
54 default_options: ['python=' + get_option('python')],
58 cc = meson.get_compiler('c')
64 '-Wdeclaration-after-statement',
65 '-Wduplicated-branches',
68 '-Wformat-nonliteral',
70 '-Wimplicit-function-declaration',
74 '-Wmissing-declarations',
75 '-Wmissing-format-attribute',
76 '-Wmissing-include-dirs',
78 '-Wmissing-prototypes',
81 '-Wold-style-definition',
89 '-Wstrict-prototypes',
91 '-Wunused-but-set-variable',
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',
106 '-fno-strict-aliasing',
107 '-fvisibility=hidden',
110 if not ['3.3', '3.4'].contains(python.language_version())
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)
153 py_version = pygobject_version
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())
164 subdir('pygtkcompat')