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