1# 2# Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6 7PLAT := none 8V ?= 0 9DEBUG := 0 10CRTTOOL ?= cert_create${BIN_EXT} 11BINARY := $(notdir ${CRTTOOL}) 12COT := tbbr 13 14toolchains := host 15 16MAKE_HELPERS_DIRECTORY := ../../make_helpers/ 17include ${MAKE_HELPERS_DIRECTORY}build_macros.mk 18include ${MAKE_HELPERS_DIRECTORY}build_env.mk 19include ${MAKE_HELPERS_DIRECTORY}defaults.mk 20include ${MAKE_HELPERS_DIRECTORY}toolchain.mk 21 22ifneq (${PLAT},none) 23TF_PLATFORM_ROOT := ../../plat/ 24include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk 25PLAT_CERT_CREATE_HELPER_MK := ${PLAT_DIR}/cert_create_tbbr.mk 26endif 27 28# Common source files. 29OBJECTS := src/cert.o \ 30 src/cmd_opt.o \ 31 src/ext.o \ 32 src/key.o \ 33 src/main.o \ 34 src/sha.o 35 36# Chain of trust. 37ifeq (${COT},tbbr) 38 include src/tbbr/tbbr.mk 39else ifeq (${COT},dualroot) 40 include src/dualroot/cot.mk 41else ifeq (${COT},cca) 42 include src/cca/cot.mk 43else 44 $(error Unknown chain of trust ${COT}) 45endif 46 47ifneq (,$(wildcard ${PLAT_CERT_CREATE_HELPER_MK})) 48include ${PLAT_CERT_CREATE_HELPER_MK} 49endif 50 51# Select OpenSSL version flag according to the OpenSSL build selected 52# from setting the OPENSSL_DIR path. 53$(eval $(call SELECT_OPENSSL_API_VERSION)) 54 55HOSTCCFLAGS := -Wall -std=c99 56 57ifeq (${DEBUG},1) 58 HOSTCCFLAGS += -g -O0 -DDEBUG -DLOG_LEVEL=40 59else 60 HOSTCCFLAGS += -O2 -DLOG_LEVEL=20 61endif 62 63ifeq (${V},0) 64 Q := @ 65else 66 Q := 67endif 68 69HOSTCCFLAGS += ${DEFINES} 70# USING_OPENSSL3 flag will be added to the HOSTCCFLAGS variable with the proper 71# computed value. 72HOSTCCFLAGS += -DUSING_OPENSSL3=$(USING_OPENSSL3) 73 74# Make soft links and include from local directory otherwise wrong headers 75# could get pulled in from firmware tree. 76INC_DIR += -I ./include -I ${PLAT_INCLUDE} -I ${OPENSSL_DIR}/include 77 78# Include library directories where OpenSSL library files are located. 79# For a normal installation (i.e.: when ${OPENSSL_DIR} = /usr or 80# /usr/local), binaries are located under the ${OPENSSL_DIR}/lib/ 81# directory. However, for a local build of OpenSSL, the built binaries are 82# located under the main project directory (i.e.: ${OPENSSL_DIR}, not 83# ${OPENSSL_DIR}/lib/). 84LIB_DIR := -L ${OPENSSL_DIR}/lib -L ${OPENSSL_DIR} 85LIB := -lssl -lcrypto 86 87.PHONY: all clean realclean --openssl 88 89all: --openssl ${BINARY} 90 91${BINARY}: ${OBJECTS} Makefile 92 @echo " HOSTLD $@" 93 @echo 'const char build_msg[] = "Built : "__TIME__", "__DATE__; \ 94 const char platform_msg[] = "${PLAT_MSG}";' | \ 95 $(host-cc) -c ${HOSTCCFLAGS} -xc - -o src/build_msg.o 96 ${Q}$(host-cc) src/build_msg.o ${OBJECTS} ${LIB_DIR} ${LIB} -o $@ 97 98%.o: %.c 99 @echo " HOSTCC $<" 100 ${Q}$(host-cc) -c ${HOSTCCFLAGS} ${INC_DIR} $< -o $@ 101 102--openssl: 103ifeq ($(DEBUG),1) 104 @echo "Selected OpenSSL version: ${OPENSSL_CURRENT_VER}" 105endif 106 107clean: 108 $(call SHELL_DELETE_ALL, src/build_msg.o ${OBJECTS}) 109 110realclean: clean 111 $(call SHELL_DELETE,${BINARY}) 112