General refactor and cleanup.

This commit is contained in:
2024-04-30 15:37:29 +01:00
parent 47e6c8e50f
commit 123879fc7c
27 changed files with 620 additions and 725 deletions

40
3rdparty/bzip2.cmake vendored
View File

@@ -17,28 +17,28 @@ message(STATUS "BZIP2 VERSION: ${BZ_VERSION}")
# Do not disable assertions based on CMAKE_BUILD_TYPE. # Do not disable assertions based on CMAKE_BUILD_TYPE.
foreach(_build_type Release MinSizeRel RelWithDebInfo) foreach(_build_type Release MinSizeRel RelWithDebInfo)
foreach(_lang C) foreach(_lang C)
string(TOUPPER CMAKE_${_lang}_FLAGS_${_build_type} _var) string(TOUPPER CMAKE_${_lang}_FLAGS_${_build_type} _var)
string(REGEX REPLACE "(^|)[/-]D *NDEBUG($|)" " " ${_var} "${${_var}}") string(REGEX REPLACE "(^|)[/-]D *NDEBUG($|)" " " ${_var} "${${_var}}")
endforeach() endforeach()
endforeach() endforeach()
# Support the latest c++ standard available. # Support the latest c++ standard available.
include(ExtractValidFlags) include(ExtractValidFlags)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the build type" FORCE) set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the build type" FORCE)
# Include "None" as option to disable any additional (optimization) flags, # Include "None" as option to disable any additional (optimization) flags,
# relying on just CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (which are empty by # relying on just CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (which are empty by
# default). These strings are presented in cmake-gui. # default). These strings are presented in cmake-gui.
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
None Debug Release MinSizeRel RelWithDebInfo) None Debug Release MinSizeRel RelWithDebInfo)
endif() endif()
# Always use '-fPIC'/'-fPIE' option, except when using MingW to compile for WoA. # Always use '-fPIC'/'-fPIE' option, except when using MingW to compile for WoA.
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm")) if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm"))
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif() endif()
# Checks for header files. # Checks for header files.
@@ -60,13 +60,13 @@ include(CheckTypeSize)
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
# AC_TYPE_SIZE_T # AC_TYPE_SIZE_T
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"))
check_type_size("ssize_t" SIZEOF_SSIZE_T) check_type_size("ssize_t" SIZEOF_SSIZE_T)
endif() endif()
if(NOT SIZEOF_SSIZE_T) if(NOT SIZEOF_SSIZE_T)
# ssize_t is a signed type in POSIX storing at least -1. # ssize_t is a signed type in POSIX storing at least -1.
# Set it to "int" to match the behavior of AC_TYPE_SSIZE_T (autotools). # Set it to "int" to match the behavior of AC_TYPE_SSIZE_T (autotools).
set(ssize_t int) set(ssize_t int)
endif() endif()
include(CheckStructHasMember) include(CheckStructHasMember)
@@ -82,11 +82,11 @@ include(CheckSymbolExists)
# XXX does this correctly detect initgroups (un)availability on cygwin? # XXX does this correctly detect initgroups (un)availability on cygwin?
check_symbol_exists(initgroups grp.h HAVE_DECL_INITGROUPS) check_symbol_exists(initgroups grp.h HAVE_DECL_INITGROUPS)
if(NOT HAVE_DECL_INITGROUPS AND HAVE_UNISTD_H) if(NOT HAVE_DECL_INITGROUPS AND HAVE_UNISTD_H)
# FreeBSD declares initgroups() in unistd.h # FreeBSD declares initgroups() in unistd.h
check_symbol_exists(initgroups unistd.h HAVE_DECL_INITGROUPS2) check_symbol_exists(initgroups unistd.h HAVE_DECL_INITGROUPS2)
if(HAVE_DECL_INITGROUPS2) if(HAVE_DECL_INITGROUPS2)
set(HAVE_DECL_INITGROUPS 1) set(HAVE_DECL_INITGROUPS 1)
endif() endif()
endif() endif()
# The build targets. # The build targets.

62
3rdparty/flac.cmake vendored
View File

