1*62c56f98SSadaf Ebrahimi 2*62c56f98SSadaf Ebrahimi# To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS 3*62c56f98SSadaf Ebrahimi 4*62c56f98SSadaf EbrahimiCFLAGS ?= -O2 5*62c56f98SSadaf EbrahimiWARNING_CFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral 6*62c56f98SSadaf EbrahimiLDFLAGS ?= 7*62c56f98SSadaf Ebrahimi 8*62c56f98SSadaf Ebrahimi# Set this to -v to see the details of failing test cases 9*62c56f98SSadaf EbrahimiTEST_FLAGS ?= $(if $(filter-out 0 OFF Off off NO No no FALSE False false N n,$(CTEST_OUTPUT_ON_FAILURE)),-v,) 10*62c56f98SSadaf Ebrahimi 11*62c56f98SSadaf Ebrahimidefault: all 12*62c56f98SSadaf Ebrahimi 13*62c56f98SSadaf Ebrahimi# Include public header files from ../include, test-specific header files 14*62c56f98SSadaf Ebrahimi# from ./include, and private header files (used by some invasive tests) 15*62c56f98SSadaf Ebrahimi# from ../library. 16*62c56f98SSadaf EbrahimiLOCAL_CFLAGS = $(WARNING_CFLAGS) -I./include -I../include -I../library -D_FILE_OFFSET_BITS=64 17*62c56f98SSadaf EbrahimiLOCAL_LDFLAGS = -L../library \ 18*62c56f98SSadaf Ebrahimi -lmbedtls$(SHARED_SUFFIX) \ 19*62c56f98SSadaf Ebrahimi -lmbedx509$(SHARED_SUFFIX) \ 20*62c56f98SSadaf Ebrahimi -lmbedcrypto$(SHARED_SUFFIX) 21*62c56f98SSadaf Ebrahimi 22*62c56f98SSadaf Ebrahimiinclude ../3rdparty/Makefile.inc 23*62c56f98SSadaf EbrahimiLOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES) 24*62c56f98SSadaf Ebrahimi 25*62c56f98SSadaf Ebrahimi# Enable definition of various functions used throughout the testsuite 26*62c56f98SSadaf Ebrahimi# (gethostname, strdup, fileno...) even when compiling with -std=c99. Harmless 27*62c56f98SSadaf Ebrahimi# on non-POSIX platforms. 28*62c56f98SSadaf EbrahimiLOCAL_CFLAGS += -D_POSIX_C_SOURCE=200809L 29*62c56f98SSadaf Ebrahimi 30*62c56f98SSadaf Ebrahimiifndef SHARED 31*62c56f98SSadaf EbrahimiMBEDLIBS=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a 32*62c56f98SSadaf Ebrahimielse 33*62c56f98SSadaf EbrahimiMBEDLIBS=../library/libmbedcrypto.$(DLEXT) ../library/libmbedx509.$(DLEXT) ../library/libmbedtls.$(DLEXT) 34*62c56f98SSadaf Ebrahimiendif 35*62c56f98SSadaf Ebrahimi 36*62c56f98SSadaf Ebrahimiifdef DEBUG 37*62c56f98SSadaf EbrahimiLOCAL_CFLAGS += -g3 38*62c56f98SSadaf Ebrahimiendif 39*62c56f98SSadaf Ebrahimi 40*62c56f98SSadaf Ebrahimiifdef RECORD_PSA_STATUS_COVERAGE_LOG 41*62c56f98SSadaf EbrahimiLOCAL_CFLAGS += -Werror -DRECORD_PSA_STATUS_COVERAGE_LOG 42*62c56f98SSadaf Ebrahimiendif 43*62c56f98SSadaf Ebrahimi 44*62c56f98SSadaf Ebrahimi# if we're running on Windows, build for Windows 45*62c56f98SSadaf Ebrahimiifdef WINDOWS 46*62c56f98SSadaf EbrahimiWINDOWS_BUILD=1 47*62c56f98SSadaf Ebrahimiendif 48*62c56f98SSadaf Ebrahimi 49*62c56f98SSadaf Ebrahimiifdef WINDOWS_BUILD 50*62c56f98SSadaf EbrahimiDLEXT=dll 51*62c56f98SSadaf EbrahimiEXEXT=.exe 52*62c56f98SSadaf EbrahimiLOCAL_LDFLAGS += -lws2_32 -lbcrypt 53*62c56f98SSadaf Ebrahimiifdef SHARED 54*62c56f98SSadaf EbrahimiSHARED_SUFFIX=.$(DLEXT) 55*62c56f98SSadaf Ebrahimiendif 56*62c56f98SSadaf Ebrahimielse 57*62c56f98SSadaf EbrahimiDLEXT ?= so 58*62c56f98SSadaf EbrahimiEXEXT= 59*62c56f98SSadaf EbrahimiSHARED_SUFFIX= 60*62c56f98SSadaf Ebrahimiendif 61*62c56f98SSadaf Ebrahimi 62*62c56f98SSadaf Ebrahimiifdef WINDOWS 63*62c56f98SSadaf EbrahimiPYTHON ?= python 64*62c56f98SSadaf Ebrahimielse 65*62c56f98SSadaf EbrahimiPYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi) 66*62c56f98SSadaf Ebrahimiendif 67*62c56f98SSadaf Ebrahimi 68*62c56f98SSadaf Ebrahimi# See root Makefile 69*62c56f98SSadaf EbrahimiGEN_FILES ?= 70*62c56f98SSadaf Ebrahimiifdef GEN_FILES 71*62c56f98SSadaf Ebrahimigen_file_dep = 72*62c56f98SSadaf Ebrahimielse 73*62c56f98SSadaf Ebrahimigen_file_dep = | 74*62c56f98SSadaf Ebrahimiendif 75*62c56f98SSadaf Ebrahimi 76*62c56f98SSadaf Ebrahimi.PHONY: generated_files 77*62c56f98SSadaf EbrahimiGENERATED_BIGNUM_DATA_FILES := $(patsubst tests/%,%,$(shell \ 78*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_bignum_tests.py --list || \ 79*62c56f98SSadaf Ebrahimi echo FAILED \ 80*62c56f98SSadaf Ebrahimi)) 81*62c56f98SSadaf Ebrahimiifeq ($(GENERATED_BIGNUM_DATA_FILES),FAILED) 82*62c56f98SSadaf Ebrahimi$(error "$(PYTHON) scripts/generate_bignum_tests.py --list" failed) 83*62c56f98SSadaf Ebrahimiendif 84*62c56f98SSadaf EbrahimiGENERATED_ECP_DATA_FILES := $(patsubst tests/%,%,$(shell \ 85*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_ecp_tests.py --list || \ 86*62c56f98SSadaf Ebrahimi echo FAILED \ 87*62c56f98SSadaf Ebrahimi)) 88*62c56f98SSadaf Ebrahimiifeq ($(GENERATED_ECP_DATA_FILES),FAILED) 89*62c56f98SSadaf Ebrahimi$(error "$(PYTHON) scripts/generate_ecp_tests.py --list" failed) 90*62c56f98SSadaf Ebrahimiendif 91*62c56f98SSadaf EbrahimiGENERATED_PSA_DATA_FILES := $(patsubst tests/%,%,$(shell \ 92*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_psa_tests.py --list || \ 93*62c56f98SSadaf Ebrahimi echo FAILED \ 94*62c56f98SSadaf Ebrahimi)) 95*62c56f98SSadaf Ebrahimiifeq ($(GENERATED_PSA_DATA_FILES),FAILED) 96*62c56f98SSadaf Ebrahimi$(error "$(PYTHON) scripts/generate_psa_tests.py --list" failed) 97*62c56f98SSadaf Ebrahimiendif 98*62c56f98SSadaf EbrahimiGENERATED_FILES := $(GENERATED_PSA_DATA_FILES) $(GENERATED_ECP_DATA_FILES) $(GENERATED_BIGNUM_DATA_FILES) 99*62c56f98SSadaf Ebrahimigenerated_files: $(GENERATED_FILES) 100*62c56f98SSadaf Ebrahimi 101*62c56f98SSadaf Ebrahimi# generate_bignum_tests.py and generate_psa_tests.py spend more time analyzing 102*62c56f98SSadaf Ebrahimi# inputs than generating outputs. Its inputs are the same no matter which files 103*62c56f98SSadaf Ebrahimi# are being generated. 104*62c56f98SSadaf Ebrahimi# It's rare not to want all the outputs. So always generate all of its outputs. 105*62c56f98SSadaf Ebrahimi# Use an intermediate phony dependency so that parallel builds don't run 106*62c56f98SSadaf Ebrahimi# a separate instance of the recipe for each output file. 107*62c56f98SSadaf Ebrahimi.SECONDARY: generated_bignum_test_data generated_ecp_test_data generated_psa_test_data 108*62c56f98SSadaf Ebrahimi$(GENERATED_BIGNUM_DATA_FILES): $(gen_file_dep) generated_bignum_test_data 109*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: scripts/generate_bignum_tests.py 110*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: ../scripts/mbedtls_dev/bignum_common.py 111*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: ../scripts/mbedtls_dev/bignum_core.py 112*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: ../scripts/mbedtls_dev/bignum_mod_raw.py 113*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: ../scripts/mbedtls_dev/bignum_mod.py 114*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: ../scripts/mbedtls_dev/test_case.py 115*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: ../scripts/mbedtls_dev/test_data_generation.py 116*62c56f98SSadaf Ebrahimigenerated_bignum_test_data: 117*62c56f98SSadaf Ebrahimi echo " Gen $(GENERATED_BIGNUM_DATA_FILES)" 118*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_bignum_tests.py 119*62c56f98SSadaf Ebrahimi 120*62c56f98SSadaf Ebrahimi$(GENERATED_ECP_DATA_FILES): $(gen_file_dep) generated_ecp_test_data 121*62c56f98SSadaf Ebrahimigenerated_ecp_test_data: scripts/generate_ecp_tests.py 122*62c56f98SSadaf Ebrahimigenerated_ecp_test_data: ../scripts/mbedtls_dev/bignum_common.py 123*62c56f98SSadaf Ebrahimigenerated_ecp_test_data: ../scripts/mbedtls_dev/ecp.py 124*62c56f98SSadaf Ebrahimigenerated_ecp_test_data: ../scripts/mbedtls_dev/test_case.py 125*62c56f98SSadaf Ebrahimigenerated_ecp_test_data: ../scripts/mbedtls_dev/test_data_generation.py 126*62c56f98SSadaf Ebrahimigenerated_ecp_test_data: 127*62c56f98SSadaf Ebrahimi echo " Gen $(GENERATED_ECP_DATA_FILES)" 128*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_ecp_tests.py 129*62c56f98SSadaf Ebrahimi 130*62c56f98SSadaf Ebrahimi$(GENERATED_PSA_DATA_FILES): $(gen_file_dep) generated_psa_test_data 131*62c56f98SSadaf Ebrahimigenerated_psa_test_data: scripts/generate_psa_tests.py 132*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/crypto_data_tests.py 133*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/crypto_knowledge.py 134*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/macro_collector.py 135*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/psa_information.py 136*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/psa_storage.py 137*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/test_case.py 138*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../scripts/mbedtls_dev/test_data_generation.py 139*62c56f98SSadaf Ebrahimi## The generated file only depends on the options that are present in 140*62c56f98SSadaf Ebrahimi## crypto_config.h, not on which options are set. To avoid regenerating this 141*62c56f98SSadaf Ebrahimi## file all the time when switching between configurations, don't declare 142*62c56f98SSadaf Ebrahimi## crypto_config.h as a dependency. Remove this file from your working tree 143*62c56f98SSadaf Ebrahimi## if you've just added or removed an option in crypto_config.h. 144*62c56f98SSadaf Ebrahimi#generated_psa_test_data: ../include/psa/crypto_config.h 145*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../include/psa/crypto_values.h 146*62c56f98SSadaf Ebrahimigenerated_psa_test_data: ../include/psa/crypto_extra.h 147*62c56f98SSadaf Ebrahimigenerated_psa_test_data: suites/test_suite_psa_crypto_metadata.data 148*62c56f98SSadaf Ebrahimigenerated_psa_test_data: 149*62c56f98SSadaf Ebrahimi echo " Gen $(GENERATED_PSA_DATA_FILES) ..." 150*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_psa_tests.py 151*62c56f98SSadaf Ebrahimi 152*62c56f98SSadaf Ebrahimi# A test application is built for each suites/test_suite_*.data file. 153*62c56f98SSadaf Ebrahimi# Application name is same as .data file's base name and can be 154*62c56f98SSadaf Ebrahimi# constructed by stripping path 'suites/' and extension .data. 155*62c56f98SSadaf EbrahimiDATA_FILES := $(wildcard suites/test_suite_*.data) 156*62c56f98SSadaf Ebrahimi# Make sure that generated data files are included even if they don't 157*62c56f98SSadaf Ebrahimi# exist yet when the makefile is parsed. 158*62c56f98SSadaf EbrahimiDATA_FILES += $(filter-out $(DATA_FILES),$(GENERATED_FILES)) 159*62c56f98SSadaf EbrahimiAPPS = $(basename $(subst suites/,,$(DATA_FILES))) 160*62c56f98SSadaf Ebrahimi 161*62c56f98SSadaf Ebrahimi# Construct executable name by adding OS specific suffix $(EXEXT). 162*62c56f98SSadaf EbrahimiBINARIES := $(addsuffix $(EXEXT),$(APPS)) 163*62c56f98SSadaf Ebrahimi 164*62c56f98SSadaf Ebrahimi.SILENT: 165*62c56f98SSadaf Ebrahimi 166*62c56f98SSadaf Ebrahimi.PHONY: all check test clean 167*62c56f98SSadaf Ebrahimi 168*62c56f98SSadaf Ebrahimiall: $(BINARIES) 169*62c56f98SSadaf Ebrahimi 170*62c56f98SSadaf Ebrahimi$(MBEDLIBS): 171*62c56f98SSadaf Ebrahimi $(MAKE) -C ../library 172*62c56f98SSadaf Ebrahimi 173*62c56f98SSadaf EbrahimiMBEDTLS_TEST_OBJS=$(patsubst %.c,%.o,$(wildcard src/*.c src/drivers/*.c src/test_helpers/*.c)) 174*62c56f98SSadaf Ebrahimi 175*62c56f98SSadaf Ebrahimimbedtls_test: $(MBEDTLS_TEST_OBJS) 176*62c56f98SSadaf Ebrahimi 177*62c56f98SSadaf EbrahimiTEST_OBJS_DEPS = $(wildcard include/test/*.h include/test/*/*.h) 178*62c56f98SSadaf Ebrahimiifdef RECORD_PSA_STATUS_COVERAGE_LOG 179*62c56f98SSadaf Ebrahimi# Explicitly depend on this header because on a clean copy of the source tree, 180*62c56f98SSadaf Ebrahimi# it doesn't exist yet and must be generated as part of the build, and 181*62c56f98SSadaf Ebrahimi# therefore the wildcard enumeration above doesn't include it. 182*62c56f98SSadaf EbrahimiTEST_OBJS_DEPS += include/test/instrument_record_status.h 183*62c56f98SSadaf Ebrahimiendif 184*62c56f98SSadaf Ebrahimi 185*62c56f98SSadaf Ebrahimi# Rule to compile common test C files in src folder 186*62c56f98SSadaf Ebrahimisrc/%.o : src/%.c $(TEST_OBJS_DEPS) 187*62c56f98SSadaf Ebrahimi echo " CC $<" 188*62c56f98SSadaf Ebrahimi $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $< 189*62c56f98SSadaf Ebrahimi 190*62c56f98SSadaf Ebrahimisrc/drivers/%.o : src/drivers/%.c 191*62c56f98SSadaf Ebrahimi echo " CC $<" 192*62c56f98SSadaf Ebrahimi $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $< 193*62c56f98SSadaf Ebrahimi 194*62c56f98SSadaf Ebrahimisrc/test_helpers/%.o : src/test_helpers/%.c 195*62c56f98SSadaf Ebrahimi echo " CC $<" 196*62c56f98SSadaf Ebrahimi $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -o $@ -c $< 197*62c56f98SSadaf Ebrahimi 198*62c56f98SSadaf EbrahimiC_FILES := $(addsuffix .c,$(APPS)) 199*62c56f98SSadaf Ebrahimic: $(C_FILES) 200*62c56f98SSadaf Ebrahimi 201*62c56f98SSadaf Ebrahimi# Wildcard target for test code generation: 202*62c56f98SSadaf Ebrahimi# A .c file is generated for each .data file in the suites/ directory. Each .c 203*62c56f98SSadaf Ebrahimi# file depends on a .data and .function file from suites/ directory. Following 204*62c56f98SSadaf Ebrahimi# nameing convention is followed: 205*62c56f98SSadaf Ebrahimi# 206*62c56f98SSadaf Ebrahimi# C file | Depends on 207*62c56f98SSadaf Ebrahimi#----------------------------------------------------------------------------- 208*62c56f98SSadaf Ebrahimi# foo.c | suites/foo.function suites/foo.data 209*62c56f98SSadaf Ebrahimi# foo.bar.c | suites/foo.function suites/foo.bar.data 210*62c56f98SSadaf Ebrahimi# 211*62c56f98SSadaf Ebrahimi# Note above that .c and .data files have same base name. 212*62c56f98SSadaf Ebrahimi# However, corresponding .function file's base name is the word before first 213*62c56f98SSadaf Ebrahimi# dot in .c file's base name. 214*62c56f98SSadaf Ebrahimi# 215*62c56f98SSadaf Ebrahimi.SECONDEXPANSION: 216*62c56f98SSadaf Ebrahimi%.c: suites/$$(firstword $$(subst ., ,$$*)).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function 217*62c56f98SSadaf Ebrahimi echo " Gen $@" 218*62c56f98SSadaf Ebrahimi $(PYTHON) scripts/generate_test_code.py -f suites/$(firstword $(subst ., ,$*)).function \ 219*62c56f98SSadaf Ebrahimi -d suites/$*.data \ 220*62c56f98SSadaf Ebrahimi -t suites/main_test.function \ 221*62c56f98SSadaf Ebrahimi -p suites/host_test.function \ 222*62c56f98SSadaf Ebrahimi -s suites \ 223*62c56f98SSadaf Ebrahimi --helpers-file suites/helpers.function \ 224*62c56f98SSadaf Ebrahimi -o . 225*62c56f98SSadaf Ebrahimi 226*62c56f98SSadaf Ebrahimi 227*62c56f98SSadaf Ebrahimi$(BINARIES): %$(EXEXT): %.c $(MBEDLIBS) $(TEST_OBJS_DEPS) $(MBEDTLS_TEST_OBJS) 228*62c56f98SSadaf Ebrahimi echo " CC $<" 229*62c56f98SSadaf Ebrahimi $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(MBEDTLS_TEST_OBJS) $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ 230*62c56f98SSadaf Ebrahimi 231*62c56f98SSadaf Ebrahimiclean: 232*62c56f98SSadaf Ebrahimiifndef WINDOWS 233*62c56f98SSadaf Ebrahimi rm -rf $(BINARIES) *.c *.datax 234*62c56f98SSadaf Ebrahimi rm -f src/*.o src/drivers/*.o src/test_helpers/*.o src/libmbed* 235*62c56f98SSadaf Ebrahimi rm -f include/test/instrument_record_status.h 236*62c56f98SSadaf Ebrahimi rm -f include/alt-extra/*/*_alt.h 237*62c56f98SSadaf Ebrahimi rm -rf libtestdriver1 238*62c56f98SSadaf Ebrahimi rm -f ../library/libtestdriver1.a 239*62c56f98SSadaf Ebrahimielse 240*62c56f98SSadaf Ebrahimi if exist *.c del /Q /F *.c 241*62c56f98SSadaf Ebrahimi if exist *.exe del /Q /F *.exe 242*62c56f98SSadaf Ebrahimi if exist *.datax del /Q /F *.datax 243*62c56f98SSadaf Ebrahimi if exist src/*.o del /Q /F src/*.o 244*62c56f98SSadaf Ebrahimi if exist src/drivers/*.o del /Q /F src/drivers/*.o 245*62c56f98SSadaf Ebrahimi if exist src/test_helpers/*.o del /Q /F src/test_helpers/*.o 246*62c56f98SSadaf Ebrahimi if exist src/libmbed* del /Q /F src/libmed* 247*62c56f98SSadaf Ebrahimi if exist include/test/instrument_record_status.h del /Q /F include/test/instrument_record_status.h 248*62c56f98SSadaf Ebrahimiendif 249*62c56f98SSadaf Ebrahimi 250*62c56f98SSadaf Ebrahimineat: clean 251*62c56f98SSadaf Ebrahimiifndef WINDOWS 252*62c56f98SSadaf Ebrahimi rm -f $(GENERATED_FILES) 253*62c56f98SSadaf Ebrahimielse 254*62c56f98SSadaf Ebrahimi for %f in ($(subst /,\,$(GENERATED_FILES))) if exist %f del /Q /F %f 255*62c56f98SSadaf Ebrahimiendif 256*62c56f98SSadaf Ebrahimi 257*62c56f98SSadaf Ebrahimi# Test suites caught by SKIP_TEST_SUITES are built but not executed. 258*62c56f98SSadaf Ebrahimicheck: $(BINARIES) 259*62c56f98SSadaf Ebrahimi perl scripts/run-test-suites.pl $(TEST_FLAGS) --skip=$(SKIP_TEST_SUITES) 260*62c56f98SSadaf Ebrahimi 261*62c56f98SSadaf Ebrahimitest: check 262*62c56f98SSadaf Ebrahimi 263*62c56f98SSadaf Ebrahimi# Generate variants of some headers for testing 264*62c56f98SSadaf Ebrahimiinclude/alt-extra/%_alt.h: ../include/%.h 265*62c56f98SSadaf Ebrahimi perl -p -e 's/^(# *(define|ifndef) +\w+_)H\b/$${1}ALT_H/' $< >$@ 266*62c56f98SSadaf Ebrahimi 267*62c56f98SSadaf Ebrahimi# Generate test library 268*62c56f98SSadaf Ebrahimi 269*62c56f98SSadaf Ebrahimi# Perl code that is executed to transform each original line from a library 270*62c56f98SSadaf Ebrahimi# source file into the corresponding line in the test driver copy of the 271*62c56f98SSadaf Ebrahimi# library. Add a LIBTESTDRIVER1_/libtestdriver1_ to mbedtls_xxx and psa_xxx 272*62c56f98SSadaf Ebrahimi# symbols. 273*62c56f98SSadaf Ebrahimidefine libtestdriver1_rewrite := 274*62c56f98SSadaf Ebrahimi s!^(\s*#\s*include\s*[\"<])(mbedtls|psa)/!$${1}libtestdriver1/include/$${2}/!; \ 275*62c56f98SSadaf Ebrahimi next if /^\s*#\s*include/; \ 276*62c56f98SSadaf Ebrahimi s/\b(?=MBEDTLS_|PSA_)/LIBTESTDRIVER1_/g; \ 277*62c56f98SSadaf Ebrahimi s/\b(?=mbedtls_|psa_)/libtestdriver1_/g; 278*62c56f98SSadaf Ebrahimiendef 279*62c56f98SSadaf Ebrahimi 280*62c56f98SSadaf Ebrahimilibtestdriver1.a: 281*62c56f98SSadaf Ebrahimi # Copy the library and fake a 3rdparty Makefile include. 282*62c56f98SSadaf Ebrahimi rm -Rf ./libtestdriver1 283*62c56f98SSadaf Ebrahimi mkdir ./libtestdriver1 284*62c56f98SSadaf Ebrahimi cp -Rf ../library ./libtestdriver1 285*62c56f98SSadaf Ebrahimi cp -Rf ../include ./libtestdriver1 286*62c56f98SSadaf Ebrahimi cp -Rf ../scripts ./libtestdriver1 287*62c56f98SSadaf Ebrahimi mkdir ./libtestdriver1/3rdparty 288*62c56f98SSadaf Ebrahimi touch ./libtestdriver1/3rdparty/Makefile.inc 289*62c56f98SSadaf Ebrahimi 290*62c56f98SSadaf Ebrahimi # Set the test driver base (minimal) configuration. 291*62c56f98SSadaf Ebrahimi cp ./include/test/drivers/config_test_driver.h ./libtestdriver1/include/mbedtls/mbedtls_config.h 292*62c56f98SSadaf Ebrahimi 293*62c56f98SSadaf Ebrahimi # Set the PSA cryptography configuration for the test library. 294*62c56f98SSadaf Ebrahimi # It is set from the copied include/psa/crypto_config.h of the Mbed TLS 295*62c56f98SSadaf Ebrahimi # library the test library is intended to be linked with extended by 296*62c56f98SSadaf Ebrahimi # ./include/test/drivers/crypto_config_test_driver_extension.h to 297*62c56f98SSadaf Ebrahimi # mirror the PSA_ACCEL_* macros. 298*62c56f98SSadaf Ebrahimi mv ./libtestdriver1/include/psa/crypto_config.h ./libtestdriver1/include/psa/crypto_config.h.bak 299*62c56f98SSadaf Ebrahimi head -n -1 ./libtestdriver1/include/psa/crypto_config.h.bak > ./libtestdriver1/include/psa/crypto_config.h 300*62c56f98SSadaf Ebrahimi cat ./include/test/drivers/crypto_config_test_driver_extension.h >> ./libtestdriver1/include/psa/crypto_config.h 301*62c56f98SSadaf Ebrahimi echo "#endif /* PSA_CRYPTO_CONFIG_H */" >> ./libtestdriver1/include/psa/crypto_config.h 302*62c56f98SSadaf Ebrahimi 303*62c56f98SSadaf Ebrahimi # Prefix MBEDTLS_* PSA_* symbols with LIBTESTDRIVER1_ as well as 304*62c56f98SSadaf Ebrahimi # mbedtls_* psa_* symbols with libtestdriver1_ to avoid symbol clash 305*62c56f98SSadaf Ebrahimi # when this test driver library is linked with the Mbed TLS library. 306*62c56f98SSadaf Ebrahimi perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/library/*.[ch] 307*62c56f98SSadaf Ebrahimi perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/include/*/*.h 308*62c56f98SSadaf Ebrahimi 309*62c56f98SSadaf Ebrahimi $(MAKE) -C ./libtestdriver1/library CFLAGS="-I../../ $(CFLAGS)" LDFLAGS="$(LDFLAGS)" libmbedcrypto.a 310*62c56f98SSadaf Ebrahimi cp ./libtestdriver1/library/libmbedcrypto.a ../library/libtestdriver1.a 311*62c56f98SSadaf Ebrahimi 312*62c56f98SSadaf Ebrahimiifdef RECORD_PSA_STATUS_COVERAGE_LOG 313*62c56f98SSadaf Ebrahimiinclude/test/instrument_record_status.h: ../include/psa/crypto.h Makefile 314*62c56f98SSadaf Ebrahimi echo " Gen $@" 315*62c56f98SSadaf Ebrahimi sed <../include/psa/crypto.h >$@ -n 's/^psa_status_t \([A-Za-z0-9_]*\)(.*/#define \1(...) RECORD_STATUS("\1", \1(__VA_ARGS__))/p' 316*62c56f98SSadaf Ebrahimiendif 317