1LIBS = $(LIBS) oleaut32.lib ole32.lib 2 3!IFNDEF MY_NO_UNICODE 4CFLAGS = $(CFLAGS) -DUNICODE -D_UNICODE 5!ENDIF 6 7!IF "$(CC)" != "clang-cl" 8# for link time code generation: 9# CFLAGS = $(CFLAGS) -GL 10!ENDIF 11 12!IFNDEF O 13!IFDEF PLATFORM 14O=$(PLATFORM) 15!ELSE 16O=o 17!ENDIF 18!ENDIF 19 20!IF "$(CC)" != "clang-cl" 21# CFLAGS = $(CFLAGS) -FAsc -Fa$O/asm/ 22!ENDIF 23 24 25!IF "$(PLATFORM)" == "x64" 26MY_ML = ml64 -WX 27#-Dx64 28!ELSEIF "$(PLATFORM)" == "arm" 29MY_ML = armasm -WX 30!ELSE 31MY_ML = ml -WX 32# -DABI_CDECL 33!ENDIF 34 35# MY_ML = "$(MY_ML) -Fl$O\asm\ 36 37 38!IFDEF UNDER_CE 39RFLAGS = $(RFLAGS) -dUNDER_CE 40!IFDEF MY_CONSOLE 41LFLAGS = $(LFLAGS) /ENTRY:mainACRTStartup 42!ENDIF 43!ELSE 44!IFDEF OLD_COMPILER 45LFLAGS = $(LFLAGS) -OPT:NOWIN98 46!ENDIF 47!IF "$(PLATFORM)" != "arm" && "$(PLATFORM)" != "arm64" 48CFLAGS = $(CFLAGS) -Gr 49!ENDIF 50LIBS = $(LIBS) user32.lib advapi32.lib shell32.lib 51!ENDIF 52 53!IF "$(PLATFORM)" == "arm" 54COMPL_ASM = $(MY_ML) $** $O/$(*B).obj 55!ELSE 56COMPL_ASM = $(MY_ML) -c -Fo$O/ $** 57!ENDIF 58 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 66 67!IF "$(CC)" == "clang-cl" 68 69CFLAGS = $(CFLAGS) \ 70 -Werror \ 71 -Wall \ 72 -Wextra \ 73 -Weverything \ 74 -Wfatal-errors \ 75 76!ENDIF 77 78!IFDEF MY_DYNAMIC_LINK 79CFLAGS = $(CFLAGS) -MD 80!ELSE 81!IFNDEF MY_SINGLE_THREAD 82CFLAGS = $(CFLAGS) -MT 83!ENDIF 84!ENDIF 85 86 87CFLAGS = $(CFLAGS_COMMON) $(CFLAGS) 88 89 90!IFNDEF OLD_COMPILER 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 104!IFNDEF UNDER_CE 105!IF "$(CC)" != "clang-cl" 106CFLAGS = $(CFLAGS) -MP4 107!ENDIF 108!IFNDEF PLATFORM 109# CFLAGS = $(CFLAGS) -arch:IA32 110!ENDIF 111!ENDIF 112 113!ENDIF 114 115 116!IFDEF MY_CONSOLE 117CFLAGS = $(CFLAGS) -D_CONSOLE 118!ENDIF 119 120!IFNDEF UNDER_CE 121!IF "$(PLATFORM)" == "arm" 122CFLAGS = $(CFLAGS) -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 123!ENDIF 124!ENDIF 125 126!IF "$(PLATFORM)" == "x64" 127CFLAGS_O1 = $(CFLAGS) -O1 128!ELSE 129CFLAGS_O1 = $(CFLAGS) -O1 130!ENDIF 131CFLAGS_O2 = $(CFLAGS) -O2 132 133LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF -INCREMENTAL:NO 134 135!IFNDEF UNDER_CE 136LFLAGS = $(LFLAGS) /LARGEADDRESSAWARE 137!ENDIF 138 139!IFDEF DEF_FILE 140LFLAGS = $(LFLAGS) -DLL -DEF:$(DEF_FILE) 141!ELSE 142!IF defined(MY_FIXED) && "$(PLATFORM)" != "arm" && "$(PLATFORM)" != "arm64" 143LFLAGS = $(LFLAGS) /FIXED 144!ELSE 145LFLAGS = $(LFLAGS) /FIXED:NO 146!ENDIF 147# /BASE:0x400000 148!ENDIF 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 156 157# !IF "$(PLATFORM)" == "x64" 158 159!IFDEF SUB_SYS_VER 160 161MY_SUB_SYS_VER=5.02 162 163!IFDEF MY_CONSOLE 164LFLAGS = $(LFLAGS) /SUBSYSTEM:console,$(MY_SUB_SYS_VER) 165!ELSE 166LFLAGS = $(LFLAGS) /SUBSYSTEM:windows,$(MY_SUB_SYS_VER) 167!ENDIF 168 169!ENDIF 170 171 172PROGPATH = $O\$(PROG) 173 174COMPL_O1 = $(CC) $(CFLAGS_O1) $** 175COMPL_O2 = $(CC) $(CFLAGS_O2) $** 176COMPL_PCH = $(CC) $(CFLAGS_O1) -Yc"StdAfx.h" -Fp$O/a.pch $** 177COMPL = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $** 178COMPLB = $(CC) $(CFLAGS_O1) -Yu"StdAfx.h" -Fp$O/a.pch $< 179COMPLB_O2 = $(CC) $(CFLAGS_O2) $< 180# COMPLB_O2 = $(CC) $(CFLAGS_O2) -Yu"StdAfx.h" -Fp$O/a.pch $< 181 182CFLAGS_C_ALL = $(CFLAGS_O2) $(CFLAGS_C_SPEC) 183 184CCOMPL_PCH = $(CC) $(CFLAGS_C_ALL) -Yc"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 $< 187CCOMPL = $(CC) $(CFLAGS_C_ALL) $** 188CCOMPLB = $(CC) $(CFLAGS_C_ALL) $< 189 190!IF "$(CC)" == "clang-cl" 191COMPL = $(COMPL) -FI StdAfx.h 192COMPLB = $(COMPLB) -FI StdAfx.h 193CCOMPL_USE = $(CCOMPL_USE) -FI Precomp.h 194CCOMPLB_USE = $(CCOMPLB_USE) -FI Precomp.h 195!ENDIF 196 197all: $(PROGPATH) 198 199clean: 200 -del /Q $(PROGPATH) $O\*.exe $O\*.dll $O\*.obj $O\*.lib $O\*.exp $O\*.res $O\*.pch $O\*.asm 201 202$O: 203 if not exist "$O" mkdir "$O" 204$O/asm: 205 if not exist "$O/asm" mkdir "$O/asm" 206 207!IF "$(CC)" != "clang-cl" 208# for link time code generation: 209# LFLAGS = $(LFLAGS) -LTCG 210!ENDIF 211 212$(PROGPATH): $O $O/asm $(OBJS) $(DEF_FILE) 213 link $(LFLAGS) -out:$(PROGPATH) $(OBJS) $(LIBS) 214 215!IFNDEF NO_DEFAULT_RES 216$O\resource.res: $(*B).rc 217 rc $(RFLAGS) -fo$@ $** 218!ENDIF 219$O\StdAfx.obj: $(*B).cpp 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 230