From 0403fc747da9fd6477d3d422296d6066762b7775 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Thu, 9 Jun 2016 03:47:57 -0400 Subject: [PATCH] Added Sun Studio testing (Issue 180) --- GNUmakefile | 2 +- cryptest.sh | 469 +++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 352 insertions(+), 119 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 3756706d..80bf9803 100755 --- a/GNUmakefile +++ b/GNUmakefile @@ -238,7 +238,7 @@ else ifeq ($(SUN_COMPILER)$(IS_64),10) CXXFLAGS += -native -template=no%extdef -w -erroff=wvarhidemem -erroff=voidretw -m32 endif ifneq ($(IS_X86),1) -CXXFLAGS += -Kpic +CXXFLAGS += -KPIC endif SUN_CC10_BUGGY := $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])") ifneq ($(SUN_CC10_BUGGY),0) diff --git a/cryptest.sh b/cryptest.sh index 2c9c9f28..fd1b0150 100755 --- a/cryptest.sh +++ b/cryptest.sh @@ -23,7 +23,8 @@ rm -f "$WARN_RESULTS" > /dev/null 2>&1 touch "$WARN_RESULTS" # Respect user's preferred flags, but filter the stuff we expliclty test -FILTERED_CXXFLAGS=("-DDEBUG" "-DNDEBUG" "-g" "-g0" "-g1" "-g2" "-g3" "-O0" "-O1" "-O2" "-O3" "-Os" "-Og" "-std=c++03" "-std=c++11" "-std=c++14" +FILTERED_CXXFLAGS=("-DDEBUG" "-DNDEBUG" "-g" "-g0" "-g1" "-g2" "-g3" "-O0" "-O1" "-O2" "-O3" "-Os" "-Og" + "-xO0" "-xO1" "-xO2" "-xO3" "-xOs" "-xOg" "-std=c++03" "-std=c++11" "-std=c++14" "-DCRYPTOPP_DISABLE_ASM" "-fsanitize=address" "-fsanitize=undefined" "-march=armv8-a+crypto" "-march=armv8-a+crc" "-DDCRYPTOPP_NO_BACKWARDS_COMPATIBILITY_562" "-DDCRYPTOPP_NO_UNALIGNED_DATA_ACCESS") # Additional CXXFLAGS we did not filter @@ -57,12 +58,21 @@ 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) 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 | egrep -i -c "arm|aarch32") IS_ARM64=$(uname -m | egrep -i -c "arm64|aarch64") +# 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 +fi + # We need to use the C++ compiler to determine if c++11 is available. Otherwise # a mis-detection occurs on Mac OS X 10.9 and above. Below, we use the same # Implicit Variables as make. Also see @@ -85,7 +95,17 @@ if [ "$CXX" == "gcc" ]; then fi # Fixup -if [ "$IS_OPENBSD" -ne "0" ] || [ "$IS_NETBSD" -ne "0" ]; then +if [ "$IS_SOLARIS" -ne "0" ]; then + if [ -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 + fi +fi +SUN_COMPILER=$($CXX -V 2>&1 | egrep -i -c "CC: Sun") + +# Fixup +if [ "$IS_OPENBSD" -ne "0" ] || [ "$IS_NETBSD" -ne "0" ] || [ "$SUN_COMPILER" -ne "0" ]; then MAKE=gmake else MAKE=make @@ -95,13 +115,17 @@ if [ -z "$TMP" ]; then TMP=/tmp fi -$CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -Wno-deprecated-declarations adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 +# Sun Studio does not allow '-x c++'. Copy it here... +rm -f adhoc.cpp > /dev/null 2>&1 +cp adhoc.cpp.proto adhoc.cpp + +$CXX -DCRYPTOPP_ADHOC_MAIN -Wno-deprecated-declarations adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then RETAINED_CXXFLAGS+=("-Wno-deprecated-declarations") fi # C++14 to ensure no surprises. Use the compiler driver, and not cpp, to tell us if the flag is consumed. -$CXX -x c++ -dM -E -std=c++14 - < /dev/null > /dev/null 2>&1 +$CXX -DCRYPTOPP_ADHOC_MAIN -std=c++14 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX14=1 else @@ -109,7 +133,7 @@ else fi # Use the compiler driver, and not cpp, to tell us if the flag is consumed. -$CXX -x c++ -dM -E -std=c++11 - < /dev/null > /dev/null 2>&1 +$CXX -DCRYPTOPP_ADHOC_MAIN -std=c++11 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX11=1 else @@ -117,7 +141,7 @@ else fi # OpenBSD 5.7 and OS X 10.5 cannot consume -std=c++03 -$CXX -x c++ -dM -E -std=c++03 - < /dev/null > /dev/null 2>&1 +$CXX -DCRYPTOPP_ADHOC_MAIN -std=c++03 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_CXX03=1 else @@ -125,7 +149,7 @@ else fi # Set to 0 if you don't have UBsan -$CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -fsanitize=undefined adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 +$CXX -DCRYPTOPP_ADHOC_MAIN -fsanitize=undefined adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ] && [ "$IS_X86" -ne "0" ]; then HAVE_UBSAN=1 else @@ -133,7 +157,7 @@ else fi # Set to 0 if you don't have Asan -$CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -fsanitize=address adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 +$CXX -DCRYPTOPP_ADHOC_MAIN -fsanitize=address adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ] && [ "$IS_X86" -ne "0" ]; then HAVE_ASAN=1 else @@ -143,7 +167,7 @@ fi # Set to 0 if you don't have Intel multiarch HAVE_INTEL_MULTIARCH=0 if [ "$IS_DARWIN" -ne "0" ] && [ "$IS_X86" -ne "0" ]; then - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -arch i386 -arch x86_64 adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 + $CXX -DCRYPTOPP_ADHOC_MAIN -arch i386 -arch x86_64 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_INTEL_MULTIARCH=1 fi @@ -152,7 +176,7 @@ fi # Set to 0 if you don't have PPC multiarch HAVE_PPC_MULTIARCH=0 if [ "$IS_DARWIN" -ne "0" ] && [ "$IS_PPC" -ne "0" ]; then - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -arch ppc -arch ppc64 adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 + $CXX -DCRYPTOPP_ADHOC_MAIN -arch ppc -arch ppc64 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_PPC_MULTIARCH=1 fi @@ -160,7 +184,7 @@ fi HAVE_X32=0 if [ "$IS_X64" -ne "0" ]; then - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -mx32 adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 + $CXX -DCRYPTOPP_ADHOC_MAIN -mx32 adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_X32=1 fi @@ -170,11 +194,11 @@ fi HAVE_ARM_CRC=0 HAVE_ARM_CRYPTO=0 if [ "$IS_ARM32" -ne "0" ] || [ "$IS_ARM64" -ne "0" ]; then - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crc adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 + $CXX -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crc adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_ARM_CRC=1 fi - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crypto adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 + $CXX -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crypto adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then HAVE_ARM_CRYPTO=1 fi @@ -184,15 +208,15 @@ HAVE_X86_AES=0 HAVE_X86_RDRAND=0 HAVE_X86_RDSEED=0 if [ "$IS_X86" -ne "0" ] || [ "$IS_X64" -ne "0" ]; then - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -maes adhoc.cpp.proto -o $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 - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -mrdrnd adhoc.cpp.proto -o $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 - $CXX -x c++ -DCRYPTOPP_ADHOC_MAIN -mrdseed adhoc.cpp.proto -o $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 @@ -258,6 +282,9 @@ elif [ "$IS_DARWIN" -ne "0" ]; then CPU_COUNT=$(sysctl -a 2>/dev/null | grep 'hw.availcpu' | head -1 | awk '{print $3}') MEM_SIZE=$(sysctl -a 2>/dev/null | grep 'hw.memsize' | head -1 | awk '{print $3}') MEM_SIZE=$(($MEM_SIZE/1024/1024)) +elif [ "$IS_SOLARIS" -ne "0" ]; then + CPU_COUNT=$(psrinfo 2>/dev/null | wc -l | nawk '{print $1}') + MEM_SIZE=$(prtconf 2>/dev/null | grep Memory | nawk '{print $3}') fi # Benchmarks expect frequency in GHz. @@ -268,6 +295,9 @@ if [ "$IS_LINUX" -ne "0" ] && [ -e "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo elif [ "$IS_DARWIN" -ne "0" ]; then CPU_FREQ=$(sysctl -a 2>/dev/null | grep 'hw.cpufrequency' | head -1 | awk '{print $3}') CPU_FREQ=$(awk "BEGIN {print $CPU_FREQ/1024/1024/1024}") +elif [ "$IS_SOLARIS" -ne "0" ]; then + CPU_FREQ=$(psrinfo -v 2>/dev/null | grep 'MHz' | head -1 | nawk '{print $6}') + CPU_FREQ=$(nawk "BEGIN {print $CPU_FREQ/1024}") fi # Some ARM devboards cannot use 'make -j N', even with multiple cores and RAM @@ -299,7 +329,12 @@ fi echo | tee -a "$TEST_RESULTS" echo "User CXXFLAGS: $CXXFLAGS" | tee -a "$TEST_RESULTS" echo "Retained CXXFLAGS: ${RETAINED_CXXFLAGS[@]}" | tee -a "$TEST_RESULTS" -echo "Compiler:" $($CXX --version | head -1) | tee -a "$TEST_RESULTS" + +if [ "$SUN_COMPILER" -ne "0" ]; then + echo $($CXX -V | head -1) | tee -a "$TEST_RESULTS" +else + echo "Compiler:" $($CXX --version | head -1) | tee -a "$TEST_RESULTS" +fi ############################################ ############################################ @@ -319,7 +354,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O2" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO0" +else + export CXXFLAGS="-DDEBUG -g2 -O0" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -346,7 +386,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2" +else + export CXXFLAGS="-DNDEBUG -g2 -O2" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -373,7 +418,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O2 -DCRYPTOPP_DISABLE_ASM" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO0 -DCRYPTOPP_DISABLE_ASM" +else + export CXXFLAGS="-DDEBUG -g2 -O0 -DCRYPTOPP_DISABLE_ASM" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -400,7 +450,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_DISABLE_ASM" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DCRYPTOPP_DISABLE_ASM" +else + export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_DISABLE_ASM" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -428,7 +483,12 @@ if [ "$HAVE_CXX03" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DDEBUG -g2 -O2 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO2 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DDEBUG -g3 -O2 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -457,7 +517,12 @@ if [ "$HAVE_CXX03" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -g2 -O2 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -g2 -O2 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -486,7 +551,12 @@ if [ "$HAVE_CXX11" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DDEBUG -g2 -O2 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO0 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DDEBUG -g2 -O0 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -515,7 +585,12 @@ if [ "$HAVE_CXX11" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -g2 -O2 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -g2 -O2 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -544,7 +619,12 @@ if [ "$HAVE_CXX14" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DDEBUG -g2 -O2 -std=c++14 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO0 -std=c++14 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DDEBUG -g3 -O0 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -573,7 +653,12 @@ if [ "$HAVE_CXX14" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -g2 -O2 -std=c++14 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -std=c++14 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -g3 -O2 -std=c++14 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -659,7 +744,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O2 -DCRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO0 -DCRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DDEBUG -g3 -O0 -DCRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -686,7 +776,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DCRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g3 -O2 -DCRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -713,7 +808,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O1 -DCRYPTOPP_INIT_PRIORITY=250 ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO1 -DCRYPTOPP_INIT_PRIORITY=250 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DDEBUG -g3 -O1 -DCRYPTOPP_INIT_PRIORITY=250 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -740,7 +840,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_INIT_PRIORITY=250 ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DCRYPTOPP_INIT_PRIORITY=250 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_INIT_PRIORITY=250 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -768,7 +873,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -796,7 +906,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_NO_BACKWARDS_COMPATIBILITY_562 ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DCRYPTOPP_NO_BACKWARDS_COMPATIBILITY_562 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_NO_BACKWARDS_COMPATIBILITY_562 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -823,7 +938,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O1 -DNO_OS_DEPENDENCE ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO1 -DNO_OS_DEPENDENCE ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DDEBUG -g3 -O1 -DNO_OS_DEPENDENCE ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -850,7 +970,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DNO_OS_DEPENDENCE ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DNO_OS_DEPENDENCE ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g2 -O2 -DNO_OS_DEPENDENCE ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -877,7 +1002,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O2 -DCRYPTOPP_USE_FIPS_202_SHA3" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO1 -DCRYPTOPP_USE_FIPS_202_SHA3 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DDEBUG -g2 -O1 -DCRYPTOPP_USE_FIPS_202_SHA3 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -904,7 +1034,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_USE_FIPS_202_SHA3" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO2 -DCRYPTOPP_USE_FIPS_202_SHA3 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g2 -O2 -DCRYPTOPP_USE_FIPS_202_SHA3 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -931,7 +1066,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O3 ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DDEBUG -g3 -xO3 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DDEBUG -g2 -O3 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -958,7 +1098,12 @@ unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O3 ${RETAINED_CXXFLAGS[@]}" +if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO3 ${RETAINED_CXXFLAGS[@]}" +else + export CXXFLAGS="-DNDEBUG -g2 -O3 ${RETAINED_CXXFLAGS[@]}" +fi + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -976,108 +1121,116 @@ fi ############################################ # Debug build at -Os -echo -echo "************************************" | tee -a "$TEST_RESULTS" -echo "Testing: debug, -Os optimizations" | tee -a "$TEST_RESULTS" -echo +if [ "$SUN_COMPILER" -eq "0"]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: debug, -Os optimizations" | tee -a "$TEST_RESULTS" + echo -unset CXXFLAGS -"$MAKE" clean > /dev/null 2>&1 -rm -f adhoc.cpp > /dev/null 2>&1 + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -Os ${RETAINED_CXXFLAGS[@]}" -"$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" + export CXXFLAGS="-DDEBUG -g2 -Os ${RETAINED_CXXFLAGS[@]}" + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" -if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" -else - ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" - fi - ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" - if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" + fi + ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + fi fi fi ############################################ # Release build at -Os -echo -echo "************************************" | tee -a "$TEST_RESULTS" -echo "Testing: release, -Os optimizations" | tee -a "$TEST_RESULTS" -echo +if [ "$SUN_COMPILER" -eq "0"]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: release, -Os optimizations" | tee -a "$TEST_RESULTS" + echo -unset CXXFLAGS -"$MAKE" clean > /dev/null 2>&1 -rm -f adhoc.cpp > /dev/null 2>&1 + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -Os ${RETAINED_CXXFLAGS[@]}" -"$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" + export CXXFLAGS="-DNDEBUG -g2 -Os ${RETAINED_CXXFLAGS[@]}" + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" -if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" -else - ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" - fi - ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" - if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" + fi + ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + fi fi fi ############################################ # Debug build, dead code strip -echo -echo "************************************" | tee -a "$TEST_RESULTS" -echo "Testing: debug, dead code strip" | tee -a "$TEST_RESULTS" -echo +if [ "$SUN_COMPILER" -eq "0"]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: debug, dead code strip" | tee -a "$TEST_RESULTS" + echo -unset CXXFLAGS -"$MAKE" clean > /dev/null 2>&1 + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 -export CXXFLAGS="-DDEBUG -g2 -O2 ${RETAINED_CXXFLAGS[@]}" -"$MAKE" "${MAKEARGS[@]}" lean 2>&1 | tee -a "$TEST_RESULTS" + export CXXFLAGS="-DDEBUG -g2 -O2 ${RETAINED_CXXFLAGS[@]}" + "$MAKE" "${MAKEARGS[@]}" lean 2>&1 | tee -a "$TEST_RESULTS" -if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" -else - ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" - fi - ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" - if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" + fi + ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + fi fi fi ############################################ # Release build, dead code strip -echo -echo "************************************" | tee -a "$TEST_RESULTS" -echo "Testing: release, dead code strip" | tee -a "$TEST_RESULTS" -echo +if [ "$SUN_COMPILER" -eq "0"]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: release, dead code strip" | tee -a "$TEST_RESULTS" + echo -unset CXXFLAGS -"$MAKE" clean > /dev/null 2>&1 -rm -f adhoc.cpp > /dev/null 2>&1 + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 -export CXXFLAGS="-DNDEBUG -g2 -O2 ${RETAINED_CXXFLAGS[@]}" -"$MAKE" "${MAKEARGS[@]}" lean 2>&1 | tee -a "$TEST_RESULTS" + export CXXFLAGS="-DNDEBUG -g2 -O2 ${RETAINED_CXXFLAGS[@]}" + "$MAKE" "${MAKEARGS[@]}" lean 2>&1 | tee -a "$TEST_RESULTS" -if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" -else - ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" - fi - ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" - if [ "${PIPESTATUS[0]}" -ne "0" ]; then - echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" + fi + ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + fi fi fi @@ -1269,6 +1422,66 @@ if [ "$HAVE_CXX11" -ne "0" ] && [ "$HAVE_ASAN" -ne "0" ]; then fi fi +# For Solaris, we test under Sun Studio 12.4 because it offers both -std=c++03 and -std=c++11. +# We also want to test a couple of builds under Sun Studio 12.3 +if [ "$IS_SOLARIS" -ne "0" ] && [ "$CXX" != "/opt/solarisstudio12.3/bin/CC" ] && [ -e "/opt/solarisstudio12.3/bin/CC" ]; then + CXX=/opt/solarisstudio12.3/bin/CC + + ############################################ + # Basic debug build + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: Sun Studio 12.3, debug, default CXXFLAGS" | tee -a "$TEST_RESULTS" + echo + + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 + + export CXXFLAGS="-DDEBUG -g3 -xO0" + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" + + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" + fi + ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + fi + fi + + ############################################ + # Basic release build + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: Sun Studio 12.3, release, default CXXFLAGS" | tee -a "$TEST_RESULTS" + echo + + unset CXXFLAGS + "$MAKE" clean > /dev/null 2>&1 + rm -f adhoc.cpp > /dev/null 2>&1 + + export CXXFLAGS="-DNDEBUG -g3 -xO2" + "$MAKE" "${MAKEARGS[@]}" static dynamic cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" + + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to make cryptest.exe" | tee -a "$TEST_RESULTS" + else + ./cryptest.exe v 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute validation suite" | tee -a "$TEST_RESULTS" + fi + ./cryptest.exe tv all 2>&1 | tee -a "$TEST_RESULTS" + if [ "${PIPESTATUS[0]}" -ne "0" ]; then + echo "ERROR: failed to execute test vectors" | tee -a "$TEST_RESULTS" + fi + fi +fi + # For Darwin, we need to test both -stdlib=libstdc++ (GNU) and # -stdlib=libc++ (LLVM) crossed with -std=c++03 and -std=c++11. @@ -1776,7 +1989,12 @@ if [ "$HAVE_CXX03" -ne "0" ]; then unset CXXFLAGS "$MAKE" clean > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -O3 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -xO3 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -O3 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + fi "$MAKE" "${MAKEARGS[@]}" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -1801,7 +2019,12 @@ if [ "$HAVE_CXX11" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -O3 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -xO3 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -O3 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -1887,7 +2110,12 @@ if [ "$HAVE_CXX03" -ne "0" ] && [ "$HAVE_VALGRIND" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -std=c++03 -g3 -O1 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO1 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -g3 -O1 -std=c++03 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -1910,7 +2138,12 @@ if [ "$HAVE_VALGRIND" -ne "0" ] && [ "$HAVE_CXX11" -ne "0" ]; then "$MAKE" clean > /dev/null 2>&1 rm -f adhoc.cpp > /dev/null 2>&1 - export CXXFLAGS="-DNDEBUG -std=c++11 -g3 -O1 ${RETAINED_CXXFLAGS[@]}" + if [ "$SUN_COMPILER" -ne "0" ]; then + export CXXFLAGS="-DNDEBUG -g3 -xO1 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + else + export CXXFLAGS="-DNDEBUG -g3 -O1 -std=c++11 ${RETAINED_CXXFLAGS[@]}" + fi + "$MAKE" "${MAKEARGS[@]}" static cryptest.exe 2>&1 | tee -a "$TEST_RESULTS" if [ "${PIPESTATUS[0]}" -ne "0" ]; then @@ -1923,7 +2156,7 @@ fi ############################################ # Build with elevated warnings -if [ "$HAVE_CXX03" -ne "0" ]; then +if [ "$HAVE_CXX03" -ne "0" ] && [ "$SUN_COMPILER" -eq "0" ]; then ############################################ # C++03 debug build @@ -1980,7 +2213,7 @@ fi ############################################ # Build with elevated warnings -if [ "$HAVE_CXX11" -ne "0" ]; then +if [ "$HAVE_CXX11" -ne "0" ] && [ "$SUN_COMPILER" -eq "0" ]; then ############################################ # C++11 debug build @@ -2038,10 +2271,10 @@ fi ############################################ # If using GCC (likely Linux), then perform a quick check with Clang. # This check was added after testing on Ubuntu 14.04 with Clang 3.4. -if [ "$CXX" == "g++" ]; then +if [ "$CXX" == "g++" ] && [ "$SUN_COMPILER" -eq "0" ]; then CLANG_COMPILER=$(which clang++ 2>/dev/null) - "$CLANG_COMPILER" -x c++ -DCRYPTOPP_ADHOC_MAIN adhoc.cpp.proto -o $TMP/adhoc.exe > /dev/null 2>&1 + "$CLANG_COMPILER" -x c++ -DCRYPTOPP_ADHOC_MAIN adhoc.cpp -o $TMP/adhoc.exe > /dev/null 2>&1 if [ "$?" -eq "0" ]; then ############################################