1 configure_file(input : 'glibconfig.h.in', output : 'glibconfig.h',
3 install_dir : join_paths(get_option('libdir'), 'glib-2.0/include'),
4 configuration : glibconfig_conf)
11 # TODO: gnulib_objects, pcre_objects and pcre_deps are a workaround for
12 # <https://github.com/mesonbuild/meson/issues/3934> and
13 # <https://github.com/mesonbuild/meson/issues/3937>. When we can depend
14 # on a meson version where those are fixed, revert the commit that
15 # introduced this workaround.
16 if have_good_vsnprintf and have_good_snprintf
21 gnulib_objects = [gnulib_lib.extract_all_objects()]
29 install_headers(glib_headers, subdir : 'glib-2.0')
31 glib_deprecated_headers = files(
32 'deprecated/gallocator.h',
33 'deprecated/gcache.h',
34 'deprecated/gcompletion.h',
37 'deprecated/gthread.h',
39 install_headers(glib_deprecated_headers, subdir : 'glib-2.0/glib/deprecated')
41 glib_sub_headers = files(
42 'glib-autocleanups.h',
120 install_headers(glib_sub_headers, subdir : 'glib-2.0/glib')
122 deprecated_sources = files(
123 'deprecated/gallocator.c',
124 'deprecated/gcache.c',
125 'deprecated/gcompletion.c',
127 'deprecated/gthread-deprecated.c'
130 glib_sources = files(
207 'gvariant-serialiser.c',
208 'gvarianttypeinfo.c',
215 if host_system == 'windows'
216 glib_win_rc = configure_file(
219 configuration: glibconfig_conf,
221 glib_win_res = windows.compile_resources(glib_win_rc)
222 glib_sources += [glib_win_res]
223 glib_sources += files('gwin32.c', 'gspawn-win32.c', 'giowin32.c')
224 platform_deps = [winsock2, cc.find_library('winmm')]
225 if cc.get_id() == 'msvc'
226 glib_sources += files('dirent/wdirent.c')
229 glib_sources += files('glib-unix.c', 'gspawn.c', 'giounix.c')
233 if host_system == 'darwin'
234 glib_sources += files('gosxutils.m')
237 glib_sources += files('gthread-@0@.c'.format(threads_implementation))
240 glib_dtrace_obj = dtrace_obj_gen.process('glib_probes.d')
241 glib_dtrace_hdr = dtrace_hdr_gen.process('glib_probes.d')
247 pcre_static_args = []
249 if use_pcre_static_flag
250 pcre_static_args = ['-DPCRE_STATIC']
258 pcre_objects = [libpcre.extract_all_objects()]
261 glib_c_args = ['-DG_LOG_DOMAIN="GLib"', '-DGLIB_COMPILATION'] + pcre_static_args + glib_hidden_visibility_args
262 libglib = library('glib-2.0',
263 glib_dtrace_obj, glib_dtrace_hdr,
264 sources : [deprecated_sources, glib_sources],
265 objects : [charset_lib.extract_all_objects()] + gnulib_objects + pcre_objects,
266 version : library_version,
267 soversion : soversion,
268 darwin_versions : darwin_versions,
270 # intl.lib is not compatible with SAFESEH
271 link_args : [noseh_link_args, glib_link_flags, win32_ldflags],
272 include_directories : configinc,
273 dependencies : pcre_deps + [thread_dep, libintl, librt] + libiconv + platform_deps,
274 c_args : glib_c_args,
275 objc_args : glib_c_args,
278 libglib_dep = declare_dependency(
280 # thread_dep doesn't get pulled in from libglib atm,
281 # see https://github.com/mesonbuild/meson/issues/1426
282 dependencies : [thread_dep, libintl],
283 # We sadly need to export configinc here because everyone includes <glib/*.h>
284 include_directories : [configinc, glibinc])
286 pkg.generate(libglib,
287 libraries : [libintl],
288 libraries_private : [osx_ldflags, win32_ldflags],
289 subdirs : ['glib-2.0'],
290 extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,
291 variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')),
292 'glib_genmarshal=' + join_paths('${bindir}', 'glib-genmarshal'),
293 'gobject_query=' + join_paths('${bindir}', 'gobject-query'),
294 'glib_mkenums=' + join_paths('${bindir}', 'glib-mkenums')],
295 version : glib_version,
296 install_dir : glib_pkgconfigreldir,
297 filebase : 'glib-2.0',
299 description : 'C Utility Library',
302 # On Windows, glib needs a spawn helper for g_spawn* API
303 if host_system == 'windows'
304 if host_machine.cpu_family() == 'x86'
305 executable('gspawn-win32-helper', 'gspawn-win32-helper.c',
308 include_directories : configinc,
309 dependencies : [libglib_dep])
310 executable('gspawn-win32-helper-console', 'gspawn-win32-helper.c',
312 c_args : ['-DHELPER_CONSOLE'],
313 include_directories : configinc,
314 dependencies : [libglib_dep])
316 executable('gspawn-win64-helper', 'gspawn-win32-helper.c',
319 include_directories : configinc,
320 dependencies : [libglib_dep])
321 executable('gspawn-win64-helper-console', 'gspawn-win32-helper.c',
323 c_args : ['-DHELPER_CONSOLE'],
324 include_directories : configinc,
325 dependencies : [libglib_dep])
328 gtester = executable('gtester', 'gtester.c',
330 include_directories : configinc,
331 dependencies : [libglib_dep])
334 report_conf = configuration_data()
335 report_conf.set('GLIB_VERSION', glib_version)
336 report_conf.set('PYTHON', python_name)
338 input: 'gtester-report.in',
339 output: 'gtester-report',
340 install_dir: get_option('bindir'),
341 configuration: report_conf,
342 install_mode: 'rwxr-xr-x'
345 install_data('glib_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
347 gdb_conf = configuration_data()
348 gdb_conf.set('datadir', glib_datadir)
349 # This is also used in gobject/meson.build
350 if host_system != 'windows'
351 # XXX: We add a leading './' because glib_libdir is an absolute path and we
352 # need it to be a relative path so that join_paths appends it to the end.
353 gdb_install_dir = join_paths(glib_datadir, 'gdb', 'auto-load', './' + glib_libdir)
355 # FIXME: Cannot install on Windows because the path will contain a drive
356 # letter and colons are not allowed in paths.
357 gdb_install_dir = false
360 input: 'libglib-gdb.py.in',
361 output: 'libglib-2.0.so.@0@-gdb.py'.format(library_version),
362 configuration: gdb_conf,
363 install_dir: gdb_install_dir,
367 glib_stp = configure_file(input : 'glib.stp.in',
368 output : '@0@.stp'.format(libglib.full_path().split('/').get(-1)),
369 configuration : stp_cdata,
370 install_dir : tapset_install_dir,