diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2020-03-04 15:42:19 +0100 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2020-03-04 15:42:19 +0100 |
commit | ec15904af8c155e50fe112d55d230926ad75b31b (patch) | |
tree | f716a1fa7e78fc68de063aa499722b0ca284f391 /glib/meson.build | |
parent | 1156756136e7ffd0c68fe630c6bceb3d6290203b (diff) | |
download | glibmm-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.build | 121 |
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, +) |