From fa4817fc65cba8110a768320c346be69ee98ca0a Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Mon, 2 Mar 2020 18:48:42 +0800 Subject: tools: Fix 'meson dist' The former method of using gendef.exe to generate the import library for glibmm_generate_extra_defs somehow breaks 'meson dist' and builds from release tarballs, unless one builds giomm first. Fix this by using the __declspec(dll[ex|im]port) directives, since glibmm_generate_extra_defs is a simple utility library. --- tools/extra_defs_gen/generate_extra_defs.h | 18 ++++++++++++++++ tools/extra_defs_gen/meson.build | 33 ++---------------------------- 2 files changed, 20 insertions(+), 31 deletions(-) (limited to 'tools') diff --git a/tools/extra_defs_gen/generate_extra_defs.h b/tools/extra_defs_gen/generate_extra_defs.h index 300df4ca..8ad6fa73 100644 --- a/tools/extra_defs_gen/generate_extra_defs.h +++ b/tools/extra_defs_gen/generate_extra_defs.h @@ -20,6 +20,16 @@ #include #include +#if defined (_MSC_VER) && !defined (GLIBMM_GEN_EXTRA_DEFS_STATIC) +#if defined (GLIBMM_GEN_EXTRA_DEFS_BUILD) +#define GLIBMM_GEN_EXTRA_DEFS_API __declspec (dllexport) +#else +#define GLIBMM_GEN_EXTRA_DEFS_API __declspec (dllimport) +#endif +#else +#define GLIBMM_GEN_EXTRA_DEFS_API +#endif + /** Function pointer type for functions that determine if a GType is a pointer * type. */ @@ -30,21 +40,29 @@ using GTypeIsAPointerFunc = bool(*)(GType gtype); * @param gtype The GType. * @return true if the GType is a GObject or a boxed type, false otherwise. */ +GLIBMM_GEN_EXTRA_DEFS_API bool gtype_is_a_pointer(GType gtype); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_defs(GType gtype, GTypeIsAPointerFunc is_a_pointer_func = gtype_is_a_pointer); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_property_with_node_name( GParamSpec* pParamSpec, const std::string& strObjectName, const std::string& strNodeName); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_properties(GType gtype); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_type_name(GType gtype, GTypeIsAPointerFunc is_a_pointer_func = gtype_is_a_pointer); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_type_name_parameter( GType gtype, GTypeIsAPointerFunc is_a_pointer_func = gtype_is_a_pointer); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_type_name_signal( GType gtype, GTypeIsAPointerFunc is_a_pointer_func = gtype_is_a_pointer); +GLIBMM_GEN_EXTRA_DEFS_API std::string get_signals(GType gtype, GTypeIsAPointerFunc is_a_pointer_func = gtype_is_a_pointer); diff --git a/tools/extra_defs_gen/meson.build b/tools/extra_defs_gen/meson.build index 57a2c9b0..900943c9 100644 --- a/tools/extra_defs_gen/meson.build +++ b/tools/extra_defs_gen/meson.build @@ -4,40 +4,11 @@ # glibmm_libversion # Output: - -glibmm_generate_extra_defs_library_int = static_library( - 'glibmm_generate_extra_defs_int', - 'generate_extra_defs.cc', - dependencies: glibmm_build_dep, - install: false, -) - -glibmm_generate_extra_defs = [] -glibmm_generate_extra_defs_extra_link_args = [] - -if is_msvc - glibmm_generate_extra_defs = custom_target( - 'glibmm_generate_extra_defs.def', - output: 'glibmm_generate_extra_defs.def', - depends: glibmm_generate_extra_defs_library_int, - command: [ gendef, - '@OUTPUT@', - '@0@-@1@.dll'.format('glibmm_generate_extra_defs-' + - glibmm_api_version, glibmm_libversion.split('.')[0]), - glibmm_generate_extra_defs_library_int.full_path(), - ], - install: false, - ) - glibmm_generate_extra_defs_extra_link_args = [ - '/def:@0@'.format(glibmm_generate_extra_defs.full_path()) - ] -endif - glibmm_generate_extra_defs_library = library( 'glibmm_generate_extra_defs-' + glibmm_api_version, - objects: glibmm_generate_extra_defs_library_int.extract_all_objects(), + 'generate_extra_defs.cc', version: glibmm_libversion, - link_depends: glibmm_generate_extra_defs, - link_args: glibmm_generate_extra_defs_extra_link_args, + cpp_args: '-DGLIBMM_GEN_EXTRA_DEFS_BUILD', dependencies: glibmm_build_dep, install: true, ) -- cgit v1.2.1