Link LZMA directly instead of as a static library.

This commit is contained in:
2021-11-12 04:42:16 +00:00
parent cd0ea58484
commit 9c19475cf7
3 changed files with 80 additions and 91 deletions

View File

@@ -1,3 +1 @@
include(lzma.cmake)
include(zstd.cmake) include(zstd.cmake)

166
3rdparty/lzma.cmake vendored
View File

@@ -1,110 +1,102 @@
project(lzma C ASM) set("LZMA_C_DIRECTORY" "3rdparty/lzma-21.03beta/C")
set("LZMA_ASM_DIRECTORY" "3rdparty/lzma-21.03beta/Asm")
set("LZMA_C_DIRECTORY" "lzma-21.03beta/C")
set("LZMA_ASM_DIRECTORY" "lzma-21.03beta/Asm")
message(STATUS "LZMA VERSION: 21.03beta") message(STATUS "LZMA VERSION: 21.03beta")
add_library(lzma STATIC) target_compile_definitions("Aaru.Compression.Native" PUBLIC _REENTRANT)
target_compile_definitions("Aaru.Compression.Native" PUBLIC _FILE_OFFSET_BITS)
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")) target_compile_definitions("Aaru.Compression.Native" PUBLIC _LARGEFILE_SOURCE)
set_property(TARGET lzma PROPERTY POSITION_INDEPENDENT_CODE ON) target_compile_definitions("Aaru.Compression.Native" PUBLIC _7ZIP_ST)
endif()
target_compile_definitions(lzma PUBLIC _REENTRANT)
target_compile_definitions(lzma PUBLIC _FILE_OFFSET_BITS)
target_compile_definitions(lzma PUBLIC _LARGEFILE_SOURCE)
target_compile_definitions(lzma PUBLIC _7ZIP_ST)
# All assembly for x86 and x64 disabled because it uses a custom, non GAS, non MASM, assembler # All assembly for x86 and x64 disabled because it uses a custom, non GAS, non MASM, assembler
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64")
set(IS_X64 1) set(IS_X64 1)
target_compile_definitions(lzma PUBLIC IS_X64) target_compile_definitions("Aaru.Compression.Native" PUBLIC IS_X64)
# if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") # if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
# set(USE_ASM 1) # set(USE_ASM 1)
# endif() # endif()
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686")
set(IS_X86 1) set(IS_X86 1)
target_compile_definitions(lzma PUBLIC IS_X86) target_compile_definitions("Aaru.Compression.Native" PUBLIC IS_X86)
# set(USE_ASM 1) # set(USE_ASM 1)
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
set(IS_ARM64 1) set(IS_ARM64 1)
target_compile_definitions(lzma PUBLIC IS_ARM64) target_compile_definitions("Aaru.Compression.Native" PUBLIC IS_ARM64)
set(USE_ASM 1) set(USE_ASM 1)
endif() endif()
if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang" OR "${CMAKE_C_COMPILER_ID}" MATCHES "Clang" ) if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang" OR "${CMAKE_C_COMPILER_ID}" MATCHES "Clang" )
set(USE_CLANG 1) set(USE_CLANG 1)
target_compile_definitions(lzma PUBLIC USE_CLANG) target_compile_definitions("Aaru.Compression.Native" PUBLIC USE_CLANG)
endif() endif()
#target_compile_options(lzma PUBLIC -Wall) #target_compile_options(lzma PUBLIC -Wall)
#target_compile_options(lzma PUBLIC -Werror) #target_compile_options(lzma PUBLIC -Werror)
target_compile_definitions(lzma PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-DABI_LINUX>) target_compile_definitions("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-DABI_LINUX>)
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64")
target_compile_options(lzma PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf64>) target_compile_options("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf64>)
else() else()
target_compile_options(lzma PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf>) target_compile_options("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf>)
target_compile_definitions(lzma PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-DABI_CDECL>) target_compile_definitions("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-DABI_CDECL>)
endif() endif()
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zAlloc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zAlloc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zArcIn.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zArcIn.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zBuf.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zBuf.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zBuf2.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zBuf2.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zCrc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zCrc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zDec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zDec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zFile.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zFile.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zStream.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zStream.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Aes.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Aes.c)
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Alloc.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Alloc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Bcj2.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Bcj2.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Bcj2Enc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Bcj2Enc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Blake2s.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Blake2s.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Bra.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Bra.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Bra86.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Bra86.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/BraIA64.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/BraIA64.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/BwtSort.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/BwtSort.c)
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/CpuArch.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/CpuArch.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Delta.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Delta.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/DllSecur.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/DllSecur.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/HuffEnc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/HuffEnc.c)
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/LzFind.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFind.c)
## ifdef MT_FILES ## ifdef MT_FILES
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/LzFindMt.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFindMt.c)
# #
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Threads.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Threads.c)
## endif ## endif
# #
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/LzmaEnc.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaEnc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Lzma86Dec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma86Dec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Lzma86Enc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma86Enc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Lzma2Dec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2Dec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Lzma2DecMt.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2DecMt.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Lzma2Enc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Lzma2Enc.c)
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/LzmaLib.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaLib.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/MtCoder.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/MtCoder.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/MtDec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/MtDec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7aDec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7aDec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7Dec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7Dec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7Enc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd7Enc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd8.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd8.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd8Dec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd8Dec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Ppmd8Enc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Ppmd8Enc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Sha1.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Sha1.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Sha256.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Sha256.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Sort.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Sort.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Xz.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Xz.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/XzCrc64.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzCrc64.c)
#target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/7zCrcOpt.asm) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/7zCrcOpt.asm)
if(USE_ASM) if(USE_ASM)
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64")
@@ -113,36 +105,34 @@ if(USE_ASM)
endif() endif()
#if(USE_X86_ASM) #if(USE_X86_ASM)
# target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/7zCrcOpt.asm) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/7zCrcOpt.asm)
# target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/XzCrc64Opt.asm) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/XzCrc64Opt.asm)
# target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/AesOpt.asm) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/AesOpt.asm)
# target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/Sha1Opt.asm) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/Sha1Opt.asm)
# target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/Sha256Opt.asm) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/Sha256Opt.asm)
#else() #else()
# target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/7zCrcOpt.c) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zCrcOpt.c)
# target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/XzCrc64Opt.c) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzCrc64Opt.c)
# target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Sha1Opt.c) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Sha1Opt.c)
# target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/Sha256Opt.c) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/Sha256Opt.c)
# target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/AesOpt.c) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/AesOpt.c)
#endif() #endif()
if(USE_LZMA_DEC_ASM) if(USE_LZMA_DEC_ASM)
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64")
target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/x86/LzmaDecOpt.asm) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/LzmaDecOpt.asm)
endif() endif()
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/LzmaDecOpt.S) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/LzmaDecOpt.S)
# target_sources(lzma PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/7zAsm.S) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/7zAsm.S)
endif() endif()
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c)
else() else()
target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c)
endif() endif()
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/XzDec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzDec.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/XzEnc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzEnc.c)
#target_sources(lzma PRIVATE ${LZMA_C_DIRECTORY}/XzIn.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzIn.c)
set_property(TARGET lzma PROPERTY C_VISIBILITY_PRESET hidden)

View File

@@ -99,6 +99,7 @@ include(3rdparty/bzip2.cmake)
include(3rdparty/flac.cmake) include(3rdparty/flac.cmake)
include(3rdparty/lzfse.cmake) include(3rdparty/lzfse.cmake)
include(3rdparty/lzip.cmake) include(3rdparty/lzip.cmake)
include(3rdparty/lzma.cmake)
MACRO(TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE target) MACRO(TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE target)
if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC") if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC")
@@ -119,7 +120,7 @@ MACRO(TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE target)
ENDIF() ENDIF()
ENDMACRO() ENDMACRO()
TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE("Aaru.Compression.Native" libzstd_static lzma m) TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE("Aaru.Compression.Native" libzstd_static m)
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")) if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64"))
set_property(TARGET "Aaru.Compression.Native" PROPERTY POSITION_INDEPENDENT_CODE TRUE) set_property(TARGET "Aaru.Compression.Native" PROPERTY POSITION_INDEPENDENT_CODE TRUE)