1# 2# Copyright (c) 2014-2023, Arm Limited and Contributors. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6 7MAKE_HELPERS_DIRECTORY := ../../make_helpers/ 8include ${MAKE_HELPERS_DIRECTORY}build_macros.mk 9include ${MAKE_HELPERS_DIRECTORY}build_env.mk 10include ${MAKE_HELPERS_DIRECTORY}defaults.mk 11 12FIPTOOL ?= fiptool${BIN_EXT} 13PROJECT := ${FIPTOOL} 14PROJECT_DIR := $(dir ${FIPTOOL}) 15OBJECTS := ${PROJECT_DIR}/fiptool.o ${PROJECT_DIR}/tbbr_config.o 16V ?= 0 17STATIC ?= 0 18 19override CPPFLAGS += -D_GNU_SOURCE -D_XOPEN_SOURCE=700 20HOSTCCFLAGS := -Wall -Werror -pedantic -std=c99 21ifeq (${DEBUG},1) 22 HOSTCCFLAGS += -g -O0 -DDEBUG 23else 24 HOSTCCFLAGS += -O2 25endif 26 27INCLUDE_PATHS := -I../../include/tools_share 28 29DEFINES += -DSTATIC=$(STATIC) 30 31ifeq (${STATIC},1) 32LDOPTS := -static 33else 34OPENSSL_DIR := /usr 35 36# Select OpenSSL version flag according to the OpenSSL build selected 37# from setting the OPENSSL_DIR path. 38$(eval $(call SELECT_OPENSSL_API_VERSION)) 39 40# USING_OPENSSL3 flag will be added to the HOSTCCFLAGS variable with the proper 41# computed value. 42DEFINES += -DUSING_OPENSSL3=$(USING_OPENSSL3) 43 44# Include library directories where OpenSSL library files are located. 45# For a normal installation (i.e.: when ${OPENSSL_DIR} = /usr or 46# /usr/local), binaries are located under the ${OPENSSL_DIR}/lib/ 47# directory. However, for a local build of OpenSSL, the built binaries are 48# located under the main project directory (i.e.: ${OPENSSL_DIR}, not 49# ${OPENSSL_DIR}/lib/). 50LDOPTS := -L${OPENSSL_DIR}/lib -L${OPENSSL_DIR} -lcrypto 51INCLUDE_PATHS += -I${OPENSSL_DIR}/include 52endif # STATIC 53 54HOSTCCFLAGS += ${DEFINES} 55 56ifeq (${V},0) 57 Q := @ 58else 59 Q := 60endif 61 62HOSTCC ?= gcc 63 64ifneq (${PLAT},) 65TF_PLATFORM_ROOT := ../../plat/ 66include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk 67COMBINED_PATH_FRAG := plat_fiptool/ 68PLAT_FIPTOOL_HELPER_MK := $(foreach path_frag,$(subst /, ,$(patsubst ../../plat/%/,%,${PLAT_DIR})),\ 69 $(eval COMBINED_PATH_FRAG := ${COMBINED_PATH_FRAG}/${path_frag})\ 70 $(wildcard ${COMBINED_PATH_FRAG}/plat_fiptool.mk)) 71endif 72 73ifneq (,$(wildcard $(lastword ${PLAT_FIPTOOL_HELPER_MK}))) 74include ${PLAT_FIPTOOL_HELPER_MK} 75endif 76 77DEPS := $(patsubst %.o,%.d,$(OBJECTS)) 78 79.PHONY: all clean distclean --openssl 80 81all: --openssl ${PROJECT} 82 83${PROJECT}: ${OBJECTS} Makefile 84 @echo " HOSTLD $@" 85 ${Q}${HOSTCC} ${OBJECTS} -o $@ $(LDOPTS) 86 @${ECHO_BLANK_LINE} 87 @echo "Built $@ successfully" 88 @${ECHO_BLANK_LINE} 89 90${PROJECT_DIR}/%.o: %.c Makefile 91 @echo " HOSTCC $<" 92 ${Q}${HOSTCC} -c ${CPPFLAGS} ${HOSTCCFLAGS} ${INCLUDE_PATHS} -MD -MP $< -o $@ 93 94-include $(DEPS) 95 96--openssl: 97ifeq ($(STATIC),0) 98ifeq ($(DEBUG),1) 99 @echo "Selected OpenSSL version: ${OPENSSL_CURRENT_VER}" 100endif 101endif # STATIC 102 103clean: 104 $(call SHELL_DELETE_ALL, ${PROJECT} ${OBJECTS} $(DEPS)) 105