Extend testing of aes.o options
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh
index 9e1d84f..20b7fda 100755
--- a/tests/scripts/all.sh
+++ b/tests/scripts/all.sh
@@ -3934,13 +3934,25 @@
make lib CC="gcc" CFLAGS="-Os -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wformat-signedness -Wlogical-op -I../tests/include/spe"
}
-component_build_aes_variations() { # ~45s
+component_build_aes_variations() { # 3m20s
# aes.o has many #if defined(...) guards that intersect in complex ways.
# Test that all the combinations build cleanly. The most common issue is
# unused variables/functions, so ensure -Wunused is set.
msg "build: aes.o for all combinations of relevant config options"
+ # check to see if we can enable MBEDTLS_AES_USE_HARDWARE_ONLY - require
+ # Linux (so we can check for CPU flags)
+ if [[ "$OSTYPE" == "linux-gnu" ]]; then
+ # Runtime detection is supported on Linux, so it's safe to set these here
+ AESNI_OPTIONS="set unset"
+ AESCE_OPTIONS="set unset"
+ else
+ # otherwise leave them unset
+ AESNI_OPTIONS="unset"
+ AESCE_OPTIONS="unset"
+ fi
+
for a in set unset; do
for b in set unset; do
for c in set unset; do
@@ -3948,6 +3960,20 @@
for e in set unset; do
for f in set unset; do
for g in set unset; do
+ for h in set unset; do
+ for i in ${AESNI_OPTIONS}; do
+ for j in ${AESCE_OPTIONS}; do
+ if [[ "$h" == "set" ]]; then
+ if [[ !(("$HOSTTYPE" == "aarch64" && "$j" == "set") || ("$HOSTTYPE" == "x86_64" && "$i" == "set")) ]]; then
+ # MBEDTLS_AES_USE_HARDWARE_ONLY requires hw acceleration for the target platform
+ continue
+ fi
+ if [[ "$g" == "set" ]]; then
+ # MBEDTLS_AES_USE_HARDWARE_ONLY and MBEDTLS_PADLOCK_C is not supported
+ continue
+ fi
+ fi
+
echo ./scripts/config.py $a MBEDTLS_AES_SETKEY_ENC_ALT
echo ./scripts/config.py $b MBEDTLS_AES_DECRYPT_ALT
echo ./scripts/config.py $c MBEDTLS_AES_ROM_TABLES
@@ -3955,6 +3981,9 @@
echo ./scripts/config.py $e MBEDTLS_AES_SETKEY_DEC_ALT
echo ./scripts/config.py $f MBEDTLS_AES_FEWER_TABLES
echo ./scripts/config.py $g MBEDTLS_PADLOCK_C
+ echo ./scripts/config.py $h MBEDTLS_AES_USE_HARDWARE_ONLY
+ echo ./scripts/config.py $i MBEDTLS_AESNI_C
+ echo ./scripts/config.py $j MBEDTLS_AESCE_C
./scripts/config.py $a MBEDTLS_AES_SETKEY_ENC_ALT
./scripts/config.py $b MBEDTLS_AES_DECRYPT_ALT
@@ -3963,6 +3992,9 @@
./scripts/config.py $e MBEDTLS_AES_SETKEY_DEC_ALT
./scripts/config.py $f MBEDTLS_AES_FEWER_TABLES
./scripts/config.py $g MBEDTLS_PADLOCK_C
+ ./scripts/config.py $h MBEDTLS_AES_USE_HARDWARE_ONLY
+ ./scripts/config.py $i MBEDTLS_AESNI_C
+ ./scripts/config.py $j MBEDTLS_AESCE_C
rm -f library/aes.o
make -C library aes.o CC="clang" CFLAGS="-O0 -std=c99 -Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wasm-operand-widths -Wunused"
@@ -3973,6 +4005,9 @@
done
done
done
+ done
+ done
+ done
}
component_test_no_platform () {