[glibmm/kjellahl/meson-build-master] tools: Fix 'meson dist'



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]