d9eee3b417
The persistent key implementation will be split across multiple files as it will eventually be implementing multiple storage backends. As these internal functions will need to be callable by other files, we will add the headers in the library folder. This commit adds this include location to the necessary scripts. For tests, the library is added as an include location as testing on-target with Mbed OS is not possible with paths including ".."
140 lines
4 KiB
Makefile
140 lines
4 KiB
Makefile
|
|
# To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS
|
|
# To compile with PKCS11: add "-lpkcs11-helper" to LDFLAGS
|
|
|
|
CFLAGS ?= -O2
|
|
WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement -Wno-unused-function -Wno-unused-value
|
|
LDFLAGS ?=
|
|
|
|
LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -I../library -D_FILE_OFFSET_BITS=64
|
|
LOCAL_LDFLAGS = -L../library \
|
|
-lmbedtls$(SHARED_SUFFIX) \
|
|
-lmbedx509$(SHARED_SUFFIX) \
|
|
-lmbedcrypto$(SHARED_SUFFIX)
|
|
|
|
# Enable definition of various functions used throughout the testsuite
|
|
# (gethostname, strdup, fileno...) even when compiling with -std=c99. Harmless
|
|
# on non-POSIX platforms.
|
|
LOCAL_CFLAGS += -D_POSIX_C_SOURCE=200809L
|
|
|
|
ifndef SHARED
|
|
DEP=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a
|
|
else
|
|
DEP=../library/libmbedcrypto.$(DLEXT) ../library/libmbedx509.$(DLEXT) ../library/libmbedtls.$(DLEXT)
|
|
endif
|
|
|
|
ifdef DEBUG
|
|
LOCAL_CFLAGS += -g3
|
|
endif
|
|
|
|
# if we're running on Windows, build for Windows
|
|
ifdef WINDOWS
|
|
WINDOWS_BUILD=1
|
|
endif
|
|
|
|
ifdef WINDOWS_BUILD
|
|
DLEXT=dll
|
|
EXEXT=.exe
|
|
LOCAL_LDFLAGS += -lws2_32
|
|
ifdef SHARED
|
|
SHARED_SUFFIX=.$(DLEXT)
|
|
endif
|
|
PYTHON ?= python
|
|
else
|
|
DLEXT ?= so
|
|
EXEXT=
|
|
SHARED_SUFFIX=
|
|
# python2 for POSIX since FreeBSD has only python2 as default.
|
|
PYTHON ?= python2
|
|
endif
|
|
|
|
# Zlib shared library extensions:
|
|
ifdef ZLIB
|
|
LOCAL_LDFLAGS += -lz
|
|
endif
|
|
|
|
# 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))
|
|
|
|
.SILENT:
|
|
|
|
.PHONY: all check test clean
|
|
|
|
all: $(BINARIES)
|
|
|
|
$(DEP):
|
|
$(MAKE) -C ../library
|
|
|
|
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: 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/$(firstword $(subst ., ,$*)).function \
|
|
-d suites/$*.data \
|
|
-t suites/main_test.function \
|
|
-p suites/host_test.function \
|
|
-s suites \
|
|
--helpers-file suites/helpers.function \
|
|
-o .
|
|
|
|
|
|
$(BINARIES): %$(EXEXT): %.c $(DEP)
|
|
echo " CC $<"
|
|
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
|
|
|
|
|
|
clean:
|
|
ifndef WINDOWS
|
|
rm -rf $(BINARIES) *.c *.datax TESTS
|
|
else
|
|
if exist *.c del /Q /F *.c
|
|
if exist *.exe del /Q /F *.exe
|
|
if exist *.datax del /Q /F *.datax
|
|
ifneq ($(wildcard TESTS/.*),)
|
|
rmdir /Q /S TESTS
|
|
endif
|
|
endif
|
|
|
|
check: $(BINARIES)
|
|
perl scripts/run-test-suites.pl
|
|
|
|
test: check
|
|
|
|
# Create separate targets for generating embedded tests.
|
|
EMBEDDED_TESTS := $(addprefix embedded_,$(APPS))
|
|
|
|
# Generate test code for target.
|
|
|
|
.SECONDEXPANSION:
|
|
$(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/$(firstword $(subst ., ,$*)).function \
|
|
-d suites/$*.data \
|
|
-t suites/main_test.function \
|
|
-p suites/target_test.function \
|
|
-s suites \
|
|
--helpers-file suites/helpers.function \
|
|
-o ./TESTS/mbedtls/$*
|
|
|
|
generate-target-tests: $(EMBEDDED_TESTS)
|
|
|