CFLAGS ?= -O2 WARNING_CFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral WARNING_CXXFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral -std=c++11 -pedantic LDFLAGS ?= PERL ?= perl ifdef WINDOWS PYTHON ?= python else PYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi) endif ifndef MBEDTLS_PATH MBEDTLS_PATH := .. endif PSASIM_PATH=$(MBEDTLS_PATH)/tests/psa-client-server/psasim ifeq (,$(wildcard $(MBEDTLS_PATH)/framework/exported.make)) # Use the define keyword to get a multi-line message. # GNU make appends ". Stop.", so tweak the ending of our message accordingly. define error_message $(MBEDTLS_PATH)/framework/exported.make not found. Run `git submodule update --init` to fetch the submodule contents. This is a fatal error endef $(error $(error_message)) endif include $(MBEDTLS_PATH)/framework/exported.make include $(MBEDTLS_PATH)/tf-psa-crypto/scripts/crypto-common.make # To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS LOCAL_CFLAGS = $(WARNING_CFLAGS) -I$(MBEDTLS_TEST_PATH)/include \ -I$(MBEDTLS_PATH)/framework/tests/include \ -I$(MBEDTLS_PATH)/include \ $(TF_PSA_CRYPTO_LIBRARY_PUBLIC_INCLUDE) \ -D_FILE_OFFSET_BITS=64 LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) $(LOCAL_CFLAGS) ifdef PSASIM LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} \ -L$(PSASIM_PATH)/client_libs \ -lpsaclient \ -lmbedtls$(SHARED_SUFFIX) \ -lmbedx509$(SHARED_SUFFIX) \ -lmbedcrypto$(SHARED_SUFFIX) \ $(TF_PSA_CRYPTO_EXTRA_LDFLAGS) else LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} \ -L$(MBEDTLS_PATH)/library \ -lmbedtls$(SHARED_SUFFIX) \ -lmbedx509$(SHARED_SUFFIX) \ -lmbedcrypto$(SHARED_SUFFIX) \ $(TF_PSA_CRYPTO_EXTRA_LDFLAGS) endif ifdef PSASIM MBEDLIBS=$(PSASIM_PATH)/client_libs/libmbedcrypto.a \ $(PSASIM_PATH)/client_libs/libmbedx509.a \ $(PSASIM_PATH)/client_libs/libmbedtls.a \ $(PSASIM_PATH)/client_libs/libpsaclient.a else ifndef SHARED MBEDLIBS=$(MBEDTLS_PATH)/library/libmbedcrypto.a \ $(MBEDTLS_PATH)/library/libmbedx509.a \ $(MBEDTLS_PATH)/library/libmbedtls.a else MBEDLIBS=$(MBEDTLS_PATH)/library/libmbedcrypto.$(DLEXT) \ $(MBEDTLS_PATH)/library/libmbedx509.$(DLEXT) \ $(MBEDTLS_PATH)/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 -lbcrypt ifdef SHARED SHARED_SUFFIX=.$(DLEXT) endif else # Not building for Windows DLEXT ?= so EXEXT= SHARED_SUFFIX= endif # See root Makefile GEN_FILES ?= yes ifdef GEN_FILES gen_file_dep = else gen_file_dep = | endif default: all $(MBEDLIBS): $(MAKE) -C $(MBEDTLS_PATH)/library $(@F) neat: clean ifndef WINDOWS rm -f $(GENERATED_FILES) else for %f in ($(subst /,\,$(GENERATED_FILES))) if exist %f del /Q /F %f endif # Auxiliary modules used by tests and some sample programs MBEDTLS_CORE_TEST_OBJS := $(patsubst %.c,%.o,$(wildcard \ ${MBEDTLS_PATH}/framework/tests/src/*.c \ ${MBEDTLS_PATH}/framework/tests/src/drivers/*.c \ )) # Ignore PSA stubs when building for the client side of PSASIM (i.e. # CRYPTO_CLIENT && !CRYPTO_C) otherwise there will be functions duplicates. ifdef PSASIM MBEDTLS_CORE_TEST_OBJS := $(filter-out \ ${MBEDTLS_PATH}/framework/tests/src/psa_crypto_stubs.o, $(MBEDTLS_CORE_TEST_OBJS)\ ) endif # Additional auxiliary modules for TLS testing MBEDTLS_TLS_TEST_OBJS = $(patsubst %.c,%.o,$(wildcard \ ${MBEDTLS_TEST_PATH}/src/*.c \ ${MBEDTLS_TEST_PATH}/src/test_helpers/*.c \ )) MBEDTLS_TEST_OBJS = $(MBEDTLS_CORE_TEST_OBJS) $(MBEDTLS_TLS_TEST_OBJS)