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