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



commit 6cfe87180409b5d791d52ceee091e7d95bbf4468
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 | 31 +++++++++++++++++++++++++------
 MSVC_NMake/config-msvc.mak      |  6 +++++-
 MSVC_NMake/generate-msvc.mak    |  4 ++--
 MSVC_NMake/install.mak          |  4 +++-
 README.win32                    |  3 ++-
 5 files changed, 37 insertions(+), 11 deletions(-)
---
diff --git a/MSVC_NMake/build-rules-msvc.mak b/MSVC_NMake/build-rules-msvc.mak
index d9045e7f..f6d5c2fc 100644
--- a/MSVC_NMake/build-rules-msvc.mak
+++ b/MSVC_NMake/build-rules-msvc.mak
@@ -18,6 +18,11 @@
 $<
 <<
 
+{..\untracked\glib\glibmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\glibmm\}.obj::
+       $(CXX) $(LIBGLIBMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\glibmm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\glibmm\ /c @<<
+$<
+<<
+
 {..\glib\glibmm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\glibmm\}.obj::
        $(CXX) $(LIBGLIBMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\glibmm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\glibmm\ /c @<<
 $<
@@ -25,9 +30,10 @@ $<
 
 {..\glib\src\}.cc.m4{vs$(PDBVER)\$(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
+       @for %%s in ($(<D)\*.cc.m4 $(<D)\*.h.m4) do @if not exist ..\glib\glibmm\%%~ns if not exist 
..\untracked\glib\glibmm\%%~ns if not exist $(@D)\%%~ns $(M4) -I$(<D:\=/) %%s $(<D:\=/)/template.macros.m4 > 
$(@D)\%%~ns
        @if exist $(@D)\$(<B) $(CXX) $(LIBGLIBMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c $(@D)\$(<B)
        @if exist ..\glib\glibmm\$(<B) $(CXX) $(LIBGLIBMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ /Fd$(@D)\ /c 
..\glib\glibmm\$(<B)
+       @if exist ..\untracked\glib\glibmm\$(<B) $(CXX) $(LIBGLIBMM_CFLAGS) $(CFLAGS_NOGL) /Fo$(@D)\ 
/Fd$(@D)\ /c ..\untracked\glib\glibmm\$(<B)
 
 {..\glib\src\}.ccg{vs$(PDBVER)\$(CFG)\$(PLAT)\glibmm\}.obj:
        @if not exist $(@D)\private\ $(MAKE) /f Makefile.vc CFG=$(CFG) $(@D)\private
@@ -40,6 +46,11 @@ $<
 $<
 <<
 
+{..\untracked\gio\giomm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\giomm\}.obj::
+       $(CXX) $(LIBGIOMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(VSVER)\$(CFG)\$(PLAT)\giomm\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\giomm\ /c @<<
+$<
+<<
+
 {..\gio\giomm\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\giomm\}.obj::
        $(CXX) $(LIBGIOMM_CFLAGS) $(CFLAGS_NOGL) /Fovs$(PDBVER)\$(CFG)\$(PLAT)\giomm\ 
/Fdvs$(PDBVER)\$(CFG)\$(PLAT)\giomm\ /c @<<
 $<
@@ -53,7 +64,7 @@ $<
 
 {..\tools\extra_defs_gen\}.cc{vs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\}.obj::
        @if not exist vs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ $(MAKE) /f Makefile.vc CFG=$(CFG) 
vs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen
-       $(CXX) $(GLIBMM_BASE_CFLAGS) $(GLIBMM_EXTRA_INCLUDES) $(CFLAGS_NOGL) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /c @<<
+       $(CXX) $(GLIBMM_BASE_CFLAGS) /DGLIBMM_GEN_EXTRA_DEFS_BUILD $(GLIBMM_EXTRA_INCLUDES) $(CFLAGS_NOGL) 
/Fovs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /Fdvs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\ /c @<<
 $<
 <<
 
@@ -68,9 +79,12 @@ vs$(PDBVER)\$(CFG)\$(PLAT)\glib-extra-defs-gen\generate_extra_defs.obj:  ..\tool
 $(GLIBMM_LIB): $(GLIBMM_DLL)
 $(GIOMM_LIB): $(GIOMM_DLL)
 
-$(GLIBMM_EXTRA_DEFS_GEN_LIB): vs$(PDBVER)\$(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$(PDBVER)\$(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
 # Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
@@ -234,7 +248,12 @@ clean:
        @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.ilk
        @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.exp
        @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\*.lib
-       @-del pkg-ver.mak
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.dll
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.pdb
+       @-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 ..\tools\generate_wrap_init.pl
        @-del ..\tools\gmmproc
        @-del /f /q vs$(PDBVER)\$(CFG)\$(PLAT)\gschemas.compiled
diff --git a/MSVC_NMake/config-msvc.mak b/MSVC_NMake/config-msvc.mak
index b2d2d31e..872e9cb0 100644
--- a/MSVC_NMake/config-msvc.mak
+++ b/MSVC_NMake/config-msvc.mak
@@ -24,12 +24,14 @@ M4 = m4
 
 GLIBMM_BASE_CFLAGS =                   \
        /Ivs$(PDBVER)\$(CFG)\$(PLAT)    \
+       /I..\untracked\glib /I..\untracked\glib\glibmm          \
        /I..\glib /I..\glib\glibmm /I.\glibmm           \
        /wd4530 /EHsc   \
        /FImsvc_recommended_pragmas.h
 
 GIOMM_BASE_CFLAGS =    \
        /Ivs$(PDBVER)\$(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$(PDBVER)0$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GL
 
 GLIBMM_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_LIBNAME).dll
 GLIBMM_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_LIBNAME).lib
-GLIBMM_EXTRA_DEFS_GEN_LIB = 
vs$(PDBVER)\$(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_LIB = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).lib
+GLIBMM_EXTRA_DEFS_GEN_DLL = vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).dll
 
 GIOMM_LIBNAME = giomm-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(GLIBMM_MAJOR_VERSION)_$(GLIBMM_MINOR_VERSION)
 
diff --git a/MSVC_NMake/generate-msvc.mak b/MSVC_NMake/generate-msvc.mak
index 20113d5e..ed897e5e 100644
--- a/MSVC_NMake/generate-msvc.mak
+++ b/MSVC_NMake/generate-msvc.mak
@@ -37,8 +37,6 @@ vs$(PDBVER)\$(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
@@ -108,3 +106,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 f5c1f097..87606515 100644
--- a/MSVC_NMake/install.mak
+++ b/MSVC_NMake/install.mak
@@ -15,7 +15,9 @@ install: all
        @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GIOMM_LIBNAME).dll $(PREFIX)\bin
        @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GIOMM_LIBNAME).pdb $(PREFIX)\bin
        @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GIOMM_LIBNAME).lib $(PREFIX)\lib
-       @copy /b $(GLIBMM_EXTRA_DEFS_GEN_LIB) $(PREFIX)\lib
+       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).dll $(PREFIX)\bin
+       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).pdb $(PREFIX)\bin
+       @copy /b vs$(PDBVER)\$(CFG)\$(PLAT)\$(GLIBMM_EXTRA_DEFS_GEN_LIBNAME).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)\"
        @for %h in ($(glibmm_files_all_h)) do @if exist ..\glib\glibmm\%h copy ..\glib\glibmm\%h 
"$(PREFIX)\include\glibmm-$(GLIBMM_MAJOR_VERSION).$(GLIBMM_MINOR_VERSION)\glibmm\%h"
diff --git a/README.win32 b/README.win32
index b1303326..62bcea3d 100644
--- a/README.win32
+++ b/README.win32
@@ -78,7 +78,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]