1CFLAGS += -Wall -Werror -std=c99 -D_XOPEN_SOURCE=1 -D_POSIX_C_SOURCE=200809L 2 3ifeq ($(DEBUG),1) 4override CFLAGS += -DDEBUG -O0 -g 5endif 6 7CLIENT_LIBS := -Lclient_libs -lpsaclient -lmbedtls -lmbedx509 -lmbedcrypto 8SERVER_LIBS := -Lserver_libs -lmbedcrypto 9 10MBEDTLS_ROOT_PATH = ../../.. 11COMMON_INCLUDE := -I./include -I$(MBEDTLS_ROOT_PATH)/include \ 12 -I$(MBEDTLS_ROOT_PATH)/tf-psa-crypto/include \ 13 -I$(MBEDTLS_ROOT_PATH)/tf-psa-crypto/drivers/builtin/include 14 15GENERATED_H_FILES = include/psa_manifest/manifest.h \ 16 include/psa_manifest/pid.h \ 17 include/psa_manifest/sid.h 18 19LIBPSACLIENT_SRC = src/psa_ff_client.c \ 20 src/psa_sim_crypto_client.c \ 21 src/psa_sim_serialise.c 22LIBPSACLIENT_OBJS=$(LIBPSACLIENT_SRC:.c=.o) 23 24PSA_CLIENT_BASE_SRC = $(LIBPSACLIENT_SRC) src/client.c 25 26PSA_CLIENT_FULL_SRC = $(LIBPSACLIENT_SRC) \ 27 $(wildcard src/aut_*.c) 28 29PARTITION_SERVER_BOOTSTRAP = src/psa_ff_bootstrap_TEST_PARTITION.c 30 31PSA_SERVER_SRC = $(PARTITION_SERVER_BOOTSTRAP) \ 32 src/psa_ff_server.c \ 33 src/psa_sim_crypto_server.c \ 34 src/psa_sim_serialise.c 35 36.PHONY: all clean client_libs server_libs 37 38all: 39 40test/seedfile: 41 dd if=/dev/urandom of=./test/seedfile bs=64 count=1 42 43src/%.o: src/%.c $(GENERATED_H_FILES) 44 $(CC) $(COMMON_INCLUDE) $(CFLAGS) -c $< $(LDFLAGS) -o $@ 45 46client_libs/libpsaclient: $(LIBPSACLIENT_OBJS) 47 mkdir -p client_libs 48 $(AR) -src client_libs/libpsaclient.a $(LIBPSACLIENT_OBJS) 49 50test/psa_client_base: $(PSA_CLIENT_BASE_SRC) $(GENERATED_H_FILES) test/seedfile 51 $(CC) $(COMMON_INCLUDE) $(CFLAGS) $(PSA_CLIENT_BASE_SRC) $(CLIENT_LIBS) $(LDFLAGS) -o $@ 52 53test/psa_client_full: $(PSA_CLIENT_FULL_SRC) $(GENERATED_H_FILES) test/seedfile 54 $(CC) $(COMMON_INCLUDE) $(CFLAGS) $(PSA_CLIENT_FULL_SRC) $(CLIENT_LIBS) $(LDFLAGS) -o $@ 55 56test/psa_server: $(PSA_SERVER_SRC) $(GENERATED_H_FILES) 57 $(CC) $(COMMON_INCLUDE) $(CFLAGS) $(PSA_SERVER_SRC) $(SERVER_LIBS) $(LDFLAGS) -o $@ 58 59$(PARTITION_SERVER_BOOTSTRAP) $(GENERATED_H_FILES): src/manifest.json src/server.c 60 tools/psa_autogen.py src/manifest.json 61 62# Build MbedTLS libraries (crypto, x509 and tls) and copy them locally to 63# build client/server applications. 64# 65# Note: these rules assume that mbedtls_config.h is already configured by all.sh. 66# If not using all.sh then the user must do it manually. 67client_libs: client_libs/libpsaclient 68client_libs server_libs: 69 $(MAKE) -C $(MBEDTLS_ROOT_PATH)/library CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" libmbedcrypto.a libmbedx509.a libmbedtls.a 70 mkdir -p $@ 71 cp $(MBEDTLS_ROOT_PATH)/library/libmbed*.a $@/ 72 73clean_server_intermediate_files: 74 rm -f $(PARTITION_SERVER_BOOTSTRAP) 75 rm -rf include/psa_manifest 76 77clean: clean_server_intermediate_files 78 rm -f test/psa_client_base test/psa_client_full test/psa_server 79 rm -rf client_libs server_libs 80 rm -f test/psa_service_* test/psa_notify_* test/*.log 81 rm -f test/seedfile 82