Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lzma: update to version 24.09 #76

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,24 @@ strategy:
Linux amd64 GCC:
VM_IMAGE: 'ubuntu-20.04'
APT_PACKAGES: ninja-build g++-8
C_COMPILER: gcc-8
CXX_COMPILER: g++-8
Linux i686 GCC:
VM_IMAGE: 'ubuntu-20.04'
APT_PACKAGES: ninja-build g++-i686-linux-gnu
C_COMPILER: i686-linux-gnu-gcc
CXX_COMPILER: i686-linux-gnu-g++
COMPILER_FLAGS: -mfpmath=sse -msse
Linux arm64 GCC:
VM_IMAGE: 'ubuntu-20.04'
APT_PACKAGES: ninja-build g++-aarch64-linux-gnu qemu-user
C_COMPILER: aarch64-linux-gnu-gcc
CXX_COMPILER: aarch64-linux-gnu-g++
CRUNCH_EXE_RUNNER: qemu-aarch64 -L /usr/aarch64-linux-gnu
Linux armhf GCC:
VM_IMAGE: 'ubuntu-20.04'
APT_PACKAGES: ninja-build g++-arm-linux-gnueabihf qemu-user
C_COMPILER: arm-linux-gnueabihf-gcc
CXX_COMPILER: arm-linux-gnueabihf-g++
CRUNCH_EXE_RUNNER: qemu-arm -L /usr/arm-linux-gnueabihf
# There is a qemu-arm IO bug in ubuntu-20.04 and ubuntu-22.04,
Expand All @@ -50,6 +54,7 @@ strategy:
Linux amd64 Clang:
VM_IMAGE: 'ubuntu-20.04'
APT_PACKAGES: ninja-build
C_COMPILER: clang
CXX_COMPILER: clang++
Windows amd64 MinGW:
VM_IMAGE: 'ubuntu-22.04'
Expand Down Expand Up @@ -116,11 +121,14 @@ steps:
if [ -n "${TOOLCHAIN_FILE:-}" ]; then
cmake_args+=(-DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}")
fi
if [ -n "${C_COMPILER:-}" ]; then
cmake_args+=(-DCMAKE_C_COMPILER="${C_COMPILER}")
fi
if [ -n "${CXX_COMPILER:-}" ]; then
cmake_args+=(-DCMAKE_CXX_COMPILER="${CXX_COMPILER}")
fi
if [ -n "${COMPILER_FLAGS:-}" ]; then
cmake_args+=(-DCMAKE_CXX_FLAGS="${COMPILER_FLAGS}")
cmake_args+=(-DCMAKE_C_FLAGS="${COMPILER_FLAGS}" -DCMAKE_CXX_FLAGS="${COMPILER_FLAGS}")
fi
if [ -z "${SOURCE_DIR:-}" ]; then
cmake_args+=(-DBUILD_CRUNCH=ON -DBUILD_EXAMPLES=ON -DBUILD_SHARED_LIBS=ON)
Expand Down
48 changes: 25 additions & 23 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(CRUNCH_PROJECT_NAME crunch)
set(CRUNCH_LIBRARY_NAME crn)
set(CRUNCH_EXE_NAME crunch)

project(${CRUNCH_PROJECT_NAME} LANGUAGES CXX)
project(${CRUNCH_PROJECT_NAME} LANGUAGES C CXX)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})

Expand All @@ -30,12 +30,14 @@ if (Git_FOUND)
endif()
endif()

macro(set_cxx_flag FLAG)
if (${ARGC} GREATER 1)
set(CMAKE_CXX_FLAGS_${ARGV1} "${CMAKE_CXX_FLAGS_${ARGV1}} ${FLAG}")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
endif()
macro(set_c_cxx_flag FLAG)
foreach(lang C CXX)
if (${ARGC} GREATER 1)
set(CMAKE_${lang}_FLAGS_${ARGV1} "${CMAKE_${lang}_FLAGS_${ARGV1}} ${FLAG}")
else()
set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} ${FLAG}")
endif()
endforeach()
endmacro()

