Skip to content

Commit 8a74fe2

Browse files
fanc999-1kjellahl
authored andcommitted
build: Actually support MSVC static builds
Apply -DLIBSIGCXX_STATIC as appropriate when we request a static build to be done for the Meson and NMake builds, and skip building the version .rc file if a static build is requested. For the NMake builds, separate the build artifacts from the static and shared builds. The autotools builds since it is not used for Visual Studio builds at all.
1 parent 9d82a2b commit 8a74fe2

File tree

7 files changed

+103
-38
lines changed

7 files changed

+103
-38
lines changed

MSVC_NMake/build-rules-msvc.mak

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# $(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
1414
# $<
1515
# <<
16-
{..\sigc++\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.obj:
16+
{..\sigc++\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.obj:
1717
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist $(@D)\sigc++\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
1818
@for %f in ($(functors_built_cc) $(functors_built_h)) do @if not exist ..\sigc++\functors\%f if not exist ..\untracked\sigc++\functors\%f if not exist $(@D)\sigc++\functors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
1919
@for %f in ($(adaptors_built_cc) $(adaptors_built_h)) do @if not exist ..\sigc++\adaptors\%f if not exist ..\untracked\sigc++\adaptors\%f if not exist $(@D)\sigc++\adaptors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
@@ -24,7 +24,7 @@
2424
$<
2525
<<
2626

27-
{..\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.obj:
27+
{..\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.obj:
2828
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist $(@D)\sigc++\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
2929
@for %f in ($(functors_built_cc) $(functors_built_h)) do @if not exist ..\sigc++\functors\%f if not exist ..\untracked\sigc++\functors\%f if not exist $(@D)\sigc++\functors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
3030
@for %f in ($(adaptors_built_cc) $(adaptors_built_h)) do @if not exist ..\sigc++\adaptors\%f if not exist ..\untracked\sigc++\adaptors\%f if not exist $(@D)\sigc++\adaptors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
@@ -35,7 +35,7 @@ $<
3535
$<
3636
<<
3737

38-
{..\sigc++\functors\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.obj:
38+
{..\sigc++\functors\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.obj:
3939
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist $(@D)\sigc++\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
4040
@for %f in ($(functors_built_cc) $(functors_built_h)) do @if not exist ..\sigc++\functors\%f if not exist ..\untracked\sigc++\functors\%f if not exist $(@D)\sigc++\functors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
4141
@for %f in ($(adaptors_built_cc) $(adaptors_built_h)) do @if not exist ..\sigc++\adaptors\%f if not exist ..\untracked\sigc++\adaptors\%f if not exist $(@D)\sigc++\adaptors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
@@ -46,7 +46,7 @@ $<
4646
$<
4747
<<
4848

49-
{..\untracked\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.obj:
49+
{..\untracked\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.obj:
5050
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist $(@D)\sigc++\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
5151
@for %f in ($(functors_built_cc) $(functors_built_h)) do @if not exist ..\sigc++\functors\%f if not exist ..\untracked\sigc++\functors\%f if not exist $(@D)\sigc++\functors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
5252
@for %f in ($(adaptors_built_cc) $(adaptors_built_h)) do @if not exist ..\sigc++\adaptors\%f if not exist ..\untracked\sigc++\adaptors\%f if not exist $(@D)\sigc++\adaptors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
@@ -57,7 +57,7 @@ $<
5757
$<
5858
<<
5959

60-
{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.obj:
60+
{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\adaptors\lambda\}.cc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.obj:
6161
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist $(@D)\sigc++\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
6262
@for %f in ($(functors_built_cc) $(functors_built_h)) do @if not exist ..\sigc++\functors\%f if not exist ..\untracked\sigc++\functors\%f if not exist $(@D)\sigc++\functors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
6363
@for %f in ($(adaptors_built_cc) $(adaptors_built_h)) do @if not exist ..\sigc++\adaptors\%f if not exist ..\untracked\sigc++\adaptors\%f if not exist $(@D)\sigc++\adaptors\%f $(MAKE) /f Makefile.vc CFG=$(CFG) generate-sources
@@ -70,10 +70,11 @@ $<
7070
# Rules for building .lib files
7171
$(LIBSIGC_LIB): $(LIBSIGC_DLL)
7272

73-
{.}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.res:
73+
{.}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.res:
7474
rc /fo$@ $<
7575

76-
{..\untracked\MSVC_NMake\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\sigc\}.res:
76+
{..\untracked\MSVC_NMake\}.rc{vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\}.res:
77+
@if not exist $(@D)\ md $(@D)
7778
rc /fo$@ $<
7879

7980
# Rules for linking DLLs
@@ -83,11 +84,20 @@ $(LIBSIGC_LIB): $(LIBSIGC_DLL)
8384
# $(dependent_objects)
8485
# <<
8586
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
86-
$(LIBSIGC_DLL): $(sigc_dll_OBJS)
87+
!ifdef STATIC
88+
$(LIBSIGC_LIB): $(libsigc_OBJS)
89+
lib $(ARFLAGS) -out:$@ @<<
90+
$(libsigc_OBJS)
91+
<<
92+
!else
93+
$(LIBSIGC_LIB): $(LIBSIGC_DLL)
94+
95+
$(LIBSIGC_DLL): $(libsigc_OBJS)
8796
link /DLL $(LDFLAGS) /implib:$(LIBSIGC_LIB) -out:$@ @<<
88-
$(sigc_dll_OBJS)
97+
$(libsigc_OBJS)
8998
<<
9099
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
100+
!endif
91101

92102
# Rules for linking Executables
93103
# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
@@ -104,20 +114,20 @@ clean:
104114
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
105115
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exp
106116
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.lib
107-
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc-tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc-tests\*.obj
108-
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc-tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc-tests\*.pdb
109-
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc-ex\*.obj
110-
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc-ex\*.pdb
111-
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc\*.res
112-
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc\*.obj
113-
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc\*.pdb
114-
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc-tests rd vs$(VSVER)\$(CFG)\$(PLAT)\sigc-tests
115-
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\sigc-ex
116-
@-for %d in ($(sigc_m4_srcdirs)) do @for %x in (cc h) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d\ del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d\*.%x
117-
@-for %x in (cc h) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\ del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\*.%x
118-
@-for %d in ($(sigc_m4_srcdirs)) do @rd vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d
119-
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++
120-
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\sigc
117+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_TESTS_INTDIR) del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_TESTS_INTDIR)\*.obj
118+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_TESTS_INTDIR) del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_TESTS_INTDIR)\*.pdb
119+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_EX_INTDIR)\*.obj
120+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_EX_INTDIR)\*.pdb
121+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\*.res
122+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\*.obj
123+
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\*.pdb
124+
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_TESTS_INTDIR) rd vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_TESTS_INTDIR)
125+
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\$(SIGC_EX_INTDIR)
126+
@-for %d in ($(sigc_m4_srcdirs)) do @for %x in (cc h) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d\ del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d\*.%x
127+
@-for %x in (cc h) do @if exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\ del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\*.%x
128+
@-for %d in ($(sigc_m4_srcdirs)) do @rd vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d
129+
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++
130+
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)
121131

