Consistent use of grep and sed (GH #476)

MinGW is really messing things up for us.
pull/477/head
Jeffrey Walton 2017-08-29 08:57:04 -04:00
parent ef28f46691
commit c06995a71b
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
3 changed files with 203 additions and 231 deletions

View File

@ -17,41 +17,47 @@ RANLIB ?= ranlib
CP ?= cp CP ?= cp
MV ?= mv MV ?= mv
RM ?= rm -f RM ?= rm -f
EGREP ?= egrep
CHMOD ?= chmod CHMOD ?= chmod
MKDIR ?= mkdir MKDIR ?= mkdir
LN ?= ln -sf LN ?= ln -sf
LDCONF ?= /sbin/ldconfig -n LDCONF ?= /sbin/ldconfig -n
UNAME := $(shell uname) UNAME := $(shell uname)
IS_X86 := $(shell uname -m | $(EGREP) -v "x86_64" | $(EGREP) -i -c "i.86|x86|i86") # Solaris provides a non-Posix shell at /usr/bin
IS_X64 := $(shell uname -m | $(EGREP) -i -c "(_64|d64)") ifneq ($(wildcard /usr/xpg4/bin),)
IS_PPC := $(shell uname -m | $(EGREP) -i -c "ppc|power") GREP ?= /usr/xpg4/bin/grep
IS_ARM32 := $(shell uname -m | $(EGREP) -i -c '\<arm\>') else
IS_ARM64 := $(shell uname -m | $(EGREP) -i -c 'aarch64') GREP ?= grep
IS_ARMV8 ?= $(shell uname -m | $(EGREP) -i -c 'aarch32|aarch64') endif
IS_NEON ?= $(shell uname -m | $(EGREP) -i -c 'armv7|armv8|aarch32|aarch64')
IS_SPARC := $(shell uname -m | $(EGREP) -i -c "sparc")
IS_SPARC64 := $(shell uname -m | $(EGREP) -i -c "sparc64")
IS_SUN := $(shell uname | $(EGREP) -i -c "SunOS") IS_X86 := $(shell uname -m | $(GREP) -v "x86_64" | $(GREP) -i -c -E "i.86|x86|i86")
IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Linux") IS_X64 := $(shell uname -m | $(GREP) -i -c -E "(_64|d64)")
IS_MINGW := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "MinGW") IS_PPC := $(shell uname -m | $(GREP) -i -c "ppc|power")
IS_CYGWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Cygwin") IS_ARM32 := $(shell uname -m | $(GREP) -i -c '\<arm\>')
IS_DARWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Darwin") IS_ARM64 := $(shell uname -m | $(GREP) -i -c 'aarch64')
IS_NETBSD := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "NetBSD") IS_ARMV8 ?= $(shell uname -m | $(GREP) -i -c 'aarch32|aarch64')
IS_NEON ?= $(shell uname -m | $(GREP) -i -c -E 'armv7|armv8|aarch32|aarch64')
IS_SPARC := $(shell uname -m | $(GREP) -i -c "sparc")
IS_SPARC64 := $(shell uname -m | $(GREP) -i -c "sparc64")
SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c "CC: (Sun|Studio)") IS_SUN := $(shell uname | $(GREP) -i -c "SunOS")
GCC_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -v "clang" | $(EGREP) -i -c "(gcc|g\+\+)") IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Linux")
CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang") IS_MINGW := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "MinGW")
INTEL_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "\(icc\)") IS_CYGWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Cygwin")
MACPORTS_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "macports") IS_DARWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Darwin")
IS_NETBSD := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "NetBSD")
SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio)")
GCC_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -v "clang" | $(GREP) -i -c -E "(gcc|g\+\+)")
CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -c "clang")
INTEL_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -c "\(icc\)")
MACPORTS_COMPILER := $(shell $(CXX) --version 2>&1 | $(GREP) -i -c "macports")
# Sun Studio 12.0 provides SunCC 0x0510; and Sun Studio 12.3 provides SunCC 0x0512 # Sun Studio 12.0 provides SunCC 0x0510; and Sun Studio 12.3 provides SunCC 0x0512
SUNCC_510_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|6\.)") SUNCC_510_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|6\.)")
SUNCC_511_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|6\.)") SUNCC_511_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|6\.)")
SUNCC_512_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|6\.)") SUNCC_512_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|6\.)")
SUNCC_513_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|6\.)") SUNCC_513_OR_LATER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|6\.)")
# Enable shared object versioning for Linux # Enable shared object versioning for Linux
HAS_SOLIB_VERSION := $(IS_LINUX) HAS_SOLIB_VERSION := $(IS_LINUX)
@ -70,12 +76,12 @@ endif
# Fixup SunOS # Fixup SunOS
ifeq ($(IS_SUN),1) ifeq ($(IS_SUN),1)
IS_X86 := $(shell isainfo -k 2>/dev/null | $(EGREP) -i -c "i386") IS_X86 := $(shell isainfo -k 2>/dev/null | $(GREP) -i -c "i386")
IS_X64 := $(shell isainfo -k 2>/dev/null | $(EGREP) -i -c "amd64") IS_X64 := $(shell isainfo -k 2>/dev/null | $(GREP) -i -c "amd64")
endif endif
# Newlib needs _XOPEN_SOURCE=700 for signals # Newlib needs _XOPEN_SOURCE=700 for signals
HAS_NEWLIB := $(shell $(CXX) -x c++ $(CXXFLAGS) -dM -E adhoc.cpp.proto 2>&1 | $(EGREP) -i -c "__NEWLIB__") HAS_NEWLIB := $(shell $(CXX) -x c++ $(CXXFLAGS) -dM -E adhoc.cpp.proto 2>&1 | $(GREP) -i -c "__NEWLIB__")
########################################################### ###########################################################
##### General Variables ##### ##### General Variables #####
@ -138,24 +144,24 @@ ifneq ($(IS_X86)$(IS_X32)$(IS_X64),000)
# Fixup. Clang reports an error rather than "LLVM assembler" or similar. # Fixup. Clang reports an error rather than "LLVM assembler" or similar.
ifneq ($(MACPORTS_COMPILER),1) ifneq ($(MACPORTS_COMPILER),1)
HAVE_GAS := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler") HAVE_GAS := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c "GNU assembler")
endif endif
ifneq ($(GCC_COMPILER),0) ifneq ($(GCC_COMPILER),0)
IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c gcc-9[0-9][0-9]) IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E gcc-9[0-9][0-9])
GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[2-9]|[5-9]\.)") GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E "gcc version (4\.[2-9]|[5-9]\.)")
GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[6-9]|[5-9]\.)") GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E "gcc version (4\.[6-9]|[5-9]\.)")
endif endif
ifneq ($(HAVE_GAS),0) ifneq ($(HAVE_GAS),0)
GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])") GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.[1-9][0-9]|[3-9])")
GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])") GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
GAS218_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[8-9]|2\.[2-9]|[3-9])") GAS218_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.1[8-9]|2\.[2-9]|[3-9])")
GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])") GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
GAS223_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.2[3-9]|2\.[3-9]|[3-9])") GAS223_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(GREP) -c -E "GNU assembler version (2\.2[3-9]|2\.[3-9]|[3-9])")
endif endif
ICC111_OR_LATER := $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])") ICC111_OR_LATER := $(shell $(CXX) --version 2>&1 | $(GREP) -c -E "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])")
# Add -fPIC for targets *except* X86, X32, Cygwin or MinGW # Add -fPIC for targets *except* X86, X32, Cygwin or MinGW
ifeq ($(IS_X86)$(IS_X32)$(IS_CYGWIN)$(IS_MINGW)$(SUN_COMPILER),00000) ifeq ($(IS_X86)$(IS_X32)$(IS_CYGWIN)$(IS_MINGW)$(SUN_COMPILER),00000)
@ -189,28 +195,28 @@ endif # -DCRYPTOPP_DISABLE_ASM
endif # CXXFLAGS endif # CXXFLAGS
ifeq ($(findstring -DCRYPTOPP_DISABLE_SSSE3,$(CXXFLAGS)),) ifeq ($(findstring -DCRYPTOPP_DISABLE_SSSE3,$(CXXFLAGS)),)
HAVE_SSSE3 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSSE3__) HAVE_SSSE3 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -dM -E - 2>/dev/null | $(GREP) -i -c __SSSE3__)
ifeq ($(HAVE_SSSE3),1) ifeq ($(HAVE_SSSE3),1)
ARIA_FLAG = -mssse3 ARIA_FLAG = -mssse3
SSSE3_FLAG = -mssse3 SSSE3_FLAG = -mssse3
endif endif
ifeq ($(findstring -DCRYPTOPP_DISABLE_SSE4,$(CXXFLAGS)),) ifeq ($(findstring -DCRYPTOPP_DISABLE_SSE4,$(CXXFLAGS)),)
HAVE_SSE4 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -dM -E - 2>/dev/null | $(EGREP) -i -c __SSE4_2__) HAVE_SSE4 = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -dM -E - 2>/dev/null | $(GREP) -i -c __SSE4_2__)
ifeq ($(HAVE_SSE4),1) ifeq ($(HAVE_SSE4),1)
BLAKE2_FLAG = -msse4.2 BLAKE2_FLAG = -msse4.2
CRC_FLAG = -msse4.2 CRC_FLAG = -msse4.2
endif endif
ifeq ($(findstring -DCRYPTOPP_DISABLE_AESNI,$(CXXFLAGS)),) ifeq ($(findstring -DCRYPTOPP_DISABLE_AESNI,$(CXXFLAGS)),)
HAVE_CLMUL = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -mpclmul -dM -E - 2>/dev/null | $(EGREP) -i -c __PCLMUL__ ) HAVE_CLMUL = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -mssse3 -mpclmul -dM -E - 2>/dev/null | $(GREP) -i -c __PCLMUL__ )
ifeq ($(HAVE_CLMUL),1) ifeq ($(HAVE_CLMUL),1)
GCM_FLAG = -mssse3 -mpclmul GCM_FLAG = -mssse3 -mpclmul
endif endif
HAVE_AES = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.1 -maes -dM -E - 2>/dev/null | $(EGREP) -i -c __AES__) HAVE_AES = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.1 -maes -dM -E - 2>/dev/null | $(GREP) -i -c __AES__)
ifeq ($(HAVE_AES),1) ifeq ($(HAVE_AES),1)
AES_FLAG = -msse4.1 -maes AES_FLAG = -msse4.1 -maes
endif endif
ifeq ($(findstring -DCRYPTOPP_DISABLE_SHA,$(CXXFLAGS)),) ifeq ($(findstring -DCRYPTOPP_DISABLE_SHA,$(CXXFLAGS)),)
HAVE_SHA = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -msha -dM -E - 2>/dev/null | $(EGREP) -i -c __SHA__) HAVE_SHA = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -msse4.2 -msha -dM -E - 2>/dev/null | $(GREP) -i -c __SHA__)
ifeq ($(HAVE_SHA),1) ifeq ($(HAVE_SHA),1)
SHA_FLAG = -msse4.2 -msha SHA_FLAG = -msse4.2 -msha
endif endif
@ -221,25 +227,25 @@ endif # -DCRYPTOPP_DISABLE_SSSE3
# Begin SunCC # Begin SunCC
ifeq ($(SUN_COMPILER),1) ifeq ($(SUN_COMPILER),1)
COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=ssse3 -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=ssse3 -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored")
ifeq ($(COUNT),0) ifeq ($(COUNT),0)
SSSE3_FLAG = -xarch=ssse3 -D__SSSE3__=1 SSSE3_FLAG = -xarch=ssse3 -D__SSSE3__=1
ARIA_FLAG = -xarch=ssse3 -D__SSSE3__=1 ARIA_FLAG = -xarch=ssse3 -D__SSSE3__=1
LDFLAGS += -xarch=ssse3 LDFLAGS += -xarch=ssse3
endif endif
COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sse4_2 -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sse4_2 -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored")
ifeq ($(COUNT),0) ifeq ($(COUNT),0)
BLAKE2_FLAG = -xarch=sse4_2 -D__SSE4_2__=1 BLAKE2_FLAG = -xarch=sse4_2 -D__SSE4_2__=1
CRC_FLAG = -xarch=sse4_2 -D__SSE4_2__=1 CRC_FLAG = -xarch=sse4_2 -D__SSE4_2__=1
LDFLAGS += -xarch=sse4_2 LDFLAGS += -xarch=sse4_2
endif endif
COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=aes -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=aes -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored")
ifeq ($(COUNT),0) ifeq ($(COUNT),0)
GCM_FLAG = -xarch=aes -D__PCLMUL__=1 GCM_FLAG = -xarch=aes -D__PCLMUL__=1
AES_FLAG = -xarch=aes -D__AES__=1 AES_FLAG = -xarch=aes -D__AES__=1
LDFLAGS += -xarch=aes LDFLAGS += -xarch=aes
endif endif
COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sha -xdumpmacros /dev/null 2>&1 | $(EGREP) -i -c "illegal value ignored") COUNT := $(shell $(CXX) $(CXXFLAGS) -E -xarch=sha -xdumpmacros /dev/null 2>&1 | $(GREP) -i -c "illegal value ignored")
ifeq ($(COUNT),0) ifeq ($(COUNT),0)
SHA_FLAG = -xarch=sha -D__SHA__=1 SHA_FLAG = -xarch=sha -D__SHA__=1
LDFLAGS += -xarch=sha LDFLAGS += -xarch=sha
@ -311,7 +317,7 @@ endif
endif endif
ifeq ($(IS_NEON),1) ifeq ($(IS_NEON),1)
HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon -dM -E - 2>/dev/null | $(EGREP) -i -c '\<__ARM_NEON\>') HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon -dM -E - 2>/dev/null | $(GREP) -i -c -E '\<__ARM_NEON\>')
ifeq ($(HAVE_NEON),1) ifeq ($(HAVE_NEON),1)
NEON_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon NEON_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon
GCM_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon GCM_FLAG = -march=armv7-a -mfloat-abi=$(FP_ABI) -mfpu=neon
@ -321,17 +327,17 @@ ifeq ($(IS_NEON),1)
endif endif
ifeq ($(IS_ARMV8),1) ifeq ($(IS_ARMV8),1)
HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_NEON) HAVE_NEON = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a -dM -E - 2>/dev/null | $(GREP) -i -c __ARM_NEON)
ifeq ($(HAVE_NEON),1) ifeq ($(HAVE_NEON),1)
ARIA_FLAG = -march=armv8-a ARIA_FLAG = -march=armv8-a
BLAKE2_FLAG = -march=armv8-a BLAKE2_FLAG = -march=armv8-a
NEON_FLAG = -march=armv8-a NEON_FLAG = -march=armv8-a
endif endif
HAVE_CRC = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crc -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_FEATURE_CRC32) HAVE_CRC = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crc -dM -E - 2>/dev/null | $(GREP) -i -c __ARM_FEATURE_CRC32)
ifeq ($(HAVE_NEON),1) ifeq ($(HAVE_NEON),1)
CRC_FLAG = -march=armv8-a+crc CRC_FLAG = -march=armv8-a+crc
endif endif
HAVE_CRYPTO = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crypto -dM -E - 2>/dev/null | $(EGREP) -i -c __ARM_FEATURE_CRYPTO) HAVE_CRYPTO = $(shell echo | $(CXX) -x c++ $(CXXFLAGS) -march=armv8-a+crypto -dM -E - 2>/dev/null | $(GREP) -i -c __ARM_FEATURE_CRYPTO)
ifeq ($(HAVE_NEON),1) ifeq ($(HAVE_NEON),1)
AES_FLAG = -march=armv8-a+crypto AES_FLAG = -march=armv8-a+crypto
GCM_FLAG = -march=armv8-a+crypto GCM_FLAG = -march=armv8-a+crypto
@ -381,7 +387,7 @@ endif
# Add -errtags=yes to get the name for a warning suppression # Add -errtags=yes to get the name for a warning suppression
ifneq ($(SUN_COMPILER),0) # override flags for CC Sun C++ compiler ifneq ($(SUN_COMPILER),0) # override flags for CC Sun C++ compiler
IS_64 := $(shell isainfo -b 2>/dev/null | $(EGREP) -i -c "64") IS_64 := $(shell isainfo -b 2>/dev/null | $(GREP) -i -c "64")
ifeq ($(IS_64),1) ifeq ($(IS_64),1)
CXXFLAGS += -m64 CXXFLAGS += -m64
else ifeq ($(IS_64),0) else ifeq ($(IS_64),0)
@ -397,7 +403,7 @@ CXXFLAGS += -template=no%extdef
ifneq ($(IS_SPARC)$(IS_SPARC64),00) ifneq ($(IS_SPARC)$(IS_SPARC64),00)
CXXFLAGS += -xmemalign=4i CXXFLAGS += -xmemalign=4i
endif endif
SUN_CC10_BUGGY := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])") SUN_CC10_BUGGY := $(shell $(CXX) -V 2>&1 | $(GREP) -c -E "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])")
ifneq ($(SUN_CC10_BUGGY),0) 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 # -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 # remove it if you get "already had a body defined" errors in vector.cc
@ -458,7 +464,7 @@ endif # Asan
# LD gold linker testing. Triggered by 'LD=ld.gold'. # LD gold linker testing. Triggered by 'LD=ld.gold'.
ifeq ($(findstring ld.gold,$(LD)),ld.gold) ifeq ($(findstring ld.gold,$(LD)),ld.gold)
ifeq ($(findstring -fuse-ld=gold,$(CXXFLAGS)),) ifeq ($(findstring -fuse-ld=gold,$(CXXFLAGS)),)
ELF_FORMAT := $(shell file `which ld.gold` 2>&1 | cut -d":" -f 2 | $(EGREP) -i -c "elf") ELF_FORMAT := $(shell file `which ld.gold` 2>&1 | cut -d":" -f 2 | $(GREP) -i -c "elf")
ifneq ($(ELF_FORMAT),0) ifneq ($(ELF_FORMAT),0)
LDFLAGS += -fuse-ld=gold LDFLAGS += -fuse-ld=gold
endif # ELF/ELF64 endif # ELF/ELF64
@ -505,7 +511,7 @@ endif # Valgrind
# Debug testing on GNU systems. Triggered by -DDEBUG. # Debug testing on GNU systems. Triggered by -DDEBUG.
# Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268 # Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268
ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),) ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),)
USING_GLIBCXX := $(shell $(CXX) -x c++ $(CXXFLAGS) -E adhoc.cpp.proto 2>&1 | $(EGREP) -i -c "__GLIBCXX__") USING_GLIBCXX := $(shell $(CXX) -x c++ $(CXXFLAGS) -E adhoc.cpp.proto 2>&1 | $(GREP) -i -c "__GLIBCXX__")
ifneq ($(USING_GLIBCXX),0) ifneq ($(USING_GLIBCXX),0)
ifeq ($(HAS_NEWLIB),0) ifeq ($(HAS_NEWLIB),0)
ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),) ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),)
@ -535,7 +541,7 @@ ifeq ($(findstring lean,$(MAKECMDGOALS)),lean)
endif # Dead code stripping endif # Dead code stripping
# For Shared Objects, Diff, Dist/Zip rules # For Shared Objects, Diff, Dist/Zip rules
LIB_VER := $(shell $(EGREP) "define CRYPTOPP_VERSION" config.h | cut -d" " -f 3) LIB_VER := $(shell $(GREP) "define CRYPTOPP_VERSION" config.h | cut -d" " -f 3)
LIB_MAJOR := $(shell echo $(LIB_VER) | cut -c 1) LIB_MAJOR := $(shell echo $(LIB_VER) | cut -c 1)
LIB_MINOR := $(shell echo $(LIB_VER) | cut -c 2) LIB_MINOR := $(shell echo $(LIB_VER) | cut -c 2)
LIB_PATCH := $(shell echo $(LIB_VER) | cut -c 3) LIB_PATCH := $(shell echo $(LIB_VER) | cut -c 3)
@ -663,7 +669,7 @@ sources: adhoc.cpp
DOCUMENT_DIRECTORY := ref$(LIB_VER) DOCUMENT_DIRECTORY := ref$(LIB_VER)
# Directory Doxygen uses (specified in Doygen config file) # Directory Doxygen uses (specified in Doygen config file)
ifeq ($(wildcard Doxyfile),Doxyfile) ifeq ($(wildcard Doxyfile),Doxyfile)
DOXYGEN_DIRECTORY := $(strip $(shell $(EGREP) "OUTPUT_DIRECTORY" Doxyfile | $(EGREP) -v "\#" | cut -d "=" -f 2)) DOXYGEN_DIRECTORY := $(strip $(shell $(GREP) "OUTPUT_DIRECTORY" Doxyfile | $(GREP) -v "\#" | cut -d "=" -f 2))
endif endif
# Default directory (in case its missing in the config file) # Default directory (in case its missing in the config file)
ifeq ($(strip $(DOXYGEN_DIRECTORY)),) ifeq ($(strip $(DOXYGEN_DIRECTORY)),)

