Blame glib/meson.build

Packit ae235b
configure_file(input : 'glibconfig.h.in', output : 'glibconfig.h',
Packit ae235b
  install : true,
Packit ae235b
  install_dir : join_paths(get_option('libdir'), 'glib-2.0/include'),
Packit ae235b
  configuration : glibconfig_conf)
Packit ae235b
Packit ae235b
subdir('libcharset')
Packit ae235b
if not use_system_pcre
Packit ae235b
  subdir('pcre')
Packit ae235b
endif
Packit ae235b
if have_good_vsnprintf and have_good_snprintf
Packit ae235b
  gnulib_lib = []
Packit ae235b
else
Packit ae235b
  subdir('gnulib')
Packit ae235b
endif
Packit ae235b
Packit ae235b
glib_headers = files(
Packit ae235b
  'glib.h',
Packit ae235b
  'glib-unix.h',
Packit ae235b
  'glib-object.h',
Packit ae235b
)
Packit ae235b
install_headers(glib_headers, subdir : 'glib-2.0')
Packit ae235b
Packit ae235b
glib_deprecated_headers = files(
Packit ae235b
  'deprecated/gallocator.h',
Packit ae235b
  'deprecated/gcache.h',
Packit ae235b
  'deprecated/gcompletion.h',
Packit ae235b
  'deprecated/gmain.h',
Packit ae235b
  'deprecated/grel.h',
Packit ae235b
  'deprecated/gthread.h',
Packit ae235b
)
Packit ae235b
install_headers(glib_deprecated_headers, subdir : 'glib-2.0/glib/deprecated')
Packit ae235b
Packit ae235b
glib_sub_headers = files(
Packit ae235b
  'glib-autocleanups.h',
Packit ae235b
  'galloca.h',
Packit ae235b
  'garray.h',
Packit ae235b
  'gasyncqueue.h',
Packit ae235b
  'gatomic.h',
Packit ae235b
  'gbacktrace.h',
Packit ae235b
  'gbase64.h',
Packit ae235b
  'gbitlock.h',
Packit ae235b
  'gbookmarkfile.h',
Packit ae235b
  'gbytes.h',
Packit ae235b
  'gcharset.h',
Packit ae235b
  'gchecksum.h',
Packit ae235b
  'gconvert.h',
Packit ae235b
  'gdataset.h',
Packit ae235b
  'gdate.h',
Packit ae235b
  'gdatetime.h',
Packit ae235b
  'gdir.h',
Packit ae235b
  'genviron.h',
Packit ae235b
  'gerror.h',
Packit ae235b
  'gfileutils.h',
Packit ae235b
  'ggettext.h',
Packit ae235b
  'ghash.h',
Packit ae235b
  'ghmac.h',
Packit ae235b
  'ghook.h',
Packit ae235b
  'ghostutils.h',
Packit ae235b
  'gi18n.h',
Packit ae235b
  'gi18n-lib.h',
Packit ae235b
  'giochannel.h',
Packit ae235b
  'gkeyfile.h',
Packit ae235b
  'glist.h',
Packit ae235b
  'gmacros.h',
Packit ae235b
  'gmain.h',
Packit ae235b
  'gmappedfile.h',
Packit ae235b
  'gmarkup.h',
Packit ae235b
  'gmem.h',
Packit ae235b
  'gmessages.h',
Packit ae235b
  'gnode.h',
Packit ae235b
  'goption.h',
Packit ae235b
  'gpattern.h',
Packit ae235b
  'gpoll.h',
Packit ae235b
  'gprimes.h',
Packit ae235b
  'gqsort.h',
Packit ae235b
  'gquark.h',
Packit ae235b
  'gqueue.h',
Packit ae235b
  'grand.h',
Packit ae235b
  'gregex.h',
Packit ae235b
  'gscanner.h',
Packit ae235b
  'gsequence.h',
Packit ae235b
  'gshell.h',
Packit ae235b
  'gslice.h',
Packit ae235b
  'gslist.h',
Packit ae235b
  'gspawn.h',
Packit ae235b
  'gstdio.h',
Packit ae235b
  'gstrfuncs.h',
Packit ae235b
  'gtestutils.h',
Packit ae235b
  'gstring.h',
Packit ae235b
  'gstringchunk.h',
Packit ae235b
  'gthread.h',
Packit ae235b
  'gthreadpool.h',
Packit ae235b
  'gtimer.h',
Packit ae235b
  'gtimezone.h',
Packit ae235b
  'gtrashstack.h',
Packit ae235b
  'gtree.h',
Packit ae235b
  'gtypes.h',
Packit ae235b
  'guuid.h',
Packit ae235b
  'gunicode.h',
Packit ae235b
  'gurifuncs.h',
Packit ae235b
  'gutils.h',
Packit ae235b
  'gvarianttype.h',
Packit ae235b
  'gvariant.h',
Packit ae235b
  'gversion.h',
Packit ae235b
  'gversionmacros.h',
Packit ae235b
  'gwin32.h',
Packit ae235b
  'gprintf.h',
Packit ae235b
)
Packit ae235b
install_headers(glib_sub_headers, subdir : 'glib-2.0/glib')
Packit ae235b
Packit ae235b
deprecated_sources = files(
Packit ae235b
  'deprecated/gallocator.c',
Packit ae235b
  'deprecated/gcache.c',
Packit ae235b
  'deprecated/gcompletion.c',
Packit ae235b
  'deprecated/grel.c',
Packit ae235b
  'deprecated/gthread-deprecated.c'
Packit ae235b
)
Packit ae235b
Packit ae235b
glib_sources = files(
Packit ae235b
  'garray.c',
Packit ae235b
  'gasyncqueue.c',
Packit ae235b
  'gatomic.c',
Packit ae235b
  'gbacktrace.c',
Packit ae235b
  'gbase64.c',
Packit ae235b
  'gbitlock.c',
Packit ae235b
  'gbookmarkfile.c',
Packit ae235b
  'gbytes.c',
Packit ae235b
  'gcharset.c',
Packit ae235b
  'gchecksum.c',
Packit ae235b
  'gconvert.c',
Packit ae235b
  'gdataset.c',
Packit ae235b
  'gdate.c',
Packit ae235b
  'gdatetime.c',
Packit ae235b
  'gdir.c',
Packit ae235b
  'genviron.c',
Packit ae235b
  'gerror.c',
Packit ae235b
  'gfileutils.c',
Packit ae235b
  'ggettext.c',
Packit ae235b
  'ghash.c',
Packit ae235b
  'ghmac.c',
Packit ae235b
  'ghook.c',
Packit ae235b
  'ghostutils.c',
Packit ae235b
  'giochannel.c',
Packit ae235b
  'gkeyfile.c',
Packit ae235b
  'glib-init.c',
Packit ae235b
  'glib-private.c',
Packit ae235b
  'glist.c',
Packit ae235b
  'gmain.c',
Packit ae235b
  'gmappedfile.c',
Packit ae235b
  'gmarkup.c',
Packit ae235b
  'gmem.c',
Packit ae235b
  'gmessages.c',
Packit ae235b
  'gnode.c',
Packit ae235b
  'goption.c',
Packit ae235b
  'gpattern.c',
Packit ae235b
  'gpoll.c',
Packit ae235b
  'gprimes.c',
Packit ae235b
  'gqsort.c',
Packit ae235b
  'gquark.c',
Packit ae235b
  'gqueue.c',
Packit ae235b
  'grand.c',
Packit ae235b
  'gregex.c',
Packit ae235b
  'gscanner.c',
Packit ae235b
  'gsequence.c',
Packit ae235b
  'gshell.c',
Packit ae235b
  'gslice.c',
Packit ae235b
  'gslist.c',
Packit ae235b
  'gstdio.c',
Packit ae235b
  'gstrfuncs.c',
Packit ae235b
  'gstring.c',
Packit ae235b
  'gstringchunk.c',
Packit ae235b
  'gtestutils.c',
Packit ae235b
  'gthread.c',
Packit ae235b
  'gthreadpool.c',
Packit ae235b
  'gtimer.c',
Packit ae235b
  'gtimezone.c',
Packit ae235b
  'gtranslit.c',
Packit ae235b
  'gtrashstack.c',
Packit ae235b
  'gtree.c',
Packit ae235b
  'guniprop.c',
Packit ae235b
  'gutf8.c',
Packit ae235b
  'gunibreak.c',
Packit ae235b
  'gunicollate.c',
Packit ae235b
  'gunidecomp.c',
Packit ae235b
  'gurifuncs.c',
Packit ae235b
  'gutils.c',
Packit ae235b
  'guuid.c',
Packit ae235b
  'gvariant.c',
Packit ae235b
  'gvariant-core.c',
Packit ae235b
  'gvariant-parser.c',
Packit ae235b
  'gvariant-serialiser.c',
Packit ae235b
  'gvarianttypeinfo.c',
Packit ae235b
  'gvarianttype.c',
Packit ae235b
  'gversion.c',
Packit ae235b
  'gwakeup.c',
Packit ae235b
  'gprintf.c',
Packit ae235b
)
Packit ae235b
Packit ae235b
if host_system == 'windows'
Packit ae235b
  glib_win_rc = configure_file(
Packit ae235b
    input: 'glib.rc.in',
Packit ae235b
    output: 'glib.rc',
Packit ae235b
    configuration: glibconfig_conf,
Packit ae235b
  )