122132
forceclean: clean
123133
@-for %d in (. adaptors\lambda adaptors functors) do @for %t in (.. ..\untracked) do @for %x in (cc h) do @for %f in (..\sigc++\%d\macros\*.%x.m4) do @del %t\sigc++\%d\%~nf

MSVC_NMake/config-msvc.mak

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ BASE_INCLUDES = /I$(PREFIX)\include
88
LIBSIGC_MAJOR_VERSION = 2
99
LIBSIGC_MINOR_VERSION = 0
1010

11+
!ifdef STATIC
12+
LIBSIGC_INTDIR = sigc-static
13+
SIGC_EX_INTDIR = sigc-examples-static
14+
SIGC_TESTS_INTDIR = sigc-tests-static
15+
!else
16+
LIBSIGC_INTDIR = sigc
17+
SIGC_EX_INTDIR = sigc-examples
18+
SIGC_TESTS_INTDIR = sigc-tests
19+
!endif
20+
1121
!if "$(CFG)" == "debug" || "$(CFG)" == "Debug"
1222
DEBUG_SUFFIX = -d
1323
!else
@@ -21,10 +31,15 @@ M4 = m4
2131
LIBSIGCPP_DEFINES = /DSIGC_BUILD
2232

2333
SIGCPP_BASE_CFLAGS = \
24-
/Ivs$(VSVER)\$(CFG)\$(PLAT)\sigc \
34+
/Ivs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR) \
2535
/I..\untracked /I.. /I..\untracked\MSVC_NMake /I. \
2636
/EHsc $(CFLAGS)
2737

