xref: /aosp_15_r20/external/lzma/CPP/Build.mak (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1LIBS = $(LIBS) oleaut32.lib ole32.lib
2
3# CFLAGS = $(CFLAGS) -DZ7_NO_UNICODE
4!IFNDEF MY_NO_UNICODE
5# CFLAGS = $(CFLAGS) -DUNICODE -D_UNICODE
6!ENDIF
7
8!IF "$(CC)" != "clang-cl"
9# for link time code generation:
10# CFLAGS = $(CFLAGS) -GL
11!ENDIF
12
13!IFNDEF O
14!IFDEF PLATFORM
15O=$(PLATFORM)
16!ELSE
17O=o
18!ENDIF
19!ENDIF
20
21!IF "$(CC)" != "clang-cl"
22# CFLAGS = $(CFLAGS) -FAsc -Fa$O/asm/
23!ENDIF
24
25# LFLAGS = $(LFLAGS) /guard:cf
26
27
28!IF "$(PLATFORM)" == "x64"
29MY_ML = ml64 -WX
30#-Dx64
31!ELSEIF "$(PLATFORM)" == "arm64"
32MY_ML = armasm64
33!ELSEIF "$(PLATFORM)" == "arm"
34MY_ML = armasm -WX
35!ELSE
36MY_ML = ml -WX
37# -DABI_CDECL
38!ENDIF
39
40# MY_ML = "$(MY_ML) -Fl$O\asm\
41
42
43!IFDEF UNDER_CE
44RFLAGS = $(RFLAGS) -dUNDER_CE
45!IFDEF MY_CONSOLE
46LFLAGS = $(LFLAGS) /ENTRY:mainACRTStartup
47!ENDIF
48!ELSE
49!IFDEF OLD_COMPILER
50LFLAGS = $(LFLAGS) -OPT:NOWIN98
51!ENDIF
52!IF "$(PLATFORM)" != "arm" && "$(PLATFORM)" != "arm64"
53CFLAGS = $(CFLAGS) -Gr
54!ENDIF
55LIBS = $(LIBS) user32.lib advapi32.lib shell32.lib
56!ENDIF
57
58!IF "$(PLATFORM)" == "arm"
59COMPL_ASM = $(MY_ML) $** $O/$(*B).obj
60!ELSEIF "$(PLATFORM)" == "arm64"
61COMPL_ASM = $(MY_ML) $** $O/$(*B).obj
62!ELSE
63COMPL_ASM = $(MY_ML) -c -Fo$O/ $**
64!ENDIF
65
66!IFDEF OLD_COMPILER
67CFLAGS_WARN_LEVEL = -W4
68!ELSE
69CFLAGS_WARN_LEVEL = -Wall
70!ENDIF
71
72CFLAGS = $(CFLAGS) -nologo -c -Fo$O/ $(CFLAGS_WARN_LEVEL) -WX -EHsc -Gy -GR- -GF
73
74!IF "$(CC)" == "clang-cl"
75
76CFLAGS = $(CFLAGS) \
77  -Werror \
78  -Wall \
79  -Wextra \
80  -Weverything \
81  -Wfatal-errors \
82
83!ENDIF
84
85# !IFDEF MY_DYNAMIC_LINK
86!IF "$(MY_DYNAMIC_LINK)" != ""
87CFLAGS = $(CFLAGS) -MD
88!ELSE
89!IFNDEF MY_SINGLE_THREAD
90CFLAGS = $(CFLAGS) -MT
91!ENDIF
92!ENDIF
93
94
95CFLAGS = $(CFLAGS_COMMON) $(CFLAGS)
96
97
98!IFNDEF OLD_COMPILER
99
100CFLAGS = $(CFLAGS) -GS- -Zc:wchar_t
101!IFDEF VCTOOLSVERSION
102!IF "$(VCTOOLSVERSION)" >= "14.00"
103!IF "$(CC)" != "clang-cl"
104CFLAGS = $(CFLAGS) -Zc:throwingNew
105!ENDIF
106!ENDIF
107!ELSE
108# -Zc:forScope is default in VS2010. so we need it only for older versions
109CFLAGS = $(CFLAGS) -Zc:forScope
110!ENDIF
111
112!IFNDEF UNDER_CE
113!IF "$(CC)" != "clang-cl"
114CFLAGS = $(CFLAGS) -MP4
115!ENDIF
116!IFNDEF PLATFORM
117# CFLAGS = $(CFLAGS) -arch:IA32
118!ENDIF
119!ENDIF
120
121!ENDIF
122
123
124!IFDEF MY_CONSOLE
125CFLAGS = $(CFLAGS) -D_CONSOLE
126!ENDIF
127
128!IFNDEF UNDER_CE
129!IF "$(PLATFORM)" == "arm"
130CFLAGS = $(CFLAGS) -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE
131!ENDIF
132!ENDIF
133
134!IF "$(PLATFORM)" == "x64"
135CFLAGS_O1 = $(CFLAGS) -O1
136!ELSE
137CFLAGS_O1 = $(CFLAGS) -O1
138!ENDIF
139CFLAGS_O2 = $(CFLAGS) -O2
140
141LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF -INCREMENTAL:NO
142
143!IFNDEF UNDER_CE
144LFLAGS = $(LFLAGS) /LARGEADDRESSAWARE
145!ENDIF
146
147!IFDEF DEF_FILE
148LFLAGS = $(LFLAGS) -DLL -DEF:$(DEF_FILE)
149!ELSE
150!IF defined(MY_FIXED) && "$(PLATFORM)" != "arm" && "$(PLATFORM)" != "arm64"
151LFLAGS = $(LFLAGS) /FIXED
152!ELSE
153LFLAGS = $(LFLAGS) /FIXED:NO
154!ENDIF
155# /BASE:0x400000
156!ENDIF
157
158!IF "$(PLATFORM)" == "arm64"
159# we can get better compression ratio with ARM64 filter if we change alignment to 4096
160# LFLAGS = $(LFLAGS) /FILEALIGN:4096
161!ENDIF
162
163
164
165# !IF "$(PLATFORM)" == "x64"
166
167!IFDEF SUB_SYS_VER
168
169MY_SUB_SYS_VER=5.02
170
171!IFDEF MY_CONSOLE
172LFLAGS = $(LFLAGS) /SUBSYSTEM:console,$(MY_SUB_SYS_VER)
173!ELSE
174LFLAGS = $(LFLAGS) /SUBSYSTEM:windows,$(MY_SUB_SYS_VER)
175!ENDIF
176
177!ENDIF
178
179
180!IF "$(PLATFORM)" == "arm64"
181CLANG_FLAGS_TARGET = --target=arm64-pc-windows-msvc
182!ENDIF
183
184COMPL_CLANG_SPEC=clang-cl $(CLANG_FLAGS_TARGET)
185COMPL_ASM_CLANG = $(COMPL_CLANG_SPEC) -nologo -c -Fo$O/ $(CFLAGS_WARN_LEVEL) -WX $**
186# COMPL_C_CLANG   = $(COMPL_CLANG_SPEC) $(CFLAGS_O2)
187
188
189PROGPATH = $O\$(PROG)
190
191COMPL_O1   = $(CC) $(CFLAGS_O1) $**
192COMPL_O2   = $(CC) $(CFLAGS_O2) $**
193COMPL_PCH  = $(CC) $(CFLAGS_O1) -Yc"StdAfx.h" -Fp$O/a.pch $**
194COMPL      = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $**
195COMPLB     = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $<
196COMPLB_O2  = $(CC) $(CFLAGS_O2) $<
197# COMPLB_O2  = $(CC) $(CFLAGS_O2) -Yu"StdAfx.h" -Fp$O/a.pch $<
198
199CFLAGS_C_ALL = $(CFLAGS_O2) $(CFLAGS_C_SPEC)
200
201CCOMPL_PCH  = $(CC) $(CFLAGS_C_ALL) -Yc"Precomp.h" -Fp$O/a.pch $**
202CCOMPL_USE  = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $**
203CCOMPLB_USE = $(CC) $(CFLAGS_C_ALL) -Yu"Precomp.h" -Fp$O/a.pch $<
204CCOMPL      = $(CC) $(CFLAGS_C_ALL) $**
205CCOMPLB     = $(CC) $(CFLAGS_C_ALL) $<
206
207!IF "$(CC)" == "clang-cl"
208COMPL  = $(COMPL) -FI StdAfx.h
209COMPLB = $(COMPLB) -FI StdAfx.h
210CCOMPL_USE  = $(CCOMPL_USE) -FI Precomp.h
211CCOMPLB_USE = $(CCOMPLB_USE) -FI Precomp.h
212!ENDIF
213
214all: $(PROGPATH)
215
216clean:
217	-del /Q $(PROGPATH) $O\*.exe $O\*.dll $O\*.obj $O\*.lib $O\*.exp $O\*.res $O\*.pch $O\*.asm
218
219$O:
220	if not exist "$O" mkdir "$O"
221$O/asm:
222	if not exist "$O/asm" mkdir "$O/asm"
223
224!IF "$(CC)" != "clang-cl"
225# for link time code generation:
226# LFLAGS = $(LFLAGS) -LTCG
227!ENDIF
228
229$(PROGPATH): $O $O/asm $(OBJS) $(DEF_FILE)
230	link $(LFLAGS) -out:$(PROGPATH) $(OBJS) $(LIBS)
231
232!IFNDEF NO_DEFAULT_RES
233$O\resource.res: $(*B).rc
234	rc $(RFLAGS) -fo$@ $**
235!ENDIF
236$O\StdAfx.obj: $(*B).cpp
237	$(COMPL_PCH)
238
239predef: empty.c
240	$(CCOMPL)   /EP /Zc:preprocessor /PD
241predef2: A.cpp
242	$(COMPL)   -EP -Zc:preprocessor -PD
243predef3: A.cpp
244	$(COMPL)   -E -dM
245predef4: A.cpp
246	$(COMPL_O2)   -E
247