diff --git a/3rdparty/lzma-21.03beta/C/AesOpt.c b/3rdparty/lzma-21.03beta/C/AesOpt.c index 8c4de80..6d79635 100644 --- a/3rdparty/lzma-21.03beta/C/AesOpt.c +++ b/3rdparty/lzma-21.03beta/C/AesOpt.c @@ -509,7 +509,7 @@ VAES_COMPAT_STUB (AesCtr_Code_HW) #elif defined(MY_CPU_ARM_OR_ARM64) && defined(MY_CPU_LE) #if defined(__clang__) - #if (__clang_major__ >= 8) && !defined(__ANDROID__) // fix that version check, Android with clang12 doesn't work + #if (__clang_major__ >= 8) && !defined(__ANDROID__) && !defined(__MINGW32__) // fix that version check, Android with clang12 doesn't work, neither does MingW #define USE_HW_AES #endif #elif defined(__GNUC__) diff --git a/3rdparty/lzma-21.03beta/C/Alloc.c b/3rdparty/lzma-21.03beta/C/Alloc.c index d1af76c..242ae3d 100644 --- a/3rdparty/lzma-21.03beta/C/Alloc.c +++ b/3rdparty/lzma-21.03beta/C/Alloc.c @@ -6,7 +6,7 @@ #include #ifdef _WIN32 -#include +#include #endif #include diff --git a/3rdparty/lzma-21.03beta/C/CpuArch.c b/3rdparty/lzma-21.03beta/C/CpuArch.c index fa9afe3..110ced6 100644 --- a/3rdparty/lzma-21.03beta/C/CpuArch.c +++ b/3rdparty/lzma-21.03beta/C/CpuArch.c @@ -217,7 +217,7 @@ BoolInt CPU_Is_InOrder() } #if !defined(MY_CPU_AMD64) && defined(_WIN32) -#include +#include static BoolInt CPU_Sys_Is_SSE_Supported() { OSVERSIONINFO vi; @@ -275,7 +275,7 @@ BoolInt CPU_IsSupported_SHA() // #include #ifdef _WIN32 -#include +#include #endif BoolInt CPU_IsSupported_AVX2() @@ -351,7 +351,7 @@ BoolInt CPU_IsSupported_PageGB() #ifdef _WIN32 -#include +#include BoolInt CPU_IsSupported_CRC32() { return IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } BoolInt CPU_IsSupported_CRYPTO() { return IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) ? 1 : 0; } diff --git a/3rdparty/lzma-21.03beta/C/DllSecur.c b/3rdparty/lzma-21.03beta/C/DllSecur.c index 4b2c521..5ea108a 100644 --- a/3rdparty/lzma-21.03beta/C/DllSecur.c +++ b/3rdparty/lzma-21.03beta/C/DllSecur.c @@ -5,7 +5,7 @@ #ifdef _WIN32 -#include +#include #include "DllSecur.h" diff --git a/3rdparty/lzma-21.03beta/C/Sha256Opt.c b/3rdparty/lzma-21.03beta/C/Sha256Opt.c index 9ebab59..a6dcf34 100644 --- a/3rdparty/lzma-21.03beta/C/Sha256Opt.c +++ b/3rdparty/lzma-21.03beta/C/Sha256Opt.c @@ -215,7 +215,7 @@ void MY_FAST_CALL Sha256_UpdateBlocks_HW(UInt32 state[8], const Byte *data, size #elif defined(MY_CPU_ARM_OR_ARM64) #if defined(__clang__) - #if (__clang_major__ >= 8) && !defined(__ANDROID__) // fix that version check, Android with clang12 doesn't work + #if (__clang_major__ >= 8) && !defined(__ANDROID__) && !defined(__MINGW32__) // fix that version check, Android with clang12 doesn't work, neither does MingW #define USE_HW_SHA #endif #elif defined(__GNUC__) diff --git a/3rdparty/lzma-21.03beta/C/Threads.h b/3rdparty/lzma-21.03beta/C/Threads.h index 9e70eca..aa6dfd1 100644 --- a/3rdparty/lzma-21.03beta/C/Threads.h +++ b/3rdparty/lzma-21.03beta/C/Threads.h @@ -5,7 +5,7 @@ #define __7Z_THREADS_H #ifdef _WIN32 -#include +#include #else #if defined(__linux__) diff --git a/3rdparty/lzma-21.03beta/CPP/Common/MyWindows.h b/3rdparty/lzma-21.03beta/CPP/Common/MyWindows.h index 0664a5e..8aecff7 100644 --- a/3rdparty/lzma-21.03beta/CPP/Common/MyWindows.h +++ b/3rdparty/lzma-21.03beta/CPP/Common/MyWindows.h @@ -5,7 +5,7 @@ #ifdef _WIN32 -#include +#include #ifdef UNDER_CE #undef VARIANT_TRUE diff --git a/3rdparty/lzma.cmake b/3rdparty/lzma.cmake index 48d8226..6ff0b20 100644 --- a/3rdparty/lzma.cmake +++ b/3rdparty/lzma.cmake @@ -5,7 +5,9 @@ set("LZMA_ASM_DIRECTORY" "lzma-21.03beta/Asm") add_library(lzma STATIC) -set_property(TARGET lzma PROPERTY POSITION_INDEPENDENT_CODE ON) +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 lzma PROPERTY POSITION_INDEPENDENT_CODE ON) +endif() target_compile_definitions(lzma PUBLIC _REENTRANT) target_compile_definitions(lzma PUBLIC _FILE_OFFSET_BITS) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9de984..dfc925f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,8 +36,6 @@ message("Detected compiler: ${CMAKE_C_COMPILER_ID}") message("Detected build type: ${CMAKE_BUILD_TYPE}") message("Detected platform: ${CMAKE_C_PLATFORM_ID}") -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - if("${CMAKE_BUILD_TYPE}" MATCHES "Release") if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC") add_compile_options("/O2" "/fp:fast") @@ -57,6 +55,8 @@ if("${CMAKE_BUILD_TYPE}" MATCHES "Release") if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW") add_compile_options(-flto) endif() + + set(CMAKE_POSITION_INDEPENDENT_CODE ON) elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") add_compile_options(-march=armv8-a) @@ -64,8 +64,13 @@ if("${CMAKE_BUILD_TYPE}" MATCHES "Release") if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW") add_compile_options(-flto) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7l" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") + if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW") + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + endif() + if(NOT "${CMAKE_C_COMPILER_ID}" MATCHES "AppleClang") add_compile_options(-march=armv7+fp -mfpu=vfpv3-d16) endif() diff --git a/build.sh b/build.sh index 72a8343..ec3980f 100755 --- a/build.sh +++ b/build.sh @@ -137,24 +137,36 @@ mv libAaru.Compression.Native.so runtimes/linux-x64/native/ ## Linux (x86) # Detected system processor: i686 -# [ 62%] Linking C static library liblzfse.a -# Error running link command: No such file or directory rm -f CMakeCache.txt mkdir -p runtimes/linux-x86/native docker run --rm dockcross/linux-x86 > docker/dockcross-linux-x86 chmod +x docker/dockcross-linux-x86 docker/dockcross-linux-x86 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 -DCMAKE_POLICY_DEFAULT_CMP0077=NEW -DCMAKE_POLICY_DEFAULT_CMP0069=NEW . +sed -e 's/CMAKE_C_COMPILER_AR\-NOTFOUND/\/usr\/i686-linux-gnu\/bin\/i686-linux-gnu-ar/g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt > link.txt +mv link.txt ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt +sed -e 's/CMAKE_C_COMPILER_RANLIB\-NOTFOUND/ranlib/g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt > link.txt +mv link.txt ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt docker/dockcross-linux-x86 make Aaru.Compression.Native mv libAaru.Compression.Native.so runtimes/linux-x86/native/ ## Windows (ARM) # Detected system processor: arm -# -fPIE incompatible +# undefined symbols in lzma/aes and flac rm -f CMakeCache.txt mkdir -p runtimes/win-arm/native docker run --rm dockcross/windows-armv7 > docker/dockcross-win-arm chmod +x docker/dockcross-win-arm docker/dockcross-win-arm cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 -DCMAKE_POLICY_DEFAULT_CMP0077=NEW -DCMAKE_POLICY_DEFAULT_CMP0069=NEW . +sed -e 's/\-fPIC\s//g' ./3rdparty/bzip2/CMakeFiles/bz2_static.dir/flags.make > flags.make +mv flags.make ./3rdparty/bzip2/CMakeFiles/bz2_static.dir/flags.make +sed -e 's/\-fPIC\s//g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/flags.make > flags.make +mv flags.make ./3rdparty/lzfse/CMakeFiles/lzfse.dir/flags.make +sed -e 's/CMAKE_C_COMPILER_AR\-NOTFOUND/\/usr\/xcc\/armv7-w64-mingw32-cross\/bin\/aarch64-w64-mingw32-ar/g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt > link.txt +mv link.txt ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt +sed -e 's/CMAKE_C_COMPILER_RANLIB\-NOTFOUND/\/usr\/xcc\/armv7-w64-mingw32-cross\/bin\/aarch64-w64-mingw32-ranlib/g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt > link.txt +mv link.txt ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt +sed -e 's/\-fPIC\s//g' ./3rdparty/zstd-1.5.0/build/cmake/lib/CMakeFiles/libzstd_static.dir/flags.make > flags.make +mv flags.make ./3rdparty/zstd-1.5.0/build/cmake/lib/CMakeFiles/libzstd_static.dir/flags.make sed -e 's/\-fPIC\s//g' ./CMakeFiles/Aaru.Compression.Native.dir/link.txt > link.txt mv link.txt ./CMakeFiles/Aaru.Compression.Native.dir/link.txt sed -e 's/\-fPIC\s//g' ./CMakeFiles/Aaru.Compression.Native.dir/flags.make > flags.make @@ -166,12 +178,22 @@ mv libAaru.Compression.Native.so runtimes/win-arm/native/libAaru.Compression.Nat ## Windows (ARM64) # Detected system processor: aarch64 -# -fPIE incompatible +# undefined symbols in lzma/aes and flac rm -f CMakeCache.txt mkdir -p runtimes/win-arm64/native docker run --rm dockcross/windows-arm64 > docker/dockcross-win-arm64 chmod +x docker/dockcross-win-arm64 docker/dockcross-win-arm64 cmake -DCMAKE_BUILD_TYPE=Release -DAARU_BUILD_PACKAGE=1 -DCMAKE_POLICY_DEFAULT_CMP0077=NEW -DCMAKE_POLICY_DEFAULT_CMP0069=NEW . +sed -e 's/\-fPIC\s//g' ./3rdparty/bzip2/CMakeFiles/bz2_static.dir/flags.make > flags.make +mv flags.make ./3rdparty/bzip2/CMakeFiles/bz2_static.dir/flags.make +sed -e 's/\-fPIC\s//g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/flags.make > flags.make +mv flags.make ./3rdparty/lzfse/CMakeFiles/lzfse.dir/flags.make +sed -e 's/CMAKE_C_COMPILER_AR\-NOTFOUND/\/usr\/xcc\/aarch64-w64-mingw32-cross\/bin\/aarch64-w64-mingw32-ar/g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt > link.txt +mv link.txt ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt +sed -e 's/CMAKE_C_COMPILER_RANLIB\-NOTFOUND/\/usr\/xcc\/aarch64-w64-mingw32-cross\/bin\/aarch64-w64-mingw32-ranlib/g' ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt > link.txt +mv link.txt ./3rdparty/lzfse/CMakeFiles/lzfse.dir/link.txt +sed -e 's/\-fPIC\s//g' ./3rdparty/zstd-1.5.0/build/cmake/lib/CMakeFiles/libzstd_static.dir/flags.make > flags.make +mv flags.make ./3rdparty/zstd-1.5.0/build/cmake/lib/CMakeFiles/libzstd_static.dir/flags.make sed -e 's/\-fPIC\s//g' ./CMakeFiles/Aaru.Compression.Native.dir/link.txt > link.txt mv link.txt ./CMakeFiles/Aaru.Compression.Native.dir/link.txt sed -e 's/\-fPIC\s//g' ./CMakeFiles/Aaru.Compression.Native.dir/flags.make > flags.make