38+
# Define LIBSIGCXX_STATIC everywhere for static builds
39+
!ifdef STATIC
40+
SIGCPP_BASE_CFLAGS = $(SIGCPP_BASE_CFLAGS) /DLIBSIGCXX_STATIC
41+
!endif
42+
2843
LIBSIGC_INT_SOURCES = $(sigc_sources_cc:/=\)
2944
LIBSIGC_INT_HDRS = $(sigc_public_h:/=\)
3045

@@ -42,8 +57,12 @@ LIBSIGC_LIBNAME = sigc-vc$(PDBVER)0$(DEBUG_SUFFIX)-$(LIBSIGC_MAJOR_VERSION)_$(LI
4257
LIBSIGC_DLLNAME = $(LIBSIGC_LIBNAME)
4358
!endif
4459

60+
!ifdef STATIC
61+
LIBSIGC_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME)-static.lib
62+
!else
4563
LIBSIGC_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_DLLNAME).dll
4664
LIBSIGC_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_LIBNAME).lib
65+
!endif
4766

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

MSVC_NMake/create-lists-msvc.mak

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,16 @@ NULL=
3535

3636
# For libsigc++
3737

38-
!if [call create-lists.bat header sigc.mak sigc_dll_OBJS]
38+
!if [call create-lists.bat header sigc.mak libsigc_OBJS]
3939
!endif
4040

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

44-
!if [@call create-lists.bat file sigc.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc\sigc.res]
44+
# No point linking in version resource for static builds
45+
!ifndef STATIC
46+
!if [@call create-lists.bat file sigc.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(LIBSIGC_INTDIR)\sigc.res]
47+
!endif
4548
!endif
4649

4750
!if [call create-lists.bat footer sigc.mak]
@@ -56,6 +59,25 @@ NULL=
5659
!if [call create-lists.bat footer sigc.mak]
5760
!endif
5861

62+
!ifdef STATIC
63+
# start of static executables
64+
!if [for %d in (examples tests) do @call create-lists.bat header sigc.mak libsigc_%d & @(for %s in (..\%d\*.cc) do @if not "%~ns" == "testutilities" if not "%~ns" == "benchmark" call create-lists.bat file sigc.mak vs$(VSVER)\$(CFG)\$(PLAT)\%~ns-static.exe) & @call create-lists.bat footer sigc.mak]
65+
!endif
66+
67+
!if [call create-lists.bat header sigc.mak libsigc_benchmark & @for %s in (..\tests\benchmark.cc) do @(call create-lists.bat file sigc.mak vs$(VSVER)\$(CFG)\$(PLAT)\%~ns-static.exe) & @call create-lists.bat footer sigc.mak]
68+
!endif
69+
70+
!if [for %d in (examples tests) do @for %s in (..\%d\*.cc) do @if not "%~ns" == "benchmark" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc-%d-static\%~ns.obj: %s>>sigc.mak & @echo. @if not exist ^$(@D)\ md ^$(@D)>>sigc.mak & @echo. ^$(CXX) ^$(SIGCPP_CFLAGS) /Fo^$(@D)\ /Fd^$(@D)\ ^$** /c>>sigc.mak & @echo.>>sigc.mak]
71+
!endif
72+
73+
!if [for %s in (..\examples\*.cc) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns-static.exe: ^$(LIBSIGC_LIB) vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_EX_INTDIR)\%~ns.obj>>sigc.mak & @echo. link ^$(LDFLAGS) ^$** /out:^$@>>sigc.mak & @echo.>>sigc.mak]
74+
!endif
75+
76+
!if [for %s in (..\tests\*.cc) do @if not "%~ns" == "testutilities" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns-static.exe: ^$(LIBSIGC_LIB) vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_TESTS_INTDIR)\%~ns.obj vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_TESTS_INTDIR)\testutilities.obj>>sigc.mak & @echo. link ^$(LDFLAGS) ^$** /out:^$@>>sigc.mak & @echo.>>sigc.mak]
77+
!endif
78+
# end of static executables
79+
!else
80+
# start of shared executables
5981
!if [for %d in (examples tests) do @call create-lists.bat header sigc.mak libsigc_%d & @(for %s in (..\%d\*.cc) do @if not "%~ns" == "testutilities" if not "%~ns" == "benchmark" call create-lists.bat file sigc.mak vs$(VSVER)\$(CFG)\$(PLAT)\%~ns.exe) & @call create-lists.bat footer sigc.mak]
6082
!endif
6183

