summaryrefslogtreecommitdiff
path: root/glib/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'glib/meson.build')
-rw-r--r--glib/meson.build121
1 files changed, 121 insertions, 0 deletions
diff --git a/glib/meson.build b/glib/meson.build
new file mode 100644
index 00000000..1b918c00
--- /dev/null
+++ b/glib/meson.build
@@ -0,0 +1,121 @@
+# glib
+
+# Input: install_prefix, install_libdir, install_datadir, install_includedir,
+# glibmm_pcname, giomm_pcname, glibmm_api_version, glibmm_requires,
+# giomm_requires, build_deprecated_api, install_pkgconfigdir,
+# is_os_cocoa, cpp_compiler, glibmm_major_version, glibmm_minor_version,
+# glibmm_micro_version
+# Output: pkg_conf_data, install_glibmmconfigdir, glibmmconfig_h
+
+pkg_conf_data = configuration_data()
+pkg_conf_data.set('prefix', install_prefix)
+pkg_conf_data.set('exec_prefix', '${prefix}')
+pkg_conf_data.set('libdir', '${exec_prefix}' / install_libdir)
+pkg_conf_data.set('datarootdir', '${prefix}' / install_datadir)
+pkg_conf_data.set('datadir', '${datarootdir}')
+pkg_conf_data.set('includedir', '${prefix}' / install_includedir)
+pkg_conf_data.set('PACKAGE_TARNAME', meson.project_name())
+pkg_conf_data.set('PACKAGE_VERSION', meson.project_version())
+pkg_conf_data.set('GLIBMM_MODULE_NAME', glibmm_pcname)
+pkg_conf_data.set('GLIBMM_API_VERSION', glibmm_api_version)
+pkg_conf_data.set('GLIBMM_MODULES', glibmm_requires)
+pkg_conf_data.set('GIOMM_MODULE_NAME', giomm_pcname)
+pkg_conf_data.set('GIOMM_API_VERSION', glibmm_api_version)
+pkg_conf_data.set('GIOMM_MODULES', giomm_requires)
+if not build_deprecated_api
+ pkg_conf_data.set('GLIBMM_DISABLE_DEPRECATED', 1)
+ pkg_conf_data.set('GIOMM_DISABLE_DEPRECATED', 1)
+endif
+pkg_conf_data.set('GLIBMM_MAJOR_VERSION', glibmm_major_version)
+pkg_conf_data.set('GLIBMM_MINOR_VERSION', glibmm_minor_version)
+pkg_conf_data.set('GLIBMM_MICRO_VERSION', glibmm_micro_version)
+pkg_conf_data.set('GIOMM_MAJOR_VERSION', glibmm_major_version)
+pkg_conf_data.set('GIOMM_MINOR_VERSION', glibmm_minor_version)
+pkg_conf_data.set('GIOMM_MICRO_VERSION', glibmm_micro_version)
+if get_option('default_library') == 'static'
+ pkg_conf_data.set('GLIBMM_STATIC_LIB', 1)
+ pkg_conf_data.set('GIOMM_STATIC_LIB', 1)
+endif
+
+configure_file(
+ input: 'glibmm.pc.in',
+ output: glibmm_pcname + '.pc',
+ configuration: pkg_conf_data,
+ install_dir: install_pkgconfigdir,
+)
+
+glibmm_pkg_uninst_conf_data = configuration_data()
+glibmm_pkg_uninst_conf_data.merge_from(pkg_conf_data)
+glibmm_pkg_uninst_conf_data.set('srcdir', meson.current_source_dir())
+
+configure_file(
+ input: 'glibmm-uninstalled.pc.in',
+ output: glibmm_pcname + '-uninstalled.pc',
+ configuration: glibmm_pkg_uninst_conf_data,
+)
+
+glibmm_config_conf_data = configuration_data()
+glibmm_config_conf_data.merge_from(pkg_conf_data)
+if get_option('debug-refcounting')
+ glibmm_config_conf_data.set('GLIBMM_DEBUG_REFCOUNTING', 1)
+endif
+if is_os_cocoa
+ glibmm_config_conf_data.set('GLIBMM_OS_COCOA', 1)
+endif
+glibmm_config_conf_data.set('GLIBMM_SIZEOF_WCHAR_T', cpp_compiler.sizeof('wchar_t'))
+
+# Leave GLIBMM_COMPILER_SUN_FORTE undefined. It's not used by glibmm itself.
+# The Sun Forte compiler (a.k.a. Sun WorkShop) is not one of the compilers
+# that Meson recognizes. According to Wikipedia it's old, and has been
+# replaced by Oracle Developer Studio.
+# https://en.wikipedia.org/wiki/Oracle_Developer_Studio
+#if ???
+# glibmm_config_conf_data.set('GLIBMM_COMPILER_SUN_FORTE', 1)
+#endif
+
+conf_tests = [
+# [preprocessor-macro-name, file-name, message]
+ ['GLIBMM_HAVE_WIDE_STREAM', 'have_wide_stream.cc', 'Wide stream support'],
+ ['GLIBMM_HAVE_STD_ITERATOR_TRAITS', 'have_std_iterator_traits.cc',
+ 'std::iterator_traits<> is standard-conforming'],
+ ['GLIBMM_HAVE_SUN_REVERSE_ITERATOR', 'have_sun_reverse_iterator.cc',
+ 'std::reverse_iterator is in Sun libCstd style'],
+ ['GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS', 'have_template_sequence_ctors.cc',
+ 'STL containers have templated sequence ctors'],
+ ['GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS',
+ 'have_disambiguous_const_template_specializations.cc',
+ 'Disambiguates template specializations for const and non-const types'],
+ ['GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION',
+ 'can_use_dynamic_cast_in_unused_template_wo_def.cc',
+ 'Non-instantiated templates may dynamic_cast<> to an undefined type'],
+ ['GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS',
+ 'can_assign_non_extern_c_functions_to_extern_c_cb.cc',
+ 'extern "C" and extern "C++" function pointers are compatible'],
+ ['GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS', 'allows_static_inline_npos.cc',
+ 'A static member variable may be initialized inline to std::string::npos'],
+ ['GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES',
+ 'member_functions_member_templates.cc',
+ 'Member functions can refer to spezialized member function templates'],
+ ['GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC',
+ 'can_use_namespaces_inside_externc.cc',
+ 'extern "C" functions in the global namespace, even inside a namespace'],
+ ['GLIBMM_CAN_USE_THREAD_LOCAL', 'can_use_thread_local.cc', 'thread_local support'],
+ ['GLIBMM_HAVE_C_STD_TIME_T_IS_NOT_INT32', 'std_time_t_is_not_int32.cc',
+ 'std::time_t and gint32 are typedefs of different builtin types'],
+]
+
+foreach conf_test : conf_tests
+ if cpp_compiler.compiles(
+ files('..' / 'tools' / 'conf_tests' / conf_test[1]),
+ name: conf_test[2])
+ glibmm_config_conf_data.set(conf_test[0], 1)
+ endif
+endforeach
+
+install_glibmmconfigdir = install_libdir / glibmm_pcname / 'include'
+glibmmconfig_h = configure_file(
+ input: 'glibmmconfig.h.meson',
+ output: 'glibmmconfig.h',
+ configuration: glibmm_config_conf_data,
+ install_dir: install_glibmmconfigdir,
+)