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.48.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 cc = meson.get_compiler('c')
43 cairo_dep = dependency('cairo', required: cc.get_id() != 'msvc')
44 cairo_gobject_dep = dependency('cairo-gobject', required: cc.get_id() != 'msvc')
46 if cc.get_id() == 'msvc' and (not cairo_gobject_dep.found() or not cairo_dep.found())
47 if cc.has_header('cairo.h') and cc.has_header ('cairo-gobject.h')
48 cairo_dep = cc.find_library ('cairo')
49 cairo_gobject_dep = cc.find_library ('cairo-gobject')
53 if python.language_version().version_compare('>= 3.0')
54 pycairo_name = 'py3cairo'
56 pycairo_name = 'pycairo'
59 pycairo_dep = dependency(
61 version: pycairo_version_req,
62 fallback: ['pycairo', 'pycairo_dep'],
63 default_options: ['python=' + get_option('python')],
68 if cc.get_id() == 'msvc'
69 main_c_args += [ '-FImsvc_recommended_pragmas.h' ]
75 '-Wduplicated-branches',
78 '-Wformat-nonliteral',
80 '-Wimplicit-function-declaration',
84 '-Wmissing-declarations',
85 '-Wmissing-format-attribute',
86 '-Wmissing-include-dirs',
88 '-Wmissing-prototypes',
91 '-Wold-style-definition',
99 '-Wstrict-prototypes',
102 '-Wunused-but-set-variable',
106 if python.language_version().split('.')[0] == '2'
108 '-Wdeclaration-after-statement',
113 '-Wno-incompatible-pointer-types-discards-qualifiers',
114 '-Wno-missing-field-initializers',
115 '-Wno-unused-parameter',
116 '-Wno-discarded-qualifiers',
117 '-Wno-sign-conversion',
118 '-Wno-cast-function-type',
119 '-Wno-int-conversion',
123 '-fno-strict-aliasing',
124 '-fvisibility=hidden',
127 main_c_args = cc.get_supported_arguments(main_c_args)
130 pyext_c_args = ['-DPY_SSIZE_T_CLEAN']
132 cdata = configuration_data()
134 cdata.set('PYGOBJECT_MAJOR_VERSION', pygobject_version_major)
135 cdata.set('PYGOBJECT_MINOR_VERSION', pygobject_version_minor)
136 cdata.set('PYGOBJECT_MICRO_VERSION', pygobject_version_micro)
138 configure_file(output : 'config.h', configuration : cdata)
140 pkgconf = configuration_data()
142 pkgconf.set('prefix', join_paths(get_option('prefix')))
143 pkgconf.set('exec_prefix', '${prefix}')
144 pkgconf.set('includedir', join_paths('${prefix}', get_option('includedir')))
145 pkgconf.set('datarootdir', join_paths('${prefix}', get_option('datadir')))
146 pkgconf.set('datadir', '${datarootdir}')
147 pkgconf.set('VERSION', pygobject_version)
149 pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
151 configure_file(input : 'pygobject-@0@.pc.in'.format(platform_version),
152 output : 'pygobject-@0@.pc'.format(platform_version),
153 configuration : pkgconf,
154 install_dir : pkg_install_dir)
156 pygobject_dep = declare_dependency(
157 include_directories: include_directories('gi'),
158 dependencies: [gobject_dep, ffi_dep],
159 version: meson.project_version(),
162 if pygobject_version_minor.is_odd()
163 py_version = '@0@.dev0'.format(pygobject_version)
165 py_version = pygobject_version
168 pkginfo_conf = configuration_data()
169 pkginfo_conf.set('VERSION', py_version)
170 configure_file(input : 'PKG-INFO.in',
171 output : 'PyGObject-@0@.egg-info'.format(py_version),
172 configuration : pkginfo_conf,
173 install_dir : python.get_install_dir(pure : false))
176 subdir('pygtkcompat')
177 with_tests = get_option('tests')