aboutsummaryrefslogtreecommitdiff
path: root/CPP/Build.mak
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/Build.mak')
-rw-r--r--CPP/Build.mak87
1 files changed, 58 insertions, 29 deletions
diff --git a/CPP/Build.mak b/CPP/Build.mak
index 1ef676e..393fa2c 100644
--- a/CPP/Build.mak
+++ b/CPP/Build.mak
@@ -4,6 +4,11 @@ LIBS = $(LIBS) oleaut32.lib ole32.lib
4CFLAGS = $(CFLAGS) -DUNICODE -D_UNICODE 4CFLAGS = $(CFLAGS) -DUNICODE -D_UNICODE
5!ENDIF 5!ENDIF
6 6
7!IF "$(CC)" != "clang-cl"
8# for link time code generation:
9# CFLAGS = $(CFLAGS) -GL
10!ENDIF
11
7!IFNDEF O 12!IFNDEF O
8!IFDEF PLATFORM 13!IFDEF PLATFORM
9O=$(PLATFORM) 14O=$(PLATFORM)
@@ -51,33 +56,22 @@ COMPL_ASM = $(MY_ML) $** $O/$(*B).obj
51COMPL_ASM = $(MY_ML) -c -Fo$O/ $** 56COMPL_ASM = $(MY_ML) -c -Fo$O/ $**
52!ENDIF 57!ENDIF
53 58
54CFLAGS = $(CFLAGS) -nologo -c -Fo$O/ -W4 -WX -EHsc -Gy -GR- -GF 59!IFDEF OLD_COMPILER
60CFLAGS_WARN_LEVEL = -W4
61!ELSE
62CFLAGS_WARN_LEVEL = -Wall
63!ENDIF
64
65CFLAGS = $(CFLAGS) -nologo -c -Fo$O/ $(CFLAGS_WARN_LEVEL) -WX -EHsc -Gy -GR- -GF
55 66
56!IF "$(CC)" == "clang-cl" 67!IF "$(CC)" == "clang-cl"
57 68
58CFLAGS = $(CFLAGS) \ 69CFLAGS = $(CFLAGS) \
59 -Werror \ 70 -Werror \
60 -Wextra \
61 -Wall \ 71 -Wall \
72 -Wextra \
62 -Weverything \ 73 -Weverything \
63 -Wno-extra-semi-stmt \ 74 -Wfatal-errors \
64 -Wno-extra-semi \
65 -Wno-zero-as-null-pointer-constant \
66 -Wno-sign-conversion \
67 -Wno-old-style-cast \
68 -Wno-reserved-id-macro \
69 -Wno-deprecated-dynamic-exception-spec \
70 -Wno-language-extension-token \
71 -Wno-global-constructors \
72 -Wno-non-virtual-dtor \
73 -Wno-deprecated-copy-dtor \
74 -Wno-exit-time-destructors \
75 -Wno-switch-enum \
76 -Wno-covered-switch-default \
77 -Wno-nonportable-system-include-path \
78 -Wno-c++98-compat-pedantic \
79 -Wno-cast-qual \
80 -Wc++11-extensions \
81 75
82!ENDIF 76!ENDIF
83 77
@@ -92,8 +86,21 @@ CFLAGS = $(CFLAGS) -MT
92 86
93CFLAGS = $(CFLAGS_COMMON) $(CFLAGS) 87CFLAGS = $(CFLAGS_COMMON) $(CFLAGS)
94 88
89
95!IFNDEF OLD_COMPILER 90!IFNDEF OLD_COMPILER
96CFLAGS = $(CFLAGS) -GS- -Zc:forScope -Zc:wchar_t 91
92CFLAGS = $(CFLAGS) -GS- -Zc:wchar_t
93!IFDEF VCTOOLSVERSION
94!IF "$(VCTOOLSVERSION)" >= "14.00"
95!IF "$(CC)" != "clang-cl"
96CFLAGS = $(CFLAGS) -Zc:throwingNew
97!ENDIF
98!ENDIF
99!ELSE
100# -Zc:forScope is default in VS2010. so we need it only for older versions
101CFLAGS = $(CFLAGS) -Zc:forScope
102!ENDIF
103
97!IFNDEF UNDER_CE 104!IFNDEF UNDER_CE
98!IF "$(CC)" != "clang-cl" 105!IF "$(CC)" != "clang-cl"
99CFLAGS = $(CFLAGS) -MP4 106CFLAGS = $(CFLAGS) -MP4
@@ -102,10 +109,10 @@ CFLAGS = $(CFLAGS) -MP4
102# CFLAGS = $(CFLAGS) -arch:IA32 109# CFLAGS = $(CFLAGS) -arch:IA32
103!ENDIF 110!ENDIF
104!ENDIF 111!ENDIF
105!ELSE 112
106CFLAGS = $(CFLAGS)
107!ENDIF 113!ENDIF
108 114
115
109!IFDEF MY_CONSOLE 116!IFDEF MY_CONSOLE
110CFLAGS = $(CFLAGS) -D_CONSOLE 117CFLAGS = $(CFLAGS) -D_CONSOLE
111!ENDIF 118!ENDIF
@@ -123,7 +130,7 @@ CFLAGS_O1 = $(CFLAGS) -O1
123!ENDIF 130!ENDIF
124CFLAGS_O2 = $(CFLAGS) -O2 131CFLAGS_O2 = $(CFLAGS) -O2
125 132
126LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF 133LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF -INCREMENTAL:NO
127 134
128!IFNDEF UNDER_CE 135!IFNDEF UNDER_CE
129LFLAGS = $(LFLAGS) /LARGEADDRESSAWARE 136LFLAGS = $(LFLAGS) /LARGEADDRESSAWARE
@@ -140,6 +147,12 @@ LFLAGS = $(LFLAGS) /FIXED:NO
140# /BASE:0x400000 147# /BASE:0x400000
141!ENDIF 148!ENDIF
142 149
150!IF "$(PLATFORM)" == "arm64"
151# we can get better compression ratio with ARM64 filter if we change alignment to 4096
152# LFLAGS = $(LFLAGS) /FILEALIGN:4096
153!ENDIF
154
155
143 156
144# !IF "$(PLATFORM)" == "x64" 157# !IF "$(PLATFORM)" == "x64"
145 158
@@ -162,21 +175,23 @@ COMPL_O1 = $(CC) $(CFLAGS_O1) $**
162COMPL_O2 = $(CC) $(CFLAGS_O2) $** 175COMPL_O2 = $(CC) $(CFLAGS_O2) $**
163COMPL_PCH = $(CC) $(CFLAGS_O1) -Yc"StdAfx.h" -Fp$O/a.pch $** 176COMPL_PCH = $(CC) $(CFLAGS_O1) -Yc"StdAfx.h" -Fp$O/a.pch $**
164COMPL = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $** 177COMPL = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $**
165 178COMPLB = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $<
166COMPLB = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $< 179COMPLB_O2 = $(CC) $(CFLAGS_O2) $<
167# COMPLB_O2 = $(CC) $(CFLAGS_O2) -Yu"StdAfx.h" -Fp$O/a.pch $< 180# COMPLB_O2 = $(CC) $(CFLAGS_O2) -Yu"StdAfx.h" -Fp$O/a.pch $<
168COMPLB_O2 = $(CC) $(CFLAGS_O2) $<
169 181
170CFLAGS_C_ALL = $(CFLAGS_O2) $(CFLAGS_C_SPEC) 182CFLAGS_C_ALL = $(CFLAGS_O2) $(CFLAGS_C_SPEC)
183
171CCOMPL_PCH = $(CC) $(CFLAGS_C_ALL) -Yc"Precomp.h" -Fp$O/a.pch $** 184CCOMPL_PCH = $(CC) $(CFLAGS_C_ALL) -Yc"Precomp.h" -Fp$O/a.pch $**
172CCOMPL_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $** 185CCOMPL_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $**
186CCOMPLB_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $<
173CCOMPL = $(CC) $(CFLAGS_C_ALL) $** 187CCOMPL = $(CC) $(CFLAGS_C_ALL) $**
174CCOMPLB = $(CC) $(CFLAGS_C_ALL) $< 188CCOMPLB = $(CC) $(CFLAGS_C_ALL) $<
175 189
176!IF "$(CC)" == "clang-cl" 190!IF "$(CC)" == "clang-cl"
177COMPL = $(COMPL) -FI StdAfx.h 191COMPL = $(COMPL) -FI StdAfx.h
178COMPLB = $(COMPLB) -FI StdAfx.h 192COMPLB = $(COMPLB) -FI StdAfx.h
179CCOMPL_USE = $(CCOMPL_USE) -FI Precomp.h 193CCOMPL_USE = $(CCOMPL_USE) -FI Precomp.h
194CCOMPLB_USE = $(CCOMPLB_USE) -FI Precomp.h
180!ENDIF 195!ENDIF
181 196
182all: $(PROGPATH) 197all: $(PROGPATH)
@@ -189,6 +204,11 @@ $O:
189$O/asm: 204$O/asm:
190 if not exist "$O/asm" mkdir "$O/asm" 205 if not exist "$O/asm" mkdir "$O/asm"
191 206
207!IF "$(CC)" != "clang-cl"
208# for link time code generation:
209# LFLAGS = $(LFLAGS) -LTCG
210!ENDIF
211
192$(PROGPATH): $O $O/asm $(OBJS) $(DEF_FILE) 212$(PROGPATH): $O $O/asm $(OBJS) $(DEF_FILE)
193 link $(LFLAGS) -out:$(PROGPATH) $(OBJS) $(LIBS) 213 link $(LFLAGS) -out:$(PROGPATH) $(OBJS) $(LIBS)
194 214
@@ -198,3 +218,12 @@ $O\resource.res: $(*B).rc
198!ENDIF 218!ENDIF
199$O\StdAfx.obj: $(*B).cpp 219$O\StdAfx.obj: $(*B).cpp
200 $(COMPL_PCH) 220 $(COMPL_PCH)
221
222predef: empty.c
223 $(CCOMPL) /EP /Zc:preprocessor /PD
224predef2: A.cpp
225 $(COMPL) -EP -Zc:preprocessor -PD
226predef3: A.cpp
227 $(COMPL) -E -dM
228predef4: A.cpp
229 $(COMPL_O2) -E