diff --git a/add-linux-makefile-for-Format7zR.patch b/add-linux-makefile-for-Format7zR.patch new file mode 100644 index 0000000..1fb2a9f --- /dev/null +++ b/add-linux-makefile-for-Format7zR.patch @@ -0,0 +1,592 @@ +From d3b6e7b39d60a5eb0923db25e70a6f355e9b7058 Mon Sep 17 00:00:00 2001 +From: OSOSOS +Date: Thu, 25 Sep 2025 16:33:45 +0800 +Subject: [PATCH] add linux makefile for Format7zR + +--- + CPP/7zip/7zip_gcc_r.mak | 477 ++++++++++++++++++++++++ + CPP/7zip/Bundles/Format7zR/Arc_gcc.mak | 58 +++ + CPP/7zip/Bundles/Format7zR/makefile.gcc | 21 ++ + 3 files changed, 556 insertions(+) + create mode 100644 CPP/7zip/7zip_gcc_r.mak + create mode 100644 CPP/7zip/Bundles/Format7zR/Arc_gcc.mak + create mode 100644 CPP/7zip/Bundles/Format7zR/makefile.gcc + +diff --git a/CPP/7zip/7zip_gcc_r.mak b/CPP/7zip/7zip_gcc_r.mak +new file mode 100644 +index 0000000..c442c5c +--- /dev/null ++++ b/CPP/7zip/7zip_gcc_r.mak +@@ -0,0 +1,477 @@ ++# USE_CLANG=1 ++# USE_ASM = 1 ++# IS_X64 = 1 ++# MY_ARCH = ++# USE_ASM= ++# USE_JWASM=1 ++ ++MY_ARCH_2 = $(MY_ARCH) ++ ++MY_ASM = asmc ++ifdef USE_JWASM ++MY_ASM = jwasm ++endif ++ ++ifndef RC ++RC=windres.exe --target=pe-x86-64 ++RC=windres.exe -F pe-i386 ++RC=windres.exe ++endif ++ ++ ++PROGPATH = $(O)/$(PROG) ++PROGPATH_STATIC = $(O)/$(PROG)s ++STATIC_LIB = $(O)/$(PROG).a ++ ++ ++ifneq ($(CC), xlc) ++CFLAGS_WARN_WALL = -Werror -Wall -Wextra ++endif ++ ++# for object file ++# -Wa,-aln=test.s ++# -save-temps ++FLAGS_BASE = -mbranch-protection=standard -march=armv8.5-a ++FLAGS_BASE = -mbranch-protection=standard ++FLAGS_BASE = ++# FLAGS_BASE = -DZ7_NO_UNICODE ++ ++CFLAGS_BASE_LIST = -c ++ ++ ++#DEBUG_BUILD=1 ++ ++ifdef DEBUG_BUILD ++CFLAGS_DEBUG = -g ++else ++CFLAGS_DEBUG = -DNDEBUG ++ifneq ($(CC), $(CROSS_COMPILE)clang) ++LFLAGS_STRIP = -s ++endif ++endif ++ ++# CFLAGS_BASE_LIST = -S ++CFLAGS_BASE = -O2 $(CFLAGS_BASE_LIST) $(CFLAGS_WARN_WALL) $(CFLAGS_WARN) \ ++ $(CFLAGS_DEBUG) -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ ++ -fPIC ++ ++FLAGS_FLTO = -ffunction-sections ++FLAGS_FLTO = -flto ++FLAGS_FLTO = $(FLAGS_BASE) ++# -DZ7_AFFINITY_DISABLE ++ ++ ++ifdef SystemDrive ++IS_MINGW = 1 ++else ++ifdef SYSTEMDRIVE ++# ifdef OS ++IS_MINGW = 1 ++endif ++endif ++ ++ifdef IS_MINGW ++LDFLAGS_STATIC_2 = -static ++else ++ifndef DEF_FILE ++ifndef IS_NOT_STANDALONE ++ifndef MY_DYNAMIC_LINK ++ifneq ($(CC), clang) ++LDFLAGS_STATIC_2 = ++# -static ++# -static-libstdc++ -static-libgcc ++endif ++endif ++endif ++endif ++endif ++ ++LDFLAGS_STATIC = $(CFLAGS_DEBUG) $(LDFLAGS_STATIC_2) $(LDFLAGS_STATIC_3) ++ ++ifndef O ++ ifdef IS_MINGW ++ O=_o ++ else ++ O=_o ++ endif ++endif ++ ++ ++ifdef DEF_FILE ++ ++ ++ifdef IS_MINGW ++SHARED_EXT=.dll ++LDFLAGS = -shared -DEF $(DEF_FILE) $(LDFLAGS_STATIC) ++else ++SHARED_EXT=.so ++LDFLAGS = -shared -fPIC $(LDFLAGS_STATIC) ++CC_SHARED=-fPIC ++endif ++ ++ ++else ++ ++LDFLAGS = $(LDFLAGS_STATIC) ++# -z force-bti ++# -s is not required for clang, do we need it for GCC ??? ++ ++#-static -static-libgcc -static-libstdc++ ++ ++ifdef IS_MINGW ++SHARED_EXT=.exe ++else ++SHARED_EXT= ++endif ++ ++endif ++ ++ ++PROGPATH = $(O)/$(PROG)$(SHARED_EXT) ++PROGPATH_STATIC = $(O)/$(PROG)s$(SHARED_EXT) ++ ++ifdef IS_MINGW ++ ++ifdef MSYSTEM ++RM = rm -f ++MY_MKDIR=mkdir -p ++DEL_OBJ_EXE = -$(RM) $(PROGPATH) $(PROGPATH_STATIC) $(OBJS) ++LIB_HTMLHELP=-lhtmlhelp ++else ++RM = del ++MY_MKDIR=mkdir ++DEL_OBJ_EXE = -$(RM) $(O)\*.o $(O)\$(PROG).exe $(O)\$(PROG).dll ++endif ++ ++LIB2_GUI = -lOle32 -lGdi32 -lComctl32 -lComdlg32 -lShell32 $(LIB_HTMLHELP) ++LIB2 = -loleaut32 -luuid -ladvapi32 -lUser32 $(LIB2_GUI) ++ ++# v24.00: -DUNICODE and -D_UNICODE are defined in precompilation header files ++# CXXFLAGS_EXTRA = -DUNICODE -D_UNICODE ++# -Wno-delete-non-virtual-dtor ++ ++ ++else ++ ++RM = rm -f ++MY_MKDIR=mkdir -p ++DEL_OBJ_EXE = -$(RM) $(PROGPATH) $(PROGPATH_STATIC) $(OBJS) ++ ++# CFLAGS_BASE := $(CFLAGS_BASE) -DZ7_ST ++# CXXFLAGS_EXTRA = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE ++ ++# LOCAL_LIBS=-lpthread ++# LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl ++LIB2 = -lpthread ++LIB2 = -lpthread -ldl ++ ++ ++endif ++ ++ ++ ++CFLAGS = $(MY_ARCH_2) $(LOCAL_FLAGS) $(CFLAGS_BASE2) $(CFLAGS_BASE) $(FLAGS_FLTO) $(CC_SHARED) -o $@ ++ ++ ++ifdef IS_MINGW ++ ++ifdef IS_X64 ++AFLAGS_ABI = -win64 ++else ++AFLAGS_ABI = -coff -DABI_CDECL ++# -DABI_CDECL ++# -DABI_LINUX ++# -DABI_CDECL ++endif ++AFLAGS = -nologo $(AFLAGS_ABI) -Fo$(O)/$(basename $(/dev/null && echo -z noexecstack || echo) ++endif ++ ++endif ++ ++ ++LFLAGS_ALL = $(LFLAGS_STRIP) $(MY_ARCH_2) $(LDFLAGS) $(FLAGS_FLTO) $(LD_arch) $(LFLAGS_NOEXECSTACK) $(OBJS) $(MY_LIBS) $(LIB2) ++ ++# -s : GCC : Remove all symbol table and relocation information from the executable. ++# -s : CLANG : unsupported ++# -s ++ ++ ++ ++$(PROGPATH): $(OBJS) ++ $(CXX) -o $(PROGPATH) $(LFLAGS_ALL) ++ ++$(PROGPATH_STATIC): $(OBJS) ++ $(CXX) -static -o $(PROGPATH_STATIC) $(LFLAGS_ALL) ++ ++# -s strips debug sections from executable in GCC ++$(STATIC_LIB): $(OBJS) ++ ar rcs $@ $^ ++ ++ ++ifndef NO_DEFAULT_RES ++$O/resource.o: resource.rc ++ $(RC) $(RFLAGS) resource.rc $@ ++ ++# windres.exe : in old version mingw: ++# $(RFLAGS) resource.rc $O/resource.o ++# windres.exe : in new version mingw: ++# $(RC) $(RFLAGS) resource.rc -FO $@ ++ ++ ++endif ++ ++ ++$O/7zAlloc.o: ../../../../C/7zAlloc.c ++ $(CC) $(CFLAGS) $< ++$O/7zArcIn.o: ../../../../C/7zArcIn.c ++ $(CC) $(CFLAGS) $< ++$O/7zBuf.o: ../../../../C/7zBuf.c ++ $(CC) $(CFLAGS) $< ++$O/7zBuf2.o: ../../../../C/7zBuf2.c ++ $(CC) $(CFLAGS) $< ++$O/7zCrc.o: ../../../../C/7zCrc.c ++ $(CC) $(CFLAGS) $< ++$O/7zDec.o: ../../../../C/7zDec.c ++ $(CC) $(CFLAGS) $< ++$O/7zFile.o: ../../../../C/7zFile.c ++ $(CC) $(CFLAGS) $< ++$O/7zStream.o: ../../../../C/7zStream.c ++ $(CC) $(CFLAGS) $< ++$O/Aes.o: ../../../../C/Aes.c ++ $(CC) $(CFLAGS) $< ++$O/Alloc.o: ../../../../C/Alloc.c ++ $(CC) $(CFLAGS) $< ++$O/Bcj2.o: ../../../../C/Bcj2.c ++ $(CC) $(CFLAGS) $< ++$O/Bcj2Enc.o: ../../../../C/Bcj2Enc.c ++ $(CC) $(CFLAGS) $< ++$O/Bra.o: ../../../../C/Bra.c ++ $(CC) $(CFLAGS) $< ++$O/Bra86.o: ../../../../C/Bra86.c ++ $(CC) $(CFLAGS) $< ++$O/BraIA64.o: ../../../../C/BraIA64.c ++ $(CC) $(CFLAGS) $< ++ ++$O/CpuArch.o: ../../../../C/CpuArch.c ++ $(CC) $(CFLAGS) $< ++$O/Delta.o: ../../../../C/Delta.c ++ $(CC) $(CFLAGS) $< ++$O/DllSecur.o: ../../../../C/DllSecur.c ++ $(CC) $(CFLAGS) $< ++$O/LzFind.o: ../../../../C/LzFind.c ++ $(CC) $(CFLAGS) $< ++ ++# ifdef MT_FILES ++$O/LzFindMt.o: ../../../../C/LzFindMt.c ++ $(CC) $(CFLAGS) $< ++ ++$O/Threads.o: ../../../../C/Threads.c ++ $(CC) $(CFLAGS) $< ++# endif ++ ++$O/LzmaEnc.o: ../../../../C/LzmaEnc.c ++ $(CC) $(CFLAGS) $< ++$O/Lzma86Dec.o: ../../../../C/Lzma86Dec.c ++ $(CC) $(CFLAGS) $< ++$O/Lzma86Enc.o: ../../../../C/Lzma86Enc.c ++ $(CC) $(CFLAGS) $< ++$O/Lzma2Dec.o: ../../../../C/Lzma2Dec.c ++ $(CC) $(CFLAGS) $< ++$O/Lzma2DecMt.o: ../../../../C/Lzma2DecMt.c ++ $(CC) $(CFLAGS) $< ++$O/Lzma2Enc.o: ../../../../C/Lzma2Enc.c ++ $(CC) $(CFLAGS) $< ++$O/LzmaLib.o: ../../../../C/LzmaLib.c ++ $(CC) $(CFLAGS) $< ++$O/MtCoder.o: ../../../../C/MtCoder.c ++ $(CC) $(CFLAGS) $< ++$O/MtDec.o: ../../../../C/MtDec.c ++ $(CC) $(CFLAGS) $< ++$O/Ppmd7.o: ../../../../C/Ppmd7.c ++ $(CC) $(CFLAGS) $< ++$O/Ppmd7Dec.o: ../../../../C/Ppmd7Dec.c ++ $(CC) $(CFLAGS) $< ++$O/Ppmd7Enc.o: ../../../../C/Ppmd7Enc.c ++ $(CC) $(CFLAGS) $< ++$O/Sha256.o: ../../../../C/Sha256.c ++ $(CC) $(CFLAGS) $< ++$O/Sort.o: ../../../../C/Sort.c ++ $(CC) $(CFLAGS) $< ++$O/SwapBytes.o: ../../../../C/SwapBytes.c ++ $(CC) $(CFLAGS) $< ++$O/Xz.o: ../../../../C/Xz.c ++ $(CC) $(CFLAGS) $< ++$O/XzCrc64.o: ../../../../C/XzCrc64.c ++ $(CC) $(CFLAGS) $< ++$O/XzDec.o: ../../../../C/XzDec.c ++ $(CC) $(CFLAGS) $< ++$O/XzEnc.o: ../../../../C/XzEnc.c ++ $(CC) $(CFLAGS) $< ++$O/XzIn.o: ../../../../C/XzIn.c ++ $(CC) $(CFLAGS) $< ++ ++ ++ifdef USE_ASM ++ifdef IS_X64 ++USE_X86_ASM=1 ++USE_X64_ASM=1 ++else ++ifdef IS_X86 ++USE_X86_ASM=1 ++endif ++endif ++endif ++ ++ifdef USE_X86_ASM ++$O/7zCrcOpt.o: ../../../../Asm/x86/7zCrcOpt.asm ++ $(MY_ASM) $(AFLAGS) $< ++$O/XzCrc64Opt.o: ../../../../Asm/x86/XzCrc64Opt.asm ++ $(MY_ASM) $(AFLAGS) $< ++$O/Sha1Opt.o: ../../../../Asm/x86/Sha1Opt.asm ++ $(MY_ASM) $(AFLAGS) $< ++$O/Sha256Opt.o: ../../../../Asm/x86/Sha256Opt.asm ++ $(MY_ASM) $(AFLAGS) $< ++ ++ifndef USE_JWASM ++USE_X86_ASM_AES=1 ++endif ++ ++else ++$O/7zCrcOpt.o: ../../../../C/7zCrcOpt.c ++ $(CC) $(CFLAGS) $< ++$O/XzCrc64Opt.o: ../../../../C/XzCrc64Opt.c ++ $(CC) $(CFLAGS) $< ++$O/Sha256Opt.o: ../../../../C/Sha256Opt.c ++ $(CC) $(CFLAGS) $< ++endif ++ ++ ++ifdef USE_X86_ASM_AES ++$O/AesOpt.o: ../../../../Asm/x86/AesOpt.asm ++ $(MY_ASM) $(AFLAGS) $< ++else ++$O/AesOpt.o: ../../../../C/AesOpt.c ++ $(CC) $(CFLAGS) $< ++endif ++ ++ ++ifdef USE_X64_ASM ++$O/LzFindOpt.o: ../../../../Asm/x86/LzFindOpt.asm ++ $(MY_ASM) $(AFLAGS) $< ++else ++$O/LzFindOpt.o: ../../../../C/LzFindOpt.c ++ $(CC) $(CFLAGS) $< ++endif ++ ++ifdef USE_LZMA_DEC_ASM ++ ++ifdef IS_X64 ++$O/LzmaDecOpt.o: ../../../../Asm/x86/LzmaDecOpt.asm ++ $(MY_ASM) $(AFLAGS) $< ++endif ++ ++ifdef IS_ARM64 ++$O/LzmaDecOpt.o: ../../../../Asm/arm64/LzmaDecOpt.S ../../../../Asm/arm64/7zAsm.S ++ $(CC) $(CFLAGS) $(ASM_FLAGS) $< ++endif ++ ++$O/LzmaDec.o: ../../../../C/LzmaDec.c ++ $(CC) $(CFLAGS) -DZ7_LZMA_DEC_OPT $< ++ ++else ++ ++$O/LzmaDec.o: ../../../../C/LzmaDec.c ++ $(CC) $(CFLAGS) $< ++ ++endif ++ ++ ++ ++ ++$O/7zMain.o: ../../../../C/Util/7z/7zMain.c ++ $(CC) $(CFLAGS) $< ++$O/LzmaUtil.o: ../../../../C/Util/Lzma/LzmaUtil.c ++ $(CC) $(CFLAGS) $< ++ ++ifneq ($(CC), xlc) ++SHOW_PREDEF=-dM ++else ++SHOW_PREDEF= -qshowmacros=pre ++endif ++ ++predef_cc: ++ $(CC) $(CFLAGS) -E $(SHOW_PREDEF) ../../../../C/CpuArch.c > predef_cc_log ++# $(CC) $(CFLAGS) -E -dM - < /dev/null ++predef_cxx: ++ $(CXX) $(CFLAGS) -E $(SHOW_PREDEF) ../../../Common/CrcReg.cpp > predef_cxx_log ++ ++predef: predef_cc predef_cxx ++ ++ ++clean: ++ -$(DEL_OBJ_EXE) +diff --git a/CPP/7zip/Bundles/Format7zR/Arc_gcc.mak b/CPP/7zip/Bundles/Format7zR/Arc_gcc.mak +new file mode 100644 +index 0000000..8763636 +--- /dev/null ++++ b/CPP/7zip/Bundles/Format7zR/Arc_gcc.mak +@@ -0,0 +1,58 @@ ++include ../../LzmaDec_gcc.mak ++ ++LOCAL_FLAGS_ST = ++ ++ifdef ST_MODE ++ ++LOCAL_FLAGS_ST = -DZ7_ST ++ ++endif ++ ++ ++COMMON_C_OBJS = \ ++ $O/7zAlloc.o \ ++ $O/7zArcIn.o \ ++ $O/7zBuf2.o \ ++ $O/7zBuf.o \ ++ $O/7zCrc.o \ ++ $O/7zCrcOpt.o \ ++ $O/7zDec.o \ ++ $O/7zFile.o \ ++ $O/7zStream.o \ ++ $O/Alloc.o \ ++ $O/Bcj2.o \ ++ $O/Bra86.o \ ++ $O/Bra.o \ ++ $O/BraIA64.o \ ++ $O/CpuArch.o \ ++ $O/Delta.o \ ++ $O/LzFind.o \ ++ $O/Lzma2Dec.o \ ++ $O/Lzma2Enc.o \ ++ $O/Lzma86Dec.o \ ++ $O/Lzma86Enc.o \ ++ $O/LzmaDec.o \ ++ $O/LzmaEnc.o \ ++ $O/LzmaLib.o \ ++ $O/Ppmd7.o \ ++ $O/Ppmd7Dec.o \ ++ $O/Ppmd7Enc.o \ ++ $O/Sha256.o \ ++ $O/Sort.o \ ++ $O/Xz.o \ ++ $O/XzCrc64.o \ ++ $O/XzCrc64Opt.o \ ++ $O/XzDec.o \ ++ $O/XzEnc.o \ ++ $O/XzIn.o \ ++ $O/MtCoder.o \ ++ $O/LzFindMt.o \ ++ $O/MtDec.o \ ++ $O/Threads.o \ ++ $O/Sha256Opt.o \ ++ $O/LzFindOpt.o \ ++ ++ARC_OBJS = \ ++ $(COMMON_C_OBJS) \ ++ ++# we need empty line after last line above +diff --git a/CPP/7zip/Bundles/Format7zR/makefile.gcc b/CPP/7zip/Bundles/Format7zR/makefile.gcc +new file mode 100644 +index 0000000..1e5cff5 +--- /dev/null ++++ b/CPP/7zip/Bundles/Format7zR/makefile.gcc +@@ -0,0 +1,21 @@ ++PROG = 7z ++DEF_FILE = ../../Archive/Archive2.def ++ ++# IS_X64 = 1 ++# USE_ASM = 1 ++# ST_MODE = 1 ++ ++include Arc_gcc.mak ++ ++LOCAL_FLAGS_SYS = ++ ++LOCAL_FLAGS = \ ++ -DZ7_EXTERNAL_CODECS \ ++ $(LOCAL_FLAGS_SYS) \ ++ $(LOCAL_FLAGS_ST) \ ++ ++ ++OBJS = \ ++ $(ARC_OBJS) \ ++ ++include ../../7zip_gcc_r.mak +\ No newline at end of file +-- +2.44.0.windows.1 +