Wildcard possible targets and document

Test application names and function file names can be constructed
based on the followed naming convention. This commit documents the
naming convention and removes explicit listing of the test
executables and the lookup table for finding .function file.
This commit is contained in:
Azim Khan 2018-06-29 12:39:19 +01:00 committed by Mohammad Azim Khan
parent 5fcca46a3a
commit 27a35e7712

View file

@ -53,126 +53,14 @@ ifdef ZLIB
LOCAL_LDFLAGS += -lz
endif
APPS = test_suite_aes.ecb test_suite_aes.cbc \
test_suite_aes.cfb test_suite_aes.ofb \
test_suite_aes.xts \
test_suite_aes.rest test_suite_arc4 \
test_suite_aria test_suite_asn1write \
test_suite_base64 test_suite_blowfish \
test_suite_camellia test_suite_ccm \
test_suite_chacha20 test_suite_chachapoly \
test_suite_aria \
test_suite_cmac \
test_suite_cipher.aes \
test_suite_cipher.arc4 test_suite_cipher.ccm \
test_suite_cipher.chacha20 \
test_suite_cipher.gcm \
test_suite_cipher.blowfish \
test_suite_cipher.camellia \
test_suite_cipher.des test_suite_cipher.null \
test_suite_cipher.padding \
test_suite_ctr_drbg test_suite_debug \
test_suite_des test_suite_dhm \
test_suite_ecdh test_suite_ecdsa \
test_suite_ecjpake test_suite_ecp \
test_suite_error test_suite_entropy \
test_suite_gcm.aes128_de \
test_suite_gcm.aes192_de \
test_suite_gcm.aes256_de \
test_suite_gcm.aes128_en \
test_suite_gcm.aes192_en \
test_suite_gcm.aes256_en \
test_suite_gcm.camellia \
test_suite_hkdf \
test_suite_hmac_drbg.misc \
test_suite_hmac_drbg.no_reseed \
test_suite_hmac_drbg.nopr \
test_suite_hmac_drbg.pr \
test_suite_md test_suite_mdx \
test_suite_memory_buffer_alloc \
test_suite_mpi \
test_suite_pem test_suite_pkcs1_v15 \
test_suite_pkcs1_v21 test_suite_pkcs5 \
test_suite_pkparse test_suite_pkwrite \
test_suite_pk \
test_suite_rsa test_suite_shax \
test_suite_ssl test_suite_timing \
test_suite_x509parse test_suite_x509write \
test_suite_xtea test_suite_version
# A test application is built for each suites/test_suite_*.data file.
# Application name is same as .data file's base name and can be
# constructed by stripping path 'suites/' and extension .data.
APPS = $(basename $(subst suites/,,$(wildcard suites/test_suite_*.data)))
# Construct executable name by adding OS specific suffix $(EXEXT).
BINARIES := $(addsuffix $(EXEXT),$(APPS))
# Look up for associated function files
func.test_suite_aes.ecb := test_suite_aes
func.test_suite_aes.cbc := test_suite_aes
func.test_suite_aes.cfb := test_suite_aes
func.test_suite_aes.ofb := test_suite_aes
func.test_suite_aes.xts := test_suite_aes
func.test_suite_aes.rest := test_suite_aes
func.test_suite_arc4 := test_suite_arc4
func.test_suite_aria := test_suite_aria
func.test_suite_asn1write := test_suite_asn1write
func.test_suite_base64 := test_suite_base64
func.test_suite_blowfish := test_suite_blowfish
func.test_suite_camellia := test_suite_camellia
func.test_suite_ccm := test_suite_ccm
func.test_suite_chacha20 := test_suite_chacha20
func.test_suite_chachapoly := test_suite_chachapoly
func.test_suite_cmac := test_suite_cmac
func.test_suite_cipher.chachapoly := test_suite_cipher
func.test_suite_cipher.aes := test_suite_cipher
func.test_suite_cipher.arc4 := test_suite_cipher
func.test_suite_cipher.ccm := test_suite_cipher
func.test_suite_cipher.chacha20 := test_suite_cipher
func.test_suite_cipher.gcm := test_suite_cipher
func.test_suite_cipher.blowfish := test_suite_cipher
func.test_suite_cipher.camellia := test_suite_cipher
func.test_suite_cipher.des := test_suite_cipher
func.test_suite_cipher.null := test_suite_cipher
func.test_suite_cipher.padding := test_suite_cipher
func.test_suite_ctr_drbg := test_suite_ctr_drbg
func.test_suite_debug := test_suite_debug
func.test_suite_des := test_suite_des
func.test_suite_dhm := test_suite_dhm
func.test_suite_ecdh := test_suite_ecdh
func.test_suite_ecdsa := test_suite_ecdsa
func.test_suite_ecjpake := test_suite_ecjpake
func.test_suite_ecp := test_suite_ecp
func.test_suite_error := test_suite_error
func.test_suite_entropy := test_suite_entropy
func.test_suite_gcm.aes128_de := test_suite_gcm
func.test_suite_gcm.aes192_de := test_suite_gcm
func.test_suite_gcm.aes256_de := test_suite_gcm
func.test_suite_gcm.aes128_en := test_suite_gcm
func.test_suite_gcm.aes192_en := test_suite_gcm
func.test_suite_gcm.aes256_en := test_suite_gcm
func.test_suite_gcm.camellia := test_suite_gcm
func.test_suite_hkdf := test_suite_hkdf
func.test_suite_hmac_drbg.misc := test_suite_hmac_drbg
func.test_suite_hmac_drbg.no_reseed := test_suite_hmac_drbg
func.test_suite_hmac_drbg.nopr := test_suite_hmac_drbg
func.test_suite_hmac_drbg.pr := test_suite_hmac_drbg
func.test_suite_md := test_suite_md
func.test_suite_mdx := test_suite_mdx
func.test_suite_memory_buffer_alloc := test_suite_memory_buffer_alloc
func.test_suite_mpi := test_suite_mpi
func.test_suite_nist_kw := test_suite_nist_kw
func.test_suite_pem := test_suite_pem
func.test_suite_pkcs1_v15 := test_suite_pkcs1_v15
func.test_suite_pkcs1_v21 := test_suite_pkcs1_v21
func.test_suite_pkcs5 := test_suite_pkcs5
func.test_suite_pkparse := test_suite_pkparse
func.test_suite_pkwrite := test_suite_pkwrite
func.test_suite_pk := test_suite_pk
func.test_suite_rsa := test_suite_rsa
func.test_suite_shax := test_suite_shax
func.test_suite_ssl := test_suite_ssl
func.test_suite_timing := test_suite_timing
func.test_suite_x509parse := test_suite_x509parse
func.test_suite_x509write := test_suite_x509write
func.test_suite_xtea := test_suite_xtea
func.test_suite_version := test_suite_version
.SILENT:
.PHONY: all check test clean
@ -182,14 +70,26 @@ all: $(BINARIES)
$(DEP):
$(MAKE) -C ../library
# invoke perl explicitly for the sake of mingw32-make
C_FILES := $(addsuffix .c,$(APPS))
# Wildcard target for test code generation:
# A .c file is generated for each .data file in the suites/ directory. Each .c
# file depends on a .data and .function file from suites/ directory. Following
# nameing convention is followed:
#
# C file | Depends on
#-----------------------------------------------------------------------------
# foo.c | suites/foo.function suites/foo.data
# foo.bar.c | suites/foo.function suites/foo.bar.data
#
# Note above that .c and .data files have same base name.
# However, corresponding .function file's base name is the word before first
# dot in .c file's base name.
#
.SECONDEXPANSION:
$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function
%.c: suites/$$(firstword $$(subst ., ,$$*)).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function
echo " Gen $@"
$(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \
$(PYTHON) scripts/generate_test_code.py -f suites/$(firstword $(subst ., ,$*)).function \
-d suites/$*.data \
-t suites/main_test.function \
-p suites/host_test.function \
@ -208,8 +108,10 @@ ifndef WINDOWS
rm -rf $(APPS) *.c *.datax TESTS
else
del /Q /F *.c *.exe *.datax
ifneq ($(wildcard TESTS/.*),)
rmdir /Q /S TESTS
endif
endif
check: $(BINARIES)
perl scripts/run-test-suites.pl
@ -222,9 +124,9 @@ EMBEDDED_TESTS := $(addprefix embedded_,$(APPS))
# Generate test code for target.
.SECONDEXPANSION:
$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/target_test.function
$(EMBEDDED_TESTS): embedded_%: suites/$$(firstword $$(subst ., ,$$*)).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/target_test.function
echo " Gen ./TESTS/mbedtls/$*/$*.c"
$(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \
$(PYTHON) scripts/generate_test_code.py -f suites/$(firstword $(subst ., ,$*)).function \
-d suites/$*.data \
-t suites/main_test.function \
-p suites/target_test.function \