Cleanup script. Reduce uname calls. Enable SunCC 12.5 by default, if available. Remove adhoc.exe artifact on each test. Add explicit tests for OPT_O0, OPT_O1, OPT_O2, OPT_G0, OPT_G1 and OPT_G2. Remove SUNCC_123_OR_ABOVE. Print DEBUG_CXXFLAGS, RELEASE_CXXFLAGS and VALGRIND_CXXFLAGS

pull/239/head
Jeffrey Walton 2016-07-09 18:09:36 -04:00
parent dfc82a787d
commit 997a813afc
1 changed files with 154 additions and 72 deletions

View File

@ -66,20 +66,22 @@ EGREP=egrep
SED=sed
AWK=awk
IS_DARWIN=$(uname -s | "$GREP" -i -c darwin)
IS_LINUX=$(uname -s | "$GREP" -i -c linux)
IS_CYGWIN=$(uname -s | "$GREP" -i -c cygwin)
IS_MINGW=$(uname -s | "$GREP" -i -c mingw)
IS_OPENBSD=$(uname -s | "$GREP" -i -c openbsd)
IS_NETBSD=$(uname -s | "$GREP" -i -c netbsd)
IS_SOLARIS=$(uname -s | "$GREP" -i -c sunos)
THIS_SYSTEM=$(uname -s 2>&1)
IS_DARWIN=$(echo "$THIS_SYSTEM" | "$GREP" -i -c darwin)
IS_LINUX=$(echo "$THIS_SYSTEM" | "$GREP" -i -c linux)
IS_CYGWIN=$(echo "$THIS_SYSTEM" | "$GREP" -i -c cygwin)
IS_MINGW=$(echo "$THIS_SYSTEM" | "$GREP" -i -c mingw)
IS_OPENBSD=$(echo "$THIS_SYSTEM" | "$GREP" -i -c openbsd)
IS_NETBSD=$(echo "$THIS_SYSTEM" | "$GREP" -i -c netbsd)
IS_SOLARIS=$(echo "$THIS_SYSTEM" | "$GREP" -i -c sunos)
IS_X86=$(uname -m | "$EGREP" -i -c "(i386|i586|i686|amd64|x86_64)")
IS_X64=$(uname -m | "$EGREP" -i -c "(amd64|x86_64)")
IS_PPC=$(uname -m | "$EGREP" -i -c "(Power|PPC)")
IS_ARM32=$(uname -m | "$GREP" -v "arm64" | "$EGREP" -i -c "arm|aarch32")
IS_ARM64=$(uname -m | "$EGREP" -i -c "arm64|aarch64")
IS_S390=$(uname -m | "$EGREP" -i -c "s390")
THIS_MACHINE=$(uname -m 2>&1)
IS_X86=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(i386|i586|i686|amd64|x86_64)")
IS_X64=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(amd64|x86_64)")
IS_PPC=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(Power|PPC)")
IS_ARM32=$(echo "$THIS_MACHINE" | "$GREP" -v "arm64" | "$EGREP" -i -c "arm|aarch32")
IS_ARM64=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "(arm64|aarch64)")
IS_S390=$(echo "$THIS_MACHINE" | "$EGREP" -i -c "s390")
IS_X32=0
# Fixup
@ -119,9 +121,9 @@ if [[ ((-z "$CXX") || ("$CXX" == "gcc")) ]]; then
CXX=c++
elif [[ "$IS_SOLARIS" -ne "0" ]]; then
# SunCC 12.5 is mostly broken
#if [[ (-e "/opt/developerstudio12.5/bin/CC") ]]; then
# CXX=/opt/developerstudio12.5/bin/CC
if [[ (-e "/opt/solarisstudio12.4/bin/CC") ]]; then
if [[ (-e "/opt/developerstudio12.5/bin/CC") ]]; then
CXX=/opt/developerstudio12.5/bin/CC
elif [[ (-e "/opt/solarisstudio12.4/bin/CC") ]]; then
CXX=/opt/solarisstudio12.4/bin/CC
elif [[ (-e "/opt/solarisstudio12.3/bin/CC") ]]; then
CXX=/opt/solarisstudio12.3/bin/CC
@ -151,9 +153,9 @@ 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")
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)')
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)")
if [[ ("$AMD64" -ne "0") && ("$ILP32" -ne "0") ]]; then
IS_X32=1
fi
@ -163,14 +165,12 @@ fi
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')
# SunCC 12.2 and below needs one set of CXXFLAGS; SunCC 12.3 and above needs another set of CXXFLAGS. Beware, SunCC 12.5 is broken.
SUNCC_123_OR_ABOVE=$("$CXX" -E -xdumpmacros /dev/null 2>&1 | "$GREP" " __SUNPRO_CC " 2>/dev/null | "$AWK" '{print ($2 >= 0x5120) ? "1" : "0"}' )
# Fixup
if [[ ("$IS_OPENBSD" -ne "0" || "$IS_NETBSD" -ne "0") ]]; then
MAKE=gmake
elif [[ ("$IS_SOLARIS" -ne "0") ]]; then
MAKE=$(which gmake 2>/dev/null)
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
@ -195,15 +195,17 @@ fi
rm -f adhoc.cpp > /dev/null 2>&1
cp adhoc.cpp.proto adhoc.cpp
# Hit or miss, only latest compilers.
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_CXX17") ]]; then
HAVE_CXX17=0
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=c++17 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_CXX17=1
fi
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_GNU17") ]]; then
HAVE_GNU17=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=gnu++17 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -212,7 +214,7 @@ if [[ (-z "$HAVE_GNU17") ]]; then
fi
fi
# Hit or miss, mostly miss.
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_CXX14") ]]; then
HAVE_CXX14=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=c++14 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -221,6 +223,7 @@ if [[ (-z "$HAVE_CXX14") ]]; then
fi
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_GNU14") ]]; then
HAVE_GNU14=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=gnu++14 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -229,7 +232,7 @@ if [[ (-z "$HAVE_GNU14") ]]; then
fi
fi
# Hit or miss, mostly hit.
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_CXX11") ]]; then
HAVE_CXX11=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=c++11 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -238,6 +241,7 @@ if [[ (-z "$HAVE_CXX11") ]]; then
fi
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_GNU11") ]]; then
HAVE_GNU11=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=gnu++11 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -246,7 +250,7 @@ if [[ (-z "$HAVE_GNU11") ]]; then
fi
fi
# OpenBSD 5.7 and OS X 10.5 cannot consume -std=c++03
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_CXX03") ]]; then
HAVE_CXX03=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=c++03 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -255,6 +259,7 @@ if [[ (-z "$HAVE_CXX03") ]]; then
fi
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_GNU03") ]]; then
HAVE_GNU03=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -std=gnu++03 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -263,13 +268,57 @@ if [[ (-z "$HAVE_GNU03") ]]; then
fi
fi
# Use a fallback strategy so OPT_O0 can be used with DEBUG_CXXFLAGS
OPT_O0=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O0 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_O0=-O0
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO0 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_O0=-xO0
fi
fi
# Use a fallback strategy so OPT_O1 can be used with VALGRIND_CXXFLAGS
OPT_O1=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O1 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_O1=-O1
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO1 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_O1=-xO1
fi
fi
# Use a fallback strategy so OPT_O2 can be used with RELEASE_CXXFLAGS
OPT_O2=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O2 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_O2=-O2
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO2 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_O2=-xO2
fi
fi
HAVE_O3=0
OPT_O3=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O3 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
HAVE_O3=1
OPT_O3=-O3
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO3 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
HAVE_O3=1
@ -277,13 +326,16 @@ else
fi
fi
# Hit or miss, mostly hit
HAVE_O5=0
OPT_O5=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -O5 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
HAVE_O5=1
OPT_O5=-O5
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xO5 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
HAVE_O5=1
@ -291,13 +343,16 @@ else
fi
fi
# Hit or miss, mostly hit
HAVE_OS=0
OPT_OS=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -Os adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
HAVE_OS=1
OPT_OS=-Os
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -xOs adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
HAVE_OS=1
@ -305,7 +360,35 @@ else
fi
fi
# Undefined Behavior sanitizer
# Use a fallback strategy so OPT_G2 can be used with RELEASE_CXXFLAGS
OPT_G2=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -g2 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_G2=-g2
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -g adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_G2=-g
fi
fi
# Use a fallback strategy so OPT_G3 can be used with DEBUG_CXXFLAGS
OPT_G3=
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -g3 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_G3=-g3
else
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -g adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ ("$?" -eq "0") ]]; then
OPT_G3=-g
fi
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_UBSAN") ]]; then
HAVE_UBSAN=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -fsanitize=undefined adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
@ -317,7 +400,7 @@ if [[ (-z "$HAVE_UBSAN") ]]; then
fi
fi
# Address sanitizer
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_ASAN") ]]; then
HAVE_ASAN=0
"$CXX" -DCRYPTOPP_ADHOC_MAIN -fsanitize=address adhoc.cpp -o "$TMP/adhoc.exe" &>/dev/null
@ -329,12 +412,7 @@ if [[ (-z "$HAVE_ASAN") ]]; then
fi
fi
# Fixup; see http://github.com/weidai11/cryptopp/issues/212
if [[ ("$GCC_48_COMPILER" -ne "0" && "$IS_ARM32" -ne "0") ]]; then
HAVE_ASAN=0
fi
# Darwin and Intel multiarch
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_INTEL_MULTIARCH") ]]; then
HAVE_INTEL_MULTIARCH=0
if [[ ("$IS_DARWIN" -ne "0") && ("$IS_X86" -ne "0" || "$IS_X64" -ne "0") ]]; then
@ -345,7 +423,7 @@ if [[ (-z "$HAVE_INTEL_MULTIARCH") ]]; then
fi
fi
# Darwin and PowerPC multiarch
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_PPC_MULTIARCH") ]]; then
HAVE_PPC_MULTIARCH=0
if [[ ("$IS_DARWIN" -ne "0") && ("$IS_PPC" -ne "0") ]]; then
@ -356,10 +434,10 @@ if [[ (-z "$HAVE_PPC_MULTIARCH") ]]; then
fi
fi
# Debian and a couple of others
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_X32") ]]; then
HAVE_X32=0
if [[ "$IS_X64" -ne "0" ]]; then
if [[ "$IS_X32" -ne "0" ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -mx32 adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_X32=1
@ -367,8 +445,9 @@ if [[ (-z "$HAVE_X32") ]]; then
fi
fi
# ARMv7a/Aarch32 (may run on Aarch64). SunCC 12.5 reports Illegal Option and returns 0
if [[ (-z "$HAVE_ARMV7A") && ("$SUN_COMPILER" -eq "0") ]]; then
# ARMv7a/Aarch32 (may run on Aarch64).
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_ARMV7A") ]]; then
HAVE_ARMV7A=0
if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -march=armv7a adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -381,8 +460,9 @@ if [[ (-z "$HAVE_ARMV7A") && ("$SUN_COMPILER" -eq "0") ]]; then
fi
fi
# ARM NEON (may run on Aarch64). SunCC 12.5 reports Illegal Option and returns 0
if [[ (-z "$HAVE_ARM_NEON") && ("$SUN_COMPILER" -eq "0") ]]; then
# ARM NEON (may run on Aarch64).
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_ARM_NEON") ]]; then
HAVE_ARM_NEON=0
if [[ ("$IS_ARM32" -ne "0") ]]; then
if [[ $(cat /proc/cpuinfo 2>/dev/null | "$GREP" -i -c NEON) -ne "0" ]]; then
@ -391,8 +471,9 @@ if [[ (-z "$HAVE_ARM_NEON") && ("$SUN_COMPILER" -eq "0") ]]; then
fi
fi
# ARMv8/Aarch64, CRC and Crypto. SunCC 12.5 reports Illegal Option and returns 0
if [[ (-z "$HAVE_ARM_CRYPTO") && ("$SUN_COMPILER" -eq "0") ]]; then
# ARMv8/Aarch64, CRC and Crypto.
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_ARM_CRYPTO") ]]; then
HAVE_ARM_CRYPTO=0
if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crypto adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -402,8 +483,9 @@ if [[ (-z "$HAVE_ARM_CRYPTO") && ("$SUN_COMPILER" -eq "0") ]]; then
fi
fi
# ARMv8/Aarch64, CRC and Crypto. SunCC 12.5 reports Illegal Option and returns 0
if [[ (-z "$HAVE_ARM_CRC") && ("$SUN_COMPILER" -eq "0") ]]; then
# ARMv8/Aarch64, CRC and Crypto.
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_ARM_CRC") ]]; then
HAVE_ARM_CRC=0
if [[ ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0") ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crc adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
@ -418,19 +500,26 @@ HAVE_X86_AES=0
HAVE_X86_RDRAND=0
HAVE_X86_RDSEED=0
HAVE_X86_PCLMUL=0
if [[ (("$IS_X86" -ne "0") || ("$IS_X64" -ne "0")) && ("$SUN_COMPILER" -eq "0") ]]; then
if [[ (("$IS_X86" -ne "0") || ("$IS_X64" -ne "0")) ]]; then
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -maes adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_X86_AES=1
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -mrdrnd adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_X86_RDRAND=1
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -mrdseed adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_X86_RDSEED=1
fi
rm -f "$TMP/adhoc.exe" > /dev/null 2>&1
"$CXX" -DCRYPTOPP_ADHOC_MAIN -mpclmul adhoc.cpp -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_X86_PCLMUL=1
@ -452,11 +541,11 @@ if [[ (-z "$HAVE_VALGRIND") ]]; then
fi
# Try to find a symbolizer for Asan
if [[ (-z "$HAVE_SYMBOLIZE") ]]; then
if [[ (-z "$HAVE_SYMBOLIZE") && (! -z "$ASAN_SYMBOLIZER_PATH") ]]; then
# Sets default value
HAVE_SYMBOLIZE=$(which asan_symbolize 2>&1 | "$GREP" -v "no asan_symbolize" | "$GREP" -i -c "asan_symbolize")
if [[ (("$HAVE_SYMBOLIZE" -ne "0") && (-z "$ASAN_SYMBOLIZE")) ]]; then
ASAN_SYMBOLIZE="asan_symbolize"
ASAN_SYMBOLIZE=asan_symbolize
fi
# Clang implicitly uses ASAN_SYMBOLIZER_PATH; set it if its not set.
@ -556,10 +645,10 @@ fi
# -O3, -O5 and -Os
echo | tee -a "$TEST_RESULTS"
echo "HAVE_O3: $HAVE_O3" | tee -a "$TEST_RESULTS"
if [[ ("$HAVE_O5" -ne "0" || "$HAVE_OS" -ne "0") ]]; then
echo "HAVE_O5: $HAVE_O5" | tee -a "$TEST_RESULTS"
echo "HAVE_OS: $HAVE_OS" | tee -a "$TEST_RESULTS"
echo "OPT_O3: $OPT_O3" | tee -a "$TEST_RESULTS"
if [[ (! -z "$OPT_O5") || (! -z "$OPT_OS") ]]; then
echo "OPT_O5: $OPT_O5" | tee -a "$TEST_RESULTS"
echo "OPT_OS: $OPT_OS" | tee -a "$TEST_RESULTS"
fi
# Tools available for testing
@ -691,7 +780,7 @@ if [[ ! -z "$GIT_BRANCH" ]]; then
fi
if [[ ("$SUN_COMPILER" -ne "0") ]]; then
echo $("$CXX" -V 2>&1 | "$SED" 's|CC:|Compiler:|g') | head -1 | tee -a "$TEST_RESULTS"
echo $("$CXX" -V 2>&1 | "$SED" 's|CC:|Compiler:|g' | head -1) | tee -a "$TEST_RESULTS"
else
echo "Compiler:" $("$CXX" --version | head -1) | tee -a "$TEST_RESULTS"
fi
@ -719,24 +808,11 @@ if [[ ("$IS_ARM32" -ne "0") && ("$HAVE_ARM_NEON" -ne "0") ]]; then
fi
# Calcualte these once. They handle Clang, GCC, ICC, etc
DEBUG_CXXFLAGS="-DDEBUG -g3 -O0"
RELEASE_CXXFLAGS="-DNDEBUG -g2 -O2"
VALGRIND_CXXFLAGS="-DNDEBUG -g2 -O1"
DEBUG_CXXFLAGS="-DDEBUG $OPT_G3 $OPT_O0"
RELEASE_CXXFLAGS="-DNDEBUG $OPT_G2 $OPT_O2"
VALGRIND_CXXFLAGS="-DNDEBUG $OPT_G3 $OPT_O1"
ELEVATED_CXXFLAGS=()
# SunCC is a special case
if [[ "$SUN_COMPILER" -ne "0" ]]; then
if [[ "$SUNCC_123_OR_ABOVE" -ne "0" ]]; then
DEBUG_CXXFLAGS="-DDEBUG -g3 -xO0"
RELEASE_CXXFLAGS="-DNDEBUG -g -xO2"
VALGRIND_CXXFLAGS="-DNDEBUG -g3 -xO1"
else
DEBUG_CXXFLAGS="-DDEBUG -g -xO0"
RELEASE_CXXFLAGS="-DNDEBUG -g -xO2"
VALGRIND_CXXFLAGS="-DNDEBUG -g -xO1"
fi
fi
if [[ ("$GCC_COMPILER" -ne "0") ]]; then
ELEVATED_CXXFLAGS+=("-DCRYPTOPP_NO_BACKWARDS_COMPATIBILITY_562" "-DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS" "-Wall" "-Wextra"
"-Wno-unknown-pragmas" "-Wstrict-aliasing=3" "-Wstrict-overflow" "-Waggressive-loop-optimizations"
@ -755,6 +831,12 @@ if [[ ("$CLANG_COMPILER" -ne "0") ]]; then
ELEVATED_CXXFLAGS+=("-Wno-unknown-pragmas" "-Wstrict-overflow" "-Wcast-align" "-Wwrite-strings" "-Wformat=2" "-Wformat-security")
fi
echo | tee -a "$TEST_RESULTS"
echo "DEBUG_CXXFLAGS: $DEBUG_CXXFLAGS" | tee -a "$TEST_RESULTS"
echo "RELEASE_CXXFLAGS: $RELEASE_CXXFLAGS" | tee -a "$TEST_RESULTS"
echo "VALGRIND_CXXFLAGS: $VALGRIND_CXXFLAGS" | tee -a "$TEST_RESULTS"
# echo "ELEVATED_CXXFLAGS: ${ELEVATED_CXXFLAGS[@]}" | tee -a "$TEST_RESULTS"
#############################################
#############################################
############### BEGIN TESTING ###############
@ -3888,7 +3970,7 @@ fi
# This check was added after testing on Ubuntu 14.04 with Clang 3.4.
if [[ ("$CLANG_COMPILER" -eq "0") ]]; then
CLANG_CXX=$(which clang++ 2>/dev/null)
CLANG_CXX=$(which clang++ 2>&1 | "$GREP" -v "no clang++" | head -1)
"$CLANG_CXX" -x c++ -DCRYPTOPP_ADHOC_MAIN adhoc.cpp.proto -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
@ -3923,7 +4005,7 @@ fi
# Perform a quick check with GCC, if available.
if [[ ("$GCC_COMPILER" -eq "0") ]]; then
GCC_CXX=$(which g++ 2>/dev/null)
GCC_CXX=$(which g++ 2>&1 | "$GREP" -v "no g++" | head -1)
"$GCC_CXX" -x c++ -DCRYPTOPP_ADHOC_MAIN adhoc.cpp.proto -o "$TMP/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
@ -3958,7 +4040,7 @@ fi
# Perform a quick check with Intel ICPC, if available.
if [[ ("$INTEL_COMPILER" -eq "0") ]]; then
INTEL_CXX=$(which icpc 2>/dev/null)
INTEL_CXX=$(which icpc 2>&1 | "$GREP" -v "no icpc" | head -1)
if [[ (-z "$INTEL_CXX") ]]; then
INTEL_CXX=$(find /opt/intel -name icpc 2>/dev/null | "$GREP" -iv composer | head -1)
fi