@@ -65,13 +87,16 @@ NULL=
6587
!if [for %d in (examples tests) do @for %s in (..\%d\*.cc) do @if not "%~ns" == "benchmark" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc-%d\%~ns.obj: %s>>sigc.mak & @echo. @if not exist ^$(@D)\ md ^$(@D)>>sigc.mak & @echo. ^$(CXX) ^$(SIGCPP_CFLAGS) /Fo^$(@D)\ /Fd^$(@D)\ ^$** /c>>sigc.mak & @echo.>>sigc.mak]
6688
!endif
6789

68-
!if [for %s in (..\tests\benchmark.cc) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc-tests\%~ns.obj: %s>>sigc.mak & @echo. @if not exist ^$(@D)\ md ^$(@D)>>sigc.mak & @echo. ^$(CXX) ^$(SIGCPP_BENCHMARK_CFLAGS) /Fo^$(@D)\ /Fd^$(@D)\ ^$** /c>>sigc.mak & @echo.>>sigc.mak]
90+
!if [for %s in (..\examples\*.cc) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns.exe: ^$(LIBSIGC_LIB) vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_EX_INTDIR)\%~ns.obj>>sigc.mak & @echo. link ^$(LDFLAGS) ^$** /out:^$@>>sigc.mak & @echo.>>sigc.mak]
91+
!endif
92+
93+
!if [for %s in (..\tests\*.cc) do @if not "%~ns" == "testutilities" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns.exe: ^$(LIBSIGC_LIB) vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_TESTS_INTDIR)\%~ns.obj vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_TESTS_INTDIR)\testutilities.obj>>sigc.mak & @echo. link ^$(LDFLAGS) ^$** /out:^$@>>sigc.mak & @echo.>>sigc.mak]
6994
!endif
7095

71-
!if [for %s in (..\examples\*.cc) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns.exe: ^$(LIBSIGC_LIB) vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc-examples\%~ns.obj>>sigc.mak & @echo. link ^$(LDFLAGS) ^$** /out:^$@>>sigc.mak & @echo.>>sigc.mak]
96+
# end of shared executables
7297
!endif
7398

74-
!if [for %s in (..\tests\*.cc) do @if not "%~ns" == "testutilities" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\%~ns.exe: ^$(LIBSIGC_LIB) vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc-tests\%~ns.obj vs^$(VSVER)\^$(CFG)\^$(PLAT)\sigc-tests\testutilities.obj>>sigc.mak & @echo. link ^$(LDFLAGS) ^$** /out:^$@>>sigc.mak & @echo.>>sigc.mak]
99+
!if [for %s in (..\tests\benchmark.cc) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\$(SIGC_TESTS_INTDIR)\%~ns.obj: %s>>sigc.mak & @echo. @if not exist ^$(@D)\ md ^$(@D)>>sigc.mak & @echo. ^$(CXX) ^$(SIGCPP_BENCHMARK_CFLAGS) /Fo^$(@D)\ /Fd^$(@D)\ ^$** /c>>sigc.mak & @echo.>>sigc.mak]
75100
!endif
76101

77102
!include sigc.mak

MSVC_NMake/generate-msvc.mak

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ pkg-ver.mak: ..\configure.ac
4646
$(MAKE) /f Makefile.vc CFG=$(CFG) GENERATE_VERSIONED_FILES=1 sigc.rc sigc++config.h
4747

