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