@@ -51,13 +51,13 @@ check_include_file("arm_neon.h" FLAC__HAS_NEONINTRIN)
check_include_file("semaphore.h" HAVE_SEMAPHORE_H) check_include_file("semaphore.h" HAVE_SEMAPHORE_H)
if(NOT HAVE_STDINT_H OR NOT HAVE_STDBOOL_H) if(NOT HAVE_STDINT_H OR NOT HAVE_STDBOOL_H)
message(SEND_ERROR "Header stdint.h and/or stdbool.h not found") message(SEND_ERROR "Header stdint.h and/or stdbool.h not found")
endif() endif()
if(MSVC) if(MSVC)
check_include_file("intrin.h" FLAC__HAS_X86INTRIN) check_include_file("intrin.h" FLAC__HAS_X86INTRIN)
else() else()
check_include_file("x86intrin.h" FLAC__HAS_X86INTRIN) check_include_file("x86intrin.h" FLAC__HAS_X86INTRIN)
endif() endif()
check_function_exists(fseeko HAVE_FSEEKO) check_function_exists(fseeko HAVE_FSEEKO)
@@ -66,14 +66,14 @@ check_c_source_compiles("int main() { return __builtin_bswap16 (0) ; }" HAVE_BSW
check_c_source_compiles("int main() { return __builtin_bswap32 (0) ; }" HAVE_BSWAP32) check_c_source_compiles("int main() { return __builtin_bswap32 (0) ; }" HAVE_BSWAP32)
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"))
test_big_endian(CPU_IS_BIG_ENDIAN) test_big_endian(CPU_IS_BIG_ENDIAN)
endif() endif()
check_c_compiler_flag(-mstackrealign HAVE_STACKREALIGN_FLAG) check_c_compiler_flag(-mstackrealign HAVE_STACKREALIGN_FLAG)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND HAVE_STACKREALIGN_FLAG) if(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686" AND HAVE_STACKREALIGN_FLAG)
add_compile_options(-mstackrealign) add_compile_options(-mstackrealign)
add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-mstackrealign>) add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-mstackrealign>)
endif() endif()
include_directories("3rdparty/flac/include") include_directories("3rdparty/flac/include")
@@ -82,9 +82,9 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/3rdparty/flac")
add_definitions(-DHAVE_CONFIG_H) add_definitions(-DHAVE_CONFIG_H)
if(MSVC) if(MSVC)
add_definitions( add_definitions(
-D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-D_USE_MATH_DEFINES) -D_USE_MATH_DEFINES)
endif() endif()
option(WITH_ASM "Use any assembly optimization routines" ON) option(WITH_ASM "Use any assembly optimization routines" ON)
@@ -101,36 +101,36 @@ include(CheckA64NEON)
check_cpu_arch_x64(FLAC__CPU_X86_64) check_cpu_arch_x64(FLAC__CPU_X86_64)
if(NOT FLAC__CPU_X86_64) if(NOT FLAC__CPU_X86_64)
check_cpu_arch_x86(FLAC__CPU_IA32) check_cpu_arch_x86(FLAC__CPU_IA32)
endif() endif()
if(FLAC__CPU_X86_64 OR FLAC__CPU_IA32) if(FLAC__CPU_X86_64 OR FLAC__CPU_IA32)
set(FLAC__ALIGN_MALLOC_DATA 1) set(FLAC__ALIGN_MALLOC_DATA 1)
option(WITH_AVX "Enable AVX, AVX2 optimizations (with runtime detection, resulting binary does not require AVX2, so only necessary when a compiler doesn't know about AVX)" ON) option(WITH_AVX "Enable AVX, AVX2 optimizations (with runtime detection, resulting binary does not require AVX2, so only necessary when a compiler doesn't know about AVX)" ON)
if(WITH_AVX AND MSVC) if(WITH_AVX AND MSVC)
set_source_files_properties(fixed_intrin_avx2.c lpc_intrin_avx2.c stream_encoder_intrin_avx2.c PROPERTIES COMPILE_FLAGS /arch:AVX2) set_source_files_properties(fixed_intrin_avx2.c lpc_intrin_avx2.c stream_encoder_intrin_avx2.c PROPERTIES COMPILE_FLAGS /arch:AVX2)
set_source_files_properties(lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS "/arch:AVX2 /fp:fast") set_source_files_properties(lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS "/arch:AVX2 /fp:fast")
endif() endif()
if(WITH_AVX AND (CMAKE_C_COMPILER_ID MATCHES "Clang")) if(WITH_AVX AND (CMAKE_C_COMPILER_ID MATCHES "Clang"))
set_source_files_properties(lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS "-ffast-math") set_source_files_properties(lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS "-ffast-math")
endif() endif()
else() else()
if(FLAC__CPU_ARM64) if(FLAC__CPU_ARM64)
check_a64neon(FLAC__HAS_A64NEONINTRIN) check_a64neon(FLAC__HAS_A64NEONINTRIN)
endif() endif()
endif() endif()
if(NOT WITH_ASM) if(NOT WITH_ASM)
add_definitions(-DFLAC__NO_ASM) add_definitions(-DFLAC__NO_ASM)
endif() endif()
if(HAVE_SEMAPHORE_H) if(HAVE_SEMAPHORE_H)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads) find_package(Threads)
if(CMAKE_USE_PTHREADS_INIT) if(CMAKE_USE_PTHREADS_INIT)
set(HAVE_PTHREAD 1) set(HAVE_PTHREAD 1)
endif() endif()
endif() endif()
include_directories("3rdparty/flac/src/libFLAC/include") include_directories("3rdparty/flac/src/libFLAC/include")
@@ -177,13 +177,13 @@ target_compile_definitions("Aaru.Compression.Native" PUBLIC FLAC__NO_FILEIO)
# Disable fortify source when not-release or when cross-building with MingW for WoA # Disable fortify source when not-release or when cross-building with MingW for WoA
if(CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo OR "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW") if(CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo OR "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
set(DODEFINE_FORTIFY_SOURCE 0) set(DODEFINE_FORTIFY_SOURCE 0)
endif() endif()
set_property(TARGET "Aaru.Compression.Native" PROPERTY C_VISIBILITY_PRESET hidden) set_property(TARGET "Aaru.Compression.Native" PROPERTY C_VISIBILITY_PRESET hidden)
if(ARCHITECTURE_IS_64BIT) if(ARCHITECTURE_IS_64BIT)
set(ENABLE_64_BIT_WORDS 1) set(ENABLE_64_BIT_WORDS 1)
endif() endif()
configure_file(3rdparty/flac/config.cmake.h.in 3rdparty/flac/config.h) configure_file(3rdparty/flac/config.cmake.h.in 3rdparty/flac/config.h)

26
3rdparty/lzfse.cmake vendored
View File

@@ -8,28 +8,28 @@ include(CheckCCompilerFlag)
# set it to OFF in your project before you add_subdirectory(lzfse). # set it to OFF in your project before you add_subdirectory(lzfse).
get_directory_property(LZFSE_PARENT_DIRECTORY PARENT_DIRECTORY) get_directory_property(LZFSE_PARENT_DIRECTORY PARENT_DIRECTORY)
if("${LZFSE_BUNDLE_MODE}" STREQUAL "") if("${LZFSE_BUNDLE_MODE}" STREQUAL "")
# Bundled mode hasn't been set one way or the other, set the default # Bundled mode hasn't been set one way or the other, set the default
# depending on whether or not we are the top-level project. # depending on whether or not we are the top-level project.
if(LZFSE_PARENT_DIRECTORY) if(LZFSE_PARENT_DIRECTORY)
set(LZFSE_BUNDLE_MODE ON) set(LZFSE_BUNDLE_MODE ON)
else() else()
set(LZFSE_BUNDLE_MODE OFF) set(LZFSE_BUNDLE_MODE OFF)
endif(LZFSE_PARENT_DIRECTORY) endif(LZFSE_PARENT_DIRECTORY)
endif() endif()
mark_as_advanced(LZFSE_BUNDLE_MODE) mark_as_advanced(LZFSE_BUNDLE_MODE)
if(CMAKE_VERSION VERSION_GREATER 3.2) if(CMAKE_VERSION VERSION_GREATER 3.2)
cmake_policy(SET CMP0063 NEW) cmake_policy(SET CMP0063 NEW)
endif() endif()
if(CMAKE_VERSION VERSION_GREATER 3.9) if(CMAKE_VERSION VERSION_GREATER 3.9)
cmake_policy(SET CMP0069 NEW) cmake_policy(SET CMP0069 NEW)
endif() endif()
if(ENABLE_SANITIZER) if(ENABLE_SANITIZER)
set(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} -fsanitize=${ENABLE_SANITIZER}") set(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}") set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${ENABLE_SANITIZER}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
endif() endif()
set(LZFSE_SOURCES set(LZFSE_SOURCES
@@ -47,5 +47,5 @@ target_sources("Aaru.Compression.Native" PRIVATE ${LZFSE_SOURCES})
if(NOT AARU_MUSL AND (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")) if(NOT AARU_MUSL AND (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm"))
set_property(TARGET "Aaru.Compression.Native" PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) set_property(TARGET "Aaru.Compression.Native" PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
endif() endif()

64
3rdparty/lzma.cmake vendored
View File

@@ -11,29 +11,29 @@ target_compile_definitions("Aaru.Compression.Native" 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("Aaru.Compression.Native" 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("Aaru.Compression.Native" 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("Aaru.Compression.Native" 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("Aaru.Compression.Native" PUBLIC USE_CLANG) target_compile_definitions("Aaru.Compression.Native" PUBLIC USE_CLANG)
endif() endif()
if(DEFINED AARU_MUSL) if(DEFINED AARU_MUSL)
target_compile_definitions("Aaru.Compression.Native" PUBLIC Z7_AFFINITY_DISABLE) target_compile_definitions("Aaru.Compression.Native" PUBLIC Z7_AFFINITY_DISABLE)
endif() endif()
#target_compile_options(lzma PUBLIC -Wall) #target_compile_options(lzma PUBLIC -Wall)
@@ -43,10 +43,10 @@ target_compile_definitions("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE
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("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf64>) target_compile_options("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf64>)
else() else()
target_compile_options("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf>) target_compile_options("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-elf>)
target_compile_definitions("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-DABI_CDECL>) target_compile_definitions("Aaru.Compression.Native" PUBLIC $<$<COMPILE_LANGUAGE:ASM>:-DABI_CDECL>)
endif() endif()
#target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zAlloc.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/7zAlloc.c)
@@ -104,9 +104,9 @@ target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaLib.c)
#target_sources("Aaru.Compression.Native" 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")
set(USE_X86_ASM 1) set(USE_X86_ASM 1)
endif() endif()
endif() endif()
#if(USE_X86_ASM) #if(USE_X86_ASM)
@@ -124,21 +124,21 @@ endif()
#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("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/LzFindOpt.asm) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/x86/LzFindOpt.asm)
target_sources("Aaru.Compression.Native" 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("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/LzmaDecOpt.S) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/LzmaDecOpt.S)
# target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/7zAsm.S) # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/7zAsm.S)
endif() endif()
target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFindOpt.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFindOpt.c)
target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c)
else() else()
target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFindOpt.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFindOpt.c)
target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c) target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzmaDec.c)
endif() endif()
#target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzDec.c) #target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/XzDec.c)

256
3rdparty/zstd.cmake vendored
View File

@@ -14,12 +14,12 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3") set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3")
set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level set(ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION "13") #Policies never changed at PATCH level
if("${CMAKE_MAJOR_VERSION}" LESS 3) if("${CMAKE_MAJOR_VERSION}" LESS 3)
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}") set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
elseif("${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND elseif("${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND
"${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}") "${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}")
set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}") set(ZSTD_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
else() else()
set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0") set(ZSTD_CMAKE_POLICY_VERSION "${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}.${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}.0")
endif() endif()
cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION}) cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION})
@@ -32,22 +32,22 @@ include(GetZstdLibraryVersion)
getzstdlibraryversion(${LIBRARY_DIR}/zstd.h zstd_VERSION_MAJOR zstd_VERSION_MINOR zstd_VERSION_PATCH) getzstdlibraryversion(${LIBRARY_DIR}/zstd.h zstd_VERSION_MAJOR zstd_VERSION_MINOR zstd_VERSION_PATCH)
if(CMAKE_MAJOR_VERSION LESS 3) if(CMAKE_MAJOR_VERSION LESS 3)
## Provide cmake 3+ behavior for older versions of cmake ## Provide cmake 3+ behavior for older versions of cmake
project(zstd) project(zstd)
set(PROJECT_VERSION_MAJOR ${zstd_VERSION_MAJOR}) set(PROJECT_VERSION_MAJOR ${zstd_VERSION_MAJOR})
set(PROJECT_VERSION_MINOR ${zstd_VERSION_MINOR}) set(PROJECT_VERSION_MINOR ${zstd_VERSION_MINOR})
set(PROJECT_VERSION_PATCH ${zstd_VERSION_PATCH}) set(PROJECT_VERSION_PATCH ${zstd_VERSION_PATCH})
set(PROJECT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}") set(PROJECT_VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}")
enable_language(C) # Main library is in C enable_language(C) # Main library is in C
enable_language(ASM) # And ASM enable_language(ASM) # And ASM
enable_language(CXX) # Testing contributed code also utilizes CXX enable_language(CXX) # Testing contributed code also utilizes CXX
else() else()
project(zstd project(zstd
VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}" VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}"
LANGUAGES C # Main library is in C LANGUAGES C # Main library is in C
ASM # And ASM ASM # And ASM
CXX # Testing contributed code also utilizes CXX CXX # Testing contributed code also utilizes CXX
) )
endif() endif()
message(STATUS "ZSTD VERSION: ${zstd_VERSION}") message(STATUS "ZSTD VERSION: ${zstd_VERSION}")
@@ -56,10 +56,10 @@ set(zstd_DESCRIPTION "Zstandard is a real-time compression algorithm, providing
# Set a default build type if none was specified # Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Release' as none was specified.") message(STATUS "Setting build type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui # Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif() endif()
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
@@ -70,83 +70,83 @@ include(CheckCXXCompilerFlag)
include(CheckCCompilerFlag) include(CheckCCompilerFlag)
function(enablecompilerflag _flag _C _CXX) function(enablecompilerflag _flag _C _CXX)
string(REGEX REPLACE "\\+" "PLUS" varname "${_flag}") string(REGEX REPLACE "\\+" "PLUS" varname "${_flag}")
string(REGEX REPLACE "[^A-Za-z0-9]+" "_" varname "${varname}") string(REGEX REPLACE "[^A-Za-z0-9]+" "_" varname "${varname}")
string(REGEX REPLACE "^_+" "" varname "${varname}") string(REGEX REPLACE "^_+" "" varname "${varname}")
string(TOUPPER "${varname}" varname) string(TOUPPER "${varname}" varname)
if(_C) if(_C)
check_c_compiler_flag(${_flag} C_FLAG_${varname}) check_c_compiler_flag(${_flag} C_FLAG_${varname})
if(C_FLAG_${varname}) if(C_FLAG_${varname})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" PARENT_SCOPE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" PARENT_SCOPE)
endif()
endif() endif()
if(_CXX) endif()
check_cxx_compiler_flag(${_flag} CXX_FLAG_${varname}) if(_CXX)
if(CXX_FLAG_${varname}) check_cxx_compiler_flag(${_flag} CXX_FLAG_${varname})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE) if(CXX_FLAG_${varname})
endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE)
endif() endif()
endif()
endfunction() endfunction()
macro(add_zstd_compilation_flags) macro(add_zstd_compilation_flags)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" OR MINGW) #Not only UNIX but also WIN32 for MinGW if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" OR MINGW) #Not only UNIX but also WIN32 for MinGW
#Set c++11 by default #Set c++11 by default
enablecompilerflag("-std=c++11" false true) enablecompilerflag("-std=c++11" false true)
#Set c99 by default #Set c99 by default
enablecompilerflag("-std=c99" true false) enablecompilerflag("-std=c99" true false)
# if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND MSVC) # if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND MSVC)
# # clang-cl normally maps -Wall to -Weverything. # # clang-cl normally maps -Wall to -Weverything.
# EnableCompilerFlag("/clang:-Wall" true true) # EnableCompilerFlag("/clang:-Wall" true true)
# else () # else ()
# EnableCompilerFlag("-Wall" true true) # EnableCompilerFlag("-Wall" true true)
# endif () # endif ()
# EnableCompilerFlag("-Wextra" true true) # EnableCompilerFlag("-Wextra" true true)
# EnableCompilerFlag("-Wundef" true true) # EnableCompilerFlag("-Wundef" true true)
# EnableCompilerFlag("-Wshadow" true true) # EnableCompilerFlag("-Wshadow" true true)
# EnableCompilerFlag("-Wcast-align" true true) # EnableCompilerFlag("-Wcast-align" true true)
# EnableCompilerFlag("-Wcast-qual" true true) # EnableCompilerFlag("-Wcast-qual" true true)
# EnableCompilerFlag("-Wstrict-prototypes" true false) # EnableCompilerFlag("-Wstrict-prototypes" true false)
# Enable asserts in Debug mode # Enable asserts in Debug mode
if(CMAKE_BUILD_TYPE MATCHES "Debug") if(CMAKE_BUILD_TYPE MATCHES "Debug")
enablecompilerflag("-DDEBUGLEVEL=1" true true) enablecompilerflag("-DDEBUGLEVEL=1" true true)
endif() endif()
elseif(MSVC) # Add specific compilation flags for Windows Visual elseif(MSVC) # Add specific compilation flags for Windows Visual
set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)") set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)")
if(CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION) if(CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION)
enablecompilerflag("/MP" true true) enablecompilerflag("/MP" true true)
endif()
# UNICODE SUPPORT
enablecompilerflag("/D_UNICODE" true true)
enablecompilerflag("/DUNICODE" true true)
# Enable asserts in Debug mode
if(CMAKE_BUILD_TYPE MATCHES "Debug")
enablecompilerflag("/DDEBUGLEVEL=1" true true)
endif()
endif() endif()
# Remove duplicates compilation flags # UNICODE SUPPORT
enablecompilerflag("/D_UNICODE" true true)
enablecompilerflag("/DUNICODE" true true)
# Enable asserts in Debug mode
if(CMAKE_BUILD_TYPE MATCHES "Debug")
enablecompilerflag("/DDEBUGLEVEL=1" true true)
endif()
endif()
# Remove duplicates compilation flags
foreach(flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if(${flag_var})
separate_arguments(${flag_var})
string(REPLACE ";" " " ${flag_var} "${${flag_var}}")
endif()
endforeach()
if(MSVC AND ZSTD_USE_STATIC_RUNTIME)
foreach(flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE foreach(flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if(${flag_var}) if(${flag_var})
separate_arguments(${flag_var}) string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
string(REPLACE ";" " " ${flag_var} "${${flag_var}}") endif()
endif()
endforeach() endforeach()
endif()
if(MSVC AND ZSTD_USE_STATIC_RUNTIME)
foreach(flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
if(${flag_var})
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
endif()
endforeach()
endif()
endmacro() endmacro()
@@ -170,31 +170,31 @@ add_definitions(-DXXH_NAMESPACE=ZSTD_)
option(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF) option(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF)
if(ZSTD_LEGACY_SUPPORT) if(ZSTD_LEGACY_SUPPORT)
message(STATUS "ZSTD_LEGACY_SUPPORT defined!") message(STATUS "ZSTD_LEGACY_SUPPORT defined!")
add_definitions(-DZSTD_LEGACY_SUPPORT=5) add_definitions(-DZSTD_LEGACY_SUPPORT=5)
else() else()
message(STATUS "ZSTD_LEGACY_SUPPORT not defined!") message(STATUS "ZSTD_LEGACY_SUPPORT not defined!")
add_definitions(-DZSTD_LEGACY_SUPPORT=0) add_definitions(-DZSTD_LEGACY_SUPPORT=0)
endif() endif()
# Multi-threading support # Multi-threading support
if(ANDROID) if(ANDROID)
option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" OFF) option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" OFF)
else() else()
option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON)
endif() endif()
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# External dependencies # External dependencies
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
if(ZSTD_MULTITHREAD_SUPPORT AND UNIX) if(ZSTD_MULTITHREAD_SUPPORT AND UNIX)
set(THREADS_PREFER_PTHREAD_FLAG ON) set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
if(CMAKE_USE_PTHREADS_INIT) if(CMAKE_USE_PTHREADS_INIT)
set(THREADS_LIBS "${CMAKE_THREAD_LIBS_INIT}") set(THREADS_LIBS "${CMAKE_THREAD_LIBS_INIT}")
else() else()
message(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads") message(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads")
endif() endif()
endif() endif()
project(libzstd C) project(libzstd C)
@@ -230,32 +230,32 @@ set(Headers
${DictBuilderHeaders}) ${DictBuilderHeaders})
if(ZSTD_LEGACY_SUPPORT) if(ZSTD_LEGACY_SUPPORT)
set(LIBRARY_LEGACY_DIR ${LIBRARY_DIR}/legacy) set(LIBRARY_LEGACY_DIR ${LIBRARY_DIR}/legacy)
include_directories(${LIBRARY_LEGACY_DIR}) include_directories(${LIBRARY_LEGACY_DIR})
set(Sources ${Sources} set(Sources ${Sources}
${LIBRARY_LEGACY_DIR}/zstd_v01.c ${LIBRARY_LEGACY_DIR}/zstd_v01.c
${LIBRARY_LEGACY_DIR}/zstd_v02.c ${LIBRARY_LEGACY_DIR}/zstd_v02.c
${LIBRARY_LEGACY_DIR}/zstd_v03.c ${LIBRARY_LEGACY_DIR}/zstd_v03.c
${LIBRARY_LEGACY_DIR}/zstd_v04.c ${LIBRARY_LEGACY_DIR}/zstd_v04.c
${LIBRARY_LEGACY_DIR}/zstd_v05.c ${LIBRARY_LEGACY_DIR}/zstd_v05.c
${LIBRARY_LEGACY_DIR}/zstd_v06.c ${LIBRARY_LEGACY_DIR}/zstd_v06.c
${LIBRARY_LEGACY_DIR}/zstd_v07.c) ${LIBRARY_LEGACY_DIR}/zstd_v07.c)
set(Headers ${Headers} set(Headers ${Headers}
${LIBRARY_LEGACY_DIR}/zstd_legacy.h ${LIBRARY_LEGACY_DIR}/zstd_legacy.h
${LIBRARY_LEGACY_DIR}/zstd_v01.h ${LIBRARY_LEGACY_DIR}/zstd_v01.h
${LIBRARY_LEGACY_DIR}/zstd_v02.h ${LIBRARY_LEGACY_DIR}/zstd_v02.h
${LIBRARY_LEGACY_DIR}/zstd_v03.h ${LIBRARY_LEGACY_DIR}/zstd_v03.h
${LIBRARY_LEGACY_DIR}/zstd_v04.h ${LIBRARY_LEGACY_DIR}/zstd_v04.h
${LIBRARY_LEGACY_DIR}/zstd_v05.h ${LIBRARY_LEGACY_DIR}/zstd_v05.h
${LIBRARY_LEGACY_DIR}/zstd_v06.h ${LIBRARY_LEGACY_DIR}/zstd_v06.h
${LIBRARY_LEGACY_DIR}/zstd_v07.h) ${LIBRARY_LEGACY_DIR}/zstd_v07.h)
endif() endif()
if(MSVC) if(MSVC)
set(MSVC_RESOURCE_DIR ${ZSTD_SOURCE_DIR}/build/VS2010/libzstd-dll) set(MSVC_RESOURCE_DIR ${ZSTD_SOURCE_DIR}/build/VS2010/libzstd-dll)
set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc) set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc)
endif() endif()
# Explicitly set the language to C for all files, including ASM files. # Explicitly set the language to C for all files, including ASM files.
@@ -270,23 +270,23 @@ set(library_targets)
add_library(libzstd_static STATIC ${Sources} ${Headers}) add_library(libzstd_static STATIC ${Sources} ${Headers})
list(APPEND library_targets libzstd_static) list(APPEND library_targets libzstd_static)
if(ZSTD_MULTITHREAD_SUPPORT) if(ZSTD_MULTITHREAD_SUPPORT)
set_property(TARGET libzstd_static APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_MULTITHREAD") set_property(TARGET libzstd_static APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_MULTITHREAD")
if(UNIX) if(UNIX)
target_link_libraries(libzstd_static ${THREADS_LIBS}) target_link_libraries(libzstd_static ${THREADS_LIBS})
endif() endif()
endif() endif()
#endif () #endif ()
# Add specific compile definitions for MSVC project # Add specific compile definitions for MSVC project
if(MSVC) if(MSVC)
set_property(TARGET libzstd_static APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_HEAPMODE=0;_CRT_SECURE_NO_WARNINGS") set_property(TARGET libzstd_static APPEND PROPERTY COMPILE_DEFINITIONS "ZSTD_HEAPMODE=0;_CRT_SECURE_NO_WARNINGS")
endif() endif()
# With MSVC static library needs to be renamed to avoid conflict with import library # With MSVC static library needs to be renamed to avoid conflict with import library
if(MSVC) if(MSVC)
set(STATIC_LIBRARY_BASE_NAME zstd_static) set(STATIC_LIBRARY_BASE_NAME zstd_static)
else() else()
set(STATIC_LIBRARY_BASE_NAME zstd) set(STATIC_LIBRARY_BASE_NAME zstd)
endif() endif()
# Define static and shared library names # Define static and shared library names
@@ -298,5 +298,5 @@ set_target_properties(
#endif () #endif ()
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 libzstd_static PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET libzstd_static PROPERTY POSITION_INDEPENDENT_CODE ON)
endif() endif()

View File

@@ -17,48 +17,48 @@ cmake_minimum_required(VERSION 3.15)
# License along with this library; if not, see <http://www.gnu.org/licenses/>. # License along with this library; if not, see <http://www.gnu.org/licenses/>.
if(APPLE) if(APPLE)
# Too early cmake has not yet set it # Too early cmake has not yet set it
if((NOT DEFINED CMAKE_SYSTEM_PROCESSOR) AND (NOT DEFINED AARU_MACOS_TARGET_ARCH)) if((NOT DEFINED CMAKE_SYSTEM_PROCESSOR) AND (NOT DEFINED AARU_MACOS_TARGET_ARCH))
execute_process(COMMAND uname -m OUTPUT_VARIABLE AARU_MACOS_TARGET_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND uname -m OUTPUT_VARIABLE AARU_MACOS_TARGET_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
endif() endif()
if(NOT DEFINED AARU_MACOS_TARGET_ARCH) if(NOT DEFINED AARU_MACOS_TARGET_ARCH)
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for macOS" FORCE) set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for macOS" FORCE)
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architectures for macOS" FORCE) set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architectures for macOS" FORCE)
else()
message(FATAL_ERROR "Unknown system processor ${CMAKE_SYSTEM_PROCESSOR} for macOS")
endif()
elseif(AARU_MACOS_TARGET_ARCH STREQUAL "x86_64")
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for macOS" FORCE)
elseif(AARU_MACOS_TARGET_ARCH STREQUAL "arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architectures for macOS" FORCE)
else() else()
message(FATAL_ERROR "Unknown Aaru target architecture ${AARU_MACOS_TARGET_ARCH} for macOS") message(FATAL_ERROR "Unknown system processor ${CMAKE_SYSTEM_PROCESSOR} for macOS")
endif() endif()
elseif(AARU_MACOS_TARGET_ARCH STREQUAL "x86_64")
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Build architectures for macOS" FORCE)
elseif(AARU_MACOS_TARGET_ARCH STREQUAL "arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Build architectures for macOS" FORCE)
else()
message(FATAL_ERROR "Unknown Aaru target architecture ${AARU_MACOS_TARGET_ARCH} for macOS")
endif()
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
endif(APPLE) endif(APPLE)
project("Aaru.Compression.Native" C) project("Aaru.Compression.Native" C)
if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC" AND "${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "ARMV7") if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC" AND "${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "ARMV7")
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
else() else()
set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD 99)
endif() endif()
if("${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW") if("${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm") if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm")
set(WIN32 TRUE) set(WIN32 TRUE)
endif() endif()
add_link_options(-static-libgcc) add_link_options(-static-libgcc)
endif() endif()
if(DEFINED AARU_MACOS_TARGET_ARCH) if(DEFINED AARU_MACOS_TARGET_ARCH)
message("Requested target architecture: ${AARU_MACOS_TARGET_ARCH}") message("Requested target architecture: ${AARU_MACOS_TARGET_ARCH}")
endif() endif()
message("Detected system processor: ${CMAKE_SYSTEM_PROCESSOR}") message("Detected system processor: ${CMAKE_SYSTEM_PROCESSOR}")
message("Detected vs platform name: ${CMAKE_C_COMPILER_ARCHITECTURE_ID}") message("Detected vs platform name: ${CMAKE_C_COMPILER_ARCHITECTURE_ID}")
@@ -69,61 +69,61 @@ message("Size of (void*): ${CMAKE_SIZEOF_VOID_P}")
# Check if target is 64-bit # Check if target is 64-bit
if("${CMAKE_SIZEOF_VOID_P}" MATCHES "8" OR "${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "x64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "AMD64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64") if("${CMAKE_SIZEOF_VOID_P}" MATCHES "8" OR "${CMAKE_C_COMPILER_ARCHITECTURE_ID}" MATCHES "x64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "AMD64" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64")
set(ARCHITECTURE_IS_64BIT TRUE) set(ARCHITECTURE_IS_64BIT TRUE)
endif() endif()
if("${CMAKE_BUILD_TYPE}" MATCHES "Release" OR "${CMAKE_BUILD_TYPE}" MATCHES "RelWithDebInfo" OR "${CMAKE_BUILD_TYPE}" MATCHES "MinSizeRel") if("${CMAKE_BUILD_TYPE}" MATCHES "Release" OR "${CMAKE_BUILD_TYPE}" MATCHES "RelWithDebInfo" OR "${CMAKE_BUILD_TYPE}" MATCHES "MinSizeRel")
if("${CMAKE_BUILD_TYPE}" MATCHES "Release") if("${CMAKE_BUILD_TYPE}" MATCHES "Release")
add_compile_definitions(NDEBUG) add_compile_definitions(NDEBUG)
endif()
if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC")
add_compile_options("/O2 /Ob2 /Oi /Ot /Oy /Og /fp:fast")
if(${CMAKE_C_COMPILER_ARCHITECTURE_ID} MATCHES "X86")
add_compile_options("/arch:SSE2")
elseif(${CMAKE_C_COMPILER_ARCHITECTURE_ID} MATCHES "ARM")
add_compile_options("/arch:VFPv4")
endif()
else()
add_compile_options(-ffast-math -Ofast)
if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
if(${AARU_MACOS_TARGET_ARCH} MATCHES "x86_64")
add_compile_options(-march=ivybridge -mtune=westmere -msse4.2)
elseif(${AARU_MACOS_TARGET_ARCH} MATCHES "arm64")
add_compile_options(-mcpu=apple-m1 -mtune=apple-m1)
endif()
endif() endif()
if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC") if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64")
add_compile_options("/O2 /Ob2 /Oi /Ot /Oy /Og /fp:fast") if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
if(${CMAKE_C_COMPILER_ARCHITECTURE_ID} MATCHES "X86") add_compile_options(-march=westmere -mtune=skylake -mfpmath=sse)
add_compile_options("/arch:SSE2") add_compile_options(-msse4.2)
elseif(${CMAKE_C_COMPILER_ARCHITECTURE_ID} MATCHES "ARM") endif()
add_compile_options("/arch:VFPv4")
endif()
else()
add_compile_options(-ffast-math -Ofast)
if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
if(${AARU_MACOS_TARGET_ARCH} MATCHES "x86_64") add_compile_options(-flto)
add_compile_options(-march=ivybridge -mtune=westmere -msse4.2) endif()
elseif(${AARU_MACOS_TARGET_ARCH} MATCHES "arm64") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64")
add_compile_options(-mcpu=apple-m1 -mtune=apple-m1) if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
endif() add_compile_options(-mtune=cortex-a53)
endif() endif()
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64") if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") add_compile_options(-flto)
add_compile_options(-march=westmere -mtune=skylake -mfpmath=sse) endif()
add_compile_options(-msse4.2) elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7l" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
endif() if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
add_compile_options(-mtune=cortex-a53 -mcpu=cortex-a7)
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW") else()
add_compile_options(-flto) add_compile_options(-mtune=cortex-a53 -march=armv7-a+neon-vfpv4)
endif() endif()
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips")
if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
add_compile_options(-mtune=cortex-a53) add_compile_options(-flto)
endif() endif()
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
add_compile_options(-flto)
endif()
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7l" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
add_compile_options(-mtune=cortex-a53 -mcpu=cortex-a7)
else()
add_compile_options(-mtune=cortex-a53 -march=armv7-a+neon-vfpv4)
endif()
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips")
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW")
add_compile_options(-flto)
endif()
endif()
endif() endif()
endif()
endif() endif()
add_subdirectory(3rdparty) add_subdirectory(3rdparty)
@@ -137,22 +137,22 @@ include(3rdparty/lzip.cmake)
include(3rdparty/lzma.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")
foreach(arg IN LISTS ARGN) foreach(arg IN LISTS ARGN)
set_target_properties( set_target_properties(
${target} PROPERTIES LINK_FLAGS "/WHOLEARCHIVE:${lib}" ${target} PROPERTIES LINK_FLAGS "/WHOLEARCHIVE:${lib}"
) )
endforeach() endforeach()
else()
if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang")
set(LINK_FLAGS "-Wl,-all_load")
set(UNDO_FLAGS "-Wl")
else() else()
if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") set(LINK_FLAGS "-Wl,--whole-archive")
set(LINK_FLAGS "-Wl,-all_load") set(UNDO_FLAGS "-Wl,--no-whole-archive")
set(UNDO_FLAGS "-Wl")
else()
set(LINK_FLAGS "-Wl,--whole-archive")
set(UNDO_FLAGS "-Wl,--no-whole-archive")
endif()
target_link_libraries(${target} ${LINK_FLAGS} ${ARGN} ${UNDO_FLAGS})
endif() endif()
target_link_libraries(${target} ${LINK_FLAGS} ${ARGN} ${UNDO_FLAGS})
endif()
endmacro() endmacro()
target_link_libraries_whole_archive("Aaru.Compression.Native" libzstd_static m) target_link_libraries_whole_archive("Aaru.Compression.Native" libzstd_static m)
@@ -160,22 +160,22 @@ target_link_libraries_whole_archive("Aaru.Compression.Native" libzstd_static m)
check_include_file("semaphore.h" HAVE_SEMAPHORE_H) check_include_file("semaphore.h" HAVE_SEMAPHORE_H)
if(HAVE_SEMAPHORE_H) if(HAVE_SEMAPHORE_H)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads) find_package(Threads)
if(CMAKE_USE_PTHREADS_INIT) if(CMAKE_USE_PTHREADS_INIT)
set(HAVE_PTHREAD 1) set(HAVE_PTHREAD 1)
endif() endif()
endif() endif()
if(HAVE_PTHREAD) if(HAVE_PTHREAD)
target_link_libraries_whole_archive("Aaru.Compression.Native" Threads::Threads) target_link_libraries_whole_archive("Aaru.Compression.Native" Threads::Threads)
endif() endif()
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)
else() else()
set_property(TARGET "Aaru.Compression.Native" PROPERTY POSITION_INDEPENDENT_CODE FALSE) set_property(TARGET "Aaru.Compression.Native" PROPERTY POSITION_INDEPENDENT_CODE FALSE)
endif() endif()
add_subdirectory(tests) add_subdirectory(tests)

