Skip to content

Commit 76b0fe9

Browse files
fanc999-1kjellahl
authored andcommitted
NMake Makefiles: Separate outdir by toolset version
This is to reduce the likelihood of accidently mixing DLLs that are linked with different CRTs in the build tree. Also clean up rules a bit.
1 parent 007e87b commit 76b0fe9

File tree

5 files changed

+51
-47
lines changed

5 files changed

+51
-47
lines changed

MSVC_NMake/build-rules-msvc.mak

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@
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++\adaptors\lambda\}.cc{$(CFG)\$(PLAT)\libsigcpp\}.obj::
22-
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp\ /c @<<
21+
{..\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.obj:
22+
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(@D)\ /Fd$(@D)\ /c @<<
2323
$<
2424
<<
2525

26-
{..\sigc++\functors\}.cc{$(CFG)\$(PLAT)\libsigcpp\}.obj::
27-
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp\ /c @<<
26+
{..\sigc++\functors\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.obj:
27+
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(@D)\ /Fd$(@D)\ /c @<<
2828
$<
2929
<<
3030

31-
{..\untracked\sigc++\adaptors\lambda\}.cc{$(CFG)\$(PLAT)\libsigcpp\}.obj::
32-
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp\ /c @<<
31+
{..\untracked\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.obj:
32+
$(CXX) $(LIBSIGCPP_CFLAGS) /Fo$(@D)\ /Fd$(@D)\ /c @<<
3333
$<
3434
<<
3535

36-
$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj: $(CFG)\$(PLAT)\libsigcpp-tests ..\tests\testutilities.cc
37-
$(CXX) $(SIGCPP_CFLAGS) /Fo$@ /c ..\tests\testutilities.cc
36+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj: vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests ..\tests\testutilities.cc
37+
$(CXX) $(SIGCPP_CFLAGS) /Fo$@ /Fd$(@D)\ /c ..\tests\testutilities.cc
3838
# Rules for building .lib files
3939
$(LIBSIGC_LIB): $(LIBSIGC_DLL)
4040

41-
{.}.rc{$(CFG)\$(PLAT)\libsigcpp\}.res:
41+
{.}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.res:
4242
rc /fo$@ $<
4343

44-
{..\untracked\MSVC_NMake\}.rc{$(CFG)\$(PLAT)\libsigcpp\}.res:
44+
{..\untracked\MSVC_NMake\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\}.res:
4545
rc /fo$@ $<
4646

4747
# Rules for linking DLLs
@@ -51,7 +51,7 @@ $(LIBSIGC_LIB): $(LIBSIGC_DLL)
5151
# $(dependent_objects)
5252
# <<
5353
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
54-
$(LIBSIGC_DLL): $(CFG)\$(PLAT)\libsigcpp $(libsigcpp_dll_OBJS)
54+
$(LIBSIGC_DLL): vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp $(libsigcpp_dll_OBJS)
5555
link /DLL $(LDFLAGS) /implib:$(LIBSIGC_LIB) -out:$@ @<<
5656
$(libsigcpp_dll_OBJS)
5757
<<
@@ -65,36 +65,38 @@ $(libsigcpp_dll_OBJS)
6565
# <<
6666
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
6767

68-
{..\examples\}.cc{$(CFG)\$(PLAT)\}.exe:
69-
@if not exist $(CFG)\$(PLAT)\libsigcpp-ex $(MAKE) -f Makefile.vc CFG=$(CFG) $(CFG)\$(PLAT)\libsigcpp-ex
68+
{..\examples\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\}.exe:
69+
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex $(MAKE) -f Makefile.vc CFG=$(CFG) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex
7070
@if not exist $(LIBSIGC_LIB) $(MAKE) -f Makefile.vc CFG=$(CFG) $(LIBSIGC_LIB)
71-
$(CXX) $(SIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp-ex\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB)
71+
$(CXX) $(SIGCPP_CFLAGS) /Fo$(@D)\libsigcpp-ex\ /Fd$(@D)\libsigcpp-ex\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB)
7272
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
7373

74-
{..\tests\}.cc{$(CFG)\$(PLAT)\}.exe:
74+
{..\tests\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\}.exe:
7575
@if not exist $(LIBSIGC_LIB) $(MAKE) -f Makefile.vc CFG=$(CFG) $(LIBSIGC_LIB)
76-
@if not exist $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj $(MAKE) -f Makefile.vc CFG=$(CFG) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
77-
$(CXX) $(SIGCPP_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp-tests\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
76+
@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
77+
$(CXX) $(SIGCPP_CFLAGS) /Fo$(@D)\libsigcpp-tests\ /Fd$(@D)\libsigcpp-tests\ $< /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
7878
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
7979

80-
$(CFG)\$(PLAT)\libsigc++-benchmark.exe: ..\tests\benchmark.cc
80+
vs$(VSVER)\$(CFG)\$(PLAT)\libsigc++-benchmark.exe: ..\tests\benchmark.cc
8181
@if not exist $(LIBSIGC_LIB) $(MAKE) -f Makefile.vc CFG=$(CFG) $(LIBSIGC_LIB)
82-
@if not exist $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj $(MAKE) -f Makefile.vc CFG=$(CFG) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
83-
$(CXX) $(SIGCPP_BENCHMARK_CFLAGS) /Fo$(CFG)\$(PLAT)\libsigcpp-tests\ ..\tests\benchmark.cc /Fe$@ /link $(LDFLAGS) $(LIBSIGC_LIB) $(CFG)\$(PLAT)\libsigcpp-tests\testutilities.obj
82+
@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
83+
$(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
8484
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
8585

8686
clean:
87-
@-del /f /q $(CFG)\$(PLAT)\*.exe
88-
@-del /f /q $(CFG)\$(PLAT)\*.dll
89-
@-del /f /q $(CFG)\$(PLAT)\*.pdb
90-
@-del /f /q $(CFG)\$(PLAT)\*.ilk
91-
@-del /f /q $(CFG)\$(PLAT)\*.exp
92-
@-del /f /q $(CFG)\$(PLAT)\*.lib
93-
@-if exist $(CFG)\$(PLAT)\libsigcpp-tests del /f /q $(CFG)\$(PLAT)\libsigcpp-tests\*.obj
94-
@-del /f /q $(CFG)\$(PLAT)\libsigcpp-ex\*.obj
95-
@-del /f /q $(CFG)\$(PLAT)\libsigcpp\*.res
96-
@-del /f /q $(CFG)\$(PLAT)\libsigcpp\*.obj
97-
@-if exist $(CFG)\$(PLAT)\libsigcpp-tests rd $(CFG)\$(PLAT)\libsigcpp-tests
98-
@-rd $(CFG)\$(PLAT)\libsigcpp-ex
99-
@-rd $(CFG)\$(PLAT)\libsigcpp
100-
@-del /f /q vc$(PDBVER)0.pdb
87+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe
88+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.dll
89+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.pdb
90+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
91+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exp
92+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.lib
93+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\*.obj
94+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests\*.pdb
95+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex\*.obj
96+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex\*.pdb
97+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\*.res
98+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\*.obj
99+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp\*.pdb
100+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests rd vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-tests
101+
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\libsigcpp-ex
102+
@-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$(PDBVER)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/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\lambda\ @mkdir $(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\adaptors\lambda
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
@copy "..\sigc++\sigc++.h" "$(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\"
1414
@for %h in ($(LIBSIGC_INT_HDRS)) do @copy "..\sigc++\%h" "$(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\%h"
1515
@for %d in (sigc++ untracked\sigc++) do @(for %h in ($(base_built_h)) do @if exist ..\%d\%h copy "..\%d\%h" "$(PREFIX)\include\sigc++-$(LIBSIGC_MAJOR_VERSION).$(LIBSIGC_MINOR_VERSION)\sigc++\%h")

0 commit comments

Comments
 (0)