Packit ae235b
  glib_win_res = windows.compile_resources(glib_win_rc)
Packit ae235b
  glib_sources += [glib_win_res]
Packit ae235b
  glib_sources += files('gthread-win32.c')
Packit ae235b
  glib_sources += files('gwin32.c', 'gspawn-win32.c', 'giowin32.c')
Packit ae235b
  platform_deps = [winsock2, cc.find_library('winmm')]
Packit ae235b
else
Packit ae235b
  glib_sources += files('gthread-posix.c')
Packit ae235b
  glib_sources += files('glib-unix.c', 'gspawn.c', 'giounix.c')
Packit ae235b
  platform_deps = []
Packit ae235b
endif
Packit ae235b
Packit ae235b
if enable_dtrace
Packit ae235b
  glib_dtrace_obj = dtrace_obj_gen.process('glib_probes.d')
Packit ae235b
  glib_dtrace_hdr = dtrace_hdr_gen.process('glib_probes.d')
Packit ae235b
else
Packit ae235b
  glib_dtrace_obj = []
Packit ae235b
  glib_dtrace_hdr = []
Packit ae235b
endif
Packit ae235b
Packit ae235b
pcre_static_args = []
Packit ae235b
Packit ae235b
if use_pcre_static_flag
Packit ae235b
  pcre_static_args = ['-DPCRE_STATIC']
Packit ae235b
endif
Packit ae235b
Packit ae235b
libglib = library('glib-2.0',
Packit ae235b
  glib_dtrace_obj, glib_dtrace_hdr,
Packit ae235b
  sources : [deprecated_sources, glib_sources],
Packit ae235b
  version : library_version,
Packit ae235b
  soversion : soversion,
Packit ae235b
  install : true,
Packit ae235b
  # intl.lib is not compatible with SAFESEH
Packit ae235b
  link_args : platform_ldflags + noseh_link_args,
Packit ae235b
  include_directories : configinc,
Packit ae235b
  link_with : [charset_lib, gnulib_lib],
Packit ae235b
  dependencies : [pcre, thread_dep, libintl, librt] + libiconv + platform_deps,
Packit ae235b
  c_args : ['-DG_LOG_DOMAIN="GLib"', '-DGLIB_COMPILATION'] + pcre_static_args + glib_hidden_visibility_args
Packit ae235b
)
Packit ae235b
Packit ae235b
libglib_dep = declare_dependency(
Packit ae235b
  link_with : libglib,
Packit ae235b
  # thread_dep doesn't get pulled in from libglib atm,
Packit ae235b
  # see https://github.com/mesonbuild/meson/issues/1426
Packit ae235b
  dependencies : [thread_dep],
Packit ae235b
  # We sadly need to export configinc here because everyone includes <glib/*.h>
Packit ae235b
  include_directories : [configinc, glibinc])
Packit ae235b
Packit ae235b
# On Windows, glib needs a spawn helper for g_spawn* API
Packit ae235b
if host_system == 'windows'
Packit ae235b
  if host_machine.cpu_family() == 'x86'
Packit ae235b
    executable('gspawn-win32-helper', 'gspawn-win32-helper.c',
Packit ae235b
      install : true,
Packit ae235b
      gui_app : true,
Packit ae235b
      include_directories : configinc,
Packit ae235b
      dependencies : [libintl, libglib_dep])
Packit ae235b
    executable('gspawn-win32-helper-console', 'gspawn-win32-helper.c',
Packit ae235b
      install : true,
Packit ae235b
      c_args : ['-DHELPER_CONSOLE'],
Packit ae235b
      include_directories : configinc,
Packit ae235b
      dependencies : [libintl, libglib_dep])
Packit ae235b
  else
Packit ae235b
    executable('gspawn-win64-helper', 'gspawn-win32-helper.c',
Packit ae235b
      install : true,
Packit ae235b
      gui_app : true,
Packit ae235b
      include_directories : configinc,
Packit ae235b
      dependencies : [libintl, libglib_dep])
Packit ae235b
    executable('gspawn-win64-helper-console', 'gspawn-win32-helper.c',
Packit ae235b
      install : true,
Packit ae235b
      c_args : ['-DHELPER_CONSOLE'],
Packit ae235b
      include_directories : configinc,
Packit ae235b
      dependencies : [libintl, libglib_dep])
Packit ae235b
  endif
Packit ae235b
else
Packit ae235b
  gtester = executable('gtester', 'gtester.c',
Packit ae235b
    install : true,
Packit ae235b
    include_directories : configinc,
Packit ae235b
    dependencies : [libglib_dep])
Packit ae235b
endif
Packit ae235b
Packit ae235b
install_data('gtester-report', install_dir : get_option('bindir'))
Packit ae235b
Packit ae235b
install_data('glib_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
Packit ae235b
Packit ae235b
gdb_conf = configuration_data()
Packit ae235b
gdb_conf.set('datadir', glib_datadir)
Packit ae235b
# This is also used in gobject/meson.build
Packit ae235b
if host_system != 'windows'
Packit ae235b
  # XXX: We add a leading './' because glib_libdir is an absolute path and we
Packit ae235b
  # need it to be a relative path so that join_paths appends it to the end.
Packit ae235b
  gdb_install_dir = join_paths(glib_datadir, 'gdb', 'auto-load', './' + glib_libdir)
Packit ae235b
else
Packit ae235b
  # FIXME: Cannot install on Windows because the path will contain a drive
Packit ae235b
  # letter and colons are not allowed in paths.
Packit ae235b
  gdb_install_dir = false
Packit ae235b
endif
Packit ae235b
configure_file(
Packit ae235b
  input: 'libglib-gdb.py.in',
Packit ae235b
  output: 'libglib-2.0.so.@0@-gdb.py'.format(library_version),
Packit ae235b
  configuration: gdb_conf,
Packit ae235b
  install_dir: gdb_install_dir,
Packit ae235b
)
Packit ae235b
Packit ae235b
if enable_systemtap
Packit ae235b
  glib_stp = configure_file(input : 'glib.stp.in',
Packit ae235b
    output : '@0@.stp'.format(libglib.full_path().split('/').get(-1)),
Packit ae235b
    configuration : stp_cdata,
Packit ae235b
    install_dir : tapset_install_dir,
Packit ae235b
    install : true)
Packit ae235b
endif
Packit ae235b
Packit ae235b
# gtester doesn't work on native windows
Packit ae235b
if cc.get_id() != 'msvc'
Packit ae235b
  subdir('tests')
Packit ae235b
endif