From 46f43bc4f78018e0e581938b1def9a18216ff5fb Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Sun, 13 May 2018 11:34:32 +0100 Subject: [PATCH 1/2] cryptopp: Fix compilation on non-x86/x86_64 systems --- externals/cryptopp/CMakeLists.txt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/externals/cryptopp/CMakeLists.txt b/externals/cryptopp/CMakeLists.txt index add5fb444..e5e63d83f 100644 --- a/externals/cryptopp/CMakeLists.txt +++ b/externals/cryptopp/CMakeLists.txt @@ -189,13 +189,20 @@ if(MSVC AND NOT CRYPTOPP_DISABLE_ASM) endif() if ((CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT CRYPTOPP_DISABLE_ASM) - if(${CMAKE_GENERATOR} MATCHES ".*ARM") - message(STATUS "Disabling ASM because ARM is specified as target platform.") - else() - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cryptopp/rijndael-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1 -maes") - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cryptopp/sha-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2 -msha") + check_cxx_compiler_flag(-msse2 CRYPTOPP_HAS_MSSE2) + check_cxx_compiler_flag(-msse4.1 CRYPTOPP_HAS_MSSE41) + check_cxx_compiler_flag(-msse4.2 CRYPTOPP_HAS_MSSE42) + check_cxx_compiler_flag(-maes CRYPTOPP_HAS_MAES) + check_cxx_compiler_flag(-msha CRYPTOPP_HAS_MSHA) + if (CRYPTOPP_HAS_MSSE2) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cryptopp/sse-simd.cpp PROPERTIES COMPILE_FLAGS "-msse2") endif() + if (CRYPTOPP_HAS_MSSE41 AND CRYPTOPP_HAS_MAES) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cryptopp/rijndael-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1 -maes") + endif() + if (CRYPTOPP_HAS_MSSE42 AND CRYPTOPP_HAS_MSHA) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cryptopp/sha-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2 -msha") + endif() endif() #============================================================================ From 101d8964f1cf0a390e94e20139a6262cb727d4ad Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Sun, 13 May 2018 11:34:45 +0100 Subject: [PATCH 2/2] common: Fix compilation on ARM --- src/common/common_funcs.h | 4 +--- src/common/swap.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index d1a716d11..ecb71224c 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -4,7 +4,7 @@ #pragma once -#if !defined(ARCHITECTURE_x86_64) && !defined(ARCHITECTURE_ARM) +#if !defined(ARCHITECTURE_x86_64) #include // for exit #endif #include "common/common_types.h" @@ -32,8 +32,6 @@ #ifdef ARCHITECTURE_x86_64 #define Crash() __asm__ __volatile__("int $3") -#elif defined(ARCHITECTURE_ARM) -#define Crash() __asm__ __volatile__("trap") #else #define Crash() exit(1) #endif diff --git a/src/common/swap.h b/src/common/swap.h index f025f7450..3970a42a1 100644 --- a/src/common/swap.h +++ b/src/common/swap.h @@ -69,7 +69,7 @@ inline u32 swap32(u32 _data) { inline u64 swap64(u64 _data) { return _byteswap_uint64(_data); } -#elif ARCHITECTURE_ARM +#elif defined(ARCHITECTURE_ARM) && (__ARM_ARCH >= 6) inline u16 swap16(u16 _data) { u32 data = _data; __asm__("rev16 %0, %1\n" : "=l"(data) : "l"(data));