4848
generate-sources:
49-
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\ md vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++
50-
@for %d in ($(sigc_m4_srcdirs)) do @for %x in (cc h) do @for %f in (..\sigc++\%d\macros\*.%x.m4) do @if not exist ..\sigc++\%d\%~nf if not exist ..\untracked\sigc++\%d\%~nf if not exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d\ md vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d
51-
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%f @echo Generating vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%f... & $(M4) -I ../sigc++/macros ../sigc++/macros/%f.m4 >vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%f
52-
@for %d in ($(sigc_m4_srcdirs:adaptors\lambda=)) do @for %x in (cc h) do @for %f in (..\sigc++\%d\macros\*.%x.m4) do @if not exist ..\sigc++\%d\%~nf if not exist ..\untracked\sigc++\%d\%~nf if not exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d\%~nf @echo Generating vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d\%~nf... & $(M4) -I ../sigc++/%d/macros -I ../sigc++/macros ../sigc++/%d/macros/%~nxf >vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\%d\%~nf
53-
@for %x in (cc h) do @for %f in (..\sigc++\adaptors\lambda\macros\*.%x.m4) do @if not exist ..\sigc++\adaptors\lambda\%~nf if not exist ..\untracked\sigc++\adaptors\lambda\%~nf if not exist vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\adaptors\lambda\%~nf @echo Generating vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\adaptors\lambda\%~nf... & $(M4) -I ../sigc++/adaptors/lambda/macros -I ../sigc++/macros ../sigc++/adaptors/lambda/macros/%~nxf >vs$(VSVER)\$(CFG)\$(PLAT)\sigc\sigc++\adaptors\lambda\%~nf
49+
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\ md vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++
50+
@for %d in ($(sigc_m4_srcdirs)) do @for %x in (cc h) do @for %f in (..\sigc++\%d\macros\*.%x.m4) do @if not exist ..\sigc++\%d\%~nf if not exist ..\untracked\sigc++\%d\%~nf if not exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d\ md vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d
51+
@for %f in ($(base_built_cc) $(base_built_h)) do @if not exist ..\sigc++\%f if not exist ..\untracked\sigc++\%f if not exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%f @echo Generating vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%f... & $(M4) -I ../sigc++/macros ../sigc++/macros/%f.m4 >vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%f
52+
@for %d in ($(sigc_m4_srcdirs:adaptors\lambda=)) do @for %x in (cc h) do @for %f in (..\sigc++\%d\macros\*.%x.m4) do @if not exist ..\sigc++\%d\%~nf if not exist ..\untracked\sigc++\%d\%~nf if not exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d\%~nf @echo Generating vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d\%~nf... & $(M4) -I ../sigc++/%d/macros -I ../sigc++/macros ../sigc++/%d/macros/%~nxf >vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\%d\%~nf
53+
@for %x in (cc h) do @for %f in (..\sigc++\adaptors\lambda\macros\*.%x.m4) do @if not exist ..\sigc++\adaptors\lambda\%~nf if not exist ..\untracked\sigc++\adaptors\lambda\%~nf if not exist vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\adaptors\lambda\%~nf @echo Generating vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\adaptors\lambda\%~nf... & $(M4) -I ../sigc++/adaptors/lambda/macros -I ../sigc++/macros ../sigc++/adaptors/lambda/macros/%~nxf >vs$(VSVER)\$(CFG)\$(PLAT)\$(LIBSIGC_INTDIR)\sigc++\adaptors\lambda\%~nf

MSVC_NMake/info-msvc.mak

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ all-build-info:
66
@echo Build info
77
@echo ---------
88
@echo Build Type: $(CFG)
9+
@if not "$(STATIC)" == "" echo Library Build Type: static
10+
@if "$(STATIC)" == "" echo Library Build Type: DLL
911

1012
help:
1113
@echo.
1214
@echo ==============================
1315
@echo Building libsigc++ Using NMake
1416
@echo ==============================
15-
@echo nmake /f Makefile.vc CFG=[release^|debug] ^<PREFIX=PATH^>
17+
@echo nmake /f Makefile.vc CFG=[release^|debug] ^<PREFIX=PATH^> ^<STATIC=1^>
1618
@echo.
1719
@echo Where:
1820
@echo ------
@@ -24,6 +26,10 @@ help:
2426
@echo where ^$(short_vs_ver) is 12 for VS 2013 and 14 for VS 2015 and so on;
2527
@echo and ^$(platform) is Win32 for 32-bit builds and x64 for x64 builds.
2628
@echo.
29+
@echo STATIC: Optional, enable to build static libsigc++. Define
30+
@echo LIBSIGCXX_STATIC in the compiler flags to use the static build of
31+
@echo libsigc++.
32+
@echo.
2733
@echo ======
2834
@echo A 'clean' target is supported to remove all generated files, intermediate
2935
@echo object files and binaries for the specified configuration.

meson.build

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ if is_msvc
212212
cpp_compiler.get_supported_arguments(disable_warnings_list),
213213
language: 'cpp'
214214
)
215+
if is_msvc_static
216+
add_project_arguments(['-DLIBSIGCXX_STATIC'], language: 'cpp')
217+
endif
215218
endif
216219

217220
# Configure files

sigc++/meson.build

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,10 @@ endif
7676
# Build the .rc file for Windows builds and link to it
7777
if host_machine.system() == 'windows'
7878
windows = import('windows')
79-
sigc_res = windows.compile_resources(sigc_rc)
80-
extra_sigc_objects += sigc_res
79+
if get_option('default_library') == 'shared'
80+
sigc_res = windows.compile_resources(sigc_rc)
81+
extra_sigc_objects += sigc_res
82+
endif
8183
endif
8284

8385
if maintainer_mode

0 commit comments

Comments
 (0)