View File

@@ -4,11 +4,14 @@ This repository contains the Aaru.Compression.Native library for [Aaru](https://
The purpose of this library is to provide compression and de-compression algorithms for Aaru. The purpose of this library is to provide compression and de-compression algorithms for Aaru.
No archiver processing code should fall here, those go in [Aaru.Compression](https://github.com/aaru-dps/Aaru/tree/devel/Aaru.Compression). No archiver processing code should fall here, those go
in [Aaru.Compression](https://github.com/aaru-dps/Aaru/tree/devel/Aaru.Compression).
To build you just need Docker on Linux and run `build.sh`, that will generate a NuGet package for use with Aaru.Compression. To build you just need Docker on Linux and run `build.sh`, that will generate a NuGet package for use with
Aaru.Compression.
Currently implemented algorithms are: Currently implemented algorithms are:
- Apple Data Compression (RLE with sliding dictionary created for Apple Disk Copy's NDIF) - Apple Data Compression (RLE with sliding dictionary created for Apple Disk Copy's NDIF)
- Apple RLE (Run Length Encoding created for Apple DART) - Apple RLE (Run Length Encoding created for Apple DART)
- [BZIP2](https://gitlab.com/bzip2/bzip2.git) - [BZIP2](https://gitlab.com/bzip2/bzip2.git)

30
adc.c
View File

@@ -19,10 +19,14 @@ FORCE_INLINE int GetChunkSize(uint8_t byt)
{ {
switch(GetChunkType(byt)) switch(GetChunkType(byt))
{ {
case ADC_PLAIN: return (byt & 0x7F) + 1; case ADC_PLAIN:
case ADC_TWO_BYTE: return ((byt & 0x3F) >> 2) + 3; return (byt & 0x7F) + 1;
case ADC_THREE_BYTE: return (byt & 0x3F) + 4; case ADC_TWO_BYTE:
default: return -1; return ((byt & 0x3F) >> 2) + 3;
case ADC_THREE_BYTE:
return (byt & 0x3F) + 4;
default:
return -1;
} }
} }
@@ -30,17 +34,19 @@ FORCE_INLINE int GetOffset(uint8_t chunk[])
{ {
switch(GetChunkType(chunk[0])) switch(GetChunkType(chunk[0]))
{ {
case ADC_PLAIN: return 0; case ADC_PLAIN:
case ADC_TWO_BYTE: return ((chunk[0] & 0x03) << 8) + chunk[1]; return 0;
case ADC_THREE_BYTE: return (chunk[1] << 8) + chunk[2]; case ADC_TWO_BYTE:
default: return -1; return ((chunk[0] & 0x03) << 8) + chunk[1];
case ADC_THREE_BYTE:
return (chunk[1] << 8) + chunk[2];
default:
return -1;
} }
} }
AARU_EXPORT int32_t AARU_CALL AARU_adc_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_adc_decode_buffer(uint8_t *dst_buffer, int32_t dst_size, const uint8_t *src_buffer,
int32_t dst_size, int32_t src_size)
const uint8_t* src_buffer,
int32_t src_size)
{ {
int inputPosition = 0; int inputPosition = 0;
int chunkSize; int chunkSize;

6
adc.h
View File

@@ -5,8 +5,8 @@
#ifndef AARU_COMPRESSION_NATIVE__ADC_H_ #ifndef AARU_COMPRESSION_NATIVE__ADC_H_
#define AARU_COMPRESSION_NATIVE__ADC_H_ #define AARU_COMPRESSION_NATIVE__ADC_H_
#define ADC_PLAIN 1 #define ADC_PLAIN 1
#define ADC_TWO_BYTE 2 #define ADC_TWO_BYTE 2
#define ADC_THREE_BYTE 3 #define ADC_THREE_BYTE 3
#endif // AARU_COMPRESSION_NATIVE__ADC_H_ #endif // AARU_COMPRESSION_NATIVE__ADC_H_

View File

@@ -24,15 +24,13 @@
#include "library.h" #include "library.h"
#include "apple_rle.h" #include "apple_rle.h"
AARU_EXPORT int32_t AARU_CALL AARU_apple_rle_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_apple_rle_decode_buffer(uint8_t *dst_buffer, int32_t dst_size,
int32_t dst_size, const uint8_t *src_buffer, int32_t src_size)
const uint8_t* src_buffer,
int32_t src_size)
{ {
static int32_t count = 0; static int32_t count = 0;
static bool nextA = true; // true if A, false if B static bool nextA = true; // true if A, false if B
static uint8_t repeatedByteA = 0, repeatedByteB = 0; static uint8_t repeatedByteA = 0, repeatedByteB = 0;
static bool repeatMode = false; // true if we're repeating, false if we're just copying static bool repeatMode = false; // true if we're repeating, false if we're just copying
int32_t in_pos = 0, out_pos = 0; int32_t in_pos = 0, out_pos = 0;
while(in_pos <= src_size && out_pos <= dst_size) while(in_pos <= src_size && out_pos <= dst_size)

View File

@@ -21,4 +21,4 @@
#define DART_CHUNK 20960 #define DART_CHUNK 20960
#endif // AARU_CHECKSUMS_NATIVE__APPLE_RLE_H_ #endif // AARU_CHECKSUMS_NATIVE__APPLE_RLE_H_

106
flac.c
View File

@@ -12,23 +12,21 @@
#include "3rdparty/flac/include/FLAC/stream_encoder.h" #include "3rdparty/flac/include/FLAC/stream_encoder.h"
#include "flac.h" #include "flac.h"
static FLAC__StreamDecoderReadStatus static FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[],
read_callback(const FLAC__StreamDecoder* decoder, FLAC__byte buffer[], size_t* bytes, void* client_data); size_t *bytes, void *client_data);
static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder* decoder,
const FLAC__Frame* frame,
const FLAC__int32* const buffer[],
void* client_data);
static void
error_callback(const FLAC__StreamDecoder* decoder, FLAC__StreamDecoderErrorStatus status, void* client_data);
AARU_EXPORT size_t AARU_CALL AARU_flac_decode_redbook_buffer(uint8_t* dst_buffer, static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame,
size_t dst_size, const FLAC__int32 const *buffer[], void *client_data);
const uint8_t* src_buffer,
size_t src_size) static void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status,
void *client_data);
AARU_EXPORT size_t AARU_CALL AARU_flac_decode_redbook_buffer(uint8_t *dst_buffer, size_t dst_size,
const uint8_t *src_buffer, size_t src_size)
{ {
FLAC__StreamDecoder* decoder; FLAC__StreamDecoder *decoder;
FLAC__StreamDecoderInitStatus init_status; FLAC__StreamDecoderInitStatus init_status;
aaru_flac_ctx* ctx = (aaru_flac_ctx*)malloc(sizeof(aaru_flac_ctx)); aaru_flac_ctx *ctx = (aaru_flac_ctx *)malloc(sizeof(aaru_flac_ctx));
size_t ret_size; size_t ret_size;
memset(ctx, 0, sizeof(aaru_flac_ctx)); memset(ctx, 0, sizeof(aaru_flac_ctx));
@@ -51,8 +49,8 @@ AARU_EXPORT size_t AARU_CALL AARU_flac_decode_redbook_buffer(uint8_t* dst_
FLAC__stream_decoder_set_md5_checking(decoder, false); FLAC__stream_decoder_set_md5_checking(decoder, false);
init_status = FLAC__stream_decoder_init_stream( init_status = FLAC__stream_decoder_init_stream(decoder, read_callback, NULL, NULL, NULL, NULL, write_callback, NULL,
decoder, read_callback, NULL, NULL, NULL, NULL, write_callback, NULL, error_callback, ctx); error_callback, ctx);
if(init_status != FLAC__STREAM_DECODER_INIT_STATUS_OK) if(init_status != FLAC__STREAM_DECODER_INIT_STATUS_OK)
{ {
@@ -72,10 +70,10 @@ AARU_EXPORT size_t AARU_CALL AARU_flac_decode_redbook_buffer(uint8_t* dst_
return ret_size; return ret_size;
} }
static FLAC__StreamDecoderReadStatus static FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[],
read_callback(const FLAC__StreamDecoder* decoder, FLAC__byte buffer[], size_t* bytes, void* client_data) size_t *bytes, void *client_data)
{ {
aaru_flac_ctx* ctx = (aaru_flac_ctx*)client_data; aaru_flac_ctx *ctx = (aaru_flac_ctx *)client_data;
if(ctx->src_len - ctx->src_pos < *bytes) *bytes = ctx->src_len - ctx->src_pos; if(ctx->src_len - ctx->src_pos < *bytes) *bytes = ctx->src_len - ctx->src_pos;
@@ -87,14 +85,12 @@ static FLAC__StreamDecoderReadStatus
return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
} }
static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder* decoder, static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame,
const FLAC__Frame* frame, const FLAC__int32 const *buffer[], void *client_data)
const FLAC__int32* const buffer[],
void* client_data)
{ {
aaru_flac_ctx* ctx = (aaru_flac_ctx*)client_data; aaru_flac_ctx *ctx = (aaru_flac_ctx *)client_data;
size_t i; size_t i;
uint16_t* buffer16 = (uint16_t*)(ctx->dst_buffer + ctx->dst_pos); uint16_t *buffer16 = (uint16_t *)(ctx->dst_buffer + ctx->dst_pos);
// Why FLAC does not interleave the channels as PCM do, oh the mistery, we could use memcpy instead of looping // Why FLAC does not interleave the channels as PCM do, oh the mistery, we could use memcpy instead of looping
for(i = 0; i < frame->header.blocksize && ctx->dst_pos < ctx->dst_len; i++) for(i = 0; i < frame->header.blocksize && ctx->dst_pos < ctx->dst_len; i++)
@@ -119,47 +115,34 @@ static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder*
return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
} }
static void error_callback(const FLAC__StreamDecoder* decoder, FLAC__StreamDecoderErrorStatus status, void* client_data) static void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
{ {
aaru_flac_ctx* ctx = (aaru_flac_ctx*)client_data; aaru_flac_ctx *ctx = (aaru_flac_ctx *)client_data;
fprintf(stderr, "Got error callback: %s\n", FLAC__StreamDecoderErrorStatusString[status]); fprintf(stderr, "Got error callback: %s\n", FLAC__StreamDecoderErrorStatusString[status]);
ctx->error = 1; ctx->error = 1;
} }
static FLAC__StreamEncoderWriteStatus encoder_write_callback(const FLAC__StreamEncoder* encoder, static FLAC__StreamEncoderWriteStatus encoder_write_callback(const FLAC__StreamEncoder *encoder,
const FLAC__byte buffer[], const FLAC__byte buffer[], size_t bytes, uint32_t samples,
size_t bytes, uint32_t current_frame, void *client_data);
uint32_t samples,
uint32_t current_frame,
void* client_data);
AARU_EXPORT size_t AARU_CALL AARU_flac_encode_redbook_buffer(uint8_t* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_flac_encode_redbook_buffer(
size_t dst_size, uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer, size_t src_size, uint32_t blocksize,
const uint8_t* src_buffer, int32_t do_mid_side_stereo, int32_t loose_mid_side_stereo, const char *apodization, uint32_t max_lpc_order,
size_t src_size, uint32_t qlp_coeff_precision, int32_t do_qlp_coeff_prec_search, int32_t do_exhaustive_model_search,
uint32_t blocksize, uint32_t min_residual_partition_order, uint32_t max_residual_partition_order, const char *application_id,
int32_t do_mid_side_stereo, uint32_t application_id_len)
int32_t loose_mid_side_stereo,
const char* apodization,
uint32_t max_lpc_order,
uint32_t qlp_coeff_precision,
int32_t do_qlp_coeff_prec_search,
int32_t do_exhaustive_model_search,
uint32_t min_residual_partition_order,
uint32_t max_residual_partition_order,
const char* application_id,
uint32_t application_id_len)
{ {
FLAC__StreamEncoder* encoder; FLAC__StreamEncoder *encoder;
aaru_flac_ctx* ctx = (aaru_flac_ctx*)malloc(sizeof(aaru_flac_ctx)); aaru_flac_ctx *ctx = (aaru_flac_ctx *)malloc(sizeof(aaru_flac_ctx));
FLAC__StreamEncoderInitStatus init_status; FLAC__StreamEncoderInitStatus init_status;
size_t ret_size; size_t ret_size;
FLAC__int32* pcm; FLAC__int32 *pcm;
int i; int i;
int16_t* buffer16 = (int16_t*)src_buffer; int16_t *buffer16 = (int16_t *)src_buffer;
FLAC__StreamMetadata* metadata[1]; FLAC__StreamMetadata *metadata[1];
memset(ctx, 0, sizeof(aaru_flac_ctx)); memset(ctx, 0, sizeof(aaru_flac_ctx));
@@ -213,8 +196,8 @@ AARU_EXPORT size_t AARU_CALL AARU_flac_encode_redbook_buffer(uint8_t* dst_
if(application_id_len > 0 && application_id != NULL) if(application_id_len > 0 && application_id != NULL)
if((metadata[0] = FLAC__metadata_object_new(FLAC__METADATA_TYPE_APPLICATION)) != NULL) if((metadata[0] = FLAC__metadata_object_new(FLAC__METADATA_TYPE_APPLICATION)) != NULL)
FLAC__metadata_object_application_set_data( FLAC__metadata_object_application_set_data(metadata[0], (unsigned char *)application_id, application_id_len,
metadata[0], (unsigned char*)application_id, application_id_len, true); true);
FLAC__stream_encoder_set_metadata(encoder, metadata, 1); FLAC__stream_encoder_set_metadata(encoder, metadata, 1);
@@ -245,14 +228,11 @@ AARU_EXPORT size_t AARU_CALL AARU_flac_encode_redbook_buffer(uint8_t* dst_
return ret_size; return ret_size;
} }
static FLAC__StreamEncoderWriteStatus encoder_write_callback(const FLAC__StreamEncoder* encoder, static FLAC__StreamEncoderWriteStatus encoder_write_callback(const FLAC__StreamEncoder *encoder,
const FLAC__byte buffer[], const FLAC__byte buffer[], size_t bytes, uint32_t samples,
size_t bytes, uint32_t current_frame, void *client_data)
uint32_t samples,
uint32_t current_frame,
void* client_data)
{ {
aaru_flac_ctx* ctx = (aaru_flac_ctx*)client_data; aaru_flac_ctx *ctx = (aaru_flac_ctx *)client_data;
if(bytes > ctx->dst_len - ctx->dst_pos) bytes = ctx->dst_len - ctx->dst_pos; if(bytes > ctx->dst_len - ctx->dst_pos) bytes = ctx->dst_len - ctx->dst_pos;

6
flac.h
View File

@@ -7,13 +7,13 @@
typedef struct typedef struct
{ {
const uint8_t* src_buffer; const uint8_t *src_buffer;
size_t src_len; size_t src_len;
size_t src_pos; size_t src_pos;
uint8_t* dst_buffer; uint8_t *dst_buffer;
size_t dst_len; size_t dst_len;
size_t dst_pos; size_t dst_pos;
uint8_t error; uint8_t error;
} aaru_flac_ctx; } aaru_flac_ctx;
#endif // AARU_COMPRESSION_NATIVE__FLAC_H_ #endif // AARU_COMPRESSION_NATIVE__FLAC_H_

View File

@@ -25,86 +25,59 @@
#include "3rdparty/lzma/C/LzmaLib.h" #include "3rdparty/lzma/C/LzmaLib.h"
#include "3rdparty/zstd/lib/zstd.h" #include "3rdparty/zstd/lib/zstd.h"
AARU_EXPORT int32_t AARU_CALL AARU_bzip2_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_bzip2_decode_buffer(uint8_t *dst_buffer, uint32_t *dst_size,
uint32_t* dst_size, const uint8_t *src_buffer, uint32_t src_size)
const uint8_t* src_buffer,
uint32_t src_size)
{ {
return BZ2_bzBuffToBuffDecompress((char*)dst_buffer, dst_size, (char*)src_buffer, src_size, 0, 0); return BZ2_bzBuffToBuffDecompress((char *)dst_buffer, dst_size, (char *)src_buffer, src_size, 0, 0);
} }
AARU_EXPORT int32_t AARU_CALL AARU_bzip2_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_bzip2_encode_buffer(uint8_t *dst_buffer, uint32_t *dst_size,
uint32_t* dst_size, const uint8_t *src_buffer, uint32_t src_size,
const uint8_t* src_buffer, int32_t blockSize100k)
uint32_t src_size,
int32_t blockSize100k)
{ {
return BZ2_bzBuffToBuffCompress((char*)dst_buffer, dst_size, (char*)src_buffer, src_size, blockSize100k, 0, 0); return BZ2_bzBuffToBuffCompress((char *)dst_buffer, dst_size, (char *)src_buffer, src_size, blockSize100k, 0, 0);
} }
AARU_EXPORT size_t AARU_CALL AARU_lzfse_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_lzfse_decode_buffer(uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer,
size_t dst_size, size_t src_size, void *scratch_buffer)
const uint8_t* src_buffer,
size_t src_size,
void* scratch_buffer)
{ {
return lzfse_decode_buffer(dst_buffer, dst_size, src_buffer, src_size, scratch_buffer); return lzfse_decode_buffer(dst_buffer, dst_size, src_buffer, src_size, scratch_buffer);
} }
AARU_EXPORT size_t AARU_CALL AARU_lzfse_encode_buffer(uint8_t* dst_buffer,
size_t dst_size, AARU_EXPORT size_t AARU_CALL AARU_lzfse_encode_buffer(uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer,
const uint8_t* src_buffer, size_t src_size, void *scratch_buffer)
size_t src_size,
void* scratch_buffer)
{ {
return lzfse_encode_buffer(dst_buffer, dst_size, src_buffer, src_size, scratch_buffer); return lzfse_encode_buffer(dst_buffer, dst_size, src_buffer, src_size, scratch_buffer);
} }
AARU_EXPORT int32_t AARU_CALL AARU_lzma_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzma_decode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer,
size_t* dst_size, size_t *srcLen, const uint8_t *props, size_t propsSize)
const uint8_t* src_buffer,
size_t* srcLen,
const uint8_t* props,
size_t propsSize)
{ {
return LzmaUncompress(dst_buffer, dst_size, src_buffer, srcLen, props, propsSize); return LzmaUncompress(dst_buffer, dst_size, src_buffer, srcLen, props, propsSize);
} }
AARU_EXPORT int32_t AARU_CALL AARU_lzma_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzma_encode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer,
size_t* dst_size, size_t srcLen, uint8_t *outProps, size_t *outPropsSize,
const uint8_t* src_buffer, int32_t level, uint32_t dictSize, int32_t lc, int32_t lp,
size_t srcLen, int32_t pb, int32_t fb, int32_t numThreads)
uint8_t* outProps,
size_t* outPropsSize,
int32_t level,
uint32_t dictSize,
int32_t lc,
int32_t lp,
int32_t pb,
int32_t fb,
int32_t numThreads)
{ {
return LzmaCompress( return LzmaCompress(dst_buffer, dst_size, src_buffer, srcLen, outProps, outPropsSize, level, dictSize, lc, lp, pb,
dst_buffer, dst_size, src_buffer, srcLen, outProps, outPropsSize, level, dictSize, lc, lp, pb, fb, numThreads); fb, numThreads);
} }
AARU_EXPORT size_t AARU_CALL AARU_zstd_decode_buffer(void* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_zstd_decode_buffer(void *dst_buffer, size_t dst_size, const void *src_buffer,
size_t dst_size, size_t src_size)
const void* src_buffer,
size_t src_size)
{ {
return ZSTD_decompress(dst_buffer, dst_size, src_buffer, src_size); return ZSTD_decompress(dst_buffer, dst_size, src_buffer, src_size);
} }
AARU_EXPORT size_t AARU_CALL AARU_zstd_encode_buffer(void* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_zstd_encode_buffer(void *dst_buffer, size_t dst_size, const void *src_buffer,
size_t dst_size, size_t src_size, int32_t compressionLevel)
const void* src_buffer,
size_t src_size,
int32_t compressionLevel)
{ {
return ZSTD_compress(dst_buffer, dst_size, src_buffer, src_size, compressionLevel); return ZSTD_compress(dst_buffer, dst_size, src_buffer, src_size, compressionLevel);
} }
// This is required if BZ_NO_STDIO // This is required if BZ_NO_STDIO
void bz_internal_error ( int errcode ) { } void bz_internal_error(int errcode) {}
AARU_EXPORT uint64_t AARU_CALL AARU_get_acn_version() { return AARU_CHECKUMS_NATIVE_VERSION; } AARU_EXPORT uint64_t AARU_CALL AARU_get_acn_version() { return AARU_CHECKUMS_NATIVE_VERSION; }

