[glibmm/kjellahl/meson-build-master] MSVC NMake: Allow builds from Meson-generated tarballs



commit 63cfffccdabfe5f497fb301aeb4fd5e3d68335ae
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Tue Mar 3 18:17:44 2020 +0800

    MSVC NMake: Allow builds from Meson-generated tarballs
    
    This adds rules to the NMake Makefiles so that they can find the sources under
    $(srcroot)/untracked, and thus will not need to re-generate the sources.
    
    However, for builds from such tarballs, it is necessary to do
    'nmake /f Makefile.vc CFG=$(CFG) prep-git-build' so that the resource scripts
    and config headers are generated, prior to performing the build.
    
    Please note that glibmm_generate_extra_defs-2.x is now built as a DLL with the
    NMake Makefiles as well.

 MSVC_NMake/build-rules-msvc.mak | 21 +++++++++++++++++----
 MSVC_NMake/config-msvc.mak      |  6 +++++-
 MSVC_NMake/generate-msvc.mak    |  4 ++--
 MSVC_NMake/install.mak          |  3 +++
 README.win32                    |  3 ++-
 5 files changed, 29 insertions(+), 8 deletions(-)
---
diff --git a/MSVC_NMake/build-rules-msvc.mak b/MSVC_NMake/build-rules-msvc.mak
index e01fd449..1512a881 100644
--- a/MSVC_NMake/build-rules-msvc.mak
+++ b/MSVC_NMake/build-rules-msvc.mak
@@ -23,6 +23,11 @@ $<
 $<
 <<
 
+{..\untracked\glib\glibmm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\glibmm\}.obj::
+       $(CXX) $(LIBGLIBMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\glibmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\glibmm\ /c @<<
+$<
+<<
+
 {..\glib\src\}.cc.m4{vs$(VSVER)\$(CFG)\$(PLAT)\glibmm\}.obj:
        @if not exist $(@D)\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)
        @for %%s in ($(<D)\*.cc.m4 $(<D)\*.h.m4) do @if not exist ..\glib\glibmm\%%~ns if not exist 
$(@D)\%%~ns $(M4) -I$(<D:\=/) %%s $(<D:\=/)/template.macros.m4 > $(@D)\%%~ns
@@ -45,6 +50,11 @@ $<
 $<
 <<
 
+{..\untracked\gio\giomm\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\giomm\}.obj::
+       $(CXX) $(LIBGIOMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\giomm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\giomm\ /c @<<
+$<
+<<
+
 {..\gio\src\}.ccg{vs$(VSVER)\$(CFG)\$(PLAT)\giomm\}.obj:
        @if not exist $(@D)\private\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)\private
        @for %%s in ($(<D)\*.ccg) do @if not exist ..\gio\giomm\%%~ns.cc if not exist $(@D)\%%~ns.cc $(PERL) 
-I ../tools/pm -- ../tools/gmmproc -I ../tools/m4 --defs $(<D:\=/) %%~ns $(<D:\=/) $(@D)
@@ -53,7 +63,7 @@ $<
 
 {..\tools\extra_defs_gen\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\}.obj::
        @if not exist vs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ $(MAKE) /f Makefile.vc CFG=$(CFG) 
vs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen
-       $(CXX) $(GLIBMM_BASE_CFLAGS) $(GLIBMM_EXTRA_INCLUDES) $(CFLAGS_NOGL) 
/Fovs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /Fdvs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /c @<<
+       $(CXX) $(GLIBMM_BASE_CFLAGS) /DGLIBMM_GEN_EXTRA_DEFS_BUILD $(GLIBMM_EXTRA_INCLUDES) $(CFLAGS_NOGL) 
/Fovs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /Fdvs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /c @<<
 $<
 <<
 
@@ -68,8 +78,12 @@ vs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\generate_extra_defs.obj:  ..\tools
 $(GLIBMM_LIB): $(GLIBMM_DLL)
 $(GIOMM_LIB): $(GIOMM_DLL)
 
-$(GLIBMM_EXTRA_DEFS_GEN_LIB): vs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\generate_extra_defs.obj
-       lib $(ARFLAGS_NOLTCG) /out:$@ $**
+$(GLIBMM_EXTRA_DEFS_GEN_LIB): $(GLIBMM_EXTRA_DEFS_GEN_DLL)
+$(GLIBMM_EXTRA_DEFS_GEN_DLL): vs$(VSVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\generate_extra_defs.obj
+       link /DLL $(LDFLAGS_NOLTCG) $(GOBJECT_LIBS) /implib:$(GLIBMM_EXTRA_DEFS_GEN_LIB) -out:$@ @<<
+$**
+<<
+       @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
 
 
 # Rules for linking DLLs
@@ -230,7 +244,6 @@ clean:
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exp
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.lib
-       @-del pkg-ver.mak
        @-del ..\tools\generate_wrap_init.pl
        @-del ..\tools\gmmproc
        @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gschemas.compiled
diff --git a/MSVC_NMake/config-msvc.mak b/MSVC_NMake/config-msvc.mak
index 53ab1aa1..58f255fc 100644
--- a/MSVC_NMake/config-msvc.mak
+++ b/MSVC_NMake/config-msvc.mak
@@ -24,12 +24,14 @@ M4 = m4
 
 GLIBMM_BASE_CFLAGS =                   \
        /Ivs$(VSVER)\$(CFG)\$(PLAT)     \
+       /I..\untracked\glib /I..\untracked\glib\glibmm          \
        /I..\glib /I..\glib\glibmm /I.\glibmm           \
        /wd4530 /std:c++17      \
        /FImsvc_recommended_pragmas.h
 
 GIOMM_BASE_CFLAGS =    \
        /Ivs$(VSVER)\$(CFG)\$(PLAT)     \
+       /I..\untracked\gio /I..\untracked\gio\giomm     \
        /I..\gio /I..\gio\giomm /I.\giomm       \
        $(GLIBMM_BASE_CFLAGS)
 
@@ -64,7 +66,9 @@ GLIBMM_LIBNAME = glibmm-vc$(VSVER)0$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLI
 
 GLIBMM_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_LIBNAME).dll
 GLIBMM_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_LIBNAME).lib
