PROG = 7za

CONSOLE_VARIANT_FLAGS=-DZ7_PROG_VARIANT_A
ZIP_FLAGS=-DZ7_ZIP_LZFSE_DISABLE


# IS_X64 = 1
# USE_ASM = 1
# ST_MODE = 1

ifdef SystemDrive
IS_MINGW = 1
else
ifdef SYSTEMDRIVE
# ifdef OS
IS_MINGW = 1
endif
endif

include ../../LzmaDec_gcc.mak


LOCAL_FLAGS_ST =
MT_OBJS =


ifdef ST_MODE

LOCAL_FLAGS_ST = -DZ7_ST

ifdef IS_MINGW
MT_OBJS = \
  $O/Threads.o \

endif

else

MT_OBJS = \
  $O/LzFindMt.o \
  $O/LzFindOpt.o \
  $O/Threads.o \
  $O/MemBlocks.o \
  $O/OutMemStream.o \
  $O/ProgressMt.o \
  $O/StreamBinder.o \
  $O/Synchronization.o \
  $O/VirtThread.o \

endif



LOCAL_FLAGS_SYS =

ifdef IS_MINGW

LOCAL_FLAGS_SYS = \
  -DZ7_DEVICE_FILE \

#  -DZ7_LARGE_PAGES \
#  -DZ7_LONG_PATH \

SYS_OBJS = \
  $O/FileSystem.o \
  $O/Registry.o \
  $O/MemoryLock.o \
  $O/DLL.o \
  $O/DllSecur.o \
  $O/resource.o \

else

SYS_OBJS = \
  $O/MyWindows.o \

endif

LOCAL_FLAGS = \
  $(LOCAL_FLAGS_ST) \
  $(LOCAL_FLAGS_SYS) \


CONSOLE_OBJS = \
  $O/BenchCon.o \
  $O/ConsoleClose.o \
  $O/ExtractCallbackConsole.o \
  $O/HashCon.o \
  $O/List.o \
  $O/Main.o \
  $O/MainAr.o \
  $O/OpenCallbackConsole.o \
  $O/PercentPrinter.o \
  $O/UpdateCallbackConsole.o \
  $O/UserInputUtils.o \

UI_COMMON_OBJS = \
  $O/ArchiveCommandLine.o \
  $O/ArchiveExtractCallback.o \
  $O/ArchiveOpenCallback.o \
  $O/Bench.o \
  $O/DefaultName.o \
  $O/EnumDirItems.o \
  $O/Extract.o \
  $O/ExtractingFilePath.o \
  $O/HashCalc.o \
  $O/LoadCodecs.o \
  $O/OpenArchive.o \
  $O/PropIDUtils.o \
  $O/SetProperties.o \
  $O/SortUtils.o \
  $O/TempFiles.o \
  $O/Update.o \
  $O/UpdateAction.o \
  $O/UpdateCallback.o \
  $O/UpdatePair.o \
  $O/UpdateProduce.o \

COMMON_OBJS = \
  $O/CommandLineParser.o \
  $O/CRC.o \
  $O/CrcReg.o \
  $O/DynLimBuf.o \
  $O/IntToString.o \
  $O/ListFileUtils.o \
  $O/LzFindPrepare.o \
  $O/MyString.o \
  $O/MyVector.o \
  $O/NewHandler.o \
  $O/Sha1Prepare.o \
  $O/Sha1Reg.o \
  $O/Sha256Prepare.o \
  $O/Sha256Reg.o \
  $O/StdInStream.o \
  $O/StdOutStream.o \
  $O/StringConvert.o \
  $O/StringToInt.o \
  $O/UTFConvert.o \
  $O/Wildcard.o \
  $O/Xxh64Reg.o \
  $O/XzCrc64Init.o \
  $O/XzCrc64Reg.o \

WIN_OBJS = \
  $O/ErrorMsg.o \
  $O/FileDir.o \
  $O/FileFind.o \
  $O/FileIO.o \
  $O/FileLink.o \
  $O/FileName.o \
  $O/PropVariant.o \
  $O/PropVariantConv.o \
  $O/PropVariantUtils.o \
  $O/System.o \
  $O/SystemInfo.o \
  $O/TimeUtils.o \

7ZIP_COMMON_OBJS = \
  $O/CreateCoder.o \
  $O/CWrappers.o \
  $O/FilePathAutoRename.o \
  $O/FileStreams.o \
  $O/InBuffer.o \
  $O/InOutTempBuffer.o \
  $O/FilterCoder.o \
  $O/LimitedStreams.o \
  $O/MethodId.o \
  $O/MethodProps.o \
  $O/MultiOutStream.o \
  $O/OffsetStream.o \
  $O/OutBuffer.o \
  $O/ProgressUtils.o \
  $O/PropId.o \
  $O/StreamObjects.o \
  $O/StreamUtils.o \
  $O/UniqBlocks.o \

AR_OBJS = \
  $O/Bz2Handler.o \
  $O/GzHandler.o \
  $O/LzmaHandler.o \
  $O/SplitHandler.o \
  $O/XzHandler.o \
  $O/ZstdHandler.o \

AR_COMMON_OBJS = \
  $O/CoderMixer2.o \
  $O/DummyOutStream.o \
  $O/HandlerOut.o \
  $O/InStreamWithCRC.o \
  $O/ItemNameUtils.o \
  $O/MultiStream.o \
  $O/OutStreamWithCRC.o \
  $O/ParseProperties.o \

7Z_OBJS = \
  $O/7zCompressionMode.o \
  $O/7zDecode.o \
  $O/7zEncode.o \
  $O/7zExtract.o \
  $O/7zFolderInStream.o \
  $O/7zHandler.o \
  $O/7zHandlerOut.o \
  $O/7zHeader.o \
  $O/7zIn.o \
  $O/7zOut.o \
  $O/7zProperties.o \
  $O/7zRegister.o \
  $O/7zSpecStream.o \
  $O/7zUpdate.o \

CAB_OBJS = \
  $O/CabBlockInStream.o \
  $O/CabHandler.o \
  $O/CabHeader.o \
  $O/CabIn.o \
  $O/CabRegister.o \

TAR_OBJS = \
  $O/TarHandler.o \
  $O/TarHandlerOut.o \
  $O/TarHeader.o \
  $O/TarIn.o \
  $O/TarOut.o \
  $O/TarUpdate.o \
  $O/TarRegister.o \

ZIP_OBJS = \
  $O/ZipAddCommon.o \
  $O/ZipHandler.o \
  $O/ZipHandlerOut.o \
  $O/ZipIn.o \
  $O/ZipItem.o \
  $O/ZipOut.o \
  $O/ZipUpdate.o \
  $O/ZipRegister.o \

COMPRESS_OBJS = \
  $O/Bcj2Coder.o \
  $O/Bcj2Register.o \
  $O/BcjCoder.o \
  $O/BcjRegister.o \
  $O/BitlDecoder.o \
  $O/BranchMisc.o \
  $O/BranchRegister.o \
  $O/ByteSwap.o \
  $O/BZip2Crc.o \
  $O/BZip2Decoder.o \
  $O/BZip2Encoder.o \
  $O/BZip2Register.o \
  $O/CopyCoder.o \
  $O/CopyRegister.o \
  $O/Deflate64Register.o \
  $O/DeflateDecoder.o \
  $O/DeflateEncoder.o \
  $O/DeflateRegister.o \
  $O/DeltaFilter.o \
  $O/ImplodeDecoder.o \
  $O/Lzma2Decoder.o \
  $O/Lzma2Encoder.o \
  $O/Lzma2Register.o \
  $O/LzmaDecoder.o \
  $O/LzmaEncoder.o \
  $O/LzmaRegister.o \
  $O/LzOutWindow.o \
  $O/LzxDecoder.o \
  $O/PpmdDecoder.o \
  $O/PpmdEncoder.o \
  $O/PpmdRegister.o \
  $O/PpmdZip.o \
  $O/QuantumDecoder.o \
  $O/ShrinkDecoder.o \
  $O/XzDecoder.o \
  $O/XzEncoder.o \
  $O/ZstdDecoder.o \

#  $O/LzfseDecoder.o \
#  $O/ZstdRegister.o

CRYPTO_OBJS = \
  $O/7zAes.o \
  $O/7zAesRegister.o \
  $O/HmacSha1.o \
  $O/MyAes.o \
  $O/MyAesReg.o \
  $O/Pbkdf2HmacSha1.o \
  $O/RandGen.o \
  $O/WzAes.o \
  $O/ZipCrypto.o \
  $O/ZipStrong.o \

C_OBJS = \
  $O/7zCrc.o \
  $O/7zCrcOpt.o \
  $O/7zStream.o \
  $O/Aes.o \
  $O/AesOpt.o \
  $O/Alloc.o \
  $O/Bcj2.o \
  $O/Bcj2Enc.o \
  $O/Bra.o \
  $O/Bra86.o \
  $O/BraIA64.o \
  $O/BwtSort.o \
  $O/CpuArch.o \
  $O/Delta.o \
  $O/HuffEnc.o \
  $O/LzFind.o \
  $O/Lzma2Dec.o \
  $O/Lzma2DecMt.o \
  $O/Lzma2Enc.o \
  $O/LzmaDec.o \
  $O/LzmaEnc.o \
  $O/MtCoder.o \
  $O/MtDec.o \
  $O/Ppmd7.o \
  $O/Ppmd7Dec.o \
  $O/Ppmd7Enc.o \
  $O/Ppmd8.o \
  $O/Ppmd8Dec.o \
  $O/Ppmd8Enc.o \
  $O/Sha1.o \
  $O/Sha1Opt.o \
  $O/Sha256.o \
  $O/Sha256Opt.o \
  $O/Sort.o \
  $O/SwapBytes.o \
  $O/Xxh64.o \
  $O/Xz.o \
  $O/XzDec.o \
  $O/XzEnc.o \
  $O/XzIn.o \
  $O/XzCrc64.o \
  $O/XzCrc64Opt.o \
  $O/ZstdDec.o \


OBJS = \
  $(LZMA_DEC_OPT_OBJS) \
  $(C_OBJS) \
  $(MT_OBJS) \
  $(SYS_OBJS) \
  $(COMMON_OBJS) \
  $(WIN_OBJS) \
  $(COMPRESS_OBJS) \
  $(CRYPTO_OBJS) \
  $(7ZIP_COMMON_OBJS) \
  $(AR_OBJS) \
  $(AR_COMMON_OBJS) \
  $(7Z_OBJS) \
  $(CAB_OBJS) \
  $(TAR_OBJS) \
  $(ZIP_OBJS) \
  $(UI_COMMON_OBJS) \
  $(CONSOLE_OBJS) \

include ../../7zip_gcc.mak
