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)
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