summaryrefslogtreecommitdiff
path: root/glib/meson.build
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjellahlstedt@gmail.com>2020-03-04 15:42:19 +0100
committerKjell Ahlstedt <kjellahlstedt@gmail.com>2020-03-04 15:42:19 +0100
commitec15904af8c155e50fe112d55d230926ad75b31b (patch)
treef716a1fa7e78fc68de063aa499722b0ca284f391 /glib/meson.build
parent1156756136e7ffd0c68fe630c6bceb3d6290203b (diff)
downloadglibmm-ec15904af8c155e50fe112d55d230926ad75b31b.tar.gz
Add support for building glibmm with Meson
glibmm can be built with either Autotools or Meson. These new files have been copied from the master branch, and some of them have been changed. The parts that concern Windows and MSVC have been created by Chun-wei Fan. See MR !28
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,
+)