1 2MY_ARCH_2 = $(MY_ARCH) 3 4MY_ASM = jwasm 5MY_ASM = asmc 6 7ifndef RC 8#RC=windres.exe --target=pe-x86-64 9#RC=windres.exe -F pe-i386 10RC=windres.exe 11endif 12 13PROGPATH = $(O)/$(PROG) 14PROGPATH_STATIC = $(O)/$(PROG)s 15 16ifneq ($(CC), xlc) 17CFLAGS_WARN_WALL = -Wall -Werror -Wextra 18endif 19 20# for object file 21CFLAGS_BASE_LIST = -c 22# for ASM file 23# CFLAGS_BASE_LIST = -S 24 25FLAGS_FLTO = -flto 26FLAGS_FLTO = 27 28CFLAGS_BASE = $(MY_ARCH_2) -O2 $(CFLAGS_BASE_LIST) $(CFLAGS_WARN_WALL) $(CFLAGS_WARN) \ 29 -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 30 31 32ifdef SystemDrive 33IS_MINGW = 1 34else 35ifdef SYSTEMDRIVE 36# ifdef OS 37IS_MINGW = 1 38endif 39endif 40 41ifdef IS_MINGW 42LDFLAGS_STATIC_2 = -static 43else 44ifndef DEF_FILE 45ifndef IS_NOT_STANDALONE 46ifndef MY_DYNAMIC_LINK 47ifneq ($(CC), clang) 48LDFLAGS_STATIC_2 = 49# -static 50# -static-libstdc++ -static-libgcc 51endif 52endif 53endif 54endif 55endif 56 57LDFLAGS_STATIC = -DNDEBUG $(LDFLAGS_STATIC_2) 58 59ifdef DEF_FILE 60 61 62ifdef IS_MINGW 63SHARED_EXT=.dll 64LDFLAGS = -shared -DEF $(DEF_FILE) $(LDFLAGS_STATIC) 65else 66SHARED_EXT=.so 67LDFLAGS = -shared -fPIC $(LDFLAGS_STATIC) 68CC_SHARED=-fPIC 69endif 70 71 72else 73 74LDFLAGS = $(LDFLAGS_STATIC) 75# -s is not required for clang, do we need it for GGC ??? 76# -s 77 78#-static -static-libgcc -static-libstdc++ 79 80ifdef IS_MINGW 81SHARED_EXT=.exe 82else 83SHARED_EXT= 84endif 85 86endif 87 88 89PROGPATH = $(O)/$(PROG)$(SHARED_EXT) 90PROGPATH_STATIC = $(O)/$(PROG)s$(SHARED_EXT) 91 92ifndef O 93O=_o 94endif 95 96ifdef IS_MINGW 97 98ifdef MSYSTEM 99RM = rm -f 100MY_MKDIR=mkdir -p 101DEL_OBJ_EXE = -$(RM) $(PROGPATH) $(PROGPATH_STATIC) $(OBJS) 102else 103RM = del 104MY_MKDIR=mkdir 105DEL_OBJ_EXE = -$(RM) $(O)\*.o $(O)\$(PROG).exe $(O)\$(PROG).dll 106endif 107 108 109LIB2 = -lOle32 -loleaut32 -luuid -ladvapi32 -lUser32 -lShell32 110 111CFLAGS_EXTRA = -DUNICODE -D_UNICODE 112# -Wno-delete-non-virtual-dtor 113 114 115else 116 117RM = rm -f 118MY_MKDIR=mkdir -p 119# CFLAGS_BASE := $(CFLAGS_BASE) -DZ7_ST 120# CFLAGS_EXTRA = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 121 122# LOCAL_LIBS=-lpthread 123# LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl 124LIB2 = -lpthread -ldl 125 126DEL_OBJ_EXE = -$(RM) $(PROGPATH) $(PROGPATH_STATIC) $(OBJS) 127 128endif 129 130 131ifdef IS_X64 132AFLAGS_ABI = -elf64 -DABI_LINUX 133else 134AFLAGS_ABI = -elf -DABI_LINUX -DABI_CDECL 135# -DABI_CDECL 136# -DABI_LINUX 137# -DABI_CDECL 138endif 139AFLAGS = $(AFLAGS_ABI) -Fo$(O)/ 140 141C_WARN_FLAGS = 142 143CFLAGS = $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(CFLAGS_EXTRA) $(C_WARN_FLAGS) $(FLAGS_FLTO) $(CC_SHARED) -o $@ 144 145STATIC_TARGET= 146ifdef COMPL_STATIC 147STATIC_TARGET=$(PROGPATH_STATIC) 148endif 149 150 151all: $(O) $(PROGPATH) $(STATIC_TARGET) 152 153$(O): 154 $(MY_MKDIR) $(O) 155 156ifneq ($(CC), $(CROSS_COMPILE)clang) 157LFLAGS_STRIP = -s 158endif 159 160LFLAGS_ALL = $(LFLAGS_STRIP) $(MY_ARCH_2) $(LDFLAGS) $(FLAGS_FLTO) $(LD_arch) $(OBJS) $(MY_LIBS) $(LIB2) 161$(PROGPATH): $(OBJS) 162 $(CC) -o $(PROGPATH) $(LFLAGS_ALL) 163 164$(PROGPATH_STATIC): $(OBJS) 165 $(CC) -static -o $(PROGPATH_STATIC) $(LFLAGS_ALL) 166 167 168ifndef NO_DEFAULT_RES 169# old mingw without -FO 170# windres.exe $(RFLAGS) resource.rc $O/resource.o 171$O/resource.o: resource.rc 172 $(RC) $(RFLAGS) resource.rc $(O)/resource.o 173endif 174# windres.exe $(RFLAGS) resource.rc $(O)\resource.o 175# windres.exe $(RFLAGS) resource.rc -FO $(O)/resource.o 176# $(RC) $(RFLAGS) resource.rc -FO $(O)/resource.o 177 178 179 180$O/7zAlloc.o: ../../../C/7zAlloc.c 181 $(CC) $(CFLAGS) $< 182$O/7zArcIn.o: ../../../C/7zArcIn.c 183 $(CC) $(CFLAGS) $< 184$O/7zBuf.o: ../../../C/7zBuf.c 185 $(CC) $(CFLAGS) $< 186$O/7zBuf2.o: ../../../C/7zBuf2.c 187 $(CC) $(CFLAGS) $< 188$O/7zCrc.o: ../../../C/7zCrc.c 189 $(CC) $(CFLAGS) $< 190$O/7zDec.o: ../../../C/7zDec.c 191 $(CC) $(CFLAGS) $< 192$O/7zFile.o: ../../../C/7zFile.c 193 $(CC) $(CFLAGS) $< 194$O/7zStream.o: ../../../C/7zStream.c 195 $(CC) $(CFLAGS) $< 196$O/Aes.o: ../../../C/Aes.c 197 $(CC) $(CFLAGS) $< 198$O/Alloc.o: ../../../C/Alloc.c 199 $(CC) $(CFLAGS) $< 200$O/Bcj2.o: ../../../C/Bcj2.c 201 $(CC) $(CFLAGS) $< 202$O/Bcj2Enc.o: ../../../C/Bcj2Enc.c 203 $(CC) $(CFLAGS) $< 204$O/Blake2s.o: ../../../C/Blake2s.c 205 $(CC) $(CFLAGS) $< 206$O/Bra.o: ../../../C/Bra.c 207 $(CC) $(CFLAGS) $< 208$O/Bra86.o: ../../../C/Bra86.c 209 $(CC) $(CFLAGS) $< 210$O/BraIA64.o: ../../../C/BraIA64.c 211 $(CC) $(CFLAGS) $< 212$O/BwtSort.o: ../../../C/BwtSort.c 213 $(CC) $(CFLAGS) $< 214 215$O/CpuArch.o: ../../../C/CpuArch.c 216 $(CC) $(CFLAGS) $< 217$O/Delta.o: ../../../C/Delta.c 218 $(CC) $(CFLAGS) $< 219$O/DllSecur.o: ../../../C/DllSecur.c 220 $(CC) $(CFLAGS) $< 221$O/HuffEnc.o: ../../../C/HuffEnc.c 222 $(CC) $(CFLAGS) $< 223$O/LzFind.o: ../../../C/LzFind.c 224 $(CC) $(CFLAGS) $< 225 226# ifdef MT_FILES 227$O/LzFindMt.o: ../../../C/LzFindMt.c 228 $(CC) $(CFLAGS) $< 229$O/LzFindOpt.o: ../../../C/LzFindOpt.c 230 $(CC) $(CFLAGS) $< 231 232$O/Threads.o: ../../../C/Threads.c 233 $(CC) $(CFLAGS) $< 234# endif 235 236$O/LzmaEnc.o: ../../../C/LzmaEnc.c 237 $(CC) $(CFLAGS) $< 238$O/Lzma86Dec.o: ../../../C/Lzma86Dec.c 239 $(CC) $(CFLAGS) $< 240$O/Lzma86Enc.o: ../../../C/Lzma86Enc.c 241 $(CC) $(CFLAGS) $< 242$O/Lzma2Dec.o: ../../../C/Lzma2Dec.c 243 $(CC) $(CFLAGS) $< 244$O/Lzma2DecMt.o: ../../../C/Lzma2DecMt.c 245 $(CC) $(CFLAGS) $< 246$O/Lzma2Enc.o: ../../../C/Lzma2Enc.c 247 $(CC) $(CFLAGS) $< 248$O/LzmaLib.o: ../../../C/LzmaLib.c 249 $(CC) $(CFLAGS) $< 250$O/MtCoder.o: ../../../C/MtCoder.c 251 $(CC) $(CFLAGS) $< 252$O/MtDec.o: ../../../C/MtDec.c 253 $(CC) $(CFLAGS) $< 254$O/Ppmd7.o: ../../../C/Ppmd7.c 255 $(CC) $(CFLAGS) $< 256$O/Ppmd7aDec.o: ../../../C/Ppmd7aDec.c 257 $(CC) $(CFLAGS) $< 258$O/Ppmd7Dec.o: ../../../C/Ppmd7Dec.c 259 $(CC) $(CFLAGS) $< 260$O/Ppmd7Enc.o: ../../../C/Ppmd7Enc.c 261 $(CC) $(CFLAGS) $< 262$O/Ppmd8.o: ../../../C/Ppmd8.c 263 $(CC) $(CFLAGS) $< 264$O/Ppmd8Dec.o: ../../../C/Ppmd8Dec.c 265 $(CC) $(CFLAGS) $< 266$O/Ppmd8Enc.o: ../../../C/Ppmd8Enc.c 267 $(CC) $(CFLAGS) $< 268$O/Sha1.o: ../../../C/Sha1.c 269 $(CC) $(CFLAGS) $< 270$O/Sha256.o: ../../../C/Sha256.c 271 $(CC) $(CFLAGS) $< 272$O/Sort.o: ../../../C/Sort.c 273 $(CC) $(CFLAGS) $< 274$O/SwapBytes.o: ../../../C/SwapBytes.c 275 $(CC) $(CFLAGS) $< 276$O/Xz.o: ../../../C/Xz.c 277 $(CC) $(CFLAGS) $< 278$O/XzCrc64.o: ../../../C/XzCrc64.c 279 $(CC) $(CFLAGS) $< 280$O/XzDec.o: ../../../C/XzDec.c 281 $(CC) $(CFLAGS) $< 282$O/XzEnc.o: ../../../C/XzEnc.c 283 $(CC) $(CFLAGS) $< 284$O/XzIn.o: ../../../C/XzIn.c 285 $(CC) $(CFLAGS) $< 286 287 288ifdef USE_ASM 289ifdef IS_X64 290USE_X86_ASM=1 291else 292ifdef IS_X86 293USE_X86_ASM=1 294endif 295endif 296endif 297 298ifdef USE_X86_ASM 299$O/7zCrcOpt.o: ../../../Asm/x86/7zCrcOpt.asm 300 $(MY_ASM) $(AFLAGS) $< 301$O/XzCrc64Opt.o: ../../../Asm/x86/XzCrc64Opt.asm 302 $(MY_ASM) $(AFLAGS) $< 303$O/AesOpt.o: ../../../Asm/x86/AesOpt.asm 304 $(MY_ASM) $(AFLAGS) $< 305$O/Sha1Opt.o: ../../../Asm/x86/Sha1Opt.asm 306 $(MY_ASM) $(AFLAGS) $< 307$O/Sha256Opt.o: ../../../Asm/x86/Sha256Opt.asm 308 $(MY_ASM) $(AFLAGS) $< 309else 310$O/7zCrcOpt.o: ../../7zCrcOpt.c 311 $(CC) $(CFLAGS) $< 312$O/XzCrc64Opt.o: ../../XzCrc64Opt.c 313 $(CC) $(CFLAGS) $< 314$O/Sha1Opt.o: ../../Sha1Opt.c 315 $(CC) $(CFLAGS) $< 316$O/Sha256Opt.o: ../../Sha256Opt.c 317 $(CC) $(CFLAGS) $< 318$O/AesOpt.o: ../../AesOpt.c 319 $(CC) $(CFLAGS) $< 320endif 321 322 323ifdef USE_LZMA_DEC_ASM 324 325ifdef IS_X64 326$O/LzmaDecOpt.o: ../../../Asm/x86/LzmaDecOpt.asm 327 $(MY_ASM) $(AFLAGS) $< 328endif 329 330ifdef IS_ARM64 331$O/LzmaDecOpt.o: ../../../Asm/arm64/LzmaDecOpt.S ../../../Asm/arm64/7zAsm.S 332 $(CC) $(CFLAGS) $(ASM_FLAGS) $< 333endif 334 335$O/LzmaDec.o: ../../LzmaDec.c 336 $(CC) $(CFLAGS) -DZ7_LZMA_DEC_OPT $< 337 338else 339 340$O/LzmaDec.o: ../../LzmaDec.c 341 $(CC) $(CFLAGS) $< 342 343endif 344 345 346 347$O/7zMain.o: ../../../C/Util/7z/7zMain.c 348 $(CC) $(CFLAGS) $< 349$O/7zipInstall.o: ../../../C/Util/7zipInstall/7zipInstall.c 350 $(CC) $(CFLAGS) $< 351$O/7zipUninstall.o: ../../../C/Util/7zipUninstall/7zipUninstall.c 352 $(CC) $(CFLAGS) $< 353$O/LzmaUtil.o: ../../../C/Util/Lzma/LzmaUtil.c 354 $(CC) $(CFLAGS) $< 355$O/XzUtil.o: ../../../C/Util/Xz/XzUtil.c 356 $(CC) $(CFLAGS) $< 357 358 359clean: 360 -$(DEL_OBJ_EXE) 361