diff options
Diffstat (limited to 'CPP/Build.mak')
-rw-r--r-- | CPP/Build.mak | 87 |
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 | |||
4 | CFLAGS = $(CFLAGS) -DUNICODE -D_UNICODE | 4 | CFLAGS = $(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 |
9 | O=$(PLATFORM) | 14 | O=$(PLATFORM) |
@@ -51,33 +56,22 @@ COMPL_ASM = $(MY_ML) $** $O/$(*B).obj | |||
51 | COMPL_ASM = $(MY_ML) -c -Fo$O/ $** | 56 | COMPL_ASM = $(MY_ML) -c -Fo$O/ $** |
52 | !ENDIF | 57 | !ENDIF |
53 | 58 | ||
54 | CFLAGS = $(CFLAGS) -nologo -c -Fo$O/ -W4 -WX -EHsc -Gy -GR- -GF | 59 | !IFDEF OLD_COMPILER |
60 | CFLAGS_WARN_LEVEL = -W4 | ||
61 | !ELSE | ||
62 | CFLAGS_WARN_LEVEL = -Wall | ||
63 | !ENDIF | ||
64 | |||
65 | CFLAGS = $(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 | ||
58 | CFLAGS = $(CFLAGS) \ | 69 | CFLAGS = $(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 | ||
93 | CFLAGS = $(CFLAGS_COMMON) $(CFLAGS) | 87 | CFLAGS = $(CFLAGS_COMMON) $(CFLAGS) |
94 | 88 | ||
89 | |||
95 | !IFNDEF OLD_COMPILER | 90 | !IFNDEF OLD_COMPILER |
96 | CFLAGS = $(CFLAGS) -GS- -Zc:forScope -Zc:wchar_t | 91 | |
92 | CFLAGS = $(CFLAGS) -GS- -Zc:wchar_t | ||
93 | !IFDEF VCTOOLSVERSION | ||
94 | !IF "$(VCTOOLSVERSION)" >= "14.00" | ||
95 | !IF "$(CC)" != "clang-cl" | ||
96 | CFLAGS = $(CFLAGS) -Zc:throwingNew | ||
97 | !ENDIF | ||
98 | !ENDIF | ||
99 | !ELSE | ||
100 | # -Zc:forScope is default in VS2010. so we need it only for older versions | ||
101 | CFLAGS = $(CFLAGS) -Zc:forScope | ||
102 | !ENDIF | ||
103 | |||
97 | !IFNDEF UNDER_CE | 104 | !IFNDEF UNDER_CE |
98 | !IF "$(CC)" != "clang-cl" | 105 | !IF "$(CC)" != "clang-cl" |
99 | CFLAGS = $(CFLAGS) -MP4 | 106 | CFLAGS = $(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 | |
106 | CFLAGS = $(CFLAGS) | ||
107 | !ENDIF | 113 | !ENDIF |
108 | 114 | ||
115 | |||
109 | !IFDEF MY_CONSOLE | 116 | !IFDEF MY_CONSOLE |
110 | CFLAGS = $(CFLAGS) -D_CONSOLE | 117 | CFLAGS = $(CFLAGS) -D_CONSOLE |
111 | !ENDIF | 118 | !ENDIF |
@@ -123,7 +130,7 @@ CFLAGS_O1 = $(CFLAGS) -O1 | |||
123 | !ENDIF | 130 | !ENDIF |
124 | CFLAGS_O2 = $(CFLAGS) -O2 | 131 | CFLAGS_O2 = $(CFLAGS) -O2 |
125 | 132 | ||
126 | LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF | 133 | LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF -INCREMENTAL:NO |
127 | 134 | ||
128 | !IFNDEF UNDER_CE | 135 | !IFNDEF UNDER_CE |
129 | LFLAGS = $(LFLAGS) /LARGEADDRESSAWARE | 136 | LFLAGS = $(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) $** | |||
162 | COMPL_O2 = $(CC) $(CFLAGS_O2) $** | 175 | COMPL_O2 = $(CC) $(CFLAGS_O2) $** |
163 | COMPL_PCH = $(CC) $(CFLAGS_O1) -Yc"StdAfx.h" -Fp$O/a.pch $** | 176 | COMPL_PCH = $(CC) $(CFLAGS_O1) -Yc"StdAfx.h" -Fp$O/a.pch $** |
164 | COMPL = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $** | 177 | COMPL = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $** |
165 | 178 | COMPLB = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $< | |
166 | COMPLB = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $< | 179 | COMPLB_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 $< |
168 | COMPLB_O2 = $(CC) $(CFLAGS_O2) $< | ||
169 | 181 | ||
170 | CFLAGS_C_ALL = $(CFLAGS_O2) $(CFLAGS_C_SPEC) | 182 | CFLAGS_C_ALL = $(CFLAGS_O2) $(CFLAGS_C_SPEC) |
183 | |||
171 | CCOMPL_PCH = $(CC) $(CFLAGS_C_ALL) -Yc"Precomp.h" -Fp$O/a.pch $** | 184 | CCOMPL_PCH = $(CC) $(CFLAGS_C_ALL) -Yc"Precomp.h" -Fp$O/a.pch $** |
172 | CCOMPL_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $** | 185 | CCOMPL_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $** |
186 | CCOMPLB_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $< | ||
173 | CCOMPL = $(CC) $(CFLAGS_C_ALL) $** | 187 | CCOMPL = $(CC) $(CFLAGS_C_ALL) $** |
174 | CCOMPLB = $(CC) $(CFLAGS_C_ALL) $< | 188 | CCOMPLB = $(CC) $(CFLAGS_C_ALL) $< |
175 | 189 | ||
176 | !IF "$(CC)" == "clang-cl" | 190 | !IF "$(CC)" == "clang-cl" |
177 | COMPL = $(COMPL) -FI StdAfx.h | 191 | COMPL = $(COMPL) -FI StdAfx.h |
178 | COMPLB = $(COMPLB) -FI StdAfx.h | 192 | COMPLB = $(COMPLB) -FI StdAfx.h |
179 | CCOMPL_USE = $(CCOMPL_USE) -FI Precomp.h | 193 | CCOMPL_USE = $(CCOMPL_USE) -FI Precomp.h |
194 | CCOMPLB_USE = $(CCOMPLB_USE) -FI Precomp.h | ||
180 | !ENDIF | 195 | !ENDIF |
181 | 196 | ||
182 | all: $(PROGPATH) | 197 | all: $(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 | |||
222 | predef: empty.c | ||
223 | $(CCOMPL) /EP /Zc:preprocessor /PD | ||
224 | predef2: A.cpp | ||
225 | $(COMPL) -EP -Zc:preprocessor -PD | ||
226 | predef3: A.cpp | ||
227 | $(COMPL) -E -dM | ||
228 | predef4: A.cpp | ||
229 | $(COMPL_O2) -E | ||