Use make to parellise tests
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh
index 22b4714..ba43d13 100755
--- a/tests/scripts/all.sh
+++ b/tests/scripts/all.sh
@@ -3935,7 +3935,7 @@
}
component_build_aes_variations() {
- # 1m40 - around 90ms per clang invocation on M1 Pro
+ # 18s - around 90ms per clang invocation on M1 Pro
#
# aes.o has many #if defined(...) guards that intersect in complex ways.
# Test that all the combinations build cleanly. The most common issue is
@@ -3962,11 +3962,11 @@
"MBEDTLS_AES_ENCRYPT_ALT" "MBEDTLS_AES_SETKEY_DEC_ALT" "MBEDTLS_AES_FEWER_TABLES" \
"MBEDTLS_PADLOCK_C" "MBEDTLS_AES_USE_HARDWARE_ONLY" "MBEDTLS_AESNI_C" "MBEDTLS_AESCE_C" \
"MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH"; do
- echo ./scripts/config.py unset ${x}
./scripts/config.py unset ${x}
done
- FAILED=0
+ MAKEFILE=$(mktemp)
+ DEPS=""
for a in 0 1; do [[ $a == 0 ]] && A="" || A="-DMBEDTLS_AES_SETKEY_ENC_ALT"
for b in 0 1; do [[ $b == 0 ]] && B="" || B="-DMBEDTLS_AES_DECRYPT_ALT"
@@ -3996,23 +3996,12 @@
# Capture failures and continue, but hide successes to avoid spamming the log with 2^11 combinations
CMD_FAILED=0
cmd="clang $A $B $C $D $E $F $G $H $I $J $K -fsyntax-only library/aes.c -Iinclude -std=c99 $WARNING_FLAGS"
- $cmd || CMD_FAILED=1
- if [[ $CMD_FAILED -eq 1 ]]; then
- FAILED=1
- echo "Failed: $cmd"
- echo $a MBEDTLS_AES_SETKEY_ENC_ALT
- echo $b MBEDTLS_AES_DECRYPT_ALT
- echo $c MBEDTLS_AES_ROM_TABLES
- echo $d MBEDTLS_AES_ENCRYPT_ALT
- echo $e MBEDTLS_AES_SETKEY_DEC_ALT
- echo $f MBEDTLS_AES_FEWER_TABLES
- echo $g MBEDTLS_PADLOCK_C
- echo $h MBEDTLS_AES_USE_HARDWARE_ONLY
- echo $i MBEDTLS_AESNI_C
- echo $j MBEDTLS_AESCE_C
- echo $k MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH
- fi
+ TARGET="t$a$b$c$d$e$f$g$h$i$j$k"
+ echo "${TARGET}:" >> $MAKEFILE
+ echo -e "\t$cmd" >> $MAKEFILE
+ echo >> $MAKEFILE
+ DEPS="${DEPS} ${TARGET}"
done
done
done
@@ -4025,7 +4014,12 @@
done
done
- [[ $FAILED -eq 1 ]] && false # fail if any combination failed
+ echo "all: ${DEPS}" >> $MAKEFILE
+
+ MAKEFILE_CONTENT=`cat $MAKEFILE`
+ rm ${MAKEFILE}
+ NCPUS=$(lscpu -p|tail -n1|sed 's/,.*//')
+ echo $MAKEFILE_CONTENT | make --quiet -j$((NCPUS * 2)) -f ${MAKEFILE} all
}
component_test_no_platform () {