-GLIBMM_EXTRA_DEFS_GEN_LIB = 
vs$(VSVER)\$(CFG)\$(PLAT)\glibmm_generate_extra_defs-$(GLIBMM_MAJOR_VERSION).$(GLIBMM_MINOR_VERSION).lib
+GLIBMM_EXTRA_DEFS_GEN_LIBNAME = glibmm_generate_extra_defs-$(GLIBMM_MAJOR_VERSION).$(GLIBMM_MINOR_VERSION)
+GLIBMM_EXTRA_DEFS_GEN_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).dll
+GLIBMM_EXTRA_DEFS_GEN_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).lib
 
 GIOMM_LIBNAME = giomm-vc$(VSVER)0$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLIBMM_MINOR_VERSION)
 
diff --git a/MSVC_NMake/generate-msvc.mak b/MSVC_NMake/generate-msvc.mak
index 7a628095..5c441523 100644
--- a/MSVC_NMake/generate-msvc.mak
+++ b/MSVC_NMake/generate-msvc.mak
@@ -36,8 +36,6 @@ vs$(VSVER)\$(CFG)\$(PLAT)\giomm\wrap_init.cc: $(giomm_real_hg)
 
 # Generate pre-generated resources and configuration headers (builds from GIT)
 prep-git-build: pkg-ver.mak
-       $(MAKE) /f Makefile.vc CFG=$(CFG) GENERATE_VERSIONED_FILES=1 glibmm\glibmm.rc giomm\giomm.rc 
giomm\giommconfig.h
-       $(MAKE) /f Makefile.vc CFG=$(CFG) gen-perl-scripts-real
 
 gen-perl-scripts-real: pkg-ver.mak
        $(MAKE) /f Makefile.vc CFG=$(CFG) GENERATE_VERSIONED_FILES=1 ..\tools\gmmproc 
..\tools\generate_wrap_init.pl
@@ -107,3 +105,5 @@ pkg-ver.mak: ..\configure.ac
        @echo for /f "tokens=1,2,3 delims=." %%%%a IN ("%glibmm_ver%") do (echo PKG_MAJOR_VERSION=%%%%a^& 
echo PKG_MINOR_VERSION=%%%%b^& echo PKG_MICRO_VERSION=%%%%c)^>$@>>pkg-ver.bat
        @pkg-ver.bat
        @del ver.txt pkg-ver.bat
+       $(MAKE) /f Makefile.vc CFG=$(CFG) GENERATE_VERSIONED_FILES=1 glibmm\glibmm.rc giomm\giomm.rc 
giomm\giommconfig.h
+       $(MAKE) /f Makefile.vc CFG=$(CFG) gen-perl-scripts-real
diff --git a/MSVC_NMake/install.mak b/MSVC_NMake/install.mak
index 42ff757f..28ab9ac3 100644
--- a/MSVC_NMake/install.mak
+++ b/MSVC_NMake/install.mak
@@ -15,6 +15,9 @@ install: all
        @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GIOMM_LIBNAME).dll $(PREFIX)\bin
        @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GIOMM_LIBNAME).pdb $(PREFIX)\bin
        @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GIOMM_LIBNAME).lib $(PREFIX)\lib
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).dll $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).pdb $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).lib $(PREFIX)\lib
        @copy /b $(GLIBMM_EXTRA_DEFS_GEN_LIB) $(PREFIX)\lib
        @copy ..\glib\glibmm.h "$(PREFIX)\include\glibmm-$(GLIBMM_MAJOR_VERSION).$(GLIBMM_MINOR_VERSION)\"
        @copy ..\gio\giomm.h "$(PREFIX)\include\giomm-$(GLIBMM_MAJOR_VERSION).$(GLIBMM_MINOR_VERSION)\"
diff --git a/README.win32 b/README.win32
index 700aeaf2..b4ef3a9e 100644
--- a/README.win32
+++ b/README.win32
@@ -75,7 +75,8 @@ with a few manual steps required, namely to:
 -Make a new copy of the entire source tree to some location, where the build
  is to be done; then in $(srcroot)\MSVC_NMake run
  nmake /f Makefile.vc CFG=[release|debug] prep-git-build, which will copy and generate
- the following files with the proper info:
+ the following files with the proper info (this step may also be needed if the following
+ files are not present in the unpacked source tarball):
  --$(srcroot)\MSVC_NMake\glibmm\glibmmconfig.h
  --$(srcroot)\MSVC_NMake\giomm\giommconfig.h
  --$(srcroot)\MSVC_NMake\glibmm\glibmm.rc


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