View File

@ -69,14 +69,30 @@ unset MallocScribble MallocPreScribble MallocGuardEdges
# Setup tools and platforms # Setup tools and platforms
GREP=grep GREP=grep
EGREP=egrep
SED=sed SED=sed
AWK=awk AWK=awk
MAKE=make
# Code generation tests
DISASS=objdump DISASS=objdump
DISASSARGS=("--disassemble") DISASSARGS=("--disassemble")
# Fixup, Solaris and friends
if [[ (-d /usr/xpg4/bin) ]]; then
SED=/usr/xpg4/bin/sed
AWK=/usr/xpg4/bin/awk
GREP=/usr/xpg4/bin/grep
elif [[ (-d /usr/bin/posix) ]]; then
SED=/usr/bin/posix/sed
AWK=/usr/bin/posix/awk
GREP=/usr/bin/posix/grep
fi
# Fixup, Solaris and BSDs
GMAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1)
if [[ ! -z "$GMAKE" ]]; then
MAKE=$GMAKE
fi
THIS_SYSTEM=$(uname -s 2>&1) THIS_SYSTEM=$(uname -s 2>&1)
IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin) IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin)
IS_LINUX=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c linux) IS_LINUX=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c linux)
@ -93,37 +109,16 @@ IS_FEDORA=$(lsb_release -a 2>&1 | "$GREP" -i -c fedora)
IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu) IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu)
THIS_MACHINE=$(uname -m 2>&1) THIS_MACHINE=$(uname -m 2>&1)
IS_X86=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i486|i686|i686)") IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)")
IS_X64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)") IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)")
IS_PPC=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)") IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)")
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$EGREP" -i -c "(arm|aarch32)") IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)")
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)") IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)")
IS_S390=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "s390") IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390")
IS_X32=0 IS_X32=0
# Fixup # Fixup
if [[ "$IS_SOLARIS" -ne "0" ]]; then if [[ "$IS_SOLARIS" -ne "0" ]]; then
IS_X64=$(isainfo 2>/dev/null | "$GREP" -i -c "amd64")
if [[ "$IS_X64" -ne "0" ]]; then
IS_X86=0
fi
# Need something more powerful than the Posix versions
if [[ (-e "/usr/gnu/bin/grep") ]]; then
GREP=/usr/gnu/bin/grep;
fi
if [[ (-e "/usr/gnu/bin/egrep") ]]; then
EGREP=/usr/gnu/bin/egrep;
fi
if [[ (-e "/usr/gnu/bin/sed") ]]; then
SED=/usr/gnu/bin/sed;
fi
if [[ (-e "/usr/gnu/bin/awk") ]]; then
AWK=/usr/gnu/bin/awk;
else
AWK=nawk;
fi
DISASS=dis DISASS=dis
DISASSARGS=() DISASSARGS=()
fi fi
@ -134,18 +129,6 @@ if [[ "$IS_DARWIN" -ne 0 ]]; then
DISASSARGS=("-tV") DISASSARGS=("-tV")
fi fi
# Fixup
if [[ ("$IS_FREEBSD" -ne "0" || "$IS_OPENBSD" -ne "0" || "$IS_NETBSD" -ne "0" || "$IS_DRAGONFLY" -ne "0") ]]; then
MAKE=gmake
elif [[ ("$IS_SOLARIS" -ne "0") ]]; then
MAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1)
if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then
MAKE=/usr/sfw/bin/gmake
fi
else
MAKE=make
fi
# CPU features and flags # CPU features and flags
if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then
if [[ ("$IS_DARWIN" -ne "0") ]]; then if [[ ("$IS_DARWIN" -ne "0") ]]; then
@ -170,13 +153,13 @@ fi
for ARG in "$@" for ARG in "$@"
do do
# Recognize "fast" and "quick", which does not perform tests that take more time to execute # Recognize "fast" and "quick", which does not perform tests that take more time to execute
if [[ ($("$EGREP" -ix "fast" <<< "$ARG") || $("$EGREP" -ix "quick" <<< "$ARG")) ]]; then if [[ ($("$GREP" -ix "fast" <<< "$ARG") || $("$GREP" -ix "quick" <<< "$ARG")) ]]; then
HAVE_VALGRIND=0 HAVE_VALGRIND=0
WANT_BENCHMARKS=0 WANT_BENCHMARKS=0
# Recognize "farm" and "nice", which uses 1/2 the CPU cores in accordance with GCC Compile Farm policy # Recognize "farm" and "nice", which uses 1/2 the CPU cores in accordance with GCC Compile Farm policy
elif [[ ($("$EGREP" -ix "farm" <<< "$ARG") || $("$EGREP" -ix "nice" <<< "$ARG")) ]]; then elif [[ ($("$GREP" -ix "farm" <<< "$ARG") || $("$GREP" -ix "nice" <<< "$ARG")) ]]; then
WANT_NICE=1 WANT_NICE=1
elif [[ ($("$EGREP" -ix "orig" <<< "$ARG") || $("$EGREP" -ix "original" <<< "$ARG") || $("$EGREP" -ix "config.h" <<< "$ARG")) ]]; then elif [[ ($("$GREP" -ix "orig" <<< "$ARG") || $("$GREP" -ix "original" <<< "$ARG") || $("$GREP" -ix "config.h" <<< "$ARG")) ]]; then
git checkout config.h > /dev/null 2>&1 git checkout config.h > /dev/null 2>&1
else else
echo "Unknown option $ARG" echo "Unknown option $ARG"
@ -217,32 +200,32 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then
fi fi
fi fi
SUN_COMPILER=$("$CXX" -V 2>&1 | "$EGREP" -i -c "CC: (Sun|Studio)") SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)")
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$EGREP" -i -c "(gcc|g\+\+)") GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)")
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "\(icc\)") INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)")
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "MacPorts") MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts")
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "clang") CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang")
if [[ ("$SUN_COMPILER" -eq "0") ]]; then if [[ ("$SUN_COMPILER" -eq "0") ]]; then
AMD64=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__x64_64__|__amd64__)") AMD64=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$GREP" -i -c -E "(__x64_64__|__amd64__)")
ILP32=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__ILP32__|__ILP32)") ILP32=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$GREP" -i -c -E "(__ILP32__|__ILP32)")
if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then
IS_X32=1 IS_X32=1
fi fi
fi fi
# Now that the compiler is fixed, determine the compiler version for fixups # Now that the compiler is fixed, determine the compiler version for fixups
CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'clang version (3\.[7-9]|[4-9]\.[0-9])') CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'clang version (3\.[7-9]|[4-9]\.[0-9])')
GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (7\.[0-9]|[8-9])') GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (7\.[0-9]|[8-9])')
GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (6\.[0-9]|[7-9])') GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (6\.[0-9]|[7-9])')
GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (5\.[1-9]|[6-9])') GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (5\.[1-9]|[6-9])')
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.8') GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.8')
GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.9') GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.9')
GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (4\.9|[5-9]\.[0-9])') GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (4\.9|[5-9]\.[0-9])')
SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)") SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)")
SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)") SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)")
SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)") SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)")
SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)") SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)")
# Fixup, bad code generation # Fixup, bad code generation
if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then
@ -480,7 +463,7 @@ OPT_PIC=
rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1 rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_PIC") ]]; then if [[ (-z "$HAVE_PIC") ]]; then
HAVE_PIC=0 HAVE_PIC=0
PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$EGREP" -ic '(warning|error)') PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$GREP" -i -c -E '(warning|error)')
if [[ "$PIC_PROBLEMS" -eq "0" ]]; then if [[ "$PIC_PROBLEMS" -eq "0" ]]; then
HAVE_PIC=1 HAVE_PIC=1
OPT_PIC=-fPIC OPT_PIC=-fPIC
@ -605,7 +588,7 @@ if [[ (-z "$HAVE_LDGOLD") ]]; then
LD_GOLD=$(which ld.gold 2>&1 | "$GREP" -v "no ld.gold" | head -1) LD_GOLD=$(which ld.gold 2>&1 | "$GREP" -v "no ld.gold" | head -1)
ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1) ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1)
if [[ (! -z "$LD_GOLD") && (! -z "$ELF_FILE") ]]; then if [[ (! -z "$LD_GOLD") && (! -z "$ELF_FILE") ]]; then
LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$EGREP" -i -c "elf") LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$GREP" -i -c "elf")
if [[ ("$LD_GOLD" -ne "0") ]]; then if [[ ("$LD_GOLD" -ne "0") ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1 "$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then if [[ "$?" -eq "0" ]]; then
@ -624,7 +607,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
fi fi
if [[ (-z "$HAVE_ARMV8A" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]]; then if [[ (-z "$HAVE_ARMV8A" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]]; then
HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(asimd|crc|crypto)') HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(asimd|crc|crypto)')
if [[ ("$HAVE_ARMV8A" -gt "0") ]]; then HAVE_ARMV8A=1; fi if [[ ("$HAVE_ARMV8A" -gt "0") ]]; then HAVE_ARMV8A=1; fi
fi fi
@ -658,7 +641,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
fi fi
if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then
HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(aes|pmull|sha1|sha2)') HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(aes|pmull|sha1|sha2)')
if [[ ("$HAVE_ARM_CRYPTO" -gt "0") ]]; then HAVE_ARM_CRYPTO=1; fi if [[ ("$HAVE_ARM_CRYPTO" -gt "0") ]]; then HAVE_ARM_CRYPTO=1; fi
fi fi
@ -827,7 +810,7 @@ CPU_COUNT=1
MEM_SIZE=512 MEM_SIZE=512
if [[ (-e "/proc/cpuinfo") && (-e "/proc/meminfo") ]]; then if [[ (-e "/proc/cpuinfo") && (-e "/proc/meminfo") ]]; then
CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c '^processor') CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c -E '^processor')
MEM_SIZE=$(cat /proc/meminfo 2>&1 | "$GREP" "MemTotal" | "$AWK" '{print $2}') MEM_SIZE=$(cat /proc/meminfo 2>&1 | "$GREP" "MemTotal" | "$AWK" '{print $2}')
MEM_SIZE=$(($MEM_SIZE/1024)) MEM_SIZE=$(($MEM_SIZE/1024))
elif [[ "$IS_DARWIN" -ne "0" ]]; then elif [[ "$IS_DARWIN" -ne "0" ]]; then
@ -1038,7 +1021,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
# Soft/Hard floats only apply to 32-bit ARM # Soft/Hard floats only apply to 32-bit ARM
# http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html # http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html
if [[ ("$IS_ARM32" -ne "0") ]]; then if [[ ("$IS_ARM32" -ne "0") ]]; then
ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$EGREP" -i -c '(armhf|gnueabihf)') ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$GREP" -i -c -E '(armhf|gnueabihf)')
if [[ ("$ARM_HARD_FLOAT" -ne "0") ]]; then if [[ ("$ARM_HARD_FLOAT" -ne "0") ]]; then
PLATFORM_CXXFLAGS+=("-mfloat-abi=hard") PLATFORM_CXXFLAGS+=("-mfloat-abi=hard")
else else
@ -1100,14 +1083,14 @@ if true; then
FAILED=0 FAILED=0
# Filter out C++ and Doxygen comments. # Filter out C++ and Doxygen comments.
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c '(assert.h|cassert)') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E '(assert.h|cassert)')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS" echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS"
fi fi
# Filter out C++ and Doxygen comments. # Filter out C++ and Doxygen comments.
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'assert[[:space:]]*\(') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'assert[[:space:]]*\(')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS" echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS"
@ -1138,14 +1121,14 @@ if true; then
FAILED=0 FAILED=0
# If this fires, then use the library's STDMIN(a,b) or (std::min)(a, b); # If this fires, then use the library's STDMIN(a,b) or (std::min)(a, b);
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::min[[:space:]]*\(') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::min[[:space:]]*\(')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found std::min" | tee -a "$TEST_RESULTS" echo "FAILED: found std::min" | tee -a "$TEST_RESULTS"
fi fi
# If this fires, then use the library's STDMAX(a,b) or (std::max)(a, b); # If this fires, then use the library's STDMAX(a,b) or (std::max)(a, b);
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::max[[:space:]]*\(') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::max[[:space:]]*\(')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found std::max" | tee -a "$TEST_RESULTS" echo "FAILED: found std::max" | tee -a "$TEST_RESULTS"
@ -1176,15 +1159,15 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
X86_SSE2=$(echo -n "$X86_CPU_FLAGS" | "$GREP" -i -c sse2) X86_SSE2=$(echo -n "$X86_CPU_FLAGS" | "$GREP" -i -c sse2)
X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$EGREP" -c 'SHA256_HashMultipleBlocks_SSE2') X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$GREP" -c 'SHA256_HashMultipleBlocks_SSE2')
if [[ ("$X86_SHA256_HASH_BLOCKS" -ne "0") ]]; then if [[ ("$X86_SHA256_HASH_BLOCKS" -ne "0") ]]; then
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)')
if [[ ("$COUNT" -le "250") ]]; then if [[ ("$COUNT" -le "250") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS"
fi fi
else else
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)')
if [[ ("$COUNT" -le "500") ]]; then if [[ ("$COUNT" -le "500") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate rotate immediate instruction" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate rotate immediate instruction" | tee -a "$TEST_RESULTS"
@ -1323,13 +1306,13 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t
FAILED=0 FAILED=0
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqhq|vpclmulqdq)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqhq|vpclmulqdq)')
if [[ ("$COUNT" -eq "0") ]]; then if [[ ("$COUNT" -eq "0") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS"
fi fi
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqlq|vpclmulqdq)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqlq|vpclmulqdq)')
if [[ ("$COUNT" -eq "0") ]]; then if [[ ("$COUNT" -eq "0") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate pclmullqlq instruction" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate pclmullqlq instruction" | tee -a "$TEST_RESULTS"
@ -1462,7 +1445,7 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
############################################ ############################################
# ARM NEON code generation # ARM NEON code generation
ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(neon|asimd)') ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(neon|asimd)')
if [[ ("$ARM_NEON" -ne "0" || "$HAVE_ARM_NEON" -ne "0") ]]; then if [[ ("$ARM_NEON" -ne "0" || "$HAVE_ARM_NEON" -ne "0") ]]; then
echo echo
echo "************************************" | tee -a "$TEST_RESULTS" echo "************************************" | tee -a "$TEST_RESULTS"
@ -1477,35 +1460,35 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
# ARIA::UncheckedKeySet: 8 vld1q.32 # ARIA::UncheckedKeySet: 8 vld1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vld') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vld')
if [[ ("$COUNT" -lt "8") ]]; then if [[ ("$COUNT" -lt "8") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 24 vstr1q.32 # ARIA::UncheckedKeySet: 24 vstr1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vst') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vst')
if [[ ("$COUNT" -lt "24") ]]; then if [[ ("$COUNT" -lt "24") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 17 vshl.32 # ARIA::UncheckedKeySet: 17 vshl.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 17 vshr.32 # ARIA::UncheckedKeySet: 17 vshr.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 34 veor # ARIA::UncheckedKeySet: 34 veor
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'eor.*v|veor') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E 'eor.*v|veor')
if [[ ("$COUNT" -lt "34") ]]; then if [[ ("$COUNT" -lt "34") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS"
@ -5776,13 +5759,13 @@ echo | tee -a "$TEST_RESULTS"
# "Error" is from the GNU assembler # "Error" is from the GNU assembler
# "error" is from the sanitizers # "error" is from the sanitizers
# "Illegal", "Conditional", "0 errors" and "suppressed errors" are from Valgrind. # "Illegal", "Conditional", "0 errors" and "suppressed errors" are from Valgrind.
ECOUNT=$("$EGREP" '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$EGREP" -v '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}') ECOUNT=$("$GREP" -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}')
if (( "$ECOUNT" == "0" )); then if (( "$ECOUNT" == "0" )); then
echo "No failures detected" | tee -a "$TEST_RESULTS" echo "No failures detected" | tee -a "$TEST_RESULTS"
else else
echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS" echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS"
if (( "$ECOUNT" < 16 )); then if (( "$ECOUNT" < 16 )); then
"$EGREP" -n '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$EGREP" -v '( 0 errors|suppressed errors|error detector|Assertion|format-security)' "$GREP" -n -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|Assertion|format-security)'
fi fi
fi fi
@ -5793,12 +5776,12 @@ echo
echo "************************************************" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo "************************************************" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
echo | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
WCOUNT=$("$EGREP" '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}') WCOUNT=$("$GREP" -E '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}')
if (( "$WCOUNT" == "0" )); then if (( "$WCOUNT" == "0" )); then
echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
else else
echo "$WCOUNT warnings detected. See $WARN_RESULTS for details" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo "$WCOUNT warnings detected. See $WARN_RESULTS for details" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
# "$EGREP" -n '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations' # "$GREP" -n -E '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations'
fi fi
############################################ ############################################

View File

@ -69,14 +69,30 @@ unset MallocScribble MallocPreScribble MallocGuardEdges
# Setup tools and platforms # Setup tools and platforms
GREP=grep GREP=grep
EGREP=egrep
SED=sed SED=sed
AWK=awk AWK=awk
MAKE=make
# Code generation tests
DISASS=objdump DISASS=objdump
DISASSARGS=("--disassemble") DISASSARGS=("--disassemble")
# Fixup, Solaris and friends
if [[ (-d /usr/xpg4/bin) ]]; then
SED=/usr/xpg4/bin/sed
AWK=/usr/xpg4/bin/awk
GREP=/usr/xpg4/bin/grep
elif [[ (-d /usr/bin/posix) ]]; then
SED=/usr/bin/posix/sed
AWK=/usr/bin/posix/awk
GREP=/usr/bin/posix/grep
fi
# Fixup, Solaris and BSDs
GMAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1)
if [[ ! -z "$GMAKE" ]]; then
MAKE=$GMAKE
fi
THIS_SYSTEM=$(uname -s 2>&1) THIS_SYSTEM=$(uname -s 2>&1)
IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin) IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin)
IS_LINUX=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c linux) IS_LINUX=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c linux)
@ -93,37 +109,16 @@ IS_FEDORA=$(lsb_release -a 2>&1 | "$GREP" -i -c fedora)
IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu) IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu)
THIS_MACHINE=$(uname -m 2>&1) THIS_MACHINE=$(uname -m 2>&1)
IS_X86=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i486|i686|i686)") IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)")
IS_X64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)") IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)")
IS_PPC=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)") IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)")
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$EGREP" -i -c "(arm|aarch32)") IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)")
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)") IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)")
IS_S390=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "s390") IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390")
IS_X32=0 IS_X32=0
# Fixup # Fixup
if [[ "$IS_SOLARIS" -ne "0" ]]; then if [[ "$IS_SOLARIS" -ne "0" ]]; then
IS_X64=$(isainfo 2>/dev/null | "$GREP" -i -c "amd64")
if [[ "$IS_X64" -ne "0" ]]; then
IS_X86=0
fi
# Need something more powerful than the Posix versions
if [[ (-e "/usr/gnu/bin/grep") ]]; then
GREP=/usr/gnu/bin/grep;
fi
if [[ (-e "/usr/gnu/bin/egrep") ]]; then
EGREP=/usr/gnu/bin/egrep;
fi
if [[ (-e "/usr/gnu/bin/sed") ]]; then
SED=/usr/gnu/bin/sed;
fi
if [[ (-e "/usr/gnu/bin/awk") ]]; then
AWK=/usr/gnu/bin/awk;
else
AWK=nawk;
fi
DISASS=dis DISASS=dis
DISASSARGS=() DISASSARGS=()
fi fi
@ -134,18 +129,6 @@ if [[ "$IS_DARWIN" -ne 0 ]]; then
DISASSARGS=("-tV") DISASSARGS=("-tV")
fi fi
# Fixup
if [[ ("$IS_FREEBSD" -ne "0" || "$IS_OPENBSD" -ne "0" || "$IS_NETBSD" -ne "0" || "$IS_DRAGONFLY" -ne "0") ]]; then
MAKE=gmake
elif [[ ("$IS_SOLARIS" -ne "0") ]]; then
MAKE=$(which gmake 2>/dev/null | "$GREP" -v "no gmake" | head -1)
if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then
MAKE=/usr/sfw/bin/gmake
fi
else
MAKE=make
fi
# CPU features and flags # CPU features and flags
if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then
if [[ ("$IS_DARWIN" -ne "0") ]]; then if [[ ("$IS_DARWIN" -ne "0") ]]; then
@ -170,13 +153,13 @@ fi
for ARG in "$@" for ARG in "$@"
do do
# Recognize "fast" and "quick", which does not perform tests that take more time to execute # Recognize "fast" and "quick", which does not perform tests that take more time to execute
if [[ ($("$EGREP" -ix "fast" <<< "$ARG") || $("$EGREP" -ix "quick" <<< "$ARG")) ]]; then if [[ ($("$GREP" -ix "fast" <<< "$ARG") || $("$GREP" -ix "quick" <<< "$ARG")) ]]; then
HAVE_VALGRIND=0 HAVE_VALGRIND=0
WANT_BENCHMARKS=0 WANT_BENCHMARKS=0
# Recognize "farm" and "nice", which uses 1/2 the CPU cores in accordance with GCC Compile Farm policy # Recognize "farm" and "nice", which uses 1/2 the CPU cores in accordance with GCC Compile Farm policy
elif [[ ($("$EGREP" -ix "farm" <<< "$ARG") || $("$EGREP" -ix "nice" <<< "$ARG")) ]]; then elif [[ ($("$GREP" -ix "farm" <<< "$ARG") || $("$GREP" -ix "nice" <<< "$ARG")) ]]; then
WANT_NICE=1 WANT_NICE=1
elif [[ ($("$EGREP" -ix "orig" <<< "$ARG") || $("$EGREP" -ix "original" <<< "$ARG") || $("$EGREP" -ix "config.h" <<< "$ARG")) ]]; then elif [[ ($("$GREP" -ix "orig" <<< "$ARG") || $("$GREP" -ix "original" <<< "$ARG") || $("$GREP" -ix "config.h" <<< "$ARG")) ]]; then
git checkout config.h > /dev/null 2>&1 git checkout config.h > /dev/null 2>&1
else else
echo "Unknown option $ARG" echo "Unknown option $ARG"
@ -217,32 +200,32 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then
fi fi
fi fi
SUN_COMPILER=$("$CXX" -V 2>&1 | "$EGREP" -i -c "CC: (Sun|Studio)") SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)")
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$EGREP" -i -c "(gcc|g\+\+)") GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)")
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "\(icc\)") INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)")
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "MacPorts") MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts")
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "clang") CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang")
if [[ ("$SUN_COMPILER" -eq "0") ]]; then if [[ ("$SUN_COMPILER" -eq "0") ]]; then
AMD64=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__x64_64__|__amd64__)") AMD64=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$GREP" -i -c -E "(__x64_64__|__amd64__)")
ILP32=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__ILP32__|__ILP32)") ILP32=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$GREP" -i -c -E "(__ILP32__|__ILP32)")
if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then
IS_X32=1 IS_X32=1
fi fi
fi fi
# Now that the compiler is fixed, determine the compiler version for fixups # Now that the compiler is fixed, determine the compiler version for fixups
CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'clang version (3\.[7-9]|[4-9]\.[0-9])') CLANG_37_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'clang version (3\.[7-9]|[4-9]\.[0-9])')
GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (7\.[0-9]|[8-9])') GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (7\.[0-9]|[8-9])')
GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (6\.[0-9]|[7-9])') GCC_60_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (6\.[0-9]|[7-9])')
GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (5\.[1-9]|[6-9])') GCC_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (5\.[1-9]|[6-9])')
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.8') GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.8')
GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.9') GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.9')
GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (4\.9|[5-9]\.[0-9])') GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version (4\.9|[5-9]\.[0-9])')
SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)") SUNCC_510_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[0-9]|5\.[2-9]|[6-9]\.)")
SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)") SUNCC_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[1-9]|5\.[2-9]|[6-9]\.)")
SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)") SUNCC_512_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[2-9]|5\.[2-9]|[6-9]\.)")
SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)") SUNCC_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-9]\.)")
# Fixup, bad code generation # Fixup, bad code generation
if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then
@ -480,7 +463,7 @@ OPT_PIC=
rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1 rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_PIC") ]]; then if [[ (-z "$HAVE_PIC") ]]; then
HAVE_PIC=0 HAVE_PIC=0
PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$EGREP" -ic '(warning|error)') PIC_PROBLEMS=$("$CXX" -DCRYPTOPP_ADHOC_MAIN -fPIC adhoc.cpp -o "$TMPDIR/adhoc.exe" 2>&1 | "$GREP" -i -c -E '(warning|error)')
if [[ "$PIC_PROBLEMS" -eq "0" ]]; then if [[ "$PIC_PROBLEMS" -eq "0" ]]; then
HAVE_PIC=1 HAVE_PIC=1
OPT_PIC=-fPIC OPT_PIC=-fPIC
@ -605,7 +588,7 @@ if [[ (-z "$HAVE_LDGOLD") ]]; then
LD_GOLD=$(which ld.gold 2>&1 | "$GREP" -v "no ld.gold" | head -1) LD_GOLD=$(which ld.gold 2>&1 | "$GREP" -v "no ld.gold" | head -1)
ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1) ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1)
if [[ (! -z "$LD_GOLD") && (! -z "$ELF_FILE") ]]; then if [[ (! -z "$LD_GOLD") && (! -z "$ELF_FILE") ]]; then
LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$EGREP" -i -c "elf") LD_GOLD=$(file "$LD_GOLD" | cut -d":" -f 2 | "$GREP" -i -c "elf")
if [[ ("$LD_GOLD" -ne "0") ]]; then if [[ ("$LD_GOLD" -ne "0") ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1 "$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then if [[ "$?" -eq "0" ]]; then
@ -624,7 +607,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
fi fi
if [[ (-z "$HAVE_ARMV8A" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]]; then if [[ (-z "$HAVE_ARMV8A" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]]; then
HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(asimd|crc|crypto)') HAVE_ARMV8A=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(asimd|crc|crypto)')
if [[ ("$HAVE_ARMV8A" -gt "0") ]]; then HAVE_ARMV8A=1; fi if [[ ("$HAVE_ARMV8A" -gt "0") ]]; then HAVE_ARMV8A=1; fi
fi fi
@ -658,7 +641,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
fi fi
if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then
HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(aes|pmull|sha1|sha2)') HAVE_ARM_CRYPTO=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(aes|pmull|sha1|sha2)')
if [[ ("$HAVE_ARM_CRYPTO" -gt "0") ]]; then HAVE_ARM_CRYPTO=1; fi if [[ ("$HAVE_ARM_CRYPTO" -gt "0") ]]; then HAVE_ARM_CRYPTO=1; fi
fi fi
@ -827,7 +810,7 @@ CPU_COUNT=1
MEM_SIZE=512 MEM_SIZE=512
if [[ (-e "/proc/cpuinfo") && (-e "/proc/meminfo") ]]; then if [[ (-e "/proc/cpuinfo") && (-e "/proc/meminfo") ]]; then
CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c '^processor') CPU_COUNT=$(cat /proc/cpuinfo 2>&1 | "$GREP" -c -E '^processor')
MEM_SIZE=$(cat /proc/meminfo 2>&1 | "$GREP" "MemTotal" | "$AWK" '{print $2}') MEM_SIZE=$(cat /proc/meminfo 2>&1 | "$GREP" "MemTotal" | "$AWK" '{print $2}')
MEM_SIZE=$(($MEM_SIZE/1024)) MEM_SIZE=$(($MEM_SIZE/1024))
elif [[ "$IS_DARWIN" -ne "0" ]]; then elif [[ "$IS_DARWIN" -ne "0" ]]; then
@ -1038,7 +1021,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
# Soft/Hard floats only apply to 32-bit ARM # Soft/Hard floats only apply to 32-bit ARM
# http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html # http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html
if [[ ("$IS_ARM32" -ne "0") ]]; then if [[ ("$IS_ARM32" -ne "0") ]]; then
ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$EGREP" -i -c '(armhf|gnueabihf)') ARM_HARD_FLOAT=$("$CXX" -v 2>&1 | "$GREP" 'Target' | "$GREP" -i -c -E '(armhf|gnueabihf)')
if [[ ("$ARM_HARD_FLOAT" -ne "0") ]]; then if [[ ("$ARM_HARD_FLOAT" -ne "0") ]]; then
PLATFORM_CXXFLAGS+=("-mfloat-abi=hard") PLATFORM_CXXFLAGS+=("-mfloat-abi=hard")
else else
@ -1100,14 +1083,14 @@ if true; then
FAILED=0 FAILED=0
# Filter out C++ and Doxygen comments. # Filter out C++ and Doxygen comments.
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c '(assert.h|cassert)') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E '(assert.h|cassert)')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS" echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS"
fi fi
# Filter out C++ and Doxygen comments. # Filter out C++ and Doxygen comments.
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'assert[[:space:]]*\(') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'assert[[:space:]]*\(')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS" echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS"
@ -1138,14 +1121,14 @@ if true; then
FAILED=0 FAILED=0
# If this fires, then use the library's STDMIN(a,b) or (std::min)(a, b); # If this fires, then use the library's STDMIN(a,b) or (std::min)(a, b);
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::min[[:space:]]*\(') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::min[[:space:]]*\(')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found std::min" | tee -a "$TEST_RESULTS" echo "FAILED: found std::min" | tee -a "$TEST_RESULTS"
fi fi
# If this fires, then use the library's STDMAX(a,b) or (std::max)(a, b); # If this fires, then use the library's STDMAX(a,b) or (std::max)(a, b);
COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$EGREP" -c 'std::max[[:space:]]*\(') COUNT=$(cat *.h *.cpp | "$GREP" -v '//' | "$GREP" -c -E 'std::max[[:space:]]*\(')
if [[ "$COUNT" -ne "0" ]]; then if [[ "$COUNT" -ne "0" ]]; then
FAILED=1 FAILED=1
echo "FAILED: found std::max" | tee -a "$TEST_RESULTS" echo "FAILED: found std::max" | tee -a "$TEST_RESULTS"
@ -1176,15 +1159,15 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
X86_SSE2=$(echo -n "$X86_CPU_FLAGS" | "$GREP" -i -c sse2) X86_SSE2=$(echo -n "$X86_CPU_FLAGS" | "$GREP" -i -c sse2)
X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$EGREP" -c 'SHA256_HashMultipleBlocks_SSE2') X86_SHA256_HASH_BLOCKS=$(echo -n "$DISASS_TEXT" | "$GREP" -c 'SHA256_HashMultipleBlocks_SSE2')
if [[ ("$X86_SHA256_HASH_BLOCKS" -ne "0") ]]; then if [[ ("$X86_SHA256_HASH_BLOCKS" -ne "0") ]]; then
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)')
if [[ ("$COUNT" -le "250") ]]; then if [[ ("$COUNT" -le "250") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS"
fi fi
else else
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(rol.*0x|ror.*0x)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(rol.*0x|ror.*0x)')
if [[ ("$COUNT" -le "500") ]]; then if [[ ("$COUNT" -le "500") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate rotate immediate instruction" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate rotate immediate instruction" | tee -a "$TEST_RESULTS"
@ -1323,13 +1306,13 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0")) ]]; t
FAILED=0 FAILED=0
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqhq|vpclmulqdq)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqhq|vpclmulqdq)')
if [[ ("$COUNT" -eq "0") ]]; then if [[ ("$COUNT" -eq "0") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS"
fi fi
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c '(pclmulqdq|pclmullqlq|vpclmulqdq)') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E '(pclmulqdq|pclmullqlq|vpclmulqdq)')
if [[ ("$COUNT" -eq "0") ]]; then if [[ ("$COUNT" -eq "0") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate pclmullqlq instruction" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate pclmullqlq instruction" | tee -a "$TEST_RESULTS"
@ -1462,7 +1445,7 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
############################################ ############################################
# ARM NEON code generation # ARM NEON code generation
ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$EGREP" -i -c '(neon|asimd)') ARM_NEON=$(echo -n "$ARM_CPU_FLAGS" | "$GREP" -i -c -E '(neon|asimd)')
if [[ ("$ARM_NEON" -ne "0" || "$HAVE_ARM_NEON" -ne "0") ]]; then if [[ ("$ARM_NEON" -ne "0" || "$HAVE_ARM_NEON" -ne "0") ]]; then
echo echo
echo "************************************" | tee -a "$TEST_RESULTS" echo "************************************" | tee -a "$TEST_RESULTS"
@ -1477,35 +1460,35 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null) DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
# ARIA::UncheckedKeySet: 8 vld1q.32 # ARIA::UncheckedKeySet: 8 vld1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vld') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vld')
if [[ ("$COUNT" -lt "8") ]]; then if [[ ("$COUNT" -lt "8") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 24 vstr1q.32 # ARIA::UncheckedKeySet: 24 vstr1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vst') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vst')
if [[ ("$COUNT" -lt "24") ]]; then if [[ ("$COUNT" -lt "24") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 17 vshl.32 # ARIA::UncheckedKeySet: 17 vshl.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 17 vshr.32 # ARIA::UncheckedKeySet: 17 vshr.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS"
fi fi
# ARIA::UncheckedKeySet: 34 veor # ARIA::UncheckedKeySet: 34 veor
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'eor.*v|veor') COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c -E 'eor.*v|veor')
if [[ ("$COUNT" -lt "34") ]]; then if [[ ("$COUNT" -lt "34") ]]; then
FAILED=1 FAILED=1
echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS" echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS"
@ -5776,13 +5759,13 @@ echo | tee -a "$TEST_RESULTS"
# "Error" is from the GNU assembler # "Error" is from the GNU assembler
# "error" is from the sanitizers # "error" is from the sanitizers
# "Illegal", "Conditional", "0 errors" and "suppressed errors" are from Valgrind. # "Illegal", "Conditional", "0 errors" and "suppressed errors" are from Valgrind.
ECOUNT=$("$EGREP" '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$EGREP" -v '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}') ECOUNT=$("$GREP" -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' $TEST_RESULTS | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|format-security)' | wc -l | "$AWK" '{print $1}')
if (( "$ECOUNT" == "0" )); then if (( "$ECOUNT" == "0" )); then
echo "No failures detected" | tee -a "$TEST_RESULTS" echo "No failures detected" | tee -a "$TEST_RESULTS"
else else
echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS" echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS"
if (( "$ECOUNT" < 16 )); then if (( "$ECOUNT" < 16 )); then
"$EGREP" -n '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$EGREP" -v '( 0 errors|suppressed errors|error detector|Assertion|format-security)' "$GREP" -n -E '(Error|ERROR|error|FAILED|Illegal|Conditional|CryptoPP::Exception)' "$TEST_RESULTS" | "$GREP" -v -E '( 0 errors|suppressed errors|error detector|Assertion|format-security)'
fi fi
fi fi
@ -5793,12 +5776,12 @@ echo
echo "************************************************" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo "************************************************" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
echo | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
WCOUNT=$("$EGREP" '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}') WCOUNT=$("$GREP" -E '(warning:)' $WARN_RESULTS | wc -l | "$AWK" '{print $1}')
if (( "$WCOUNT" == "0" )); then if (( "$WCOUNT" == "0" )); then
echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
else else
echo "$WCOUNT warnings detected. See $WARN_RESULTS for details" | tee -a "$TEST_RESULTS" "$WARN_RESULTS" echo "$WCOUNT warnings detected. See $WARN_RESULTS for details" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
# "$EGREP" -n '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations' # "$GREP" -n -E '(warning:)' $WARN_RESULTS | "$GREP" -v 'deprecated-declarations'
fi fi
############################################ ############################################