129
library.h
View File

@@ -26,7 +26,7 @@
#endif #endif
#if defined(_WIN32) #if defined(_WIN32)
#define AARU_CALL __stdcall #define AARU_CALL __stdcall
#define AARU_EXPORT EXTERNC __declspec(dllexport) #define AARU_EXPORT EXTERNC __declspec(dllexport)
#define AARU_LOCAL #define AARU_LOCAL
#ifndef PATH_MAX #ifndef PATH_MAX
@@ -36,11 +36,11 @@
#define AARU_CALL #define AARU_CALL
#if defined(__APPLE__) #if defined(__APPLE__)
#define AARU_EXPORT EXTERNC __attribute__((visibility("default"))) #define AARU_EXPORT EXTERNC __attribute__((visibility("default")))
#define AARU_LOCAL __attribute__((visibility("hidden"))) #define AARU_LOCAL __attribute__((visibility("hidden")))
#else #else
#if __GNUC__ >= 4 #if __GNUC__ >= 4
#define AARU_EXPORT EXTERNC __attribute__((visibility("default"))) #define AARU_EXPORT EXTERNC __attribute__((visibility("default")))
#define AARU_LOCAL __attribute__((visibility("hidden"))) #define AARU_LOCAL __attribute__((visibility("hidden")))
#else #else
#define AARU_EXPORT EXTERNC #define AARU_EXPORT EXTERNC
#define AARU_LOCAL #define AARU_LOCAL
@@ -54,107 +54,58 @@
#define FORCE_INLINE static inline __attribute__((always_inline)) #define FORCE_INLINE static inline __attribute__((always_inline))
#endif #endif
AARU_EXPORT int32_t AARU_CALL AARU_adc_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_adc_decode_buffer(uint8_t *dst_buffer, int32_t dst_size, const uint8_t *src_buffer,
int32_t dst_size, int32_t src_size);
const uint8_t* src_buffer,
int32_t src_size);
AARU_EXPORT int32_t AARU_CALL AARU_apple_rle_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_apple_rle_decode_buffer(uint8_t *dst_buffer, int32_t dst_size,
int32_t dst_size, const uint8_t *src_buffer, int32_t src_size);
const uint8_t* src_buffer,
int32_t src_size);
AARU_EXPORT size_t AARU_CALL AARU_flac_decode_redbook_buffer(uint8_t* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_flac_decode_redbook_buffer(uint8_t *dst_buffer, size_t dst_size,
size_t dst_size, const uint8_t *src_buffer, size_t src_size);
const uint8_t* src_buffer,
size_t src_size);
AARU_EXPORT size_t AARU_CALL AARU_flac_encode_redbook_buffer(uint8_t* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_flac_encode_redbook_buffer(
size_t dst_size, uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer, size_t src_size, uint32_t blocksize,
const uint8_t* src_buffer, int32_t do_mid_side_stereo, int32_t loose_mid_side_stereo, const char *apodization, uint32_t max_lpc_order,
size_t src_size, uint32_t qlp_coeff_precision, int32_t do_qlp_coeff_prec_search, int32_t do_exhaustive_model_search,
uint32_t blocksize, uint32_t min_residual_partition_order, uint32_t max_residual_partition_order, const char *application_id,
int32_t do_mid_side_stereo, uint32_t application_id_len);
int32_t loose_mid_side_stereo,
const char* apodization,
uint32_t max_lpc_order,
uint32_t qlp_coeff_precision,
int32_t do_qlp_coeff_prec_search,
int32_t do_exhaustive_model_search,
uint32_t min_residual_partition_order,
uint32_t max_residual_partition_order,
const char* application_id,
uint32_t application_id_len);
AARU_EXPORT int32_t AARU_CALL AARU_lzip_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzip_decode_buffer(uint8_t *dst_buffer, int32_t dst_size, const uint8_t *src_buffer,
int32_t dst_size, int32_t src_size);
const uint8_t* src_buffer,
int32_t src_size);
AARU_EXPORT int32_t AARU_CALL AARU_lzip_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzip_encode_buffer(uint8_t *dst_buffer, int32_t dst_size, const uint8_t *src_buffer,
int32_t dst_size, int32_t src_size, int32_t dictionary_size,
const uint8_t* src_buffer, int32_t match_len_limit);
int32_t src_size,
int32_t dictionary_size,
int32_t match_len_limit);
AARU_EXPORT int32_t AARU_CALL AARU_bzip2_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_bzip2_decode_buffer(uint8_t *dst_buffer, uint32_t *dst_size,
uint32_t* dst_size, const uint8_t *src_buffer, uint32_t src_size);
const uint8_t* src_buffer,
uint32_t src_size);
AARU_EXPORT int32_t AARU_CALL AARU_bzip2_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_bzip2_encode_buffer(uint8_t *dst_buffer, uint32_t *dst_size,
uint32_t* dst_size, const uint8_t *src_buffer, uint32_t src_size,
const uint8_t* src_buffer, int32_t blockSize100k);
uint32_t src_size,
int32_t blockSize100k);
AARU_EXPORT size_t AARU_CALL AARU_lzfse_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_lzfse_decode_buffer(uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer,
size_t dst_size, size_t src_size, void *scratch_buffer);
const uint8_t* src_buffer,
size_t src_size,
void* scratch_buffer);
AARU_EXPORT size_t AARU_CALL AARU_lzfse_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_lzfse_encode_buffer(uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer,
size_t dst_size, size_t src_size, void *scratch_buffer);
const uint8_t* src_buffer,
size_t src_size,
void* scratch_buffer);
AARU_EXPORT int32_t AARU_CALL AARU_lzma_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzma_decode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer,
size_t* dst_size, size_t *src_size, const uint8_t *props, size_t propsSize);
const uint8_t* src_buffer,
size_t* src_size,
const uint8_t* props,
size_t propsSize);
AARU_EXPORT int32_t AARU_CALL AARU_lzma_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzma_encode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer,
size_t* dst_size, size_t src_size, uint8_t *outProps, size_t *outPropsSize,
const uint8_t* src_buffer, int32_t level, uint32_t dictSize, int32_t lc, int32_t lp,
size_t src_size, int32_t pb, int32_t fb, int32_t numThreads);
uint8_t* outProps,
size_t* outPropsSize,
int32_t level,
uint32_t dictSize,
int32_t lc,
int32_t lp,
int32_t pb,
int32_t fb,
int32_t numThreads);
AARU_EXPORT size_t AARU_CALL AARU_zstd_decode_buffer(void* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_zstd_decode_buffer(void *dst_buffer, size_t dst_size, const void *src_buffer,
size_t dst_size, size_t src_size);
const void* src_buffer,
size_t src_size);
AARU_EXPORT size_t AARU_CALL AARU_zstd_encode_buffer(void* dst_buffer, AARU_EXPORT size_t AARU_CALL AARU_zstd_encode_buffer(void *dst_buffer, size_t dst_size, const void *src_buffer,
size_t dst_size, size_t src_size, int32_t compressionLevel);
const void* src_buffer,
size_t src_size,
int32_t compressionLevel);
#define AARU_CHECKUMS_NATIVE_VERSION 0x06000089 #define AARU_CHECKUMS_NATIVE_VERSION 0x06000089
AARU_EXPORT uint64_t AARU_CALL AARU_get_acn_version(); AARU_EXPORT uint64_t AARU_CALL AARU_get_acn_version();
#endif // AARU_COMPRESSION_NATIVE_LIBRARY_H #endif // AARU_COMPRESSION_NATIVE_LIBRARY_H

