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