summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2020-03-02 18:48:42 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2020-03-02 19:18:51 +0800
commitfa4817fc65cba8110a768320c346be69ee98ca0a (patch)
tree396d1ac6a3870308b805d26419a4671279df74b6 /tools
parent07c72cb732e0a7b0d1071a6ac416c0d19ad39794 (diff)
downloadglibmm-fa4817fc65cba8110a768320c346be69ee98ca0a.tar.gz
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.
Diffstat (limited to 'tools')
-rw-r--r--tools/extra_defs_gen/generate_extra_defs.h18
-rw-r--r--tools/extra_defs_gen/meson.build33
2 files changed, 20 insertions, 31 deletions
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 <iostream>
#include <string>
+#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,
)