19
lzip.c
View File

@@ -23,13 +23,11 @@
#include "library.h" #include "library.h"
#include "3rdparty/lzlib/lzlib.h" #include "3rdparty/lzlib/lzlib.h"
AARU_EXPORT int32_t AARU_CALL AARU_lzip_decode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzip_decode_buffer(uint8_t *dst_buffer, int32_t dst_size, const uint8_t *src_buffer,
int32_t dst_size, int32_t src_size)
const uint8_t* src_buffer,
int32_t src_size)
{ {
int max_in_size; int max_in_size;
void* ctx; void *ctx;
enum LZ_Errno lz_err; enum LZ_Errno lz_err;
int32_t in_pos = 0, out_pos = 0, in_size; int32_t in_pos = 0, out_pos = 0, in_size;
int rd; int rd;
@@ -83,15 +81,12 @@ AARU_EXPORT int32_t AARU_CALL AARU_lzip_decode_buffer(uint8_t* dst_buffer,
return out_pos; return out_pos;
} }
AARU_EXPORT int32_t AARU_CALL AARU_lzip_encode_buffer(uint8_t* dst_buffer, AARU_EXPORT int32_t AARU_CALL AARU_lzip_encode_buffer(uint8_t *dst_buffer, int32_t dst_size, const uint8_t *src_buffer,
int32_t dst_size, int32_t src_size, int32_t dictionary_size,
const uint8_t* src_buffer, int32_t match_len_limit)
int32_t src_size,
int32_t dictionary_size,
int32_t match_len_limit)
{ {
int max_in_size; int max_in_size;
void* ctx; void *ctx;
enum LZ_Errno lz_err; enum LZ_Errno lz_err;
int32_t in_pos = 0, out_pos = 0, in_size; int32_t in_pos = 0, out_pos = 0, in_size;
int rd; int rd;

View File

@@ -1,5 +1,5 @@
if("${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR "${AARU_BUILD_PACKAGE}" MATCHES 1) if("${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR "${AARU_BUILD_PACKAGE}" MATCHES 1)
return() return()
endif() endif()
# 'Google_test' is the subproject name # 'Google_test' is the subproject name

View File

@@ -20,25 +20,25 @@
#include <cstdint> #include <cstdint>
#include <cstring> #include <cstring>
#include "../adc.h"
#include "../library.h" #include "../library.h"
#include "../adc.h"
#include "crc32.h" #include "crc32.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
#define EXPECTED_CRC32 0x5a5a7388 #define EXPECTED_CRC32 0x5a5a7388
static const uint8_t* buffer; static const uint8_t *buffer;
class adcFixture : public ::testing::Test class adcFixture : public ::testing::Test
{ {
public: public:
adcFixture() adcFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -47,13 +47,13 @@ class adcFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/adc.bin", path); snprintf(filename, PATH_MAX, "%s/data/adc.bin", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(34367); buffer = (const uint8_t *)malloc(34367);
fread((void*)buffer, 1, 34367, file); fread((void *)buffer, 1, 34367, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~adcFixture() ~adcFixture()
{ {
@@ -65,7 +65,7 @@ class adcFixture : public ::testing::Test
TEST_F(adcFixture, adc) TEST_F(adcFixture, adc)
{ {
auto* outBuf = (uint8_t*)malloc(327680); auto *outBuf = (uint8_t *)malloc(327680);
auto decoded = AARU_adc_decode_buffer(outBuf, 327680, buffer, 34367); auto decoded = AARU_adc_decode_buffer(outBuf, 327680, buffer, 34367);

View File

@@ -20,25 +20,25 @@
#include <cstdint> #include <cstdint>
#include <cstring> #include <cstring>
#include "../apple_rle.h"
#include "../library.h" #include "../library.h"
#include "../apple_rle.h"
#include "crc32.h" #include "crc32.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
#define EXPECTED_CRC32 0x3525ef06 #define EXPECTED_CRC32 0x3525ef06
static const uint8_t* buffer; static const uint8_t *buffer;
class apple_rleFixture : public ::testing::Test class apple_rleFixture : public ::testing::Test
{ {
public: public:
apple_rleFixture() apple_rleFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -47,13 +47,13 @@ class apple_rleFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/apple_rle.bin", path); snprintf(filename, PATH_MAX, "%s/data/apple_rle.bin", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(1102); buffer = (const uint8_t *)malloc(1102);
fread((void*)buffer, 1, 1102, file); fread((void *)buffer, 1, 1102, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~apple_rleFixture() ~apple_rleFixture()
{ {
@@ -65,7 +65,7 @@ class apple_rleFixture : public ::testing::Test
TEST_F(apple_rleFixture, apple_rle) TEST_F(apple_rleFixture, apple_rle)
{ {
auto* outBuf = (uint8_t*)malloc(32768); auto *outBuf = (uint8_t *)malloc(32768);
auto decoded = AARU_apple_rle_decode_buffer(outBuf, 32768, buffer, 1102); auto decoded = AARU_apple_rle_decode_buffer(outBuf, 32768, buffer, 1102);

View File

@@ -26,18 +26,18 @@
#define EXPECTED_CRC32 0xc64059c0 #define EXPECTED_CRC32 0xc64059c0
static const uint8_t* buffer; static const uint8_t *buffer;
class bzip2Fixture : public ::testing::Test class bzip2Fixture : public ::testing::Test
{ {
public: public:
bzip2Fixture() bzip2Fixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -46,13 +46,13 @@ class bzip2Fixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/bzip2.bz2", path); snprintf(filename, PATH_MAX, "%s/data/bzip2.bz2", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(1053934); buffer = (const uint8_t *)malloc(1053934);
fread((void*)buffer, 1, 1053934, file); fread((void *)buffer, 1, 1053934, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~bzip2Fixture() ~bzip2Fixture()
{ {
@@ -65,7 +65,7 @@ class bzip2Fixture : public ::testing::Test
TEST_F(bzip2Fixture, bzip2) TEST_F(bzip2Fixture, bzip2)
{ {
uint real_size = 1048576; uint real_size = 1048576;
auto* outBuf = (uint8_t*)malloc(1048576); auto *outBuf = (uint8_t *)malloc(1048576);
auto bz_err = AARU_bzip2_decode_buffer(outBuf, &real_size, buffer, 1053934); auto bz_err = AARU_bzip2_decode_buffer(outBuf, &real_size, buffer, 1053934);
@@ -87,24 +87,24 @@ TEST_F(bzip2Fixture, bzip2Compress)
uint decmp_len = original_len; uint decmp_len = original_len;
char path[PATH_MAX]; char path[PATH_MAX];
char filename[PATH_MAX * 2]; char filename[PATH_MAX * 2];
FILE* file; FILE *file;
uint32_t original_crc, decmp_crc; uint32_t original_crc, decmp_crc;
int bz_err; int bz_err;
const uint8_t* original; const uint8_t *original;
uint8_t* cmp_buffer; uint8_t *cmp_buffer;
uint8_t* decmp_buffer; uint8_t *decmp_buffer;
// Allocate buffers // Allocate buffers
original = (const uint8_t*)malloc(original_len); original = (const uint8_t *)malloc(original_len);
cmp_buffer = (uint8_t*)malloc(cmp_len); cmp_buffer = (uint8_t *)malloc(cmp_len);
decmp_buffer = (uint8_t*)malloc(decmp_len); decmp_buffer = (uint8_t *)malloc(decmp_len);
// Read the file // Read the file
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/data.bin", path); snprintf(filename, PATH_MAX, "%s/data/data.bin", path);
file = fopen(filename, "rb"); file = fopen(filename, "rb");
fread((void*)original, 1, original_len, file); fread((void *)original, 1, original_len, file);
fclose(file); fclose(file);
// Calculate the CRC // Calculate the CRC
@@ -125,7 +125,7 @@ TEST_F(bzip2Fixture, bzip2Compress)
decmp_crc = crc32_data(decmp_buffer, decmp_len); decmp_crc = crc32_data(decmp_buffer, decmp_len);
// Free buffers // Free buffers
free((void*)original); free((void *)original);
free(cmp_buffer); free(cmp_buffer);
free(decmp_buffer); free(decmp_buffer);

View File

@@ -19,37 +19,38 @@
extern "C" extern "C"
{ {
#endif #endif
#include <stdint.h> #include <stdint.h>
#define CRC32_ISO_POLY 0xEDB88320 #define CRC32_ISO_POLY 0xEDB88320
#define CRC32_ISO_SEED 0xFFFFFFFF #define CRC32_ISO_SEED 0xFFFFFFFF
uint32_t crc32_data(const uint8_t *data, uint32_t len) uint32_t crc32_data(const uint8_t *data, uint32_t len)
{
uint32_t localHashInt = CRC32_ISO_SEED;
uint32_t localTable[256];
int i, j;
for(i = 0; i < 256; i++)
{ {
uint32_t entry = (uint32_t)i; uint32_t localHashInt = CRC32_ISO_SEED;
uint32_t localTable[256];
int i, j;
for(j = 0; j < 8; j++) for(i = 0; i < 256; i++)
if((entry & 1) == 1) {
entry = (entry >> 1) ^ CRC32_ISO_POLY; uint32_t entry = (uint32_t)i;
else
entry >>= 1;
localTable[i] = entry; for(j = 0; j < 8; j++)
if((entry & 1) == 1)
entry = (entry >> 1) ^ CRC32_ISO_POLY;
else
entry >>= 1;
localTable[i] = entry;
}
for(i = 0; i < len; i++) localHashInt = (localHashInt >> 8) ^ localTable[data[i] ^ (localHashInt & 0xff)];
localHashInt ^= CRC32_ISO_SEED;
return localHashInt;
} }
for(i = 0; i < len; i++)
localHashInt = (localHashInt >> 8) ^ localTable[data[i] ^ (localHashInt & 0xff)];
localHashInt ^= CRC32_ISO_SEED;
return localHashInt;
}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -23,8 +23,9 @@ extern "C"
{ {
#endif #endif
uint32_t crc32_data(const uint8_t* data, uint32_t len); uint32_t crc32_data(const uint8_t *data, uint32_t len);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // AARU_CHECKSUMS_NATIVE_TESTS_CRC32_H_ #endif // AARU_CHECKSUMS_NATIVE_TESTS_CRC32_H_

View File

@@ -20,25 +20,25 @@
#include <cstddef> #include <cstddef>
#include <cstdint> #include <cstdint>
#include "../flac.h"
#include "../library.h" #include "../library.h"
#include "../flac.h"
#include "crc32.h" #include "crc32.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
#define EXPECTED_CRC32 0xdfbc99bb #define EXPECTED_CRC32 0xdfbc99bb
static const uint8_t* buffer; static const uint8_t *buffer;
class flacFixture : public ::testing::Test class flacFixture : public ::testing::Test
{ {
public: public:
flacFixture() flacFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -47,13 +47,13 @@ class flacFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/flac.flac", path); snprintf(filename, PATH_MAX, "%s/data/flac.flac", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(6534197); buffer = (const uint8_t *)malloc(6534197);
fread((void*)buffer, 1, 6534197, file); fread((void *)buffer, 1, 6534197, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~flacFixture() ~flacFixture()
{ {
@@ -65,7 +65,7 @@ class flacFixture : public ::testing::Test
TEST_F(flacFixture, flac) TEST_F(flacFixture, flac)
{ {
auto* outBuf = (uint8_t*)malloc(9633792); auto *outBuf = (uint8_t *)malloc(9633792);
auto decoded = AARU_flac_decode_redbook_buffer(outBuf, 9633792, buffer, 6534197); auto decoded = AARU_flac_decode_redbook_buffer(outBuf, 9633792, buffer, 6534197);
@@ -85,46 +85,33 @@ TEST_F(flacFixture, flacCompress)
uint decmp_len = original_len; uint decmp_len = original_len;
char path[PATH_MAX]; char path[PATH_MAX];
char filename[PATH_MAX * 2]; char filename[PATH_MAX * 2];
FILE* file; FILE *file;
uint32_t original_crc, decmp_crc; uint32_t original_crc, decmp_crc;
const uint8_t* original; const uint8_t *original;
uint8_t* cmp_buffer; uint8_t *cmp_buffer;
uint8_t* decmp_buffer; uint8_t *decmp_buffer;
size_t newSize; size_t newSize;
// Allocate buffers // Allocate buffers
original = (const uint8_t*)malloc(original_len); original = (const uint8_t *)malloc(original_len);
cmp_buffer = (uint8_t*)malloc(cmp_len); cmp_buffer = (uint8_t *)malloc(cmp_len);
decmp_buffer = (uint8_t*)malloc(decmp_len); decmp_buffer = (uint8_t *)malloc(decmp_len);
// Read the file // Read the file
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/audio.bin", path); snprintf(filename, PATH_MAX, "%s/data/audio.bin", path);
file = fopen(filename, "rb"); file = fopen(filename, "rb");
fread((void*)original, 1, original_len, file); fread((void *)original, 1, original_len, file);
fclose(file); fclose(file);
// Calculate the CRC // Calculate the CRC
original_crc = crc32_data(original, original_len); original_crc = crc32_data(original, original_len);
// Compress // Compress
newSize = AARU_flac_encode_redbook_buffer(cmp_buffer, newSize = AARU_flac_encode_redbook_buffer(cmp_buffer, cmp_len, original, original_len, 4608, 1, 0,
cmp_len, "partial_tukey(0/1.0/1.0)", 12, 0, 1, false, 0, 8,
original, "Aaru.Compression.Native.Tests", strlen("Aaru.Compression.Native.Tests"));
original_len,
4608,
1,
0,
"partial_tukey(0/1.0/1.0)",
12,
0,
1,
false,
0,
8,
"Aaru.Compression.Native.Tests",
strlen("Aaru.Compression.Native.Tests"));
cmp_len = newSize; cmp_len = newSize;
// Decompress // Decompress
@@ -136,7 +123,7 @@ TEST_F(flacFixture, flacCompress)
decmp_crc = crc32_data(decmp_buffer, decmp_len); decmp_crc = crc32_data(decmp_buffer, decmp_len);
// Free buffers // Free buffers
free((void*)original); free((void *)original);
free(cmp_buffer); free(cmp_buffer);
free(decmp_buffer); free(decmp_buffer);

View File

@@ -26,18 +26,18 @@
#define EXPECTED_CRC32 0xc64059c0 #define EXPECTED_CRC32 0xc64059c0
static const uint8_t* buffer; static const uint8_t *buffer;
class lzfseFixture : public ::testing::Test class lzfseFixture : public ::testing::Test
{ {
public: public:
lzfseFixture() lzfseFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -46,13 +46,13 @@ class lzfseFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/lzfse.bin", path); snprintf(filename, PATH_MAX, "%s/data/lzfse.bin", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(1059299); buffer = (const uint8_t *)malloc(1059299);
fread((void*)buffer, 1, 1059299, file); fread((void *)buffer, 1, 1059299, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~lzfseFixture() ~lzfseFixture()
{ {
@@ -64,7 +64,7 @@ class lzfseFixture : public ::testing::Test
TEST_F(lzfseFixture, lzfse) TEST_F(lzfseFixture, lzfse)
{ {
auto* outBuf = (uint8_t*)malloc(1048576); auto *outBuf = (uint8_t *)malloc(1048576);
auto decoded = AARU_lzfse_decode_buffer(outBuf, 1048576, buffer, 1059299, nullptr); auto decoded = AARU_lzfse_decode_buffer(outBuf, 1048576, buffer, 1059299, nullptr);
@@ -84,24 +84,24 @@ TEST_F(lzfseFixture, lzfseCompress)
uint decmp_len = original_len; uint decmp_len = original_len;
char path[PATH_MAX]; char path[PATH_MAX];
char filename[PATH_MAX * 2]; char filename[PATH_MAX * 2];
FILE* file; FILE *file;
uint32_t original_crc, decmp_crc; uint32_t original_crc, decmp_crc;
const uint8_t* original; const uint8_t *original;
uint8_t* cmp_buffer; uint8_t *cmp_buffer;
uint8_t* decmp_buffer; uint8_t *decmp_buffer;
size_t newSize; size_t newSize;
// Allocate buffers // Allocate buffers
original = (const uint8_t*)malloc(original_len); original = (const uint8_t *)malloc(original_len);
cmp_buffer = (uint8_t*)malloc(cmp_len); cmp_buffer = (uint8_t *)malloc(cmp_len);
decmp_buffer = (uint8_t*)malloc(decmp_len); decmp_buffer = (uint8_t *)malloc(decmp_len);
// Read the file // Read the file
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/data.bin", path); snprintf(filename, PATH_MAX, "%s/data/data.bin", path);
file = fopen(filename, "rb"); file = fopen(filename, "rb");
fread((void*)original, 1, original_len, file); fread((void *)original, 1, original_len, file);
fclose(file); fclose(file);
// Calculate the CRC // Calculate the CRC
@@ -120,7 +120,7 @@ TEST_F(lzfseFixture, lzfseCompress)
decmp_crc = crc32_data(decmp_buffer, decmp_len); decmp_crc = crc32_data(decmp_buffer, decmp_len);
// Free buffers // Free buffers
free((void*)original); free((void *)original);
free(cmp_buffer); free(cmp_buffer);
free(decmp_buffer); free(decmp_buffer);

View File

@@ -26,18 +26,18 @@
#define EXPECTED_CRC32 0xc64059c0 #define EXPECTED_CRC32 0xc64059c0
static const uint8_t* buffer; static const uint8_t *buffer;
class lzipFixture : public ::testing::Test class lzipFixture : public ::testing::Test
{ {
public: public:
lzipFixture() lzipFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -46,13 +46,13 @@ class lzipFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/lzip.lz", path); snprintf(filename, PATH_MAX, "%s/data/lzip.lz", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(1062874); buffer = (const uint8_t *)malloc(1062874);
fread((void*)buffer, 1, 1062874, file); fread((void *)buffer, 1, 1062874, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~lzipFixture() ~lzipFixture()
{ {
@@ -64,7 +64,7 @@ class lzipFixture : public ::testing::Test
TEST_F(lzipFixture, lzip) TEST_F(lzipFixture, lzip)
{ {
auto* outBuf = (uint8_t*)malloc(1048576); auto *outBuf = (uint8_t *)malloc(1048576);
auto decoded = AARU_lzip_decode_buffer(outBuf, 1048576, buffer, 1062874); auto decoded = AARU_lzip_decode_buffer(outBuf, 1048576, buffer, 1062874);
@@ -84,24 +84,24 @@ TEST_F(lzipFixture, lzipCompress)
int32_t decmp_len = original_len; int32_t decmp_len = original_len;
char path[PATH_MAX]; char path[PATH_MAX];
char filename[PATH_MAX * 2]; char filename[PATH_MAX * 2];
FILE* file; FILE *file;
uint32_t original_crc, decmp_crc; uint32_t original_crc, decmp_crc;
const uint8_t* original; const uint8_t *original;
uint8_t* cmp_buffer; uint8_t *cmp_buffer;
uint8_t* decmp_buffer; uint8_t *decmp_buffer;
int32_t newSize; int32_t newSize;
// Allocate buffers // Allocate buffers
original = (const uint8_t*)malloc(original_len); original = (const uint8_t *)malloc(original_len);
cmp_buffer = (uint8_t*)malloc(cmp_len); cmp_buffer = (uint8_t *)malloc(cmp_len);
decmp_buffer = (uint8_t*)malloc(decmp_len); decmp_buffer = (uint8_t *)malloc(decmp_len);
// Read the file // Read the file
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/data.bin", path); snprintf(filename, PATH_MAX, "%s/data/data.bin", path);
file = fopen(filename, "rb"); file = fopen(filename, "rb");
fread((void*)original, 1, original_len, file); fread((void *)original, 1, original_len, file);
fclose(file); fclose(file);
// Calculate the CRC // Calculate the CRC
@@ -120,7 +120,7 @@ TEST_F(lzipFixture, lzipCompress)
decmp_crc = crc32_data(decmp_buffer, decmp_len); decmp_crc = crc32_data(decmp_buffer, decmp_len);
// Free buffers // Free buffers
free((void*)original); free((void *)original);
free(cmp_buffer); free(cmp_buffer);
free(decmp_buffer); free(decmp_buffer);

View File

@@ -26,18 +26,18 @@
#define EXPECTED_CRC32 0x954bf76e #define EXPECTED_CRC32 0x954bf76e
static const uint8_t* buffer; static const uint8_t *buffer;
class lzmaFixture : public ::testing::Test class lzmaFixture : public ::testing::Test
{ {
public: public:
lzmaFixture() lzmaFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -46,13 +46,13 @@ class lzmaFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/lzma.bin", path); snprintf(filename, PATH_MAX, "%s/data/lzma.bin", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(1200275); buffer = (const uint8_t *)malloc(1200275);
fread((void*)buffer, 1, 1200275, file); fread((void *)buffer, 1, 1200275, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~lzmaFixture() ~lzmaFixture()
{ {
@@ -67,7 +67,7 @@ TEST_F(lzmaFixture, lzma)
uint8_t params[] = {0x5D, 0x00, 0x00, 0x00, 0x02}; uint8_t params[] = {0x5D, 0x00, 0x00, 0x00, 0x02};
size_t destLen = 8388608; size_t destLen = 8388608;
size_t srcLen = 1200275; size_t srcLen = 1200275;
auto* outBuf = (uint8_t*)malloc(8388608); auto *outBuf = (uint8_t *)malloc(8388608);
auto err = AARU_lzma_decode_buffer(outBuf, &destLen, buffer, &srcLen, params, 5); auto err = AARU_lzma_decode_buffer(outBuf, &destLen, buffer, &srcLen, params, 5);
@@ -88,34 +88,34 @@ TEST_F(lzmaFixture, lzmaCompress)
size_t decmp_len = original_len; size_t decmp_len = original_len;
char path[PATH_MAX]; char path[PATH_MAX];
char filename[PATH_MAX * 2]; char filename[PATH_MAX * 2];
FILE* file; FILE *file;
uint32_t original_crc, decmp_crc; uint32_t original_crc, decmp_crc;
const uint8_t* original; const uint8_t *original;
uint8_t* cmp_buffer; uint8_t *cmp_buffer;
uint8_t* decmp_buffer; uint8_t *decmp_buffer;
int err; int err;
uint8_t props[5]; uint8_t props[5];
size_t props_len = 5; size_t props_len = 5;
// Allocate buffers // Allocate buffers
original = (const uint8_t*)malloc(original_len); original = (const uint8_t *)malloc(original_len);
cmp_buffer = (uint8_t*)malloc(cmp_len); cmp_buffer = (uint8_t *)malloc(cmp_len);
decmp_buffer = (uint8_t*)malloc(decmp_len); decmp_buffer = (uint8_t *)malloc(decmp_len);
// Read the file // Read the file
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/data.bin", path); snprintf(filename, PATH_MAX, "%s/data/data.bin", path);
file = fopen(filename, "rb"); file = fopen(filename, "rb");
fread((void*)original, 1, original_len, file); fread((void *)original, 1, original_len, file);
fclose(file); fclose(file);
// Calculate the CRC // Calculate the CRC
original_crc = crc32_data(original, original_len); original_crc = crc32_data(original, original_len);
// Compress // Compress
err = AARU_lzma_encode_buffer( err = AARU_lzma_encode_buffer(cmp_buffer, &cmp_len, original, original_len, props, &props_len, 9, 1048576, 3, 0, 2,
cmp_buffer, &cmp_len, original, original_len, props, &props_len, 9, 1048576, 3, 0, 2, 273, 2); 273, 2);
EXPECT_EQ(err, 0); EXPECT_EQ(err, 0);
// Decompress // Decompress
@@ -127,7 +127,7 @@ TEST_F(lzmaFixture, lzmaCompress)
decmp_crc = crc32_data(decmp_buffer, decmp_len); decmp_crc = crc32_data(decmp_buffer, decmp_len);
// Free buffers // Free buffers
free((void*)original); free((void *)original);
free(cmp_buffer); free(cmp_buffer);
free(decmp_buffer); free(decmp_buffer);

View File

@@ -26,18 +26,18 @@
#define EXPECTED_CRC32 0xc64059c0 #define EXPECTED_CRC32 0xc64059c0
static const uint8_t* buffer; static const uint8_t *buffer;
class zstdFixture : public ::testing::Test class zstdFixture : public ::testing::Test
{ {
public: public:
zstdFixture() zstdFixture()
{ {
// initialization; // initialization;
// can also be done in SetUp() // can also be done in SetUp()
} }
protected: protected:
void SetUp() void SetUp()
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@@ -46,13 +46,13 @@ class zstdFixture : public ::testing::Test
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/zstd.zst", path); snprintf(filename, PATH_MAX, "%s/data/zstd.zst", path);
FILE* file = fopen(filename, "rb"); FILE *file = fopen(filename, "rb");
buffer = (const uint8_t*)malloc(1048613); buffer = (const uint8_t *)malloc(1048613);
fread((void*)buffer, 1, 1048613, file); fread((void *)buffer, 1, 1048613, file);
fclose(file); fclose(file);
} }
void TearDown() { free((void*)buffer); } void TearDown() { free((void *)buffer); }
~zstdFixture() ~zstdFixture()
{ {
@@ -64,7 +64,7 @@ class zstdFixture : public ::testing::Test
TEST_F(zstdFixture, zstd) TEST_F(zstdFixture, zstd)
{ {
auto* outBuf = (uint8_t*)malloc(1048576); auto *outBuf = (uint8_t *)malloc(1048576);
auto decoded = AARU_zstd_decode_buffer(outBuf, 1048576, buffer, 1048613); auto decoded = AARU_zstd_decode_buffer(outBuf, 1048576, buffer, 1048613);
@@ -84,24 +84,24 @@ TEST_F(zstdFixture, zstdCompress)
uint decmp_len = original_len; uint decmp_len = original_len;
char path[PATH_MAX]; char path[PATH_MAX];
char filename[PATH_MAX * 2]; char filename[PATH_MAX * 2];
FILE* file; FILE *file;
uint32_t original_crc, decmp_crc; uint32_t original_crc, decmp_crc;
const uint8_t* original; const uint8_t *original;
uint8_t* cmp_buffer; uint8_t *cmp_buffer;
uint8_t* decmp_buffer; uint8_t *decmp_buffer;
size_t newSize; size_t newSize;
// Allocate buffers // Allocate buffers
original = (const uint8_t*)malloc(original_len); original = (const uint8_t *)malloc(original_len);
cmp_buffer = (uint8_t*)malloc(cmp_len); cmp_buffer = (uint8_t *)malloc(cmp_len);
decmp_buffer = (uint8_t*)malloc(decmp_len); decmp_buffer = (uint8_t *)malloc(decmp_len);
// Read the file // Read the file
getcwd(path, PATH_MAX); getcwd(path, PATH_MAX);
snprintf(filename, PATH_MAX, "%s/data/data.bin", path); snprintf(filename, PATH_MAX, "%s/data/data.bin", path);
file = fopen(filename, "rb"); file = fopen(filename, "rb");
fread((void*)original, 1, original_len, file); fread((void *)original, 1, original_len, file);
fclose(file); fclose(file);
// Calculate the CRC // Calculate the CRC
@@ -120,7 +120,7 @@ TEST_F(zstdFixture, zstdCompress)
decmp_crc = crc32_data(decmp_buffer, decmp_len); decmp_crc = crc32_data(decmp_buffer, decmp_len);
// Free buffers // Free buffers
free((void*)original); free((void *)original);
free(cmp_buffer); free(cmp_buffer);
free(decmp_buffer); free(decmp_buffer);