parent
ef28f46691
commit
c06995a71b
120
GNUmakefile
120
GNUmakefile
|
|
@ -17,41 +17,47 @@ RANLIB ?= ranlib
|
|||
CP ?= cp
|
||||
MV ?= mv
|
||||
RM ?= rm -f
|
||||
EGREP ?= egrep
|
||||
CHMOD ?= chmod
|
||||
MKDIR ?= mkdir
|
||||
LN ?= ln -sf
|
||||
LDCONF ?= /sbin/ldconfig -n
|
||||
UNAME := $(shell uname)
|
||||
|
||||
IS_X86 := $(shell uname -m | $(EGREP) -v "x86_64" | $(EGREP) -i -c "i.86|x86|i86")
|
||||
IS_X64 := $(shell uname -m | $(EGREP) -i -c "(_64|d64)")
|
||||
IS_PPC := $(shell uname -m | $(EGREP) -i -c "ppc|power")
|
||||
IS_ARM32 := $(shell uname -m | $(EGREP) -i -c '\<arm\>')
|
||||
IS_ARM64 := $(shell uname -m | $(EGREP) -i -c 'aarch64')
|
||||
IS_ARMV8 ?= $(shell uname -m | $(EGREP) -i -c 'aarch32|aarch64')
|
||||
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")
|
||||
# Solaris provides a non-Posix shell at /usr/bin
|
||||
ifneq ($(wildcard /usr/xpg4/bin),)
|
||||
GREP ?= /usr/xpg4/bin/grep
|
||||
else
|
||||
GREP ?= grep
|
||||
endif
|
||||
|
||||
IS_SUN := $(shell uname | $(EGREP) -i -c "SunOS")
|
||||
IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Linux")
|
||||
IS_MINGW := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "MinGW")
|
||||
IS_CYGWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Cygwin")
|
||||
IS_DARWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Darwin")
|
||||
IS_NETBSD := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "NetBSD")
|
||||
IS_X86 := $(shell uname -m | $(GREP) -v "x86_64" | $(GREP) -i -c -E "i.86|x86|i86")
|
||||
IS_X64 := $(shell uname -m | $(GREP) -i -c -E "(_64|d64)")
|
||||
IS_PPC := $(shell uname -m | $(GREP) -i -c "ppc|power")
|
||||
IS_ARM32 := $(shell uname -m | $(GREP) -i -c '\<arm\>')
|
||||
IS_ARM64 := $(shell uname -m | $(GREP) -i -c 'aarch64')
|
||||
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)")
|
||||
GCC_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -v "clang" | $(EGREP) -i -c "(gcc|g\+\+)")
|
||||
CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")
|
||||
INTEL_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "\(icc\)")
|
||||
MACPORTS_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "macports")
|
||||
IS_SUN := $(shell uname | $(GREP) -i -c "SunOS")
|
||||
IS_LINUX := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Linux")
|
||||
IS_MINGW := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "MinGW")
|
||||
IS_CYGWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(GREP) -i -c "Cygwin")
|
||||
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
|
||||
SUNCC_510_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "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_512_OR_LATER := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "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_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 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[1-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 | $(GREP) -i -c -E "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|6\.)")
|
||||
|
||||
# Enable shared object versioning for Linux
|
||||
HAS_SOLIB_VERSION := $(IS_LINUX)
|
||||
|
|
@ -70,12 +76,12 @@ endif
|
|||
|
||||
# Fixup SunOS
|
||||
ifeq ($(IS_SUN),1)
|
||||
IS_X86 := $(shell isainfo -k 2>/dev/null | $(EGREP) -i -c "i386")
|
||||
IS_X64 := $(shell isainfo -k 2>/dev/null | $(EGREP) -i -c "amd64")
|
||||
IS_X86 := $(shell isainfo -k 2>/dev/null | $(GREP) -i -c "i386")
|
||||
IS_X64 := $(shell isainfo -k 2>/dev/null | $(GREP) -i -c "amd64")
|
||||
endif
|
||||
|
||||
# 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 #####
|
||||
|
|
@ -138,24 +144,24 @@ ifneq ($(IS_X86)$(IS_X32)$(IS_X64),000)
|
|||
|
||||
# Fixup. Clang reports an error rather than "LLVM assembler" or similar.
|
||||
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
|
||||
|
||||
ifneq ($(GCC_COMPILER),0)
|
||||
IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c gcc-9[0-9][0-9])
|
||||
GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "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]\.)")
|
||||
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 | $(GREP) -i -c -E "gcc version (4\.[2-9]|[5-9]\.)")
|
||||
GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(GREP) -i -c -E "gcc version (4\.[6-9]|[5-9]\.)")
|
||||
endif
|
||||
|
||||
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])")
|
||||
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])")
|
||||
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])")
|
||||
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])")
|
||||
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])")
|
||||
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 | $(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 | $(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 | $(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 | $(GREP) -c -E "GNU assembler version (2\.2[3-9]|2\.[3-9]|[3-9])")
|
||||
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
|
||||
ifeq ($(IS_X86)$(IS_X32)$(IS_CYGWIN)$(IS_MINGW)$(SUN_COMPILER),00000)
|
||||
|
|
@ -189,28 +195,28 @@ endif # -DCRYPTOPP_DISABLE_ASM
|
|||
endif # 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)
|
||||
ARIA_FLAG = -mssse3
|
||||
SSSE3_FLAG = -mssse3
|
||||
endif
|
||||
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)
|
||||
BLAKE2_FLAG = -msse4.2
|
||||
CRC_FLAG = -msse4.2
|
||||
endif
|
||||
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)
|
||||
GCM_FLAG = -mssse3 -mpclmul
|
||||
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)
|
||||
AES_FLAG = -msse4.1 -maes
|
||||
endif
|
||||
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)
|
||||
SHA_FLAG = -msse4.2 -msha
|
||||
endif
|
||||
|
|
@ -221,25 +227,25 @@ endif # -DCRYPTOPP_DISABLE_SSSE3
|
|||
|
||||
# Begin SunCC
|
||||
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)
|
||||
SSSE3_FLAG = -xarch=ssse3 -D__SSSE3__=1
|
||||
ARIA_FLAG = -xarch=ssse3 -D__SSSE3__=1
|
||||
LDFLAGS += -xarch=ssse3
|
||||
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)
|
||||
BLAKE2_FLAG = -xarch=sse4_2 -D__SSE4_2__=1
|
||||
CRC_FLAG = -xarch=sse4_2 -D__SSE4_2__=1
|
||||
LDFLAGS += -xarch=sse4_2
|
||||
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)
|
||||
GCM_FLAG = -xarch=aes -D__PCLMUL__=1
|
||||
AES_FLAG = -xarch=aes -D__AES__=1
|
||||
LDFLAGS += -xarch=aes
|
||||
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)
|
||||
SHA_FLAG = -xarch=sha -D__SHA__=1
|
||||
LDFLAGS += -xarch=sha
|
||||
|
|
@ -311,7 +317,7 @@ endif
|
|||
endif
|
||||
|
||||
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)
|
||||
NEON_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
|
||||
|
||||
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)
|
||||
ARIA_FLAG = -march=armv8-a
|
||||
BLAKE2_FLAG = -march=armv8-a
|
||||
NEON_FLAG = -march=armv8-a
|
||||
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)
|
||||
CRC_FLAG = -march=armv8-a+crc
|
||||
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)
|
||||
AES_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
|
||||
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)
|
||||
CXXFLAGS += -m64
|
||||
else ifeq ($(IS_64),0)
|
||||
|
|
@ -397,7 +403,7 @@ CXXFLAGS += -template=no%extdef
|
|||
ifneq ($(IS_SPARC)$(IS_SPARC64),00)
|
||||
CXXFLAGS += -xmemalign=4i
|
||||
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)
|
||||
# -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
|
||||
|
|
@ -458,7 +464,7 @@ endif # Asan
|
|||
# LD gold linker testing. Triggered by 'LD=ld.gold'.
|
||||
ifeq ($(findstring ld.gold,$(LD)),ld.gold)
|
||||
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)
|
||||
LDFLAGS += -fuse-ld=gold
|
||||
endif # ELF/ELF64
|
||||
|
|
@ -505,7 +511,7 @@ 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) -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)
|
||||
ifeq ($(HAS_NEWLIB),0)
|
||||
ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),)
|
||||
|
|
@ -535,7 +541,7 @@ ifeq ($(findstring lean,$(MAKECMDGOALS)),lean)
|
|||
endif # Dead code stripping
|
||||
|
||||
# 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_MINOR := $(shell echo $(LIB_VER) | cut -c 2)
|
||||
LIB_PATCH := $(shell echo $(LIB_VER) | cut -c 3)
|
||||
|
|
@ -663,7 +669,7 @@ sources: adhoc.cpp
|
|||
DOCUMENT_DIRECTORY := ref$(LIB_VER)
|
||||
# Directory Doxygen uses (specified in Doygen config file)
|
||||
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
|
||||
# Default directory (in case its missing in the config file)
|
||||
ifeq ($(strip $(DOXYGEN_DIRECTORY)),)
|
||||
|
|
|
|||
|
|
@ -69,14 +69,30 @@ unset MallocScribble MallocPreScribble MallocGuardEdges
|
|||
# Setup tools and platforms
|
||||
|
||||
GREP=grep
|
||||
EGREP=egrep
|
||||
SED=sed
|
||||
AWK=awk
|
||||
MAKE=make
|
||||
|
||||
# Code generation tests
|
||||
DISASS=objdump
|
||||
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)
|
||||
IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin)
|
||||
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)
|
||||
|
||||
THIS_MACHINE=$(uname -m 2>&1)
|
||||
IS_X86=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i486|i686|i686)")
|
||||
IS_X64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)")
|
||||
IS_PPC=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)")
|
||||
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$EGREP" -i -c "(arm|aarch32)")
|
||||
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)")
|
||||
IS_S390=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "s390")
|
||||
IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)")
|
||||
IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)")
|
||||
IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)")
|
||||
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)")
|
||||
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)")
|
||||
IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390")
|
||||
IS_X32=0
|
||||
|
||||
# Fixup
|
||||
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
|
||||
DISASSARGS=()
|
||||
fi
|
||||
|
|
@ -134,18 +129,6 @@ if [[ "$IS_DARWIN" -ne 0 ]]; then
|
|||
DISASSARGS=("-tV")
|
||||
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
|
||||
if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then
|
||||
if [[ ("$IS_DARWIN" -ne "0") ]]; then
|
||||
|
|
@ -170,13 +153,13 @@ fi
|
|||
for ARG in "$@"
|
||||
do
|
||||
# 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
|
||||
WANT_BENCHMARKS=0
|
||||
# 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
|
||||
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
|
||||
else
|
||||
echo "Unknown option $ARG"
|
||||
|
|
@ -217,32 +200,32 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
SUN_COMPILER=$("$CXX" -V 2>&1 | "$EGREP" -i -c "CC: (Sun|Studio)")
|
||||
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$EGREP" -i -c "(gcc|g\+\+)")
|
||||
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "\(icc\)")
|
||||
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "MacPorts")
|
||||
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "clang")
|
||||
SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)")
|
||||
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)")
|
||||
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)")
|
||||
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts")
|
||||
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang")
|
||||
|
||||
if [[ ("$SUN_COMPILER" -eq "0") ]]; then
|
||||
AMD64=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__x64_64__|__amd64__)")
|
||||
ILP32=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__ILP32__|__ILP32)")
|
||||
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 | "$GREP" -i -c -E "(__ILP32__|__ILP32)")
|
||||
if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then
|
||||
IS_X32=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 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])')
|
||||
GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c '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_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (5\.[1-9]|[6-9])')
|
||||
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.8')
|
||||
GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.9')
|
||||
GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c '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_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "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_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-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 | "$GREP" -i -c -E 'gcc version (7\.[0-9]|[8-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 | "$GREP" -i -c -E 'gcc version (5\.[1-9]|[6-9])')
|
||||
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.8')
|
||||
GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.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 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[0-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 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[2-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
|
||||
if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then
|
||||
|
|
@ -480,7 +463,7 @@ OPT_PIC=
|
|||
rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ (-z "$HAVE_PIC") ]]; then
|
||||
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
|
||||
HAVE_PIC=1
|
||||
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)
|
||||
ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1)
|
||||
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
|
||||
"$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ "$?" -eq "0" ]]; then
|
||||
|
|
@ -624,7 +607,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
|
|||
fi
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
|
|
@ -658,7 +641,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
|
|||
fi
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
|
|
@ -827,7 +810,7 @@ CPU_COUNT=1
|
|||
MEM_SIZE=512
|
||||
|
||||
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=$(($MEM_SIZE/1024))
|
||||
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
|
||||
# http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html
|
||||
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
|
||||
PLATFORM_CXXFLAGS+=("-mfloat-abi=hard")
|
||||
else
|
||||
|
|
@ -1100,14 +1083,14 @@ if true; then
|
|||
FAILED=0
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS"
|
||||
|
|
@ -1138,14 +1121,14 @@ if true; then
|
|||
FAILED=0
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "FAILED: found std::min" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
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)
|
||||
|
||||
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
|
||||
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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
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
|
||||
FAILED=1
|
||||
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
|
||||
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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS"
|
||||
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
|
||||
FAILED=1
|
||||
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=$(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
|
||||
echo
|
||||
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)
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
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 sanitizers
|
||||
# "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
|
||||
echo "No failures detected" | tee -a "$TEST_RESULTS"
|
||||
else
|
||||
echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS"
|
||||
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
|
||||
|
||||
|
|
@ -5793,12 +5776,12 @@ echo
|
|||
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
|
||||
echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
|
||||
else
|
||||
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
|
||||
|
||||
############################################
|
||||
|
|
|
|||
157
cryptest.sh
157
cryptest.sh
|
|
@ -69,14 +69,30 @@ unset MallocScribble MallocPreScribble MallocGuardEdges
|
|||
# Setup tools and platforms
|
||||
|
||||
GREP=grep
|
||||
EGREP=egrep
|
||||
SED=sed
|
||||
AWK=awk
|
||||
MAKE=make
|
||||
|
||||
# Code generation tests
|
||||
DISASS=objdump
|
||||
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)
|
||||
IS_DARWIN=$(echo -n "$THIS_SYSTEM" | "$GREP" -i -c darwin)
|
||||
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)
|
||||
|
||||
THIS_MACHINE=$(uname -m 2>&1)
|
||||
IS_X86=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i486|i686|i686)")
|
||||
IS_X64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)")
|
||||
IS_PPC=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)")
|
||||
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$EGREP" -i -c "(arm|aarch32)")
|
||||
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)")
|
||||
IS_S390=$(echo -n "$THIS_MACHINE" | "$EGREP" -i -c "s390")
|
||||
IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)")
|
||||
IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)")
|
||||
IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)")
|
||||
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)")
|
||||
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)")
|
||||
IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390")
|
||||
IS_X32=0
|
||||
|
||||
# Fixup
|
||||
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
|
||||
DISASSARGS=()
|
||||
fi
|
||||
|
|
@ -134,18 +129,6 @@ if [[ "$IS_DARWIN" -ne 0 ]]; then
|
|||
DISASSARGS=("-tV")
|
||||
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
|
||||
if [[ ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then
|
||||
if [[ ("$IS_DARWIN" -ne "0") ]]; then
|
||||
|
|
@ -170,13 +153,13 @@ fi
|
|||
for ARG in "$@"
|
||||
do
|
||||
# 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
|
||||
WANT_BENCHMARKS=0
|
||||
# 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
|
||||
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
|
||||
else
|
||||
echo "Unknown option $ARG"
|
||||
|
|
@ -217,32 +200,32 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
SUN_COMPILER=$("$CXX" -V 2>&1 | "$EGREP" -i -c "CC: (Sun|Studio)")
|
||||
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$EGREP" -i -c "(gcc|g\+\+)")
|
||||
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "\(icc\)")
|
||||
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "MacPorts")
|
||||
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$EGREP" -i -c "clang")
|
||||
SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)")
|
||||
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)")
|
||||
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)")
|
||||
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts")
|
||||
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang")
|
||||
|
||||
if [[ ("$SUN_COMPILER" -eq "0") ]]; then
|
||||
AMD64=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__x64_64__|__amd64__)")
|
||||
ILP32=$("$CXX" -dM -E - </dev/null 2>/dev/null | "$EGREP" -c "(__ILP32__|__ILP32)")
|
||||
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 | "$GREP" -i -c -E "(__ILP32__|__ILP32)")
|
||||
if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then
|
||||
IS_X32=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 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])')
|
||||
GCC_70_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c '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_51_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version (5\.[1-9]|[6-9])')
|
||||
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.8')
|
||||
GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$EGREP" -i -c 'gcc version 4\.9')
|
||||
GCC_49_OR_ABOVE=$("$CXX" -v 2>&1 | "$EGREP" -i -c '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_511_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "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_513_OR_ABOVE=$("$CXX" -V 2>&1 | "$EGREP" -c "CC: (Sun|Studio) .* (5\.1[3-9]|5\.[2-9]|[6-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 | "$GREP" -i -c -E 'gcc version (7\.[0-9]|[8-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 | "$GREP" -i -c -E 'gcc version (5\.[1-9]|[6-9])')
|
||||
GCC_48_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.8')
|
||||
GCC_49_COMPILER=$("$CXX" -v 2>&1 | "$GREP" -i -c -E 'gcc version 4\.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 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[0-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 | "$GREP" -c -E "CC: (Sun|Studio) .* (5\.1[2-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
|
||||
if [[ ("$SUNCC_510_OR_ABOVE" -ne "0") ]]; then
|
||||
|
|
@ -480,7 +463,7 @@ OPT_PIC=
|
|||
rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ (-z "$HAVE_PIC") ]]; then
|
||||
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
|
||||
HAVE_PIC=1
|
||||
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)
|
||||
ELF_FILE=$(which file 2>&1 | "$GREP" -v "no file" | head -1)
|
||||
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
|
||||
"$CXX" -DCRYPTOPP_ADHOC_MAIN -fuse-ld=gold adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
|
||||
if [[ "$?" -eq "0" ]]; then
|
||||
|
|
@ -624,7 +607,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
|
|||
fi
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
|
|
@ -658,7 +641,7 @@ if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
|
|||
fi
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
|
|
@ -827,7 +810,7 @@ CPU_COUNT=1
|
|||
MEM_SIZE=512
|
||||
|
||||
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=$(($MEM_SIZE/1024))
|
||||
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
|
||||
# http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka16242.html
|
||||
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
|
||||
PLATFORM_CXXFLAGS+=("-mfloat-abi=hard")
|
||||
else
|
||||
|
|
@ -1100,14 +1083,14 @@ if true; then
|
|||
FAILED=0
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "FAILED: found Posix assert headers" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "FAILED: found use of Posix assert" | tee -a "$TEST_RESULTS"
|
||||
|
|
@ -1138,14 +1121,14 @@ if true; then
|
|||
FAILED=0
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "FAILED: found std::min" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
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)
|
||||
|
||||
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
|
||||
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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate rotate immediate instruction (SHA256_HashMultipleBlocks_SSE2)" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
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
|
||||
FAILED=1
|
||||
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
|
||||
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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate pclmullqhq instruction" | tee -a "$TEST_RESULTS"
|
||||
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
|
||||
FAILED=1
|
||||
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=$(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
|
||||
echo
|
||||
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)
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS"
|
||||
fi
|
||||
|
||||
# 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
|
||||
FAILED=1
|
||||
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 sanitizers
|
||||
# "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
|
||||
echo "No failures detected" | tee -a "$TEST_RESULTS"
|
||||
else
|
||||
echo "$ECOUNT errors detected. See $TEST_RESULTS for details" | tee -a "$TEST_RESULTS"
|
||||
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
|
||||
|
||||
|
|
@ -5793,12 +5776,12 @@ echo
|
|||
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
|
||||
echo "No warnings detected" | tee -a "$TEST_RESULTS" "$WARN_RESULTS"
|
||||
else
|
||||
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
|
||||
|
||||
############################################
|
||||
|
|
|
|||
Loading…
Reference in New Issue