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',
75 '-Wmissing-declarations',
76 '-Wmissing-format-attribute',
77 '-Wmissing-include-dirs',
79 '-Wmissing-prototypes',
82 '-Wold-style-definition',
90 '-Wstrict-prototypes',
92 '-Wunused-but-set-variable',
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',
107 '-fno-strict-aliasing',
108 '-fvisibility=hidden',
111 if not ['3.3', '3.4'].contains(python.language_version())
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)
154 py_version = pygobject_version
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())
165 subdir('pygtkcompat')