From 2fec71cb1a631de830b5d830ba4a0bf7df4f9bae Mon Sep 17 00:00:00 2001 From: "Laszlo Boszormenyi (GCS)" Date: Sat, 19 Mar 2022 22:09:41 +0000 Subject: [PATCH] GNUmakefile_update Gbp-Pq: Name GNUmakefile_update.patch --- GNUmakefile | 181 ++++++++++++++++++++++++---------------------- GNUmakefile-cross | 117 ++++++++++++++++-------------- config_asm.h | 22 ++++-- 3 files changed, 174 insertions(+), 146 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 6f63071..31bf6b3 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,4 +1,3 @@ - ########################################################### ##### System Attributes and Programs ##### ########################################################### @@ -99,15 +98,15 @@ endif # Hack to skip CPU feature tests for some recipes DETECT_FEATURES ?= 1 -ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CXXFLAGS)),-DCRYPTOPP_DISABLE_ASM) +ifneq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CPPFLAGS)$(CXXFLAGS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring clean,$(MAKECMDGOALS)),clean) +else ifneq ($(findstring clean,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring distclean,$(MAKECMDGOALS)),distclean) +else ifneq ($(findstring distclean,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring trim,$(MAKECMDGOALS)),trim) +else ifneq ($(findstring trim,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring zip,$(MAKECMDGOALS)),zip) +else ifneq ($(findstring zip,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 endif @@ -142,20 +141,23 @@ endif ##### General Variables ##### ########################################################### -# Base CXXFLAGS used if the user did not specify them +# Base CPPFLAGS and CXXFLAGS used if the user did not specify them +ifeq ($(CPPFLAGS),) + CRYPTOPP_CPPFLAGS += -DNDEBUG +endif ifeq ($(CXXFLAGS),) ifeq ($(SUN_COMPILER),1) - CRYPTOPP_CXXFLAGS += -DNDEBUG -g -xO3 + CRYPTOPP_CXXFLAGS += -g -xO3 ZOPT = -xO0 else - CRYPTOPP_CXXFLAGS += -DNDEBUG -g2 -O3 + CRYPTOPP_CXXFLAGS += -g2 -O3 ZOPT = -O0 endif endif # Fix CXX on Cygwin 1.1.4 ifeq ($(CXX),gcc) -CXX := g++ + CXX := g++ endif # On ARM we may compile aes_armv4.S though the CC compiler @@ -202,11 +204,11 @@ endif # Original MinGW targets Win2k by default, but lacks proper Win2k support # if target Windows version is not specified, use Windows XP instead ifeq ($(IS_MINGW),1) -ifeq ($(findstring -D_WIN32_WINNT,$(CXXFLAGS)),) -ifeq ($(findstring -D_WIN32_WINDOWS,$(CXXFLAGS)),) -ifeq ($(findstring -DWINVER,$(CXXFLAGS)),) -ifeq ($(findstring -DNTDDI_VERSION,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -D_WIN32_WINNT=0x0501 +ifeq ($(findstring -D_WIN32_WINNT,$(CPPFLAGS)$(CXXFLAGS)),) +ifeq ($(findstring -D_WIN32_WINDOWS,$(CPPFLAGS)$(CXXFLAGS)),) +ifeq ($(findstring -DWINVER,$(CPPFLAGS)$(CXXFLAGS)),) +ifeq ($(findstring -DNTDDI_VERSION,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -D_WIN32_WINNT=0x0501 endif # NTDDI_VERSION endif # WINVER endif # _WIN32_WINDOWS @@ -218,8 +220,8 @@ TPROG = TestPrograms/test_newlib.cpp TOPT = HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifeq ($(strip $(HAVE_OPT)),0) - ifeq ($(findstring -D_XOPEN_SOURCE,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -D_XOPEN_SOURCE=600 + ifeq ($(findstring -D_XOPEN_SOURCE,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -D_XOPEN_SOURCE=600 endif endif @@ -283,7 +285,7 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(SSE2_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif # Need SSE2 or higher for these tests @@ -392,33 +394,33 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(SSE3_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SSE3 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_SSE3 else ifeq ($(SSSE3_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_SSSE3 else ifeq ($(SSE41_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SSE4 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_SSE4 else ifeq ($(SSE42_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SSE4 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_SSE4 endif ifneq ($(SSE42_FLAG),) # Unusual GCC/Clang on Macports. It assembles AES, but not CLMUL. # test_x86_clmul.s:15: no such instruction: 'pclmulqdq $0, %xmm1,%xmm0' ifeq ($(CLMUL_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_CLMUL + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_CLMUL endif ifeq ($(AESNI_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_AESNI endif ifeq ($(AVX_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_AVX else ifeq ($(AVX2_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_AVX2 endif # SHANI independent of AVX per GH #1045 ifeq ($(SHANI_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SHANI + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_SHANI endif endif @@ -437,7 +439,7 @@ ifeq ($(DETECT_FEATURES),1) #TOPT = #HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) #ifneq ($(strip $(HAVE_OPT)),0) - # CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM + # CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM #endif # SSE2_FLAGS @@ -453,13 +455,13 @@ ifneq ($(INTEL_COMPILER),0) # "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and # some x64 inline assembly with ICC 11.0. If you want to use Crypto++'s assembly code # with ICC, try enabling it on individual files - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif endif # Allow use of "/" operator for GNU Assembler. # http://sourceware.org/bugzilla/show_bug.cgi?id=4572 -ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CXXFLAGS)),) +ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CPPFLAGS)$(CXXFLAGS)),) ifeq ($(IS_SUN)$(GCC_COMPILER),11) CRYPTOPP_CXXFLAGS += -Wa,--divide endif @@ -473,6 +475,12 @@ endif ########################################################### ifneq ($(IS_ARM32),0) + +# No need for feature detection on this platform if NEON is disabled +ifneq ($(findstring -DCRYPTOPP_DISABLE_ARM_NEON,$(CPPFLAGS)$(CXXFLAGS)),) + DETECT_FEATURES := 0 +endif + ifeq ($(DETECT_FEATURES),1) # Clang needs an option to include @@ -507,7 +515,7 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(NEON_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif # DETECT_FEATURES @@ -560,7 +568,7 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(ASIMD_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif ifneq ($(ASIMD_FLAG),) @@ -570,7 +578,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) CRC_FLAG = -march=armv8-a+crc else - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_CRC32 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_CRC32 endif TPROG = TestPrograms/test_arm_aes.cpp @@ -579,7 +587,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) AES_FLAG = -march=armv8-a+crypto else - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_AES + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_AES endif TPROG = TestPrograms/test_arm_pmull.cpp @@ -589,7 +597,7 @@ ifeq ($(DETECT_FEATURES),1) GCM_FLAG = -march=armv8-a+crypto GF2N_FLAG = -march=armv8-a+crypto else - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_PMULL + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_PMULL endif TPROG = TestPrograms/test_arm_sha1.cpp @@ -598,7 +606,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) SHA_FLAG = -march=armv8-a+crypto else - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA1 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA1 endif TPROG = TestPrograms/test_arm_sha256.cpp @@ -607,7 +615,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) SHA_FLAG = -march=armv8-a+crypto else - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA2 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA2 endif TPROG = TestPrograms/test_arm_sm3.cpp @@ -617,8 +625,8 @@ ifeq ($(DETECT_FEATURES),1) SM3_FLAG = -march=armv8.4-a+sm3 SM4_FLAG = -march=armv8.4-a+sm3 else - #CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SM3 - #CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SM4 + #CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SM3 + #CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SM4 endif TPROG = TestPrograms/test_arm_sha3.cpp @@ -627,7 +635,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) SHA3_FLAG = -march=armv8.4-a+sha3 else - #CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA3 + #CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA3 endif TPROG = TestPrograms/test_arm_sha512.cpp @@ -636,7 +644,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) SHA512_FLAG = -march=armv8.4-a+sha512 else - #CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA512 + #CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA512 endif # ASIMD_FLAG @@ -788,13 +796,13 @@ ifeq ($(DETECT_FEATURES),1) # Fixups for missing ISAs ifeq ($(ALTIVEC_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC else ifeq ($(POWER7_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_POWER7 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_POWER7 else ifeq ($(POWER8_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8 + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_POWER8 #else ifeq ($(POWER9_FLAG),) - # CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_POWER9 + # CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_POWER9 endif # DETECT_FEATURES @@ -919,7 +927,7 @@ endif # http://www.oracle.com/technetwork/server-storage/solaris/hwcap-modification-139536.html ifeq ($(IS_SUN)$(SUN_COMPILER),11) ifneq ($(IS_X86)$(IS_X64),00) - ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CRYPTOPP_CXXFLAGS) $(CXXFLAGS)),) + ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CPPFLAGS)$(CXXFLAGS)),) CRYPTOPP_LDFLAGS += -M cryptopp.mapfile endif # No CRYPTOPP_DISABLE_ASM endif # X86/X32/X64 @@ -941,7 +949,7 @@ SUN_CC10_BUGGY := $(shell $(CXX) -V 2>&1 | $(GREP) -c -E "CC: Sun .* 5\.10 .* (2 ifneq ($(SUN_CC10_BUGGY),0) # -DCRYPTOPP_INCLUDE_VECTOR_CC is needed for Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21 # and was fixed in May 2010. Remove it if you get "already had a body defined" errors in vector.cc -CRYPTOPP_CXXFLAGS += -DCRYPTOPP_INCLUDE_VECTOR_CC +CRYPTOPP_CPPFLAGS += -DCRYPTOPP_INCLUDE_VECTOR_CC endif AR = $(CXX) ARFLAGS = -xar -o @@ -950,9 +958,9 @@ endif # No ASM for Travis testing ifeq ($(findstring no-asm,$(MAKECMDGOALS)),no-asm) - ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CRYPTOPP_CXXFLAGS) $(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM - endif # CRYPTOPP_CXXFLAGS + ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_DISABLE_ASM + endif # CRYPTOPP_CPPFLAGS endif # No ASM # Native build testing. Issue 'make native'. @@ -998,10 +1006,10 @@ ifeq ($(findstring ubsan,$(MAKECMDGOALS)),ubsan) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-xO%=-xO1) ifeq ($(findstring -fsanitize=undefined,$(CXXFLAGS)),) CRYPTOPP_CXXFLAGS += -fsanitize=undefined - endif # CRYPTOPP_CXXFLAGS - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_COVERAGE - endif # CRYPTOPP_CXXFLAGS + endif # CRYPTOPP_CPPFLAGS + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_COVERAGE + endif # CRYPTOPP_CPPFLAGS endif # UBsan # Address Sanitizer (Asan) testing. Issue 'make asan'. @@ -1012,9 +1020,9 @@ ifeq ($(findstring asan,$(MAKECMDGOALS)),asan) ifeq ($(findstring -fsanitize=address,$(CXXFLAGS)),) CRYPTOPP_CXXFLAGS += -fsanitize=address endif # CRYPTOPP_CXXFLAGS - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_COVERAGE - endif # CRYPTOPP_CXXFLAGS + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_COVERAGE + endif # CRYPTOPP_CPPFLAGS ifeq ($(findstring -fno-omit-frame-pointer,$(CXXFLAGS)),) CRYPTOPP_CXXFLAGS += -fno-omit-frame-pointer endif # CRYPTOPP_CXXFLAGS @@ -1036,8 +1044,8 @@ ifneq ($(filter lcov coverage,$(MAKECMDGOALS)),) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-g%=-g3) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-O%=-O1) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-xO%=-xO1) - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_COVERAGE + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_COVERAGE endif # CRYPTOPP_COVERAGE ifeq ($(findstring -coverage,$(CXXFLAGS)),) CRYPTOPP_CXXFLAGS += -coverage @@ -1049,8 +1057,8 @@ ifneq ($(filter gcov codecov,$(MAKECMDGOALS)),) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-g%=-g3) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-O%=-O1) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-xO%=-xO1) - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_COVERAGE + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_COVERAGE endif # CRYPTOPP_COVERAGE ifeq ($(findstring -coverage,$(CXXFLAGS)),) CRYPTOPP_CXXFLAGS += -coverage @@ -1063,9 +1071,9 @@ ifneq ($(filter valgrind,$(MAKECMDGOALS)),) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-g%=-g3) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-O%=-O1) CRYPTOPP_CXXFLAGS := $(CRYPTOPP_CXXFLAGS:-xO%=-xO1) - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_COVERAGE - endif # -DCRYPTOPP_COVERAGE + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -DCRYPTOPP_COVERAGE + endif # CRYPTOPP_CPPFLAGS endif # Valgrind # Debug testing on GNU systems. Triggered by -DDEBUG. @@ -1076,9 +1084,9 @@ ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),) USING_GLIBCXX := $(shell $(CXX)$(CXXFLAGS) -E $(TPROG) -c 2>&1 | $(GREP) -i -c "__GLIBCXX__") ifneq ($(USING_GLIBCXX),0) ifeq ($(HAS_NEWLIB),0) - ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),) - CRYPTOPP_CXXFLAGS += -D_GLIBCXX_DEBUG - endif # CRYPTOPP_CXXFLAGS + ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CPPFLAGS)$(CXXFLAGS)),) + CRYPTOPP_CPPFLAGS += -D_GLIBCXX_DEBUG + endif # CRYPTOPP_CPPFLAGS endif # HAS_NEWLIB endif # USING_GLIBCXX @@ -1169,18 +1177,20 @@ ifneq ($(IS_MINGW),0) INCL += resource.h endif -# Cryptogams source files. We couple to ARMv7. +# Cryptogams source files. We couple to ARMv7 and NEON. # Limit to Linux. The source files target the GNU assembler. # Also see https://www.cryptopp.com/wiki/Cryptogams. ifeq ($(IS_ARM32)$(IS_LINUX),11) - ifeq ($(CLANG_COMPILER),1) - CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack - CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -mthumb -Wa,--noexecstack - else - CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack - CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -Wa,--noexecstack + ifeq ($(filter -DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_DISABLE_ARM_NEON,$(CPPFLAGS)$(CXXFLAGS)),) + ifeq ($(CLANG_COMPILER),1) + CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack + CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -mthumb -Wa,--noexecstack + else + CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack + CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -Wa,--noexecstack + endif + SRCS += aes_armv4.S sha1_armv4.S sha256_armv4.S sha512_armv4.S endif - SRCS += aes_armv4.S sha1_armv4.S sha256_armv4.S sha512_armv4.S endif # Remove unneeded arch specific files to speed build time. @@ -1412,6 +1422,7 @@ ifneq ($(wildcard libcryptopp.so$(SOLIB_VERSION_SUFFIX)),) $(CHMOD) u=rwx,go=rx $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_VERSION_SUFFIX) ifeq ($(HAS_SOLIB_VERSION),1) -$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)/libcryptopp.so + -$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_COMPAT_SUFFIX) $(LDCONF) $(DESTDIR)$(LIBDIR) endif endif @@ -1499,7 +1510,7 @@ cryptopp.pc libcryptopp.pc: @echo '' >> libcryptopp.pc @echo 'Name: Crypto++' >> libcryptopp.pc @echo 'Description: Crypto++ cryptographic library' >> libcryptopp.pc - @echo 'Version: 8.6' >> libcryptopp.pc + @echo 'Version: 8.7' >> libcryptopp.pc @echo 'URL: https://cryptopp.com/' >> libcryptopp.pc @echo '' >> libcryptopp.pc @echo 'Cflags: -I$${includedir}' >> libcryptopp.pc @@ -1532,7 +1543,7 @@ endif convert: @-$(CHMOD) u=rwx,go=rx $(EXEC_DIRS) @-$(CHMOD) u=rw,go=r $(TEXT_FILES) *.supp .*.yml *.asm *.zip TestVectors/*.txt TestData/*.dat TestPrograms/*.cpp - @-$(CHMOD) u=rwx,go=rx $(EXEC_FILES) *.sh + @-$(CHMOD) u=rwx,go=rx $(EXEC_FILES) -unix2dos --keepdate --quiet $(TEXT_FILES) .*.yml *.asm TestScripts/*.cmd TestScripts/*.txt TestScripts/*.cpp -dos2unix --keepdate --quiet GNUmakefile GNUmakefile-cross *.sh *.S *.supp *.mapfile TestScripts/*.sh ifneq ($(IS_DARWIN),0) @@ -1737,16 +1748,16 @@ rijndael.o : rijndael.cpp endif # Only use CRYPTOPP_DATA_DIR if its not set in CXXFLAGS -ifeq ($(findstring -DCRYPTOPP_DATA_DIR, $(CXXFLAGS)),) +ifeq ($(findstring -DCRYPTOPP_DATA_DIR, $(CPPFLAGS)$(CXXFLAGS)),) ifneq ($(strip $(CRYPTOPP_DATA_DIR)),) validat%.o : validat%.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" -c) $< + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" $(CXXFLAGS) -c) $< bench%.o : bench%.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" -c) $< + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" $(CXXFLAGS) -c) $< datatest.o : datatest.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" -c) $< + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" $(CXXFLAGS) -c) $< test.o : test.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" -c) $< + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_DATA_DIR=\"$(CRYPTOPP_DATA_DIR)\" $(CXXFLAGS) -c) $< endif endif @@ -1754,13 +1765,13 @@ validat1.o : validat1.cpp $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(ALTIVEC_FLAG) -c) $< %.dllonly.o : %.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_DLL_ONLY -c) $< -o $@ + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_DLL_ONLY $(CXXFLAGS) -c) $< -o $@ %.import.o : %.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_IMPORTS -c) $< -o $@ + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_IMPORTS $(CXXFLAGS) -c) $< -o $@ %.export.o : %.cpp - $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -DCRYPTOPP_EXPORTS -c) $< -o $@ + $(CXX) $(strip $(CPPFLAGS) -DCRYPTOPP_EXPORTS $(CXXFLAGS) -c) $< -o $@ %.bc : %.cpp $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) -c) $< diff --git a/GNUmakefile-cross b/GNUmakefile-cross index 9847f04..1c2c55f 100644 --- a/GNUmakefile-cross +++ b/GNUmakefile-cross @@ -184,15 +184,15 @@ IS_PPC64 := 0 # Hack to skip CPU feature tests for some recipes DETECT_FEATURES ?= 1 -ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CXXFLAGS)),-DCRYPTOPP_DISABLE_ASM) +ifneq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CPPFLAGS)$(CXXFLAGS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring clean,$(MAKECMDGOALS)),clean) +else ifneq ($(findstring clean,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring distclean,$(MAKECMDGOALS)),distclean) +else ifneq ($(findstring distclean,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring trim,$(MAKECMDGOALS)),trim) +else ifneq ($(findstring trim,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 -else ifeq ($(findstring zip,$(MAKECMDGOALS)),zip) +else ifneq ($(findstring zip,$(MAKECMDGOALS)),) DETECT_FEATURES := 0 endif @@ -240,7 +240,7 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(SSE2_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif # Need SSE2 or higher for these tests @@ -336,33 +336,33 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(SSE3_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_SSE3 + CPPFLAGS += -DCRYPTOPP_DISABLE_SSE3 else ifeq ($(SSSE3_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3 + CPPFLAGS += -DCRYPTOPP_DISABLE_SSSE3 else ifeq ($(SSE41_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_SSE4 + CPPFLAGS += -DCRYPTOPP_DISABLE_SSE4 else ifeq ($(SSE42_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_SSE4 + CPPFLAGS += -DCRYPTOPP_DISABLE_SSE4 endif ifneq ($(SSE42_FLAG),) # Unusual GCC/Clang on Macports. It assembles AES, but not CLMUL. # test_x86_clmul.s:15: no such instruction: 'pclmulqdq $0, %xmm1,%xmm0' ifeq ($(CLMUL_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_CLMUL + CPPFLAGS += -DCRYPTOPP_DISABLE_CLMUL endif ifeq ($(AESNI_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI + CPPFLAGS += -DCRYPTOPP_DISABLE_AESNI endif ifeq ($(AVX_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_AVX + CPPFLAGS += -DCRYPTOPP_DISABLE_AVX else ifeq ($(AVX2_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2 + CPPFLAGS += -DCRYPTOPP_DISABLE_AVX2 endif # SHANI independent of AVX per GH #1045 ifeq ($(SHANI_FLAG),) - CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SHANI + CPPFLAGS += -DCRYPTOPP_DISABLE_SHANI endif endif @@ -381,7 +381,7 @@ ifeq ($(DETECT_FEATURES),1) #TOPT = #HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) #ifneq ($(strip $(HAVE_OPT)),0) - # CXXFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM + # CPPFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM #endif # SSE2_FLAGS @@ -398,6 +398,12 @@ endif ########################################################### ifneq ($(IS_ARM32),0) + +# No need for feature detection on this platform if NEON is disabled +ifneq ($(findstring -DCRYPTOPP_DISABLE_ARM_NEON,$(CPPFLAGS)$(CXXFLAGS)),) + DETECT_FEATURES := 0 +endif + ifeq ($(DETECT_FEATURES),1) # Android needs -c compile flag for NEON. Otherwise there's an odd linker message. @@ -441,7 +447,7 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(NEON_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif # DETECT_FEATURES @@ -508,7 +514,7 @@ ifeq ($(DETECT_FEATURES),1) endif ifeq ($(ASIMD_FLAG),) - CXXFLAGS += -DCRYPTOPP_DISABLE_ASM + CPPFLAGS += -DCRYPTOPP_DISABLE_ASM endif ifneq ($(ASIMD_FLAG),) @@ -518,7 +524,7 @@ ifeq ($(DETECT_FEATURES),1) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifneq ($(strip $(HAVE_OPT)),0) CRC_FLAG = - CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_CRC32 + CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_CRC32 endif TPROG = TestPrograms/test_arm_aes.cpp @@ -526,7 +532,7 @@ ifeq ($(DETECT_FEATURES),1) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifneq ($(strip $(HAVE_OPT)),0) AES_FLAG = - CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_AES + CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_AES endif TPROG = TestPrograms/test_arm_pmull.cpp @@ -535,7 +541,7 @@ ifeq ($(DETECT_FEATURES),1) ifneq ($(strip $(HAVE_OPT)),0) GCM_FLAG = GF2N_FLAG = - CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_PMULL + CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_PMULL endif TPROG = TestPrograms/test_arm_sha1.cpp @@ -543,7 +549,7 @@ ifeq ($(DETECT_FEATURES),1) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifneq ($(strip $(HAVE_OPT)),0) SHA_FLAG = - CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA1 + CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA1 endif TPROG = TestPrograms/test_arm_sha256.cpp @@ -551,7 +557,7 @@ ifeq ($(DETECT_FEATURES),1) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifneq ($(strip $(HAVE_OPT)),0) SHA_FLAG = - CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA2 + CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA2 endif TPROG = TestPrograms/test_arm_sm3.cpp @@ -561,8 +567,8 @@ ifeq ($(DETECT_FEATURES),1) SM3_FLAG = -march=armv8.4-a+sm3 SM4_FLAG = -march=armv8.4-a+sm3 else - #CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SM3 - #CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SM4 + #CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SM3 + #CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SM4 endif TPROG = TestPrograms/test_arm_sha3.cpp @@ -571,7 +577,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) SHA3_FLAG = -march=armv8.4-a+sha3 else - #CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA3 + #CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA3 endif TPROG = TestPrograms/test_arm_sha512.cpp @@ -580,7 +586,7 @@ ifeq ($(DETECT_FEATURES),1) ifeq ($(strip $(HAVE_OPT)),0) SHA512_FLAG = -march=armv8.4-a+sha512 else - #CXXFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA512 + #CPPFLAGS += -DCRYPTOPP_DISABLE_ARM_SHA512 endif # ASIMD_FLAG @@ -596,10 +602,10 @@ endif ########################################################### # No ASM for Travis testing -ifeq ($(findstring no-asm,$(MAKECMDGOALS)),no-asm) - ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CXXFLAGS)),) - CXXFLAGS += -DCRYPTOPP_DISABLE_ASM - endif # CXXFLAGS +ifneq ($(findstring no-asm,$(MAKECMDGOALS)),) + ifeq ($(findstring -DCRYPTOPP_DISABLE_ASM,$(CPPFLAGS)$(CXXFLAGS)),) + CPPFLAGS += -DCRYPTOPP_DISABLE_ASM + endif # CPPFLAGS endif # No ASM # Undefined Behavior Sanitizer (UBsan) testing. Issue 'make ubsan'. @@ -607,9 +613,9 @@ ifeq ($(findstring ubsan,$(MAKECMDGOALS)),ubsan) ifeq ($(findstring -fsanitize=undefined,$(CXXFLAGS)),) CXXFLAGS += -fsanitize=undefined endif # CXXFLAGS - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CXXFLAGS += -DCRYPTOPP_COVERAGE - endif # CXXFLAGS + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CPPFLAGS += -DCRYPTOPP_COVERAGE + endif # CPPFLAGS endif # UBsan # Address Sanitizer (Asan) testing. Issue 'make asan'. @@ -617,9 +623,9 @@ ifeq ($(findstring asan,$(MAKECMDGOALS)),asan) ifeq ($(findstring -fsanitize=address,$(CXXFLAGS)),) CXXFLAGS += -fsanitize=address endif # CXXFLAGS - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CXXFLAGS += -DCRYPTOPP_COVERAGE - endif # CXXFLAGS + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CPPFLAGS += -DCRYPTOPP_COVERAGE + endif # CPPFLAGS ifeq ($(findstring -fno-omit-frame-pointer,$(CXXFLAGS)),) CXXFLAGS += -fno-omit-frame-pointer endif # CXXFLAGS @@ -641,20 +647,20 @@ ifneq ($(filter valgrind,$(MAKECMDGOALS)),) CXXFLAGS := $(CXXFLAGS:-g%=-g3) CXXFLAGS := $(CXXFLAGS:-O%=-O1) CXXFLAGS := $(CXXFLAGS:-xO%=-xO1) - ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CXXFLAGS)),) - CXXFLAGS += -DCRYPTOPP_COVERAGE - endif # -DCRYPTOPP_COVERAGE + ifeq ($(findstring -DCRYPTOPP_COVERAGE,$(CPPFLAGS)$(CXXFLAGS)),) + CPPFLAGS += -DCRYPTOPP_COVERAGE + endif # CPPFLAGS endif # Valgrind # Debug testing on GNU systems. Triggered by -DDEBUG. -# Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268 -ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),) - USING_GLIBCXX := $(shell $(CXX) $(CXXFLAGS) -E pch.cpp 2>&1 | $(GREP) -i -c "__GLIBCXX__") +# Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268 +ifneq ($(filter -DDEBUG -DDEBUG=1,$(CPPFLAGS) $(CXXFLAGS)),) + USING_GLIBCXX := $(shell $(CXX) $(CPPFLAGS) $(CXXFLAGS) -E pch.cpp 2>&1 | $(GREP) -i -c "__GLIBCXX__") ifneq ($(USING_GLIBCXX),0) ifeq ($(HAS_NEWLIB),0) - ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),) - CXXFLAGS += -D_GLIBCXX_DEBUG - endif # CXXFLAGS + ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CPPFLAGS)$(CXXFLAGS)),) + CPPFLAGS += -D_GLIBCXX_DEBUG + endif # CPPFLAGS endif # HAS_NEWLIB endif # USING_GLIBCXX endif # GNU Debug build @@ -687,18 +693,20 @@ SRCS := cryptlib.cpp cpu.cpp integer.cpp $(filter-out cryptlib.cpp cpu.cpp integ # For Makefile.am; resource.h is Windows INCL := $(filter-out resource.h,$(sort $(wildcard *.h))) -# Cryptogams source files. We couple to ARMv7. +# Cryptogams source files. We couple to ARMv7 and NEON. # Limit to Linux. The source files target the GNU assembler. # Also see https://www.cryptopp.com/wiki/Cryptogams. ifeq ($(IS_ARM32)$(IS_LINUX),11) - ifeq ($(CLANG_COMPILER),1) - CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack - CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -mthumb -Wa,--noexecstack - else - CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack - CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -Wa,--noexecstack + ifeq ($(filter -DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_DISABLE_ARM_NEON,$(CPPFLAGS)$(CXXFLAGS)),) + ifeq ($(CLANG_COMPILER),1) + CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack + CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -mthumb -Wa,--noexecstack + else + CRYPTOGAMS_ARMV4_FLAG = -march=armv7-a -Wa,--noexecstack + CRYPTOGAMS_ARMV4_THUMB_FLAG = -march=armv7-a -Wa,--noexecstack + endif + SRCS += aes_armv4.S sha1_armv4.S sha256_armv4.S sha512_armv4.S endif - SRCS += aes_armv4.S sha1_armv4.S sha256_armv4.S sha512_armv4.S endif # Remove unneeded arch specific files to speed build time. @@ -856,6 +864,7 @@ ifneq ($(wildcard libcryptopp.so$(SOLIB_VERSION_SUFFIX)),) $(CHMOD) u=rwx,go=rx $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_VERSION_SUFFIX) ifeq ($(HAS_SOLIB_VERSION),1) -$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)/libcryptopp.so + -$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_COMPAT_SUFFIX) $(LDCONF) $(DESTDIR)$(LIBDIR) endif endif diff --git a/config_asm.h b/config_asm.h index 3202a2c..3f7f230 100644 --- a/config_asm.h +++ b/config_asm.h @@ -130,7 +130,7 @@ #endif // Couple to CRYPTOPP_DISABLE_AESNI, but use CRYPTOPP_CLMUL_AVAILABLE so we can selectively -// disable for misbehaving platofrms and compilers, like Solaris or some Clang. +// disable for misbehaving platforms and compilers, like Solaris or some Clang. #if defined(CRYPTOPP_DISABLE_AESNI) #define CRYPTOPP_DISABLE_CLMUL 1 #endif @@ -311,6 +311,12 @@ # endif // Platforms #endif +// Buggy Microsoft compiler, https://github.com/weidai11/cryptopp/issues/1096 +#if defined(_MSC_VER) +# undef CRYPTOPP_ARM_SHA1_AVAILABLE +# undef CRYPTOPP_ARM_SHA2_AVAILABLE +#endif + // ARMv8 and SHA-512, SHA-3. -march=armv8.2-a+crypto or above must be present // Requires GCC 8.0, Clang 11.0, Apple Clang 12.0 or Visual Studio 20?? #if !defined(CRYPTOPP_ARM_SHA3_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SHA) @@ -365,12 +371,14 @@ // than C/C++. Define this to use the Cryptogams AES and SHA implementations // on GNU Linux systems. When defined, Crypto++ will use aes_armv4.S, // sha1_armv4.S and sha256_armv4.S. https://www.cryptopp.com/wiki/Cryptogams. -#if defined(__arm__) && defined(__linux__) -# if defined(__GNUC__) || defined(__clang__) -# define CRYPTOGAMS_ARM_AES 1 -# define CRYPTOGAMS_ARM_SHA1 1 -# define CRYPTOGAMS_ARM_SHA256 1 -# define CRYPTOGAMS_ARM_SHA512 1 +#if !defined(CRYPTOPP_DISABLE_ARM_NEON) +# if defined(__arm__) && defined(__linux__) +# if defined(__GNUC__) || defined(__clang__) +# define CRYPTOGAMS_ARM_AES 1 +# define CRYPTOGAMS_ARM_SHA1 1 +# define CRYPTOGAMS_ARM_SHA256 1 +# define CRYPTOGAMS_ARM_SHA512 1 +# endif # endif #endif -- 2.30.2