diff --git a/3rdparty/bzip2.cmake b/3rdparty/bzip2.cmake index 1af765d..b0f612c 100644 --- a/3rdparty/bzip2.cmake +++ b/3rdparty/bzip2.cmake @@ -1,13 +1,13 @@ -set(LT_CURRENT 1) +set(LT_CURRENT 1) set(LT_REVISION 9) -set(LT_AGE 0) +set(LT_AGE 0) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/cmake") include(Version) include(SymLink) set(BZ_VERSION ${LT_CURRENT}.${LT_AGE}.${LT_REVISION}) -configure_file ( +configure_file( ${PROJECT_SOURCE_DIR}/3rdparty/bzip2/bz_version.h.in ${PROJECT_BINARY_DIR}/3rdparty/bzip2/bz_version.h ) @@ -43,18 +43,18 @@ endif() # Checks for header files. include(CheckIncludeFile) -check_include_file(arpa/inet.h HAVE_ARPA_INET_H) -check_include_file(fcntl.h HAVE_FCNTL_H) -check_include_file(inttypes.h HAVE_INTTYPES_H) -check_include_file(limits.h HAVE_LIMITS_H) -check_include_file(netdb.h HAVE_NETDB_H) -check_include_file(netinet/in.h HAVE_NETINET_IN_H) -check_include_file(pwd.h HAVE_PWD_H) -check_include_file(sys/socket.h HAVE_SYS_SOCKET_H) -check_include_file(sys/time.h HAVE_SYS_TIME_H) -check_include_file(syslog.h HAVE_SYSLOG_H) -check_include_file(time.h HAVE_TIME_H) -check_include_file(unistd.h HAVE_UNISTD_H) +check_include_file(arpa/inet.h HAVE_ARPA_INET_H) +check_include_file(fcntl.h HAVE_FCNTL_H) +check_include_file(inttypes.h HAVE_INTTYPES_H) +check_include_file(limits.h HAVE_LIMITS_H) +check_include_file(netdb.h HAVE_NETDB_H) +check_include_file(netinet/in.h HAVE_NETINET_IN_H) +check_include_file(pwd.h HAVE_PWD_H) +check_include_file(sys/socket.h HAVE_SYS_SOCKET_H) +check_include_file(sys/time.h HAVE_SYS_TIME_H) +check_include_file(syslog.h HAVE_SYSLOG_H) +check_include_file(time.h HAVE_TIME_H) +check_include_file(unistd.h HAVE_UNISTD_H) include(CheckTypeSize) # Checks for typedefs, structures, and compiler characteristics. @@ -74,9 +74,9 @@ check_struct_has_member("struct tm" tm_gmtoff time.h HAVE_STRUCT_TM_TM_GMTOFF) # Checks for library functions. include(CheckFunctionExists) -check_function_exists(_Exit HAVE__EXIT) -check_function_exists(accept4 HAVE_ACCEPT4) -check_function_exists(mkostemp HAVE_MKOSTEMP) +check_function_exists(_Exit HAVE__EXIT) +check_function_exists(accept4 HAVE_ACCEPT4) +check_function_exists(mkostemp HAVE_MKOSTEMP) include(CheckSymbolExists) # XXX does this correctly detect initgroups (un)availability on cygwin? @@ -107,9 +107,9 @@ list(TRANSFORM BZ2_SOURCES PREPEND "3rdparty/bzip2/") add_definitions(-DBZ_DEBUG=0) target_sources("Aaru.Compression.Native" - PRIVATE ${BZ2_SOURCES} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/bzlib_private.h - INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/bzlib.h) + PRIVATE ${BZ2_SOURCES} + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/bzlib_private.h + INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/bzlib.h) target_compile_definitions("Aaru.Compression.Native" PUBLIC BZ2_STATICLIB) set_property(TARGET "Aaru.Compression.Native" PROPERTY C_VISIBILITY_PRESET hidden) diff --git a/3rdparty/flac.cmake b/3rdparty/flac.cmake index 369c30d..9d42a8b 100644 --- a/3rdparty/flac.cmake +++ b/3rdparty/flac.cmake @@ -50,42 +50,42 @@ check_include_file("stdbool.h" HAVE_STDBOOL_H) check_include_file("arm_neon.h" FLAC__HAS_NEONINTRIN) 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") -endif () +endif() -if (MSVC) +if(MSVC) check_include_file("intrin.h" FLAC__HAS_X86INTRIN) -else () +else() check_include_file("x86intrin.h" FLAC__HAS_X86INTRIN) -endif () +endif() check_function_exists(fseeko HAVE_FSEEKO) check_c_source_compiles("int main() { return __builtin_bswap16 (0) ; }" HAVE_BSWAP16) 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) -endif () +endif() 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>) -endif () +endif() include_directories("3rdparty/flac/include") include_directories("${CMAKE_CURRENT_BINARY_DIR}/3rdparty/flac") add_definitions(-DHAVE_CONFIG_H) -if (MSVC) +if(MSVC) add_definitions( -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES) -endif () +endif() option(WITH_ASM "Use any assembly optimization routines" ON) @@ -100,91 +100,91 @@ include(CheckCPUArch) include(CheckA64NEON) 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) -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) 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(lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS "/arch:AVX2 /fp:fast") - endif () - if (WITH_AVX AND (CMAKE_C_COMPILER_ID MATCHES "Clang")) + endif() + if(WITH_AVX AND (CMAKE_C_COMPILER_ID MATCHES "Clang")) set_source_files_properties(lpc_intrin_fma.c PROPERTIES COMPILE_FLAGS "-ffast-math") - endif () -else () - if (FLAC__CPU_ARM64) + endif() +else() + if(FLAC__CPU_ARM64) check_a64neon(FLAC__HAS_A64NEONINTRIN) - endif () -endif () + endif() +endif() -if (NOT WITH_ASM) +if(NOT WITH_ASM) add_definitions(-DFLAC__NO_ASM) -endif () +endif() -if (HAVE_SEMAPHORE_H) +if(HAVE_SEMAPHORE_H) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads) - if (CMAKE_USE_PTHREADS_INIT) + if(CMAKE_USE_PTHREADS_INIT) set(HAVE_PTHREAD 1) - endif () -endif () + endif() +endif() include_directories("3rdparty/flac/src/libFLAC/include") target_sources("Aaru.Compression.Native" PRIVATE - 3rdparty/flac/src/libFLAC/bitmath.c - 3rdparty/flac/src/libFLAC/bitreader.c - 3rdparty/flac/src/libFLAC/bitwriter.c - 3rdparty/flac/src/libFLAC/cpu.c - 3rdparty/flac/src/libFLAC/crc.c - 3rdparty/flac/src/libFLAC/fixed.c - 3rdparty/flac/src/libFLAC/fixed_intrin_sse2.c - 3rdparty/flac/src/libFLAC/fixed_intrin_ssse3.c - 3rdparty/flac/src/libFLAC/fixed_intrin_sse42.c - 3rdparty/flac/src/libFLAC/fixed_intrin_avx2.c - 3rdparty/flac/src/libFLAC/float.c - 3rdparty/flac/src/libFLAC/format.c - 3rdparty/flac/src/libFLAC/lpc.c - 3rdparty/flac/src/libFLAC/lpc_intrin_neon.c - 3rdparty/flac/src/libFLAC/lpc_intrin_sse2.c - 3rdparty/flac/src/libFLAC/lpc_intrin_sse41.c - 3rdparty/flac/src/libFLAC/lpc_intrin_avx2.c - 3rdparty/flac/src/libFLAC/lpc_intrin_fma.c - 3rdparty/flac/src/libFLAC/md5.c - 3rdparty/flac/src/libFLAC/memory.c - 3rdparty/flac/src/libFLAC/metadata_iterators.c - 3rdparty/flac/src/libFLAC/metadata_object.c - 3rdparty/flac/src/libFLAC/stream_decoder.c - 3rdparty/flac/src/libFLAC/stream_encoder.c - 3rdparty/flac/src/libFLAC/stream_encoder_intrin_sse2.c - 3rdparty/flac/src/libFLAC/stream_encoder_intrin_ssse3.c - 3rdparty/flac/src/libFLAC/stream_encoder_intrin_avx2.c - 3rdparty/flac/src/libFLAC/stream_encoder_framing.c - 3rdparty/flac/src/libFLAC/window.c - $<$:3rdparty/flac/include/share/win_utf8_io.h> - $<$:3rdparty/flac/src/share/win_utf8_io/win_utf8_io.c> - $<$:ogg_decoder_aspect.c> - $<$:ogg_encoder_aspect.c> - $<$:ogg_helper.c> - $<$:ogg_mapping.c>) + 3rdparty/flac/src/libFLAC/bitmath.c + 3rdparty/flac/src/libFLAC/bitreader.c + 3rdparty/flac/src/libFLAC/bitwriter.c + 3rdparty/flac/src/libFLAC/cpu.c + 3rdparty/flac/src/libFLAC/crc.c + 3rdparty/flac/src/libFLAC/fixed.c + 3rdparty/flac/src/libFLAC/fixed_intrin_sse2.c + 3rdparty/flac/src/libFLAC/fixed_intrin_ssse3.c + 3rdparty/flac/src/libFLAC/fixed_intrin_sse42.c + 3rdparty/flac/src/libFLAC/fixed_intrin_avx2.c + 3rdparty/flac/src/libFLAC/float.c + 3rdparty/flac/src/libFLAC/format.c + 3rdparty/flac/src/libFLAC/lpc.c + 3rdparty/flac/src/libFLAC/lpc_intrin_neon.c + 3rdparty/flac/src/libFLAC/lpc_intrin_sse2.c + 3rdparty/flac/src/libFLAC/lpc_intrin_sse41.c + 3rdparty/flac/src/libFLAC/lpc_intrin_avx2.c + 3rdparty/flac/src/libFLAC/lpc_intrin_fma.c + 3rdparty/flac/src/libFLAC/md5.c + 3rdparty/flac/src/libFLAC/memory.c + 3rdparty/flac/src/libFLAC/metadata_iterators.c + 3rdparty/flac/src/libFLAC/metadata_object.c + 3rdparty/flac/src/libFLAC/stream_decoder.c + 3rdparty/flac/src/libFLAC/stream_encoder.c + 3rdparty/flac/src/libFLAC/stream_encoder_intrin_sse2.c + 3rdparty/flac/src/libFLAC/stream_encoder_intrin_ssse3.c + 3rdparty/flac/src/libFLAC/stream_encoder_intrin_avx2.c + 3rdparty/flac/src/libFLAC/stream_encoder_framing.c + 3rdparty/flac/src/libFLAC/window.c + $<$:3rdparty/flac/include/share/win_utf8_io.h> + $<$:3rdparty/flac/src/share/win_utf8_io/win_utf8_io.c> + $<$:ogg_decoder_aspect.c> + $<$:ogg_encoder_aspect.c> + $<$:ogg_helper.c> + $<$:ogg_mapping.c>) target_compile_definitions("Aaru.Compression.Native" PUBLIC FLAC__NO_DLL) target_compile_definitions("Aaru.Compression.Native" PUBLIC FLAC__NO_FILEIO) # 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) -endif () +endif() 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) -endif () +endif() configure_file(3rdparty/flac/config.cmake.h.in 3rdparty/flac/config.h) diff --git a/3rdparty/lzfse.cmake b/3rdparty/lzfse.cmake index d698487..a1f1779 100644 --- a/3rdparty/lzfse.cmake +++ b/3rdparty/lzfse.cmake @@ -18,19 +18,19 @@ if("${LZFSE_BUNDLE_MODE}" STREQUAL "") endif() mark_as_advanced(LZFSE_BUNDLE_MODE) -if (CMAKE_VERSION VERSION_GREATER 3.2) - cmake_policy (SET CMP0063 NEW) -endif () +if(CMAKE_VERSION VERSION_GREATER 3.2) + cmake_policy(SET CMP0063 NEW) +endif() -if (CMAKE_VERSION VERSION_GREATER 3.9) - cmake_policy (SET CMP0069 NEW) -endif () +if(CMAKE_VERSION VERSION_GREATER 3.9) + cmake_policy(SET CMP0069 NEW) +endif() -if (ENABLE_SANITIZER) +if(ENABLE_SANITIZER) set(CMAKE_C_FLAGS " ${CMAKE_C_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}") -endif () +endif() set(LZFSE_SOURCES src/lzfse_decode.c @@ -47,5 +47,5 @@ target_sources("Aaru.Compression.Native" PRIVATE ${LZFSE_SOURCES}) 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() \ No newline at end of file diff --git a/3rdparty/lzma.cmake b/3rdparty/lzma.cmake index 61bd387..140248c 100644 --- a/3rdparty/lzma.cmake +++ b/3rdparty/lzma.cmake @@ -14,20 +14,20 @@ if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCH set(IS_X64 1) target_compile_definitions("Aaru.Compression.Native" PUBLIC IS_X64) -# if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") -# set(USE_ASM 1) -# endif() + # if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") + # set(USE_ASM 1) + # endif() elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i686") set(IS_X86 1) target_compile_definitions("Aaru.Compression.Native" PUBLIC IS_X86) -# set(USE_ASM 1) + # set(USE_ASM 1) elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") set(IS_ARM64 1) target_compile_definitions("Aaru.Compression.Native" PUBLIC IS_ARM64) set(USE_ASM 1) 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) target_compile_definitions("Aaru.Compression.Native" PUBLIC USE_CLANG) endif() @@ -127,7 +127,7 @@ if(USE_LZMA_DEC_ASM) 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/7zAsm.S) + # target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_ASM_DIRECTORY}/arm64/7zAsm.S) endif() target_sources("Aaru.Compression.Native" PRIVATE ${LZMA_C_DIRECTORY}/LzFindOpt.c) diff --git a/3rdparty/zstd.cmake b/3rdparty/zstd.cmake index d6acdc8..217bd35 100644 --- a/3rdparty/zstd.cmake +++ b/3rdparty/zstd.cmake @@ -13,14 +13,14 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) # Set and use the newest cmake policies that are validated to work set(ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION "3") 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}") -elseif ("${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND - "${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_VERSION}") +elseif("${ZSTD_MAX_VALIDATED_CMAKE_MAJOR_VERSION}" EQUAL "${CMAKE_MAJOR_VERSION}" AND + "${ZSTD_MAX_VALIDATED_CMAKE_MINOR_VERSION}" GREATER "${CMAKE_MINOR_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") -endif () +endif() cmake_policy(VERSION ${ZSTD_CMAKE_POLICY_VERSION}) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/zstd/build/cmake/CMakeModules") @@ -29,9 +29,9 @@ set(LIBRARY_DIR ${ZSTD_SOURCE_DIR}/lib) # Parse version 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 project(zstd) set(PROJECT_VERSION_MAJOR ${zstd_VERSION_MAJOR}) @@ -41,26 +41,26 @@ if (CMAKE_MAJOR_VERSION LESS 3) enable_language(C) # Main library is in C enable_language(ASM) # And ASM enable_language(CXX) # Testing contributed code also utilizes CXX -else () +else() project(zstd VERSION "${zstd_VERSION_MAJOR}.${zstd_VERSION_MINOR}.${zstd_VERSION_PATCH}" LANGUAGES C # Main library is in C ASM # And ASM CXX # Testing contributed code also utilizes CXX ) -endif () +endif() message(STATUS "ZSTD VERSION: ${zstd_VERSION}") set(zstd_HOMEPAGE_URL "https://facebook.github.io/zstd/") set(zstd_DESCRIPTION "Zstandard is a real-time compression algorithm, providing high compression ratios.") # 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.") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -endif () +endif() #----------------------------------------------------------------------------- # Add extra compilation flags @@ -69,31 +69,31 @@ endif () include(CheckCXXCompilerFlag) include(CheckCCompilerFlag) -function(EnableCompilerFlag _flag _C _CXX) +function(enablecompilerflag _flag _C _CXX) string(REGEX REPLACE "\\+" "PLUS" varname "${_flag}") string(REGEX REPLACE "[^A-Za-z0-9]+" "_" varname "${varname}") string(REGEX REPLACE "^_+" "" varname "${varname}") string(TOUPPER "${varname}" varname) - if (_C) - CHECK_C_COMPILER_FLAG(${_flag} C_FLAG_${varname}) - if (C_FLAG_${varname}) + if(_C) + check_c_compiler_flag(${_flag} C_FLAG_${varname}) + if(C_FLAG_${varname}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}" PARENT_SCOPE) - endif () - endif () - if (_CXX) - CHECK_CXX_COMPILER_FLAG(${_flag} CXX_FLAG_${varname}) - if (CXX_FLAG_${varname}) + endif() + endif() + if(_CXX) + check_cxx_compiler_flag(${_flag} CXX_FLAG_${varname}) + if(CXX_FLAG_${varname}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}" PARENT_SCOPE) - endif () - endif () + endif() + endif() endfunction() -macro(ADD_ZSTD_COMPILATION_FLAGS) - if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" OR MINGW) #Not only UNIX but also WIN32 for MinGW +macro(add_zstd_compilation_flags) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" OR MINGW) #Not only UNIX but also WIN32 for MinGW #Set c++11 by default - EnableCompilerFlag("-std=c++11" false true) + enablecompilerflag("-std=c++11" false true) #Set c99 by default - EnableCompilerFlag("-std=c99" true false) + enablecompilerflag("-std=c99" true false) # if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND MSVC) # # clang-cl normally maps -Wall to -Weverything. # EnableCompilerFlag("/clang:-Wall" true true) @@ -107,51 +107,51 @@ macro(ADD_ZSTD_COMPILATION_FLAGS) # EnableCompilerFlag("-Wcast-qual" true true) # EnableCompilerFlag("-Wstrict-prototypes" true false) # Enable asserts in Debug mode - if (CMAKE_BUILD_TYPE MATCHES "Debug") - EnableCompilerFlag("-DDEBUGLEVEL=1" true true) - endif () - elseif (MSVC) # Add specific compilation flags for Windows Visual + if(CMAKE_BUILD_TYPE MATCHES "Debug") + enablecompilerflag("-DDEBUGLEVEL=1" true true) + endif() + elseif(MSVC) # Add specific compilation flags for Windows Visual set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)") - if (CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION) - EnableCompilerFlag("/MP" true true) - endif () + if(CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION) + enablecompilerflag("/MP" true true) + endif() # UNICODE SUPPORT - EnableCompilerFlag("/D_UNICODE" true true) - EnableCompilerFlag("/DUNICODE" true true) + 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 () + 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 + 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}) + if(${flag_var}) separate_arguments(${flag_var}) string(REPLACE ";" " " ${flag_var} "${${flag_var}}") - endif () - endforeach () + endif() + endforeach() - if (MSVC AND ZSTD_USE_STATIC_RUNTIME) - foreach (flag_var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + 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}) + if(${flag_var}) string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif () - endforeach () - endif () + endif() + endforeach() + endif() endmacro() -ADD_ZSTD_COMPILATION_FLAGS() +add_zstd_compilation_flags() # Always hide XXHash symbols add_definitions(-DXXH_NAMESPACE=ZSTD_) @@ -169,33 +169,33 @@ add_definitions(-DXXH_NAMESPACE=ZSTD_) # Legacy support option(ZSTD_LEGACY_SUPPORT "LEGACY SUPPORT" OFF) -if (ZSTD_LEGACY_SUPPORT) +if(ZSTD_LEGACY_SUPPORT) message(STATUS "ZSTD_LEGACY_SUPPORT defined!") add_definitions(-DZSTD_LEGACY_SUPPORT=5) -else () +else() message(STATUS "ZSTD_LEGACY_SUPPORT not defined!") add_definitions(-DZSTD_LEGACY_SUPPORT=0) -endif () +endif() # Multi-threading support -if (ANDROID) +if(ANDROID) option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" OFF) -else () +else() option(ZSTD_MULTITHREAD_SUPPORT "MULTITHREADING SUPPORT" ON) -endif () +endif() #----------------------------------------------------------------------------- # External dependencies #----------------------------------------------------------------------------- -if (ZSTD_MULTITHREAD_SUPPORT AND UNIX) +if(ZSTD_MULTITHREAD_SUPPORT AND UNIX) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - if (CMAKE_USE_PTHREADS_INIT) + if(CMAKE_USE_PTHREADS_INIT) set(THREADS_LIBS "${CMAKE_THREAD_LIBS_INIT}") - else () + else() message(SEND_ERROR "ZSTD currently does not support thread libraries other than pthreads") - endif () -endif () + endif() +endif() project(libzstd C) @@ -211,11 +211,11 @@ file(GLOB DecompressAsmSources ${LIBRARY_DIR}/decompress/*.S) file(GLOB DictBuilderSources ${LIBRARY_DIR}/dictBuilder/*.c) set(Sources - ${CommonSources} - ${CompressSources} - ${DecompressSources} - ${DecompressAsmSources} - ${DictBuilderSources}) + ${CommonSources} + ${CompressSources} + ${DecompressSources} + ${DecompressAsmSources} + ${DictBuilderSources}) file(GLOB CommonHeaders ${LIBRARY_DIR}/common/*.h) file(GLOB CompressHeaders ${LIBRARY_DIR}/compress/*.h) @@ -223,40 +223,40 @@ file(GLOB DecompressHeaders ${LIBRARY_DIR}/decompress/*.h) file(GLOB DictBuilderHeaders ${LIBRARY_DIR}/dictBuilder/*.h) set(Headers - ${LIBRARY_DIR}/zstd.h - ${CommonHeaders} - ${CompressHeaders} - ${DecompressHeaders} - ${DictBuilderHeaders}) + ${LIBRARY_DIR}/zstd.h + ${CommonHeaders} + ${CompressHeaders} + ${DecompressHeaders} + ${DictBuilderHeaders}) -if (ZSTD_LEGACY_SUPPORT) +if(ZSTD_LEGACY_SUPPORT) set(LIBRARY_LEGACY_DIR ${LIBRARY_DIR}/legacy) include_directories(${LIBRARY_LEGACY_DIR}) set(Sources ${Sources} - ${LIBRARY_LEGACY_DIR}/zstd_v01.c - ${LIBRARY_LEGACY_DIR}/zstd_v02.c - ${LIBRARY_LEGACY_DIR}/zstd_v03.c - ${LIBRARY_LEGACY_DIR}/zstd_v04.c - ${LIBRARY_LEGACY_DIR}/zstd_v05.c - ${LIBRARY_LEGACY_DIR}/zstd_v06.c - ${LIBRARY_LEGACY_DIR}/zstd_v07.c) + ${LIBRARY_LEGACY_DIR}/zstd_v01.c + ${LIBRARY_LEGACY_DIR}/zstd_v02.c + ${LIBRARY_LEGACY_DIR}/zstd_v03.c + ${LIBRARY_LEGACY_DIR}/zstd_v04.c + ${LIBRARY_LEGACY_DIR}/zstd_v05.c + ${LIBRARY_LEGACY_DIR}/zstd_v06.c + ${LIBRARY_LEGACY_DIR}/zstd_v07.c) set(Headers ${Headers} - ${LIBRARY_LEGACY_DIR}/zstd_legacy.h - ${LIBRARY_LEGACY_DIR}/zstd_v01.h - ${LIBRARY_LEGACY_DIR}/zstd_v02.h - ${LIBRARY_LEGACY_DIR}/zstd_v03.h - ${LIBRARY_LEGACY_DIR}/zstd_v04.h - ${LIBRARY_LEGACY_DIR}/zstd_v05.h - ${LIBRARY_LEGACY_DIR}/zstd_v06.h - ${LIBRARY_LEGACY_DIR}/zstd_v07.h) -endif () + ${LIBRARY_LEGACY_DIR}/zstd_legacy.h + ${LIBRARY_LEGACY_DIR}/zstd_v01.h + ${LIBRARY_LEGACY_DIR}/zstd_v02.h + ${LIBRARY_LEGACY_DIR}/zstd_v03.h + ${LIBRARY_LEGACY_DIR}/zstd_v04.h + ${LIBRARY_LEGACY_DIR}/zstd_v05.h + ${LIBRARY_LEGACY_DIR}/zstd_v06.h + ${LIBRARY_LEGACY_DIR}/zstd_v07.h) +endif() -if (MSVC) +if(MSVC) set(MSVC_RESOURCE_DIR ${ZSTD_SOURCE_DIR}/build/VS2010/libzstd-dll) set(PlatformDependResources ${MSVC_RESOURCE_DIR}/libzstd-dll.rc) -endif () +endif() # Explicitly set the language to C for all files, including ASM files. # Our assembly expects to be compiled by a C compiler, and is only enabled for @@ -269,25 +269,25 @@ set(library_targets) #if (ZSTD_BUILD_STATIC) add_library(libzstd_static STATIC ${Sources} ${Headers}) 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") - if (UNIX) + if(UNIX) target_link_libraries(libzstd_static ${THREADS_LIBS}) - endif () -endif () + endif() +endif() #endif () # 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") -endif () +endif() # 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) -else () +else() set(STATIC_LIBRARY_BASE_NAME zstd) -endif () +endif() # Define static and shared library names #if (ZSTD_BUILD_STATIC) @@ -297,6 +297,6 @@ set_target_properties( OUTPUT_NAME ${STATIC_LIBRARY_BASE_NAME}) #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) -endif () +endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 86d6898..352cc4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,21 +24,21 @@ if(APPLE) if(NOT DEFINED AARU_MACOS_TARGET_ARCH) 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") - 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) + 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) + 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) project("Aaru.Compression.Native" C) @@ -81,7 +81,7 @@ if("${CMAKE_BUILD_TYPE}" MATCHES "Release" OR "${CMAKE_BUILD_TYPE}" MATCHES "Rel 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") + elseif(${CMAKE_C_COMPILER_ARCHITECTURE_ID} MATCHES "ARM") add_compile_options("/arch:VFPv4") endif() else() @@ -93,7 +93,7 @@ if("${CMAKE_BUILD_TYPE}" MATCHES "Release" OR "${CMAKE_BUILD_TYPE}" MATCHES "Rel elseif(${AARU_MACOS_TARGET_ARCH} MATCHES "arm64") add_compile_options(-mcpu=apple-m1 -mtune=apple-m1) endif() - 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_COMPILER_ID}" MATCHES "AppleClang") @@ -136,26 +136,26 @@ include(3rdparty/lzfse.cmake) include(3rdparty/lzip.cmake) include(3rdparty/lzma.cmake) -macro(TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE target) +macro(target_link_libraries_whole_archive target) if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC") foreach(arg IN LISTS ARGN) - SET_TARGET_PROPERTIES( + set_target_properties( ${target} PROPERTIES LINK_FLAGS "/WHOLEARCHIVE:${lib}" ) endforeach() else() if("${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") - SET(LINK_FLAGS "-Wl,-all_load") - SET(UNDO_FLAGS "-Wl") + set(LINK_FLAGS "-Wl,-all_load") + set(UNDO_FLAGS "-Wl") else() - SET(LINK_FLAGS "-Wl,--whole-archive") - SET(UNDO_FLAGS "-Wl,--no-whole-archive") + set(LINK_FLAGS "-Wl,--whole-archive") + set(UNDO_FLAGS "-Wl,--no-whole-archive") endif() - TARGET_LINK_LIBRARIES(${target} ${LINK_FLAGS} ${ARGN} ${UNDO_FLAGS}) + target_link_libraries(${target} ${LINK_FLAGS} ${ARGN} ${UNDO_FLAGS}) endif() endmacro() -TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE("Aaru.Compression.Native" libzstd_static m) +target_link_libraries_whole_archive("Aaru.Compression.Native" libzstd_static m) check_include_file("semaphore.h" HAVE_SEMAPHORE_H) @@ -169,7 +169,7 @@ if(HAVE_SEMAPHORE_H) endif() if(HAVE_PTHREAD) - TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE("Aaru.Compression.Native" Threads::Threads) + target_link_libraries_whole_archive("Aaru.Compression.Native" Threads::Threads) endif() if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64"))