macro(set_linker_flag FLAG)
Expand Down Expand Up @@ -73,7 +75,7 @@ option(USE_FAST_MATH "Enable fast math (generated images are less likely to be r

if (MSVC)
# Enable MSVC parallel compilation.
set_cxx_flag("/MP")
set_c_cxx_flag("/MP")

# MSVC doesn't implement strict aliasing so there is nothing else to do.

Expand All @@ -84,50 +86,50 @@ if (MSVC)
# See https://learn.microsoft.com/en-us/cpp/build/reference/fp-specify-floating-point-behavior
# and https://devblogs.microsoft.com/cppblog/the-fpcontract-flag-and-changes-to-fp-modes-in-vs2022/
# By default, MSVC doesn't enable the /fp:fast option.
set_cxx_flag("/fp:fast")
set_c_cxx_flag("/fp:fast")
endif()

if (USE_LTO)
set_cxx_flag("/GL" RELEASE)
set_cxx_flag("/GL" RELWITHDEBINFO)
set_cxx_flag("/GL" MINSIZEREL)
set_c_cxx_flag("/GL" RELEASE)
set_c_cxx_flag("/GL" RELWITHDEBINFO)
set_c_cxx_flag("/GL" MINSIZEREL)
set_linker_flag("/LTCG" RELEASE)
set_linker_flag("/LTCG" RELWITHDEBINFO)
set_linker_flag("/LTCG" MINSIZEREL)
endif()
else()
# As written in crnlib.h and stb_image.h, strict aliasing should always be disabled.
set_cxx_flag("-fno-strict-aliasing")
set_c_cxx_flag("-fno-strict-aliasing")

# Generate maxmimum amount of debug information, including macro definitions.
set_cxx_flag("-g3" DEBUG)
set_cxx_flag("-g3" RELWITHDEBINFO)
set_c_cxx_flag("-g3" DEBUG)
set_c_cxx_flag("-g3" RELWITHDEBINFO)

set_cxx_flag("-pthread")
set_c_cxx_flag("-pthread")
set_linker_flag("-pthread")

if (USE_EXTRA_OPTIMIZATION)
# CMake already sets the -O3 flag on Release build and -O[1-3s] already sets the -fomit-frame-pointer flag.
set_cxx_flag("-Og" DEBUG)
set_cxx_flag("-O3" RELWITHDEBINFO)
set_c_cxx_flag("-Og" DEBUG)
set_c_cxx_flag("-O3" RELWITHDEBINFO)
endif()

if (USE_FAST_MATH)
# By default, GCC uses -ffp-contract=fast with -std=gnu* and uses -ffp-contract=off with -std=c*.
# See https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
# By default, GCC doesn't enable the -ffast-math option.
set_cxx_flag("-ffast-math -fno-math-errno -ffp-contract=fast")
set_c_cxx_flag("-ffast-math -fno-math-errno -ffp-contract=fast")
else()
# By default, GCC uses -std=gnu* and then enables -ffp-contract=fast even if -ffast-math is not enabled.
set_cxx_flag("-ffp-contract=off")
set_c_cxx_flag("-ffp-contract=off")
endif()

# It should be done at the very end because it copies all compiler flags
# to the linker flags.
if (USE_LTO)
set_cxx_flag("-flto" RELEASE)
set_cxx_flag("-flto" RELWITHDEBINFO)
set_cxx_flag("-flto" MINSIZEREL)
set_c_cxx_flag("-flto" RELEASE)
set_c_cxx_flag("-flto" RELWITHDEBINFO)
set_c_cxx_flag("-flto" MINSIZEREL)
set_linker_flag("${CMAKE_CXX_FLAGS}" RELEASE)
set_linker_flag("${CMAKE_CXX_FLAGS}" RELWITHDEBINFO)
set_linker_flag("${CMAKE_CXX_FLAGS}" MINSIZEREL)
Expand Down
122 changes: 90 additions & 32 deletions crnlib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -142,49 +142,107 @@ set(CRNLIB_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/crn_vector2d.h
${CMAKE_CURRENT_SOURCE_DIR}/crn_winhdr.h
${CMAKE_CURRENT_SOURCE_DIR}/crnlib.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zBuf.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zBuf.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zBuf2.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zCrc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zFile.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zStream.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_7zVersion.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Alloc.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Alloc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Bcj2.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Bcj2.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Bra.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Bra.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Bra86.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_BraIA64.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_CpuArch.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzFind.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzFind.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzHash.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzmaDec.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzmaDec.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzmaEnc.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzmaEnc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzmaLib.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzmaLib.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_MyVersion.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Types.h
${CMAKE_CURRENT_SOURCE_DIR}/stb_image.h
${CMAKE_CURRENT_SOURCE_DIR}/stb_image_write.h
${CMAKE_CURRENT_SOURCE_DIR}/../inc/crn_decomp.h
${CMAKE_CURRENT_SOURCE_DIR}/../inc/crnlib.h
${CMAKE_CURRENT_SOURCE_DIR}/../inc/dds_defs.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zAlloc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zAlloc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zArcIn.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zBuf2.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zBuf.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zBuf.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zCrc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zCrc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zCrcOpt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zDec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zFile.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zFile.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7z.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zStream.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zTypes.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zVersion.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/7zWindows.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Aes.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Aes.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/AesOpt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Alloc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Alloc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Bcj2.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Bcj2Enc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Bcj2.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Bra86.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Bra.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Bra.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/BraIA64.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Compiler.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/CpuArch.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/CpuArch.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Delta.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Delta.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/DllSecur.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/DllSecur.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFind.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFind.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFindMt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFindMt.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFindOpt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzHash.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma2Dec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma2Dec.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma2DecMt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma2DecMt.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma2Enc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma2Enc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma86Dec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma86Enc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Lzma86.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzmaDec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzmaDec.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzmaEnc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzmaEnc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzmaLib.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzmaLib.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/MtCoder.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/MtCoder.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/MtDec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/MtDec.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Ppmd7.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Ppmd7Dec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Ppmd7Enc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Ppmd7.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Ppmd.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Precomp.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/RotateDefs.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Sha256.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Sha256.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Sha256Opt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Sort.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Sort.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/SwapBytes.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/SwapBytes.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Threads.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Threads.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Xz.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzCrc64.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzCrc64.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzCrc64Opt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzDec.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzEnc.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzEnc.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Xz.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/XzIn.c
)

if(WIN32)
set(CRNLIB_THREAD_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzFindMt.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_LzFindMt.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Threads.cpp
${CMAKE_CURRENT_SOURCE_DIR}/lzma_Threads.h
${CMAKE_CURRENT_SOURCE_DIR}/crn_threading_win32.cpp
${CMAKE_CURRENT_SOURCE_DIR}/crn_threading_win32.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFindMt.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/LzFindMt.h
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Threads.c
${CMAKE_CURRENT_SOURCE_DIR}/lzma/Threads.h
)
else()
set(CRNLIB_THREAD_SRCS
Expand Down
2 changes: 1 addition & 1 deletion crnlib/crn_lzma_codec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include "crn_lzma_codec.h"
#include "crn_strutils.h"
#include "crn_checksum.h"
#include "lzma_LzmaLib.h"
#include "lzma/LzmaLib.h"
#include "crn_threading.h"

namespace crnlib {
Expand Down
Loading