[glibmm/kjellahl/meson-build-master] tools: Fix 'meson dist'
- From: Chun-wei Fan <fanchunwei src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm/kjellahl/meson-build-master] tools: Fix 'meson dist'
- Date: Mon, 2 Mar 2020 11:21:31 +0000 (UTC)
commit fa4817fc65cba8110a768320c346be69ee98ca0a
Author: Chun-wei Fan <fanchunwei src gnome org>
Date: Mon Mar 2 18:48:42 2020 +0800
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.
meson.build | 2 +-
tools/extra_defs_gen/generate_extra_defs.h | 18 ++++++++++++++++
tools/extra_defs_gen/meson.build | 33 ++----------------------------
3 files changed, 21 insertions(+), 32 deletions(-)
---
diff --git a/meson.build b/meson.build
index 4a78c2d0..80d7dd5e 100644
--- a/meson.build
+++ b/meson.build
@@ -199,8 +199,8 @@ if is_msvc
add_project_arguments(disabled_warnings, language: 'cpp')
endif
-subdir('MSVC_NMake/gendef')
subdir('tools')
+subdir('MSVC_NMake/gendef')
subdir('glib')
subdir('MSVC_NMake/glibmm')
subdir('glib/glibmm')
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,
)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]