|
1 | | -CFLAGS ?= -Wall -std=c99 |
2 | | -INCLUDE := -I./include/ |
3 | | -DESTDIR ?= /usr/local |
4 | | -PREFIX := libpsaff |
5 | | -BUILDDIR ?= bin |
| 1 | +CFLAGS += -Wall -Werror -std=c99 -D_XOPEN_SOURCE=1 -D_POSIX_C_SOURCE=200809L |
6 | 2 |
|
7 | | -.PHONY: all install test uninstall run docker ci |
| 3 | +ifeq ($(DEBUG),1) |
| 4 | +override CFLAGS += -DDEBUG -O0 -g |
| 5 | +endif |
8 | 6 |
|
9 | | -all: libpsaff.so |
| 7 | +CLIENT_LIBS := -Lclient_libs -lpsaclient -lmbedtls -lmbedx509 -lmbedcrypto |
| 8 | +SERVER_LIBS := -Lserver_libs -lmbedcrypto |
10 | 9 |
|
11 | | -libpsaff.so: |
12 | | - $(CC) $(INCLUDE) $(CFLAGS) -c -fpic src/common.c -o common.o |
13 | | - $(CC) $(INCLUDE) $(CFLAGS) -c -fpic src/client.c -o client.o |
14 | | - $(CC) $(INCLUDE) $(CFLAGS) -c -fpic src/service.c -o server.o |
15 | | - $(CC) -shared -o libpsaff.so common.o client.o server.o |
| 10 | +MBEDTLS_ROOT_PATH = ../../.. |
| 11 | +COMMON_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 |
16 | 14 |
|
17 | | -ifeq ($(DEBUG),1) |
18 | | - CFLAGS += -DDEBUG -g |
19 | | -endif |
| 15 | +GENERATED_H_FILES = include/psa_manifest/manifest.h \ |
| 16 | + include/psa_manifest/pid.h \ |
| 17 | + include/psa_manifest/sid.h |
| 18 | + |
| 19 | +LIBPSACLIENT_SRC = src/psa_ff_client.c \ |
| 20 | + src/psa_sim_crypto_client.c \ |
| 21 | + src/psa_sim_serialise.c |
| 22 | +LIBPSACLIENT_OBJS=$(LIBPSACLIENT_SRC:.c=.o) |
| 23 | + |
| 24 | +PSA_CLIENT_BASE_SRC = $(LIBPSACLIENT_SRC) src/client.c |
| 25 | + |
| 26 | +PSA_CLIENT_FULL_SRC = $(LIBPSACLIENT_SRC) \ |
| 27 | + $(wildcard src/aut_*.c) |
| 28 | + |
| 29 | +PARTITION_SERVER_BOOTSTRAP = src/psa_ff_bootstrap_TEST_PARTITION.c |
| 30 | + |
| 31 | +PSA_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 | + |
| 38 | +all: |
| 39 | + |
| 40 | +test/seedfile: |
| 41 | + dd if=/dev/urandom of=./test/seedfile bs=64 count=1 |
| 42 | + |
| 43 | +src/%.o: src/%.c $(GENERATED_H_FILES) |
| 44 | + $(CC) $(COMMON_INCLUDE) $(CFLAGS) -c $< $(LDFLAGS) -o $@ |
| 45 | + |
| 46 | +client_libs/libpsaclient: $(LIBPSACLIENT_OBJS) |
| 47 | + mkdir -p client_libs |
| 48 | + $(AR) -src client_libs/libpsaclient.a $(LIBPSACLIENT_OBJS) |
| 49 | + |
| 50 | +test/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 | + |
| 53 | +test/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 | + |
| 56 | +test/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. |
| 67 | +client_libs: client_libs/libpsaclient |
| 68 | +client_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 $@/ |
20 | 72 |
|
21 | | -clean: |
22 | | - rm -rf $(BUILDDIR) |
23 | | - rm -f *.so *.o |
24 | | - rm -rf test/*dSYM |
25 | | - cd test && make clean |
26 | | - |
27 | | -test: |
28 | | - cd test && make |
29 | | - |
30 | | -test/partition: |
31 | | - cd test && make |
32 | | - |
33 | | -run: test/partition |
34 | | - pkill partition || true |
35 | | - pkill client || true |
36 | | - ipcs | grep q | awk '{ printf " -q " $$2 }' | xargs ipcrm > /dev/null 2>&1 || true |
37 | | - (sleep 3 && ./test/client)& |
38 | | - ./test/partition |
39 | | - |
40 | | -ci: |
41 | | - pkill client || true |
42 | | - ipcs | grep q | awk '{ printf " -q " $$2 }' | xargs ipcrm > /dev/null 2>&1 || true |
43 | | - ./test/partition 2>&1 & |
44 | | - sleep 3 && ./test/client |
45 | | - pkill partition || true |
46 | | - |
47 | | -docker: |
48 | | - @docker run --rm -ti -v $$PWD:/opt --entrypoint /bin/bash ubuntu \ |
49 | | - -c "cd /opt && ls && apt-get update -qq && apt install \ |
50 | | - -y gcc make gdb python -qq && make clean && make install && make test && ldconfig && make run" |
51 | | - |
52 | | -install: libpsaff.so |
53 | | - mkdir -p $(DESTDIR)/lib |
54 | | - mkdir -p $(DESTDIR)/include |
55 | | - cp libpsaff.so $(DESTDIR)/lib/ |
56 | | - cp -r include/* $(DESTDIR)/include/ |
57 | | - cp tools/psa_autogen /usr/local/bin/ |
58 | | - |
59 | | -uninstall: |
60 | | - rm $(DESTDIR)/lib/libpsaff.so |
61 | | - rm -rf $(DESTDIR)/include/psa |
62 | | - rm -rf $(DESTDIR)/include/psasim |
63 | | - rm -f /usr/local/bin/psa_autogen |
| 73 | +clean_server_intermediate_files: |
| 74 | + rm -f $(PARTITION_SERVER_BOOTSTRAP) |
| 75 | + rm -rf include/psa_manifest |
64 | 76 |
|
| 77 | +clean: 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 |
0 commit comments