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 () {