Skip to content

Commit d37280e

Browse files
fanc999-1kjellahl
authored andcommitted
NMake: Split outdir by toolset version
This makes it less likely for one to accidently mix binaries linked to different CRTs in a single buildtree.
1 parent 2359c32 commit d37280e

File tree

6 files changed

+50
-43
lines changed

6 files changed

+50
-43
lines changed

MSVC_NMake/build-rules-msvc.mak

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,25 @@
1313
# $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
1414
# $<
1515
# <<
16-
{..\sigc++\}.cc{$(CFG)\$(PLAT)\libsigcpp\}.obj::
17-
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp\ /c @<<
16+
{..\sigc++\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.obj:
17+
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(@D)\ /Fd$(@D)\ /c @<<
1818
$<
1919
<<
2020

21-
{..\sigc++\functors\}.cc{$(CFG)\$(PLAT)\libsigcpp\}.obj::
22-
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp\ /c @<<
21+
{..\sigc++\functors\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.obj:
22+
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(@D)\ /Fd$(@D)\ /c @<<
2323
$<
2424
<<
2525

26-
$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj: $(CFG)\$(PLAT)\libsigcpp-tests ..\tests\testutilities.cc
27-
$(CXX) $(SIGCPP_CFLAGS) /Fo$@ /c ..\tests\testutilities.cc
26+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj: vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests ..\tests\testutilities.cc
27+
$(CXX) $(SIGCPP_CFLAGS) /Fo$@ /Fd$(@D)\ /c ..\tests\testutilities.cc
2828
# Rules for building .lib files
2929
$(LIBSIGC_LIB): $(LIBSIGC_DLL)
3030

31-
{.}.rc{$(CFG)\$(PLAT)\libsigcpp\}.res:
31+
{.}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.res:
3232
rc /fo$@ $<
3333

34-
{..\untracked\MSVC_NMake\}.rc{$(CFG)\$(PLAT)\libsigcpp\}.res:
34+
{..\untracked\MSVC_NMake\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.res:
3535
rc /fo$@ $<
3636

3737
# Rules for linking DLLs
@@ -41,7 +41,7 @@ $(LIBSIGC_LIB): $(LIBSIGC_DLL)
4141
# $(dependent_objects)
4242
# <<
4343
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
44-
$(LIBSIGC_DLL): $(CFG)\$(PLAT)\libsigcpp $(libsigcpp_dll_OBJS)
44+
$(LIBSIGC_DLL): vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp $(libsigcpp_dll_OBJS)
4545
link /DLL $(LDFLAGS) /implib:$(LIBSIGC_LIB) -out:$@ @<<
4646
$(libsigcpp_dll_OBJS)
4747
<<
@@ -55,36 +55,38 @@ $(libsigcpp_dll_OBJS)
5555
# <<
5656
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
5757

58-
{..\examples\}.cc{$(CFG)\$(PLAT)\}.exe:
59-
@if not exist $(CFG)\$(PLAT)\libsigcpp-ex $(MAKE) -f Makefile.vc CFG=$(CFG) $(CFG)\$(PLAT)\libsigcpp-ex
58+
{..\examples\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\}.exe:
59+
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex $(MAKE) -f Makefile.vc CFG=$(CFG) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex
6060
@if not exist $(LIBSIGC_LIB) $(MAKE) -f Makefile.vc CFG=$(CFG) $(LIBSIGC_LIB)
61-
$(CXX) $(SIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp-ex\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB)
61+
$(CXX) $(SIGCPP_CFLAGS) /Fo$(@D)\libsigcpp-ex\ /Fd$(@D)\libsigcpp-ex\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB)
6262
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
6363

64-
{..\tests\}.cc{$(CFG)\$(PLAT)\}.exe:
64+
{..\tests\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\}.exe:
6565
@if not exist $(LIBSIGC_LIB) $(MAKE) -f Makefile.vc CFG=$(CFG) $(LIBSIGC_LIB)
66-
@if not exist $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj $(MAKE) -f Makefile.vc CFG=$(CFG) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
67-
$(CXX) $(SIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp-tests\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
66+
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj $(MAKE) -f Makefile.vc CFG=$(CFG) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
67+
$(CXX) $(SIGCPP_CFLAGS) /Fo$(@D)\libsigcpp-tests\ /Fd$(@D)\libsigcpp-tests\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
6868
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
6969

70-
$(CFG)\$(PLAT)\libsigc++-benchmark.exe: ..\tests\benchmark.cc
70+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigc++-benchmark.exe: ..\tests\benchmark.cc
7171
@if not exist $(LIBSIGC_LIB) $(MAKE) -f Makefile.vc CFG=$(CFG) $(LIBSIGC_LIB)
72-
@if not exist $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj $(MAKE) -f Makefile.vc CFG=$(CFG) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
73-
$(CXX) $(SIGCPP_BENCHMARK_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp-tests\ ..\tests\benchmark.cc /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
72+
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj $(MAKE) -f Makefile.vc CFG=$(CFG) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
73+
$(CXX) $(SIGCPP_BENCHMARK_CFLAGS) /Fo$(@D)\libsigcpp-tests\ /Fd$(@D)\libsigcpp-tests\ ..\tests\benchmark.cc /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
7474
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
7575

7676
clean:
77-
@-del /f /q $(CFG)\$(PLAT)\*.exe
78-
@-del /f /q $(CFG)\$(PLAT)\*.dll
79-
@-del /f /q $(CFG)\$(PLAT)\*.pdb
80-
@-del /f /q $(CFG)\$(PLAT)\*.ilk
81-
@-del /f /q $(CFG)\$(PLAT)\*.exp
82-
@-del /f /q $(CFG)\$(PLAT)\*.lib
83-
@-if exist $(CFG)\$(PLAT)\libsigcpp-tests del /f /q $(CFG)\$(PLAT)\libsigcpp-tests\*.obj
84-
@-del /f /q $(CFG)\$(PLAT)\libsigcpp-ex\*.obj
85-
@-del /f /q $(CFG)\$(PLAT)\libsigcpp\*.res
86-
@-del /f /q $(CFG)\$(PLAT)\libsigcpp\*.obj
87-
@-if exist $(CFG)\$(PLAT)\libsigcpp-tests rd $(CFG)\$(PLAT)\libsigcpp-tests
88-
@-rd $(CFG)\$(PLAT)\libsigcpp-ex
89-
@-rd $(CFG)\$(PLAT)\libsigcpp
90-
@-del /f /q vc$(PDBVER)0.pdb
77+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe
78+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.dll
79+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.pdb
80+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
81+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exp
82+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.lib
83+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\*.obj
84+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\*.pdb
85+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex\*.obj
86+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex\*.pdb
87+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\*.res
88+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\*.obj
89+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\*.pdb
90+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests rd vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests
91+
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex
92+
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp

MSVC_NMake/config-msvc.mak

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ LIBSIGCPP_CFLAGS = $(SIGCPP_CFLAGS) $(LIBSIGCPP_DEFINES)
2929

3030
LIBSIGC_LIBNAME = sigc-vc$(VSVER)0$(LIBSIGC_DEBUG_SUFFIX)-$(LIBSIGC_MAJOR_VERSION)_$(LIBSIGC_MINOR_VERSION)
3131

32-
LIBSIGC_DLL = $(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).dll
33-
LIBSIGC_LIB = $(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).lib
32+
LIBSIGC_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).dll
33+
LIBSIGC_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).lib
3434

3535
# Note that building the benchmark requires Boost!
36-
libsigc_bench = $(CFG)\$(PLAT)\libsigc++-benchmark.exe
36+
libsigc_bench = vs$(VSVER)\$(CFG)\$(PLAT)\libsigc++-benchmark.exe
3737

3838
# If your Boost libraries are built as DLLs, use BOOST_DLL=1 in your NMake command line
3939
!ifdef BOOST_DLL

MSVC_NMake/create-lists-msvc.mak

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ NULL=
3838
!if [call create-lists.bat header libsigcpp.mak libsigcpp_dll_OBJS]
3939
!endif
4040

41-
!if [for %c in ($(sigc_sources_cc)) do @if "%~xc" == ".cc" @call create-lists.bat file libsigcpp.mak ^$(CFG)\^$(PLAT)\libsigcpp\%~nc.obj]
41+
!if [for %c in ($(sigc_sources_cc)) do @if "%~xc" == ".cc" @call create-lists.bat file libsigcpp.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\libsigcpp\%~nc.obj]
4242
!endif
4343

44-
!if [@call create-lists.bat file libsigcpp.mak ^$(CFG)\^$(PLAT)\libsigcpp\sigc.res]
44+
!if [@call create-lists.bat file libsigcpp.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\libsigcpp\sigc.res]
4545
!endif
4646

4747
!if [call create-lists.bat footer libsigcpp.mak]
@@ -50,7 +50,7 @@ NULL=
5050
!if [call create-lists.bat header libsigcpp.mak libsigc_ex]
5151
!endif
5252

53-
!if [for %s in (..\examples\*.cc) do @call create-lists.bat file libsigcpp.mak ^$(CFG)\^$(PLAT)\%~ns.exe]
53+
!if [for %s in (..\examples\*.cc) do @call create-lists.bat file libsigcpp.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns.exe]
5454
!endif
5555

5656
!if [call create-lists.bat footer libsigcpp.mak]
@@ -61,7 +61,7 @@ NULL=
6161

6262
# Skipping testutilities.cc: Not to be built as a .exe, but is a common dependency for the tests
6363
# benchmark: Not built on default; requires Boost
64-
!if [for %s in (..\tests\*.cc) do @if not "%~ns" == "testutilities" if not "%~ns" == "benchmark" @call create-lists.bat file libsigcpp.mak ^$(CFG)\^$(PLAT)\%~ns.exe]
64+
!if [for %s in (..\tests\*.cc) do @if not "%~ns" == "testutilities" if not "%~ns" == "benchmark" @call create-lists.bat file libsigcpp.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns.exe]
6565
!endif
6666

6767
!if [call create-lists.bat footer libsigcpp.mak]

MSVC_NMake/detectenv-msvc.mak

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ CFLAGS_ADD = /MD /O2 /GL /MP
121121
!if "$(VSVER)" != "9"
122122
CFLAGS_ADD = $(CFLAGS_ADD) /d2Zi+
123123
!endif
124+
!if $(VSVER) >= 14
125+
CFLAGS_ADD = $(CFLAGS_ADD) /utf-8
126+
!endif
124127
!else
125128
CFLAGS_ADD = /MDd /Od
126129
!endif

MSVC_NMake/generate-msvc.mak

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44
# one is maintaining the NMake build files.
55

66
# Create the build directories
7-
$(CFG)\$(PLAT)\libsigcpp $(CFG)\$(PLAT)\libsigcpp-ex $(CFG)\$(PLAT)\libsigcpp-tests:
7+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp \
8+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex \
9+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests:
810
@-mkdir $@

MSVC_NMake/install.mak

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ install: all
77
@if not exist $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\adaptors\ @mkdir $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\adaptors
88
@if not exist $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\functors\ @mkdir $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\functors
99
@if not exist $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\tuple-utils\ @mkdir $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\tuple-utils
10-
@copy /b $(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).dll $(PREFIX)\bin
11-
@copy /b $(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).pdb $(PREFIX)\bin
12-
@copy /b $(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).lib $(PREFIX)\lib
10+
@copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).dll $(PREFIX)\bin
11+
@copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).pdb $(PREFIX)\bin
12+
@copy /b vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).lib $(PREFIX)\lib
1313
@for %h in ($(LIBSIGC_INT_HDRS)) do @copy "..\sigc++\%h" "$(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\%h"
1414
@if exist sigc++config.h copy "sigc++config.h" "$(PREFIX)\lib\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\include\"
1515
@if exist ..\untracked\MSVC_NMake\sigc++config.h copy "..\untracked\MSVC_NMake\sigc++config.h" "$(PREFIX)\lib\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\include\"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy