[gjs/master.windows: 1/9] Visual Studio builds: Refine things a bit



commit 706833f2225000735239ce1c38daf87f7e59c6be
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Tue Feb 26 18:10:20 2019 +0800

    Visual Studio builds: Refine things a bit
    
    Use separate output directories for different Visual Studio versions,
    and ensure that we do indeed wipe out the vcxxx.pdb files and the object
    directories upon clean.  Make the compiler generate vcxxx.pdb files
    under the respective intermediate object directories as far as possible.
    
    Also avoid polluting the source tree during the build by copying
    config.h.win32 to libgjs' intermediate directory and also create
    generate the filelist for introspection in libgjs' intermediate
    directory.

 win32/build-rules-msvc.mak       | 107 +++++++++++++++++++++------------------
 win32/config-msvc.mak            |  27 ++++++----
 win32/create-lists-msvc.mak      |  16 +++---
 win32/detectenv-msvc.mak         |   8 +++
 win32/generate-msvc.mak          |  18 +++----
 win32/gjs-introspection-msvc.mak |  20 +++-----
 win32/info-msvc.mak              |   2 -
 win32/install.mak                |  12 ++---
 8 files changed, 113 insertions(+), 97 deletions(-)
---
diff --git a/win32/build-rules-msvc.mak b/win32/build-rules-msvc.mak
index 65991b1d..48674b0e 100644
--- a/win32/build-rules-msvc.mak
+++ b/win32/build-rules-msvc.mak
@@ -13,63 +13,63 @@
 #      $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
 # $<
 # <<
