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