parent
052c06b2ea
commit
33d20af445
232
CMakeLists.txt
232
CMakeLists.txt
|
|
@ -59,19 +59,12 @@ set(CRYPTOPP_DATA_DIR "" CACHE PATH "Crypto++ test data directory")
|
|||
# Always 1 ahead in Master. Also see http://groups.google.com/forum/#!topic/cryptopp-users/SFhqLDTQPG4
|
||||
set(LIB_VER ${cryptopp_VERSION_MAJOR}${cryptopp_VERSION_MINOR}${cryptopp_VERSION_PATCH})
|
||||
|
||||
# Only set when cross-compiling, http://www.vtk.org/Wiki/CMake_Cross_Compiling
|
||||
if (NOT (CMAKE_SYSTEM_VERSION AND CMAKE_SYSTEM_PROCESSOR))
|
||||
set(CRYPTOPP_CROSS_COMPILE 1)
|
||||
else()
|
||||
set(CRYPTOPP_CROSS_COMPILE 0)
|
||||
endif()
|
||||
|
||||
# Don't use RPATH's. The resulting binary could fail a security audit.
|
||||
if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
|
||||
set(CMAKE_MACOSX_RPATH 0)
|
||||
endif ()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
add_definitions(-wd68 -wd186 -wd279 -wd327 -wd161 -wd3180)
|
||||
endif ()
|
||||
|
||||
|
|
@ -99,31 +92,61 @@ endif()
|
|||
|
||||
###############################################################################
|
||||
|
||||
function(CheckCompilerOption option variable)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
|
||||
|
||||
message(STATUS "Performing Test ${variable}")
|
||||
execute_process(
|
||||
COMMAND sh -c "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${option} -E -xdumpmacros /dev/null 2>&1"
|
||||
COMMAND egrep -i -c "illegal value ignored"
|
||||
RESULT_VARIABLE COMMAND_RESULT
|
||||
OUTPUT_VARIABLE COMMAND_OUTPUT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# No dereference below. Thanks for the warning, CMake (not!).
|
||||
if (COMMAND_RESULT STREQUAL "1" AND COMMAND_OUTPUT STREQUAL "0")
|
||||
set(${variable} 1 PARENT_SCOPE)
|
||||
message(STATUS "Performing Test ${variable} - Success")
|
||||
else ()
|
||||
set(${variable} 0 PARENT_SCOPE)
|
||||
message(STATUS "Performing Test ${variable} - Failed")
|
||||
endif ()
|
||||
|
||||
else ()
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG(${option} ${variable})
|
||||
|
||||
endif ()
|
||||
|
||||
endfunction(CheckCompilerOption)
|
||||
|
||||
###############################################################################
|
||||
|
||||
function(DumpMachine output pattern)
|
||||
execute_process(
|
||||
COMMAND sh -c "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1"
|
||||
COMMAND egrep -i -c "${pattern}" # grep cmd intentionally not set/expanded, see http://github.com/weidai11/cryptopp/issues/466
|
||||
COMMAND egrep -i -c "${pattern}"
|
||||
OUTPUT_VARIABLE ${output}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set(${output} "${${output}}" PARENT_SCOPE)
|
||||
endfunction(DumpMachine)
|
||||
|
||||
# Thansk to Anonimal for MinGW; see http://github.com/weidai11/cryptopp/issues/466
|
||||
DumpMachine(CRYPTOPP_AMD64 "amd64|x86_64")
|
||||
DumpMachine(CRYPTOPP_I386 "i.86")
|
||||
DumpMachine(CRYPTOPP_MINGW32 "\\<mingw32\\>") # http://github.com/weidai11/cryptopp/issues/466
|
||||
DumpMachine(CRYPTOPP_MINGW64 "w64-mingw32|mingw64") # http://github.com/weidai11/cryptopp/issues/466
|
||||
DumpMachine(CRYPTOPP_MINGW32 "\\<mingw32\\>")
|
||||
DumpMachine(CRYPTOPP_MINGW64 "w64-mingw32|mingw64")
|
||||
DumpMachine(CRYPTOPP_X32 "x32")
|
||||
DumpMachine(CRYPTOPP_AARCH32 "Aarch32")
|
||||
DumpMachine(CRYPTOPP_AARCH64 "Aarch64")
|
||||
DumpMachine(CRYPTOPP_ARM "\\<arm\\>|armhf|arm7l") # http://stackoverflow.com/q/12515462/608639
|
||||
DumpMachine(CRYPTOPP_ARMHF "armhf|arm7l|eabihf")
|
||||
DumpMachine(CRYPTOPP_ARM "\\<arm\\>")
|
||||
|
||||
###############################################################################
|
||||
|
||||
# Tests for Solaris and SunCC
|
||||
set(CRYPTOPP_SOLARIS 0)
|
||||
|
||||
# Test SunCC for a string like 'CC: Sun C++ 5.13 SunOS_i386'
|
||||
if (CRYPTOPP_SOLARIS MATCHES "0")
|
||||
if (NOT CRYPTOPP_SOLARIS)
|
||||
execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -V 2>&1"
|
||||
COMMAND egrep -i -c "SunOS"
|
||||
OUTPUT_VARIABLE CRYPTOPP_SOLARIS
|
||||
|
|
@ -131,7 +154,7 @@ if (CRYPTOPP_SOLARIS MATCHES "0")
|
|||
endif ()
|
||||
|
||||
# Test GCC for a string like 'i386-pc-solaris2.11'
|
||||
if (CRYPTOPP_SOLARIS MATCHES "0")
|
||||
if (NOT CRYPTOPP_SOLARIS)
|
||||
execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1"
|
||||
COMMAND egrep -i -c "Solaris"
|
||||
OUTPUT_VARIABLE CRYPTOPP_SOLARIS
|
||||
|
|
@ -139,7 +162,7 @@ if (CRYPTOPP_SOLARIS MATCHES "0")
|
|||
endif ()
|
||||
|
||||
# DumpMachine SunCC style
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
|
||||
|
||||
# SunCC is 32-bit, but it builds both 32 and 64 bit. Use
|
||||
execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -V 2>&1"
|
||||
|
|
@ -172,16 +195,18 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
|
|||
OUTPUT_VARIABLE KERNEL_SPARC64
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if(CRYPTOPP_NATIVE_ARCH MATCHES "1" AND KERNEL_I386)
|
||||
# Build for 32-bit on 64-bit kernels unless Native Arch is
|
||||
# specified. Note that this is a policy provided by Sun.
|
||||
if (CRYPTOPP_NATIVE_ARCH AND KERNEL_I386)
|
||||
unset(CRYPTOPP_AMD64)
|
||||
set(CRYPTOPP_I386 1)
|
||||
elseif(CRYPTOPP_NATIVE_ARCH MATCHES "1" AND KERNEL_AMD64)
|
||||
elseif (CRYPTOPP_NATIVE_ARCH AND KERNEL_AMD64)
|
||||
unset(CRYPTOPP_I386)
|
||||
set(CRYPTOPP_AMD64 1)
|
||||
elseif(CRYPTOPP_NATIVE_ARCH MATCHES "1" AND KERNEL_SPARC)
|
||||
elseif (CRYPTOPP_NATIVE_ARCH AND KERNEL_SPARC)
|
||||
unset(KERNEL_SPARC64)
|
||||
set(KERNEL_SPARC 1)
|
||||
elseif(CRYPTOPP_NATIVE_ARCH MATCHES "1" AND KERNEL_SPARC64)
|
||||
elseif (CRYPTOPP_NATIVE_ARCH AND KERNEL_SPARC64)
|
||||
unset(KERNEL_SPARC)
|
||||
set(KERNEL_SPARC64 1)
|
||||
endif ()
|
||||
|
|
@ -189,7 +214,7 @@ endif()
|
|||
|
||||
###############################################################################
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
|
||||
execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} --version 2>&1"
|
||||
COMMAND egrep -i -c "macports"
|
||||
|
|
@ -255,43 +280,37 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|||
endif ()
|
||||
|
||||
# TODO: what about ICC and LLVM on Windows?
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
if("${CMAKE_SYSTEM_VERSION}" MATCHES "10\\.0.*")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
if (CMAKE_SYSTEM_VERSION MATCHES "10\\.0.*")
|
||||
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D\"_WIN32_WINNT=0x0A00\"" )
|
||||
endif ()
|
||||
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FI\"winapifamily.h\"" )
|
||||
endif ()
|
||||
|
||||
# Enable PIC for all targets except 32-bit x86.
|
||||
# Avoid on 32-bit x86 due to register pressures.
|
||||
# Enable PIC for all target machines except 32-bit i386 due to register pressures.
|
||||
if (NOT CRYPTOPP_I386)
|
||||
SET(CMAKE_POSITION_INDEPENDENT_CODE 1)
|
||||
endif ()
|
||||
|
||||
# Solaris specific
|
||||
if(CRYPTOPP_SOLARIS MATCHES "1" AND CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
|
||||
if (CRYPTOPP_SOLARIS EQUAL 1)
|
||||
|
||||
# Determine 32-bit vs 64-bit
|
||||
if (CRYPTOPP_AMD64 MATCHES "1" OR CRYPTOPP_SPARC64 MATCHES "1")
|
||||
if (CRYPTOPP_AMD64 EQUAL 1 OR CRYPTOPP_SPARC64 EQUAL 1)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
||||
else ()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
endif ()
|
||||
|
||||
# SunCC needs -template=no%extdef
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -template=no%extdef")
|
||||
|
||||
elseif(CRYPTOPP_SOLARIS MATCHES "1" AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
|
||||
# Determine 32-bit vs 64-bit
|
||||
if (CRYPTOPP_AMD64 MATCHES "1" OR CRYPTOPP_SPARC64 MATCHES "1")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
||||
else()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
||||
endif ()
|
||||
|
||||
# GCC needs to enable use of '/'
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,--divide")
|
||||
endif ()
|
||||
|
||||
endif ()
|
||||
|
||||
|
|
@ -307,6 +326,11 @@ endif()
|
|||
|
||||
# Library headers
|
||||
file(GLOB cryptopp_HEADERS *.h)
|
||||
# Remove headers used to build test suite
|
||||
list(REMOVE_ITEM cryptopp_HEADERS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/bench.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/validate.h
|
||||
)
|
||||
|
||||
# Test sources. You can use the GNUmakefile to generate the list: `make sources`.
|
||||
file(GLOB cryptopp_SOURCES_TEST test.cpp bench1.cpp bench2.cpp validat0.cpp validat1.cpp validat2.cpp validat3.cpp adhoc.cpp datatest.cpp regtest1.cpp regtest2.cpp regtest3.cpp fipsalgt.cpp dlltest.cpp fipstest.cpp)
|
||||
|
|
@ -361,92 +385,93 @@ endif()
|
|||
#============================================================================
|
||||
|
||||
# New as of Pull Request 461, http://github.com/weidai11/cryptopp/pull/461.
|
||||
if (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"))
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
|
||||
if (("${CRYPTOPP_AMD64}" STREQUAL "1") OR ("${CRYPTOPP_I386}" STREQUAL "1") OR ("${CRYPTOPP_X32}" STREQUAL "1"))
|
||||
if (CRYPTOPP_AMD64 EQUAL 1 OR CRYPTOPP_I386 EQUAL 1 OR CRYPTOPP_X32 EQUAL 1)
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG("-mssse3" CRYPTOPP_IA32_SSSE3)
|
||||
CHECK_CXX_COMPILER_FLAG("-msse4.2" CRYPTOPP_IA32_SSE4)
|
||||
CHECK_CXX_COMPILER_FLAG("-mssse3 -mpclmul" CRYPTOPP_IA32_CLMUL)
|
||||
CHECK_CXX_COMPILER_FLAG("-msse4.1 -maes" CRYPTOPP_IA32_AES)
|
||||
CHECK_CXX_COMPILER_FLAG("-msse4.2 -msha" CRYPTOPP_IA32_SHA)
|
||||
CHECK_CXX_COMPILER_FLAG("-march=native" CRYPTOPP_IA32_NATIVE)
|
||||
CheckCompilerOption("-mssse3" CRYPTOPP_IA32_SSSE3)
|
||||
CheckCompilerOption("-msse4.2" CRYPTOPP_IA32_SSE4)
|
||||
CheckCompilerOption("-mssse3 -mpclmul" CRYPTOPP_IA32_CLMUL)
|
||||
CheckCompilerOption("-msse4.1 -maes" CRYPTOPP_IA32_AES)
|
||||
CheckCompilerOption("-msse4.2 -msha" CRYPTOPP_IA32_SHA)
|
||||
CheckCompilerOption("-march=native" CRYPTOPP_IA32_NATIVE)
|
||||
|
||||
# Deferred native arch; added to all CXXFLAGS
|
||||
if (CRYPTOPP_NATIVE_ARCH AND "${CRYPTOPP_IA32_NATIVE}" STREQUAL "1")
|
||||
if (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_IA32_NATIVE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH)
|
||||
message(WARNING "CRYPTOPP_NATIVE_ARCH enabled, but failed to detect native architecture")
|
||||
endif ()
|
||||
|
||||
if ("${CRYPTOPP_IA32_SSSE3}" STREQUAL "1" AND NOT DISABLE_SSSE3)
|
||||
if (CRYPTOPP_IA32_SSSE3 EQUAL 1 AND NOT DISABLE_SSSE3)
|
||||
set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3")
|
||||
if ("${CRYPTOPP_IA32_SSE4}" STREQUAL "1" AND NOT DISABLE_SSE4)
|
||||
if (CRYPTOPP_IA32_SSE4 EQUAL 1 AND NOT DISABLE_SSE4)
|
||||
set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2")
|
||||
set_source_files_properties(crc-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2")
|
||||
if ("${CRYPTOPP_IA32_CLMUL}" STREQUAL "1" AND NOT DISABLE_AES)
|
||||
if (CRYPTOPP_IA32_CLMUL STREQUAL "1" AND NOT DISABLE_AES)
|
||||
set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3 -mpclmul")
|
||||
endif ()
|
||||
if ("${CRYPTOPP_IA32_AES}" STREQUAL "1" AND NOT DISABLE_AES)
|
||||
if (CRYPTOPP_IA32_AES STREQUAL "1" AND NOT DISABLE_AES)
|
||||
set_source_files_properties(rijndael-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1 -maes")
|
||||
endif ()
|
||||
if ("${CRYPTOPP_IA32_SHA}" STREQUAL "1" AND NOT DISABLE_SHA)
|
||||
if (CRYPTOPP_IA32_SHA STREQUAL "1" AND NOT DISABLE_SHA)
|
||||
set_source_files_properties(sha-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2 -msha")
|
||||
set_source_files_properties(shacal2-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2 -msha")
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
elseif (("${CRYPTOPP_AARCH32}" STREQUAL "1") OR ("${CRYPTOPP_AARCH64}" STREQUAL "1") OR ("${CRYPTOPP_ARMV8}" STREQUAL "1"))
|
||||
elseif (CRYPTOPP_AARCH32 EQUAL 1 OR CRYPTOPP_AARCH64 EQUAL 1)
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG("-march=armv8-a" CRYPTOPP_ARMV8A_ASIMD)
|
||||
CHECK_CXX_COMPILER_FLAG("-march=armv8-a+crc" CRYPTOPP_ARMV8A_CRC)
|
||||
CHECK_CXX_COMPILER_FLAG("-march=armv8-a+crypto" CRYPTOPP_ARMV8A_CRYPTO)
|
||||
CHECK_CXX_COMPILER_FLAG("-march=armv8-a" CRYPTOPP_ARMV8A_NATIVE)
|
||||
CheckCompilerOption("-march=armv8-a" CRYPTOPP_ARMV8A_BASE)
|
||||
CheckCompilerOption("-march=armv8-a+crc" CRYPTOPP_ARMV8A_CRC)
|
||||
CheckCompilerOption("-march=armv8-a+crypto" CRYPTOPP_ARMV8A_CRYPTO)
|
||||
CheckCompilerOption("-march=armv8-a" CRYPTOPP_ARMV8A_NATIVE)
|
||||
|
||||
# Deferred native arch; added to all CXXFLAGS
|
||||
if (CRYPTOPP_NATIVE_ARCH AND "${CRYPTOPP_ARMV8A_NATIVE}" STREQUAL "1")
|
||||
if (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_ARMV8A_NATIVE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH)
|
||||
message(WARNING "CRYPTOPP_NATIVE_ARCH enabled, but failed to detect native architecture")
|
||||
endif ()
|
||||
|
||||
if ("${CRYPTOPP_ARMV8A_ASIMD}" STREQUAL "1")
|
||||
if (CRYPTOPP_ARMV8A_BASE EQUAL 1)
|
||||
set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a")
|
||||
set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a")
|
||||
set_source_files_properties(neon-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a")
|
||||
endif ()
|
||||
if ("${CRYPTOPP_ARMV8A_CRC}" STREQUAL "1")
|
||||
if (CRYPTOPP_ARMV8A_CRC EQUAL 1)
|
||||
set_source_files_properties(crc-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crc")
|
||||
endif ()
|
||||
if ("${CRYPTOPP_ARMV8A_CRYPTO}" STREQUAL "1")
|
||||
if (CRYPTOPP_ARMV8A_CRYPTO EQUAL 1)
|
||||
set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto")
|
||||
set_source_files_properties(rijndael-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto")
|
||||
set_source_files_properties(sha-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto")
|
||||
set_source_files_properties(shacal2-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto")
|
||||
endif ()
|
||||
|
||||
elseif (("${CRYPTOPP_ARM}" STREQUAL "1") OR ("${CRYPTOPP_ARMHF}" STREQUAL "1"))
|
||||
elseif (CRYPTOPP_ARM EQUAL 1 OR CRYPTOPP_ARMHF EQUAL 1)
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG("-march=armv7-a -mfloat-abi=hard -mfpu=neon" CRYPTOPP_ARMV7A_HARD)
|
||||
CHECK_CXX_COMPILER_FLAG("-march=armv7-a -mfloat-abi=softfp -mfpu=neon" CRYPTOPP_ARMV7A_SOFTFP)
|
||||
CheckCompilerOption("-march=armv7-a -mfpu=neon" CRYPTOPP_ARMV7A_NEON)
|
||||
CheckCompilerOption("-march=armv7-a -mfloat-abi=hard" CRYPTOPP_ARMV7A_HARD)
|
||||
CheckCompilerOption("-march=armv7-a -mfloat-abi=softfp" CRYPTOPP_ARMV7A_SOFTFP)
|
||||
|
||||
# Deferred native arch; added to all CXXFLAGS
|
||||
if (CRYPTOPP_NATIVE_ARCH AND "${CRYPTOPP_ARMV7A_HARD}" STREQUAL "1")
|
||||
if (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_ARMV7A_HARD)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mfloat-abi=hard -mfpu=neon")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH AND "${CRYPTOPP_ARMV7A_SOFTFP}" STREQUAL "1")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_ARMV7A_SOFTFP)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mfloat-abi=softfp -mfpu=neon")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH)
|
||||
message(WARNING "CRYPTOPP_NATIVE_ARCH enabled, but failed to detect native architecture")
|
||||
endif ()
|
||||
|
||||
if ("${CRYPTOPP_ARMV7A_HARD}" STREQUAL "1")
|
||||
if (CRYPTOPP_ARMV7A_HARD AND CRYPTOPP_ARMV7A_NEON)
|
||||
# Need to set floating point ABI to something, like "hard" of "softfp". Most Linux use hard floats ("hard").
|
||||
set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
|
||||
set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
|
||||
set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
|
||||
set_source_files_properties(neon-simd.cpp PROPERTIES COMPILE_FLAGS "-mfloat-abi=hard -mfpu=neon")
|
||||
elseif ("${CRYPTOPP_ARMV7A_SOFTFP}" STREQUAL "1")
|
||||
elseif (CRYPTOPP_ARMV7A_SOFTFP AND CRYPTOPP_ARMV7A_NEON)
|
||||
# Need to set floating point ABI to something, like "hard" of "softfp". Most Linux use hard floats ("hard").
|
||||
set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=softfp -mfpu=neon")
|
||||
set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=softfp -mfpu=neon")
|
||||
|
|
@ -457,19 +482,19 @@ if (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}"
|
|||
endif ()
|
||||
|
||||
# New as of Pull Request 461, http://github.com/weidai11/cryptopp/pull/461.
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
|
||||
|
||||
if ((CRYPTOPP_AMD64 MATCHES "1") OR (CRYPTOPP_I386 MATCHES "1") OR (CRYPTOPP_X32 MATCHES "1"))
|
||||
if (CRYPTOPP_AMD64 EQUAL 1 OR CRYPTOPP_I386 EQUAL 1 OR CRYPTOPP_X32 EQUAL 1)
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG("-xarch=ssse3" CRYPTOPP_IA32_SSSE3)
|
||||
CHECK_CXX_COMPILER_FLAG("-xarch=sse4_2" CRYPTOPP_IA32_SSE4)
|
||||
CHECK_CXX_COMPILER_FLAG("-xarch=aes" CRYPTOPP_IA32_CLMUL)
|
||||
CHECK_CXX_COMPILER_FLAG("-xarch=aes" CRYPTOPP_IA32_AES)
|
||||
CHECK_CXX_COMPILER_FLAG("-xarch=sha" CRYPTOPP_IA32_SHA)
|
||||
CHECK_CXX_COMPILER_FLAG("-native" CRYPTOPP_IA32_NATIVE)
|
||||
CheckCompilerOption("-xarch=ssse3" CRYPTOPP_IA32_SSSE3)
|
||||
CheckCompilerOption("-xarch=sse4_2" CRYPTOPP_IA32_SSE4)
|
||||
CheckCompilerOption("-xarch=aes" CRYPTOPP_IA32_CLMUL)
|
||||
CheckCompilerOption("-xarch=aes" CRYPTOPP_IA32_AES)
|
||||
CheckCompilerOption("-xarch=sha" CRYPTOPP_IA32_SHA)
|
||||
CheckCompilerOption("-native" CRYPTOPP_IA32_NATIVE)
|
||||
|
||||
# Deferred native arch; added to all CXXFLAGS
|
||||
if (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_IA32_NATIVE MATCHES "1")
|
||||
if (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_IA32_NATIVE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -native")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH)
|
||||
message(WARNING "CRYPTOPP_NATIVE_ARCH enabled, but failed to detect native architecture")
|
||||
|
|
@ -477,33 +502,33 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
|
|||
|
||||
if (CRYPTOPP_IA32_SSSE3 STREQUAL "1" AND NOT DISABLE_SSSE3)
|
||||
set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=ssse3")
|
||||
if (CRYPTOPP_IA32_SSE4 MATCHES "1" AND NOT DISABLE_SSE4)
|
||||
if (CRYPTOPP_IA32_SSE4 STREQUAL "1" AND NOT DISABLE_SSE4)
|
||||
set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse4_2")
|
||||
set_source_files_properties(crc-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse4_2")
|
||||
if (CRYPTOPP_IA32_CLMUL MATCHES "1" AND NOT DISABLE_AES)
|
||||
if (CRYPTOPP_IA32_CLMUL STREQUAL "1" AND NOT DISABLE_AES)
|
||||
set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=aes")
|
||||
endif ()
|
||||
if (CRYPTOPP_IA32_AES MATCHES "1" AND NOT DISABLE_AES)
|
||||
if (CRYPTOPP_IA32_AES STREQUAL "1" AND NOT DISABLE_AES)
|
||||
set_source_files_properties(rijndael-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=aes")
|
||||
endif ()
|
||||
if (CRYPTOPP_IA32_SHA MATCHES "1" AND NOT DISABLE_SHA)
|
||||
if (CRYPTOPP_IA32_SHA STREQUAL "1" AND NOT DISABLE_SHA)
|
||||
set_source_files_properties(sha-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sha")
|
||||
set_source_files_properties(shacal2-simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sha")
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
elseif (CRYPTOPP_SPARC MATCHES "1" OR CRYPTOPP_SPARC64 MATCHES "1")
|
||||
elseif (CRYPTOPP_SPARC EQUAL 1 OR CRYPTOPP_SPARC64 EQUAL 1)
|
||||
|
||||
# Sparc's need -xmemalign=4i
|
||||
CHECK_CXX_COMPILER_FLAG("-xmemalign=4i" CRYPTOPP_SPARC_MEMALIGN)
|
||||
CheckCompilerOption("-xmemalign=4i" CRYPTOPP_SUN_MEMALIGN)
|
||||
|
||||
if (CRYPTOPP_SPARC_MEMALIGN MATCHES "1")
|
||||
if (CRYPTOPP_SUN_MEMALIGN STREQUAL "1")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xmemalign=4i")
|
||||
endif ()
|
||||
|
||||
# Deferred native arch; added to all CXXFLAGS
|
||||
if (CRYPTOPP_NATIVE_ARCH AND "${CRYPTOPP_SPARC_NATIVE}" STREQUAL "1")
|
||||
if (CRYPTOPP_NATIVE_ARCH AND CRYPTOPP_SPARC_NATIVE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -native")
|
||||
elseif (CRYPTOPP_NATIVE_ARCH)
|
||||
message(WARNING "CRYPTOPP_NATIVE_ARCH enabled, but failed to detect native architecture")
|
||||
|
|
@ -590,7 +615,7 @@ if(WIN32)
|
|||
endif ()
|
||||
|
||||
# This may need to be expanded to "Solaris"
|
||||
if ("${UNAME_SYSTEM}" STREQUAL "SunOS")
|
||||
if (CRYPTOPP_SOLARIS)
|
||||
if (BUILD_STATIC)
|
||||
target_link_libraries(cryptopp-static nsl socket)
|
||||
endif ()
|
||||
|
|
@ -704,11 +729,38 @@ endif()
|
|||
|
||||
# Print a configuration summary. We want CXX and CXXFLAGS, but they are not includd in ALL.
|
||||
if (NOT CMAKE_VERSION VERSION_LESS 3.0.2)
|
||||
include(FeatureSummary)
|
||||
message(STATUS "Compiler: ${CXX}")
|
||||
if (CRYPTOPP_I386)
|
||||
message(STATUS "Platform: i386/i686")
|
||||
elseif (CRYPTOPP_AMD64)
|
||||
message(STATUS "Platform: amd64")
|
||||
elseif (CRYPTOPP_X32)
|
||||
message(STATUS "Platform: x86_64-x32")
|
||||
elseif (CRYPTOPP_ARMHF)
|
||||
message(STATUS "Platform: armhf")
|
||||
elseif (CRYPTOPP_ARM)
|
||||
message(STATUS "Platform: arm")
|
||||
elseif (CRYPTOPP_AARCH32)
|
||||
message(STATUS "Platform: Aarch32")
|
||||
elseif (CRYPTOPP_AARCH64)
|
||||
message(STATUS "Platform: Aarch64")
|
||||
elseif (CRYPTOPP_SPARC)
|
||||
message(STATUS "Platform: Sparc")
|
||||
elseif (CRYPTOPP_SPARC64)
|
||||
message(STATUS "Platform: Sparc64")
|
||||
elseif (CRYPTOPP_MINGW32)
|
||||
message(STATUS "Platform: MinGW-32")
|
||||
elseif (CRYPTOPP_MINGW32)
|
||||
message(STATUS "Platform: MinGW-64")
|
||||
endif ()
|
||||
if (CRYPTOPP_ARMV7A_NEON)
|
||||
message(STATUS "NEON: TRUE")
|
||||
endif ()
|
||||
if (CRYPTOPP_NATIVE_ARCH)
|
||||
message(STATUS "Native arch: TRUE")
|
||||
else ()
|
||||
message(STATUS "Native arch: FALSE")
|
||||
endif ()
|
||||
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER}")
|
||||
message(STATUS "Flags: ${CMAKE_CXX_FLAGS}")
|
||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||
feature_summary(WHAT ALL
|
||||
VAR cryptoppFeatures)
|
||||
message(STATUS "${cryptoppFeatures}")
|
||||
endif ()
|
||||
|
|
|
|||
Loading…
Reference in New Issue