-{..\modules\}.cpp{$(CFG)\$(PLAT)\module-console\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\module-console\ /c @<<
+{..\modules\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\module-console\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\module-console\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\module-console\ /c @<<
 $<
 <<
 
-{..\modules\}.cpp{$(CFG)\$(PLAT)\module-system\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\module-system\ /c @<<
+{..\modules\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\module-system\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\module-system\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\module-system\ /c @<<
 $<
 <<
 
-{..\modules\}.cpp{$(CFG)\$(PLAT)\module-cairo\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\module-cairo\ /c @<<
+{..\modules\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\ /c @<<
 $<
 <<
 
-{..\gi\}.cpp{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{..\gi\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{..\gjs\}.cpp{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{..\gjs\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{..\libgjs-private\}.cpp{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{..\libgjs-private\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{..\libgjs-private\}.c{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CC) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{..\libgjs-private\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CC) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{..\modules\}.cpp{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{..\modules\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{..\util\}.cpp{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{..\util\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CXX) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{$(CFG)\$(PLAT)\module-resources\}.c{$(CFG)\$(PLAT)\libgjs\}.obj::
-       $(CC) $(CFLAGS) $(LIBGJS_CFLAGS) /Fo$(CFG)\$(PLAT)\libgjs\ /c @<<
+{vs$(VSVER)\$(CFG)\$(PLAT)\module-resources\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\}.obj::
+       $(CC) $(CFLAGS) $(LIBGJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\libgjs\ /c @<<
 $<
 <<
 
-{..\gjs\}.cpp{$(CFG)\$(PLAT)\gjs-console\}.obj::
-       $(CXX) $(CFLAGS) $(GJS_CFLAGS) /Fo$(CFG)\$(PLAT)\gjs-console\ /c @<<
+{..\gjs\}.cpp{vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console\}.obj::
+       $(CXX) $(CFLAGS) $(GJS_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\gjs-console\ 
/Fdvs$(VSVER)\$(CFG)\$(PLAT)\gjs-console\ /c @<<
 $<
 <<
 
 # Rules for building .lib files
-$(CFG)\$(PLAT)\gjs.lib: $(LIBGJS_DLL_FILENAME).dll
+vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib: $(LIBGJS_DLL_FILENAME).dll
 
 # Rules for linking DLLs
 # Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
@@ -80,28 +80,28 @@ $(CFG)\$(PLAT)\gjs.lib: $(LIBGJS_DLL_FILENAME).dll
 #      @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
 $(LIBGJS_DLL_FILENAME).dll:            \
 $(GJS_INCLUDED_MODULES)                        \
-$(CFG)\$(PLAT)\module-resources                \
-$(CFG)\$(PLAT)\libgjs                  \
+vs$(VSVER)\$(CFG)\$(PLAT)\module-resources             \
+vs$(VSVER)\$(CFG)\$(PLAT)\libgjs                       \
 $(module_resources_generated_srcs)     \
 $(libgjs_dll_OBJS)
        link /DLL $(LDFLAGS) $(GJS_INCLUDED_MODULES)            \
-       $(LIBGJS_DEP_LIBS) /implib:$(CFG)\$(PLAT)\gjs.lib       \
+       $(LIBGJS_DEP_LIBS) /implib:vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib    \
        -out:$@ @<<
 $(libgjs_dll_OBJS)
 <<
        @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
 
-$(CFG)\$(PLAT)\module-console.lib: ..\config.h $(CFG)\$(PLAT)\module-console $(module_console_OBJS)
+vs$(VSVER)\$(CFG)\$(PLAT)\module-console.lib: vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\config.h 
vs$(VSVER)\$(CFG)\$(PLAT)\module-console $(module_console_OBJS)
        lib $(ARFLAGS) -out:$@ @<<
 $(module_console_OBJS)
 <<
 
-$(CFG)\$(PLAT)\module-system.lib: ..\config.h $(CFG)\$(PLAT)\module-system $(module_system_OBJS)
+vs$(VSVER)\$(CFG)\$(PLAT)\module-system.lib: vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\config.h 
vs$(VSVER)\$(CFG)\$(PLAT)\module-system $(module_system_OBJS)
        lib $(ARFLAGS) -out:$@ @<<
 $(module_system_OBJS)
 <<
 
-$(CFG)\$(PLAT)\module-cairo.lib: ..\config.h $(CFG)\$(PLAT)\module-cairo $(module_cairo_OBJS)
+vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo.lib: vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\config.h 
vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo $(module_cairo_OBJS)
        lib $(ARFLAGS) -out:$@ @<<
 $(module_cairo_OBJS)
 <<
@@ -114,27 +114,36 @@ $(module_cairo_OBJS)
 # <<
 #      @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
 
-$(CFG)\$(PLAT)\gjs-console.exe: $(CFG)\$(PLAT)\gjs.lib $(CFG)\$(PLAT)\gjs-console $(gjs_OBJS)
-       link $(LDFLAGS) $(CFG)\$(PLAT)\gjs.lib $(GJS_BASE_LIBS) -out:$@ $(gjs_OBJS)
+vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console.exe: vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib 
vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console $(gjs_OBJS)
+       link $(LDFLAGS) vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib $(GJS_BASE_LIBS) -out:$@ $(gjs_OBJS)
        @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
 
 clean:
-       @-if exist $(CFG)\$(PLAT)\GjsPrivate-1.0.typelib del /f /q $(CFG)\$(PLAT)\GjsPrivate-1.0.typelib
-       @-if exist $(CFG)\$(PLAT)\GjsPrivate-1.0.gir del /f /q $(CFG)\$(PLAT)\GjsPrivate-1.0.gir
-       @-if exist $(CFG)\$(PLAT)\gjs_private_list del /f /q $(CFG)\$(PLAT)\gjs_private_list
-       @-del /f /q $(CFG)\$(PLAT)\*.pdb
-       @-if exist $(CFG)\$(PLAT)\gjs-console.exe.manifest del /f /q $(CFG)\$(PLAT)\gjs-console.exe.manifest
-       @-if exist $(CFG)\$(PLAT)\gjs-console.exe del /f /q $(CFG)\$(PLAT)\gjs-console.exe
-       @-del /f /q $(CFG)\$(PLAT)\*.dll.manifest
-       @-del /f /q $(CFG)\$(PLAT)\*.dll
-       @-del /f /q $(CFG)\$(PLAT)\*.ilk
-       @-del /f /q $(CFG)\$(PLAT)\*.exp
-       @-del /f /q $(CFG)\$(PLAT)\*.lib
-       @-if exist $(CFG)\$(PLAT)\module-cairo.lib del /f /q $(CFG)\$(PLAT)\module-cairo\*.obj
-       @-del /f /q $(CFG)\$(PLAT)\module-system\*.obj
-       @-del /f /q $(CFG)\$(PLAT)\module-console\*.obj
-       @-del /f /q $(CFG)\$(PLAT)\libgjs\*.obj
-       @-del /f /q $(CFG)\$(PLAT)\gjs-console\*.obj
+       @-if exist vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib del /f /q 
vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib
+       @-if exist vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir del /f /q 
vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir
+       @-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\gjs_private_list del /f /q 
vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\gjs_private_list
+       @-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
+       @-if exist vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\ del /f /q 
vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\vc$(PDBVER)0.pdb
+       @-if exist vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\ del /f /q 
vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\*.obj
+       @-if exist vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo\ rd vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console\*.obj
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\*.obj
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\module-system\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\module-system\*.obj
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\module-system
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\module-console\vc$(PDBVER)0.pdb
+       @-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\module-console\*.obj
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\module-console
        @-del /f /q $(module_resources_generated_srcs)
-       @-del vc$(VSVER)0.pdb
-       @-del ..\config.h
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\module-resources
+       @-del vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\config.h
+       @-rd vs$(VSVER)\$(CFG)\$(PLAT)\libgjs
+       @-del /f /q vc$(PDBVER)0.pdb
diff --git a/win32/config-msvc.mak b/win32/config-msvc.mak
index 79580b21..3cd7be74 100644
--- a/win32/config-msvc.mak
+++ b/win32/config-msvc.mak
@@ -47,22 +47,24 @@ GTK_LIBS = gtk-3.0.lib gdk-3.0.lib
 # so that we don't have to worry about the Visual Studio linker dropping items during
 # optimization
 GJS_DEFINES =
-GJS_INCLUDED_MODULES =                         \
-       $(CFG)\$(PLAT)\module-console.lib       \
-       $(CFG)\$(PLAT)\module-system.lib
+GJS_INCLUDED_MODULES =                                 \
+       vs$(VSVER)\$(CFG)\$(PLAT)\module-console.lib    \
+       vs$(VSVER)\$(CFG)\$(PLAT)\module-system.lib
 
 GJS_BASE_CFLAGS =                      \
        /I..                            \
+       /Ivs$(VSVER)\$(CFG)\$(PLAT)\libgjs      \
        /FImsvc_recommended_pragmas.h   \
        /FIjs\RequiredDefines.h         \
        /Dssize_t=gssize                \
-       /DG_LOG_DOMAIN=\"Gjs\"          \
        /wd4530                         \
        /wd4099                         \
        /wd4251                         \
        /wd4800                         \
        /Zc:externConstexpr
 
+GJS_CFLAGS_WITH_LOG = /DG_LOG_DOMAIN=\"Gjs\"
+
 LIBGJS_DEP_INCLUDES = $(BASE_INCLUDES)
 LIBGJS_DEP_LIBS = $(LIBGJS_BASE_DEP_LIBS)
 
@@ -70,9 +72,9 @@ LIBGJS_PRIVATE_SOURCES = $(gjs_private_srcs)
 LIBGJS_HEADERS = $(gjs_public_headers:/=\)
 
 # We build libgjs and gjs-console at least
-GJS_LIBS = $(CFG)\$(PLAT)\gjs.lib
+GJS_LIBS = vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib
 
-GJS_UTILS = $(CFG)\$(PLAT)\gjs-console.exe
+GJS_UTILS = vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console.exe
 GJS_TESTS =
 
 # Enable Cairo
@@ -80,7 +82,7 @@ GJS_TESTS =
 GJS_DEFINES = $(GJS_DEFINES) /DENABLE_CAIRO
 GJS_INCLUDED_MODULES =         \
        $(GJS_INCLUDED_MODULES) \
-       $(CFG)\$(PLAT)\module-cairo.lib
+       vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo.lib
 LIBGJS_DEP_LIBS = $(CAIRO_LIBS) $(LIBGJS_DEP_LIBS)
 !endif
 
@@ -103,9 +105,9 @@ LIBGJS_SOURCES = $(gjs_srcs) $(LIBGJS_PRIVATE_SOURCES)
 
 # Use libtool-style DLL names, if desired
 !if "$(LIBTOOL_DLL_NAME)" == "1"
-LIBGJS_DLL_FILENAME = $(CFG)\$(PLAT)\libgjs-0
+LIBGJS_DLL_FILENAME = vs$(VSVER)\$(CFG)\$(PLAT)\libgjs-0
 !else
-LIBGJS_DLL_FILENAME = $(CFG)\$(PLAT)\gjs-vs$(VSVER)
+LIBGJS_DLL_FILENAME = vs$(VSVER)\$(CFG)\$(PLAT)\gjs-vs$(VSVER)
 !endif
 
 TEST_PROGRAMS =
@@ -113,13 +115,13 @@ TEST_PROGRAMS =
 # Enable Introspection
 !if "$(INTROSPECTION)" == "1"
 CHECK_PACKAGE = $(GJS_INTROSPECTION_CHECK_PACKAGE)
-EXTRA_TARGETS = $(CFG)\$(PLAT)\GjsPrivate-1.0.gir $(CFG)\$(PLAT)\GjsPrivate-1.0.typelib
+EXTRA_TARGETS = vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib
 !else
 EXTRA_TARGETS =
 !endif
 
 # Put together the CFLAGS
-LIBGJS_CFLAGS =                                \
+LIBGJS_CFLAGS_BASE =                   \
        $(GJS_DEFINES)                  \
        $(MOZ_BUG_WORKAROUND_CFLAG)     \
        /DGJS_COMPILATION               \
@@ -128,8 +130,11 @@ LIBGJS_CFLAGS =                            \
        $(GJS_BASE_CFLAGS)              \
        $(LIBGJS_DEP_INCLUDES)
 
+LIBGJS_CFLAGS = $(LIBGJS_CFLAGS_BASE) $(GJS_CFLAGS_WITH_LOG)
+
 GJS_CFLAGS =                           \
        $(GJS_DEFINES)                  \
        $(MOZ_BUG_WORKAROUND_CFLAG)     \
        $(GJS_BASE_CFLAGS)              \
+       $(GJS_CFLAGS_WITH_LOG)          \
        $(BASE_INCLUDES)
diff --git a/win32/create-lists-msvc.mak b/win32/create-lists-msvc.mak
index 55a51720..2f719882 100644
--- a/win32/create-lists-msvc.mak
+++ b/win32/create-lists-msvc.mak
@@ -38,13 +38,13 @@ NULL=
 !if [call create-lists.bat header gjs_objs.mak libgjs_dll_OBJS]
 !endif
 
-!if [for %c in ($(LIBGJS_SOURCES)) do @if "%~xc" == ".cpp" @call create-lists.bat file gjs_objs.mak 
^$(CFG)\^$(PLAT)\libgjs\%~nc.obj]
+!if [for %c in ($(LIBGJS_SOURCES)) do @if "%~xc" == ".cpp" @call create-lists.bat file gjs_objs.mak 
vs^$(VSVER)\^$(CFG)\^$(PLAT)\libgjs\%~nc.obj]
 !endif
 
-!if [for %c in ($(LIBGJS_SOURCES)) do @if "%~xc" == ".c" @call create-lists.bat file gjs_objs.mak 
^$(CFG)\^$(PLAT)\libgjs\%~nc.obj]
+!if [for %c in ($(LIBGJS_SOURCES)) do @if "%~xc" == ".c" @call create-lists.bat file gjs_objs.mak 
vs^$(VSVER)\^$(CFG)\^$(PLAT)\libgjs\%~nc.obj]
 !endif
 
-!if [for %c in ($(module_resource_srcs)) do @if "%~xc" == ".c" @call create-lists.bat file gjs_objs.mak 
^$(CFG)\^$(PLAT)\libgjs\%~nc.obj]
+!if [for %c in ($(module_resource_srcs)) do @if "%~xc" == ".c" @call create-lists.bat file gjs_objs.mak 
vs^$(VSVER)\^$(CFG)\^$(PLAT)\libgjs\%~nc.obj]
 !endif
 
 !if [call create-lists.bat footer gjs_objs.mak]
@@ -53,7 +53,7 @@ NULL=
 !if [call create-lists.bat header gjs_objs.mak gjs_OBJS]
 !endif
 
-!if [for %c in ($(gjs_console_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file gjs_objs.mak 
^$(CFG)\^$(PLAT)\gjs-console\%~nc.obj]
+!if [for %c in ($(gjs_console_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file gjs_objs.mak 
vs^$(VSVER)\^$(CFG)\^$(PLAT)\gjs-console\%~nc.obj]
 !endif
 
 !if [call create-lists.bat footer gjs_objs.mak]
@@ -68,7 +68,7 @@ NULL=
 !if [call create-lists.bat header gjs_modules_objs.mak module_resources_generated_srcs]
 !endif
 
-!if [for %c in ($(module_resource_srcs)) do @call create-lists.bat file gjs_modules_objs.mak 
^$(CFG)\^$(PLAT)\module-resources\%c]
+!if [for %c in ($(module_resource_srcs)) do @call create-lists.bat file gjs_modules_objs.mak 
vs^$(VSVER)\^$(CFG)\^$(PLAT)\module-resources\%c]
 !endif
 
 !if [call create-lists.bat footer gjs_modules_objs.mak]
@@ -77,7 +77,7 @@ NULL=
 !if [call create-lists.bat header gjs_modules_objs.mak module_system_OBJS]
 !endif
 
-!if [for %c in ($(module_system_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file 
gjs_modules_objs.mak ^$(CFG)\^$(PLAT)\module-system\%~nc.obj]
+!if [for %c in ($(module_system_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file 
gjs_modules_objs.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\module-system\%~nc.obj]
 !endif
 
 !if [call create-lists.bat footer gjs_modules_objs.mak]
@@ -86,7 +86,7 @@ NULL=
 !if [call create-lists.bat header gjs_modules_objs.mak module_console_OBJS]
 !endif
 
-!if [for %c in ($(module_console_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file 
gjs_modules_objs.mak ^$(CFG)\^$(PLAT)\module-console\%~nc.obj]
+!if [for %c in ($(module_console_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file 
gjs_modules_objs.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\module-console\%~nc.obj]
 !endif
 
 !if [call create-lists.bat footer gjs_modules_objs.mak]
@@ -95,7 +95,7 @@ NULL=
 !if [call create-lists.bat header gjs_modules_objs.mak module_cairo_OBJS]
 !endif
 
-!if [for %c in ($(module_cairo_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file 
gjs_modules_objs.mak ^$(CFG)\^$(PLAT)\module-cairo\%~nc.obj]
+!if [for %c in ($(module_cairo_srcs)) do @if "%~xc" == ".cpp" @call create-lists.bat file 
gjs_modules_objs.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\module-cairo\%~nc.obj]
 !endif
 
 !if [call create-lists.bat footer gjs_modules_objs.mak]
diff --git a/win32/detectenv-msvc.mak b/win32/detectenv-msvc.mak
index 7b64576f..aef99edc 100644
--- a/win32/detectenv-msvc.mak
+++ b/win32/detectenv-msvc.mak
@@ -97,6 +97,14 @@ VSVER = 16
 VSVER = 0
 !endif
 
+# Visual Studio 2015, 2017 and 2019 link to the vc140 C/C++ runtimes,
+# so we get a vc140.pdb for all these builds.
+!if $(VSVER) < 15
+PDBVER = $(VSVER)
+!else
+PDBVER = 14
+!endif
+
 !if "$(VSVER)" == "0"
 MSG = ^
 This NMake Makefile set supports Visual Studio^
diff --git a/win32/generate-msvc.mak b/win32/generate-msvc.mak
index e31b83f7..84ed4f70 100644
--- a/win32/generate-msvc.mak
+++ b/win32/generate-msvc.mak
@@ -4,21 +4,21 @@
 # one is maintaining the NMake build files.
 
 # Copy the pre-defined config.h.win32
-..\config.h: config.h.win32
+vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\config.h: config.h.win32
        @-copy $(@B).h.win32 $@
 
 # Create the build directories
-$(CFG)\$(PLAT)\module-console  \
-$(CFG)\$(PLAT)\module-system   \
-$(CFG)\$(PLAT)\module-resources        \
-$(CFG)\$(PLAT)\module-cairo    \
-$(CFG)\$(PLAT)\libgjs          \
-$(CFG)\$(PLAT)\gjs-console:
+vs$(VSVER)\$(CFG)\$(PLAT)\module-console       \
+vs$(VSVER)\$(CFG)\$(PLAT)\module-system        \
+vs$(VSVER)\$(CFG)\$(PLAT)\module-resources     \
+vs$(VSVER)\$(CFG)\$(PLAT)\module-cairo \
+vs$(VSVER)\$(CFG)\$(PLAT)\libgjs               \
+vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console:
        @-mkdir $@
 
 # Generate the GResource sources
-$(CFG)\$(PLAT)\module-resources\modules-resources.h    \
-$(CFG)\$(PLAT)\module-resources\modules-resources.c: ..\modules\modules.gresource.xml
+vs$(VSVER)\$(CFG)\$(PLAT)\module-resources\modules-resources.h \
+vs$(VSVER)\$(CFG)\$(PLAT)\module-resources\modules-resources.c: ..\modules\modules.gresource.xml
        $(PREFIX)\bin\glib-compile-resources.exe --target=$@    \
        --sourcedir=.. --generate --c-name modules_resources    \
        $**
diff --git a/win32/gjs-introspection-msvc.mak b/win32/gjs-introspection-msvc.mak
index 19e089ee..02b1cbb5 100644
--- a/win32/gjs-introspection-msvc.mak
+++ b/win32/gjs-introspection-msvc.mak
@@ -1,12 +1,10 @@
 
 !if "$(BUILD_INTROSPECTION)" == "TRUE"
 # Create the file list for introspection (to avoid the dreaded command-line-too-long problem on Windows)
-$(CFG)\$(PLAT)\gjs_private_list:
+vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\gjs_private_list:
        @for %f in ($(LIBGJS_PRIVATE_SOURCES)) do @echo ../%f >> $@
 
-$(CFG)\$(PLAT)\GjsPrivate-1.0.gir: $(CFG)\$(PLAT)\gjs.lib $(CFG)\$(PLAT)\gjs_private_list
-       @set LIB=.\$(CFG)\$(PLAT);$(PREFIX)\lib;$(LIB)
-       @set PATH=.\$(CFG)\$(PLAT);$(PREFIX)\bin;$(PATH)
+vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir: vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib 
vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\gjs_private_list
        @-echo Generating $@...
        $(PYTHON) $(G_IR_SCANNER)                       \
        --verbose -no-libtool                           \
@@ -17,22 +15,20 @@ $(CFG)\$(PLAT)\GjsPrivate-1.0.gir: $(CFG)\$(PLAT)\gjs.lib $(CFG)\$(PLAT)\gjs_pri
        --nsversion=1.0                                 \
        $(INTROSPECTION_INCLUDE_PACKAGES)               \
        --library=gjs                                   \
-       --library-path=$(CFG)\$(PLAT)           \
        --add-include-path=$(G_IR_INCLUDEDIR)           \
        --pkg-export=gjs                                \
        --cflags-begin                                  \
-       $(CFLAGS) $(LIBGJS_CFLAGS)                      \
+       $(CFLAGS) $(LIBGJS_CFLAGS_BASE)                 \
        --cflags-end                                    \
-       --filelist=$(CFG)\$(PLAT)\gjs_private_list      \
+       --filelist=vs$(VSVER)\$(CFG)\$(PLAT)\libgjs\gjs_private_list    \
+       -L.\vs$(VSVER)\$(CFG)\$(PLAT)   \
        -o $@
 
-$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib: $(CFG)\$(PLAT)\GjsPrivate-1.0.gir
-       @copy $*.gir $(@B).gir
+vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib: vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir
        $(PREFIX)\bin\g-ir-compiler                     \
-       --includedir=$(CFG)\$(PLAT) --debug --verbose   \
-       $(@B).gir                                       \
+       --includedir=vs$(VSVER)\$(CFG)\$(PLAT) --debug --verbose        \
+       $(**:\=/).gir                                   \
        -o $@
-       @del $(@B).gir
 !else
 !error $(ERROR_MSG)
 !endif
diff --git a/win32/info-msvc.mak b/win32/info-msvc.mak
index b938e3d1..44473bf1 100644
--- a/win32/info-msvc.mak
+++ b/win32/info-msvc.mak
@@ -2,8 +2,6 @@
 
 GTK_SUPPORT = yes
 CAIRO_SUPPORT = yes
-BUILT_TOOLS = gsf.exe gsf-vba-dump.exe
-BUILT_LIBRARIES = libgsf libgsf-win32
 
 !if "$(NO_CAIRO)" == "1"
 CAIRO_SUPPORT = no
diff --git a/win32/install.mak b/win32/install.mak
index 742db614..aafc009e 100644
--- a/win32/install.mak
+++ b/win32/install.mak
@@ -8,11 +8,11 @@ install: all
        @if not exist $(PREFIX)\include\gjs-1.0\util @mkdir $(PREFIX)\include\gjs-1.0\util
        @copy /b $(LIBGJS_DLL_FILENAME).dll $(PREFIX)\bin
        @copy /b $(LIBGJS_DLL_FILENAME).pdb $(PREFIX)\bin
-       @copy /b $(CFG)\$(PLAT)\gjs.lib $(PREFIX)\lib
-       @copy /b $(CFG)\$(PLAT)\gjs-console.exe $(PREFIX)\bin
-       @copy /b $(CFG)\$(PLAT)\gjs-console.exe $(PREFIX)\bin\gjs.exe
-       @copy /b $(CFG)\$(PLAT)\gjs-console.pdb $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\gjs.lib $(PREFIX)\lib
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console.exe $(PREFIX)\bin
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console.exe $(PREFIX)\bin\gjs.exe
+       @copy /b vs$(VSVER)\$(CFG)\$(PLAT)\gjs-console.pdb $(PREFIX)\bin
        @for %h in ($(LIBGJS_HEADERS)) do @copy ..\%h $(PREFIX)\include\gjs-1.0\%h
        @rem Copy the generated introspection files, if built
-       @if exist $(CFG)\$(PLAT)\GjsPrivate-1.0.gir copy $(CFG)\$(PLAT)\GjsPrivate-1.0.gir 
$(PREFIX)\share\gir-1.0
-       @if exist $(CFG)\$(PLAT)\GjsPrivate-1.0.typelib copy /b $(CFG)\$(PLAT)\GjsPrivate-1.0.typelib 
$(PREFIX)\lib\girepository-1.0
+       @if exist vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir copy 
vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.gir $(PREFIX)\share\gir-1.0
+       @if exist vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib copy /b 
vs$(VSVER)\$(CFG)\$(PLAT)\GjsPrivate-1.0.typelib $(PREFIX)\lib\girepository-1.0


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