[glibmm/kjellahl/meson-build-master] meson: Build items in tools/extra_defs_gen on MSVC too



commit 07c72cb732e0a7b0d1071a6ac416c0d19ad39794
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Mon Mar 2 17:32:32 2020 +0800

    meson: Build items in tools/extra_defs_gen on MSVC too
    
    Ensure we can generate the import lib for glibmm_generate_extra_defs on
    Visual Studio builds by using the same technique we used for glibmm and
    giomm, and build the two programs that is to be built along side with
    it.
    
    Also re-order the items in meson.build a bit so that we are able to use
    our gendef tool.

 meson.build                      |  2 +-
 tools/extra_defs_gen/meson.build | 54 ++++++++++++++++++++++++++++++----------
 2 files changed, 42 insertions(+), 14 deletions(-)
---
diff --git a/meson.build b/meson.build
index 80d7dd5e..4a78c2d0 100644
--- a/meson.build
+++ b/meson.build
@@ -199,8 +199,8 @@ if is_msvc
   add_project_arguments(disabled_warnings, language: 'cpp')
 endif
 
-subdir('tools')
 subdir('MSVC_NMake/gendef')
+subdir('tools')
 subdir('glib')
 subdir('MSVC_NMake/glibmm')
 subdir('glib/glibmm')
diff --git a/tools/extra_defs_gen/meson.build b/tools/extra_defs_gen/meson.build
index 06c3b703..57a2c9b0 100644
--- a/tools/extra_defs_gen/meson.build
+++ b/tools/extra_defs_gen/meson.build
@@ -4,24 +4,52 @@
 #        glibmm_libversion
 # Output: -
 
-glibmm_generate_extra_defs_library = library(
-  'glibmm_generate_extra_defs-' + glibmm_api_version,
+glibmm_generate_extra_defs_library_int = static_library(
+  'glibmm_generate_extra_defs_int',
   'generate_extra_defs.cc',
-  version: glibmm_libversion,
   dependencies: glibmm_build_dep,
-  install: true,
+  install: false,
 )
 
-if not is_msvc
-  executable('generate_defs_glib', 'generate_defs_glib.cc',
-    dependencies: glibmm_build_dep,
-    link_with: glibmm_generate_extra_defs_library,
-    install: false,
-  )
+glibmm_generate_extra_defs = []
+glibmm_generate_extra_defs_extra_link_args = []
 
-  executable('generate_defs_gio', 'generate_defs_gio.cc',
-    dependencies: giomm_build_dep,
-    link_with: glibmm_generate_extra_defs_library,
+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(),
+  version: glibmm_libversion,
+  link_depends: glibmm_generate_extra_defs,
+  link_args: glibmm_generate_extra_defs_extra_link_args,
+  dependencies: glibmm_build_dep,
+  install: true,
+)
+
+executable('generate_defs_glib', 'generate_defs_glib.cc',
+  dependencies: glibmm_build_dep,
+  link_with: glibmm_generate_extra_defs_library,
+  install: false,
+)
+
+executable('generate_defs_gio', 'generate_defs_gio.cc',
+  dependencies: giomm_build_dep,
+  link_with: glibmm_generate_extra_defs_library,
+  install: false,
+)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]