From 7162f5c20e10580fb898feb1c3cad78912d6e071 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Wed, 23 Aug 2017 06:41:27 -0400 Subject: [PATCH] Rename neon.cpp to neon-simd.cpp More twiddling in CMakeList.txt --- CMakeLists.txt | 89 +++++++++++++++++++++++++++++++-------- Filelist.txt | 2 +- GNUmakefile | 4 +- cryptest.nmake | 2 +- neon.cpp => neon-simd.cpp | 0 5 files changed, 76 insertions(+), 21 deletions(-) rename neon.cpp => neon-simd.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54cb23c7..fe2dc8ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,6 @@ set(cryptopp_VERSION_MINOR 0) set(cryptopp_VERSION_PATCH 0) include(GNUInstallDirs) -include(TestBigEndian) include(CheckCXXCompilerFlag) #============================================================================ @@ -95,6 +94,60 @@ if(NOT CRYPTOPP_DATA_DIR STREQUAL "") add_definitions(-DCRYPTOPP_DATA_DIR="${CRYPTOPP_DATA_DIR}") endif() +############################################################################### + +# Begin JW hack + +# Attempt to determine the machine the compiler is targeting. + +set(SHELL_CMD sh -c) +set(GREP_CMD egrep -i -c) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "x86_64" + OUTPUT_VARIABLE CRYPTOPP_X86_64 + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "i386" + OUTPUT_VARIABLE CRYPTOPP_I386 + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "i686" + OUTPUT_VARIABLE CRYPTOPP_I686 + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "x32" + OUTPUT_VARIABLE CRYPTOPP_X32 + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "Aarch32" + OUTPUT_VARIABLE CRYPTOPP_AARCH32 + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "Aarch64" + OUTPUT_VARIABLE CRYPTOPP_AARCH64 + OUTPUT_STRIP_TRAILING_WHITESPACE) + +# http://stackoverflow.com/q/12515462/608639 +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "\\" + OUTPUT_VARIABLE CRYPTOPP_ARMHF + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND ${SHELL_CMD} "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" + COMMAND ${GREP_CMD} "ARMHF" + OUTPUT_VARIABLE CRYPTOPP_ARMHF + OUTPUT_STRIP_TRAILING_WHITESPACE) + +# End JW hack + +############################################################################### + if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") # TODO(unassigned): should we avoid these (for cross-platform compatability)? set(SHELL_CMD sh -c) @@ -306,6 +359,8 @@ endif() # New as of Pull Request 461, http://github.com/weidai11/cryptopp/pull/461. # These are hard coded for X86 at the moment. We need to fix them. if (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")) + +if (("${CRYPTOPP_X86_64}" STREQUAL "1") OR ("${CRYPTOPP_I386}" STREQUAL "1") OR ("${CRYPTOPP_I686}" STREQUAL "1") OR ("${CRYPTOPP_X32}" STREQUAL "1")) set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2") set_source_files_properties(crc-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2") @@ -313,23 +368,23 @@ if (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" set_source_files_properties(rijndael-simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1 -maes") 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") - - # ARMv8 - # 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(crc-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crc") - # set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") - # set_source_files_properties(neon-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - # 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") - - # ARMv7 +elseif (("${CRYPTOPP_AARCH32}" STREQUAL "1") OR ("${CRYPTOPP_AARCH64}" STREQUAL "1") OR ("${CRYPTOPP_ARMV8}" STREQUAL "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(crc-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crc") + set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") + set_source_files_properties(neon-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") + 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") +elseif (("${CRYPTOPP_ARM}" STREQUAL "1") OR ("${CRYPTOPP_ARMHF}" STREQUAL "1")) # 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=$(FP_ABI) -mfpu=neon") - # set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon") - # set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon") - # set_source_files_properties(neon-simd.cpp PROPERTIES COMPILE_FLAGS "-mfloat-abi=$(FP_ABI) -mfpu=neon") + set_source_files_properties(aria-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon") + set_source_files_properties(blake2-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon") + set_source_files_properties(gcm-simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon") + set_source_files_properties(neon-simd.cpp PROPERTIES COMPILE_FLAGS "-mfloat-abi=$(FP_ABI) -mfpu=neon") +endif() + endif() #============================================================================ diff --git a/Filelist.txt b/Filelist.txt index 8a9b800a..ee662e0e 100644 --- a/Filelist.txt +++ b/Filelist.txt @@ -181,7 +181,7 @@ mqv.cpp mqv.h nbtheory.cpp nbtheory.h -neon.cpp +neon-simd.cpp network.cpp network.h nr.h diff --git a/GNUmakefile b/GNUmakefile index c14d540a..5bba5a14 100755 --- a/GNUmakefile +++ b/GNUmakefile @@ -571,7 +571,7 @@ TESTOBJS := $(TESTSRCS:.cpp=.o) LIBOBJS := $(filter-out $(TESTOBJS),$(OBJS)) # List cryptlib.cpp first, then cpu.cpp, then integer.cpp to tame C++ static initialization problems. -DLLSRCS := cryptlib.cpp cpu.cpp integer.cpp 3way.cpp adler32.cpp algebra.cpp algparam.cpp arc4.cpp aria-simd.cpp aria.cpp ariatab.cpp asn.cpp authenc.cpp base32.cpp base64.cpp basecode.cpp bfinit.cpp blake2-simd.cpp blake2.cpp blowfish.cpp blumshub.cpp camellia.cpp cast.cpp casts.cpp cbcmac.cpp ccm.cpp chacha.cpp channels.cpp cmac.cpp crc-simd.cpp crc.cpp default.cpp des.cpp dessp.cpp dh.cpp dh2.cpp dll.cpp dsa.cpp eax.cpp ec2n.cpp eccrypto.cpp ecp.cpp elgamal.cpp emsa2.cpp eprecomp.cpp esign.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gcm-simd.cpp gcm.cpp gf256.cpp gf2_32.cpp gf2n.cpp gfpcrypt.cpp gost.cpp gzip.cpp hex.cpp hmac.cpp hrtimer.cpp ida.cpp idea.cpp iterhash.cpp kalyna.cpp kalynatab.cpp keccak.cpp luc.cpp mars.cpp marss.cpp md2.cpp md4.cpp md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp neon.cpp network.cpp oaep.cpp ospstore.cpp osrng.cpp panama.cpp pkcspad.cpp poly1305.cpp polynomi.cpp pssr.cpp pubkey.cpp queue.cpp rabin.cpp randpool.cpp rc2.cpp rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp rijndael.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp safer.cpp salsa.cpp seal.cpp seed.cpp serpent.cpp sha-simd.cpp sha.cpp sha3.cpp shacal2-simd.cpp shacal2.cpp shark.cpp sharkbox.cpp skipjack.cpp socketft.cpp sosemanuk.cpp square.cpp squaretb.cpp strciphr.cpp tea.cpp tftables.cpp threefish.cpp tiger.cpp tigertab.cpp trdlocal.cpp ttmac.cpp twofish.cpp vmac.cpp wait.cpp wake.cpp whrlpool.cpp xtr.cpp xtrcrypt.cpp zdeflate.cpp zinflate.cpp zlib.cpp +DLLSRCS := cryptlib.cpp cpu.cpp integer.cpp 3way.cpp adler32.cpp algebra.cpp algparam.cpp arc4.cpp aria-simd.cpp aria.cpp ariatab.cpp asn.cpp authenc.cpp base32.cpp base64.cpp basecode.cpp bfinit.cpp blake2-simd.cpp blake2.cpp blowfish.cpp blumshub.cpp camellia.cpp cast.cpp casts.cpp cbcmac.cpp ccm.cpp chacha.cpp channels.cpp cmac.cpp crc-simd.cpp crc.cpp default.cpp des.cpp dessp.cpp dh.cpp dh2.cpp dll.cpp dsa.cpp eax.cpp ec2n.cpp eccrypto.cpp ecp.cpp elgamal.cpp emsa2.cpp eprecomp.cpp esign.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gcm-simd.cpp gcm.cpp gf256.cpp gf2_32.cpp gf2n.cpp gfpcrypt.cpp gost.cpp gzip.cpp hex.cpp hmac.cpp hrtimer.cpp ida.cpp idea.cpp iterhash.cpp kalyna.cpp kalynatab.cpp keccak.cpp luc.cpp mars.cpp marss.cpp md2.cpp md4.cpp md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp neon-simd.cpp network.cpp oaep.cpp ospstore.cpp osrng.cpp panama.cpp pkcspad.cpp poly1305.cpp polynomi.cpp pssr.cpp pubkey.cpp queue.cpp rabin.cpp randpool.cpp rc2.cpp rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp rijndael.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp safer.cpp salsa.cpp seal.cpp seed.cpp serpent.cpp sha-simd.cpp sha.cpp sha3.cpp shacal2-simd.cpp shacal2.cpp shark.cpp sharkbox.cpp skipjack.cpp socketft.cpp sosemanuk.cpp square.cpp squaretb.cpp strciphr.cpp tea.cpp tftables.cpp threefish.cpp tiger.cpp tigertab.cpp trdlocal.cpp ttmac.cpp twofish.cpp vmac.cpp wait.cpp wake.cpp whrlpool.cpp xtr.cpp xtrcrypt.cpp zdeflate.cpp zinflate.cpp zlib.cpp DLLOBJS := $(DLLSRCS:.cpp=.export.o) @@ -868,7 +868,7 @@ aria-simd.o : aria-simd.cpp $(CXX) $(strip $(CXXFLAGS) $(ARIA_FLAG) -c) $< # SSE4.2 or NEON available -neon.o : neon.cpp +neon.o : neon-simd.cpp $(CXX) $(strip $(CXXFLAGS) $(NEON_FLAG) -c) $< # SSE4.2 or ARMv8a available diff --git a/cryptest.nmake b/cryptest.nmake index 4516feff..2949b6d5 100644 --- a/cryptest.nmake +++ b/cryptest.nmake @@ -127,7 +127,7 @@ LDLIBS = $(LDLIBS) ws2_32.lib kernel32.lib !IF "$(PLATFORM)" == "ARM" || "$(PLATFORM)" == "arm" || "$(PLATFORM)" == "ARM64" || "$(PLATFORM)" == "arm64" # CXXFLAGS = $(CXXFLAGS) /D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP CXXFLAGS = $(CXXFLAGS) /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP -LIB_SRCS = $(LIB_SRCS) neon.cpp +LIB_SRCS = $(LIB_SRCS) neon-simd.cpp LIB_OBJS = $(LIB_OBJS) neon.obj # CXXFLAGS = $(CXXFLAGS) /DWINAPI_FAMILY=WINAPI_FAMILY_APP # LDLIBS = $(LDLIBS) ws2_32.lib diff --git a/neon.cpp b/neon-simd.cpp similarity index 100% rename from neon.cpp rename to neon-simd.cpp