blob: a660a500e4f418e548acd79a8bca6b42cd7629b3 [file] [log] [blame]
Harry Liebelf58ad362014-01-10 18:00:33 +00001#
Chris Kayfaab7482025-01-13 15:57:32 +00002# Copyright (c) 2014-2025, Arm Limited and Contributors. All rights reserved.
Harry Liebelf58ad362014-01-10 18:00:33 +00003#
dp-armfa3cf0b2017-05-03 09:38:09 +01004# SPDX-License-Identifier: BSD-3-Clause
Harry Liebelf58ad362014-01-10 18:00:33 +00005#
6
Evan Lloyd26c6cb42015-12-02 18:33:55 +00007MAKE_HELPERS_DIRECTORY := ../../make_helpers/
8include ${MAKE_HELPERS_DIRECTORY}build_macros.mk
Chris Kay1870c722024-05-02 17:52:37 +00009include ${MAKE_HELPERS_DIRECTORY}common.mk
Juan Pablo Conde3539c742022-10-25 19:41:02 -040010include ${MAKE_HELPERS_DIRECTORY}defaults.mk
Chris Kayc8a47ba2023-10-20 09:17:33 +000011include ${MAKE_HELPERS_DIRECTORY}toolchain.mk
Evan Lloyd26c6cb42015-12-02 18:33:55 +000012
Chris Kayfaab7482025-01-13 15:57:32 +000013FIPTOOL ?= fiptool$(.exe)
Manish V Badarkhe635482e2020-08-13 05:56:33 +010014PROJECT := $(notdir ${FIPTOOL})
dp-arm4972ec52016-05-25 16:20:20 +010015OBJECTS := fiptool.o tbbr_config.o
Olivier Deprez9b9a5dc2023-08-31 11:46:54 +020016STATIC ?= 0
Harry Liebelf58ad362014-01-10 18:00:33 +000017
dp-arm4972ec52016-05-25 16:20:20 +010018override CPPFLAGS += -D_GNU_SOURCE -D_XOPEN_SOURCE=700
Antonio Nino Diaz1c4d3622018-10-04 14:35:38 +010019HOSTCCFLAGS := -Wall -Werror -pedantic -std=c99
Jeenu Viswambharan2f2cef42014-02-19 09:38:18 +000020ifeq (${DEBUG},1)
Antonio Nino Diaz1c4d3622018-10-04 14:35:38 +010021 HOSTCCFLAGS += -g -O0 -DDEBUG
Harry Liebelf58ad362014-01-10 18:00:33 +000022else
Antonio Nino Diaz1c4d3622018-10-04 14:35:38 +010023 HOSTCCFLAGS += -O2
Harry Liebelf58ad362014-01-10 18:00:33 +000024endif
Juan Pablo Conde7275a5a2022-03-02 18:10:08 -050025
Olivier Deprez9b9a5dc2023-08-31 11:46:54 +020026INCLUDE_PATHS := -I../../include/tools_share
27
28DEFINES += -DSTATIC=$(STATIC)
29
30ifeq (${STATIC},1)
31LDOPTS := -static
32else
33OPENSSL_DIR := /usr
34
Juan Pablo Conde3539c742022-10-25 19:41:02 -040035# 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
Juan Pablo Conde3539c742022-10-25 19:41:02 -040039# USING_OPENSSL3 flag will be added to the HOSTCCFLAGS variable with the proper
40# computed value.
Olivier Deprez9b9a5dc2023-08-31 11:46:54 +020041DEFINES += -DUSING_OPENSSL3=$(USING_OPENSSL3)
Juan Pablo Conde3539c742022-10-25 19:41:02 -040042
Juan Pablo Conde7275a5a2022-03-02 18:10:08 -050043# 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/).
Olivier Deprez9b9a5dc2023-08-31 11:46:54 +020049LDOPTS := -L${OPENSSL_DIR}/lib -L${OPENSSL_DIR} -lcrypto
50INCLUDE_PATHS += -I${OPENSSL_DIR}/include
51endif # STATIC
52
53HOSTCCFLAGS += ${DEFINES}
Harry Liebelf58ad362014-01-10 18:00:33 +000054
Pankaj Guptae4aa1bd2020-12-09 14:02:38 +053055ifneq (${PLAT},)
56TF_PLATFORM_ROOT := ../../plat/
57include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk
Raef Colesf511dca2023-02-01 15:55:08 +000058COMBINED_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))
Pankaj Guptae4aa1bd2020-12-09 14:02:38 +053062endif
63
Raef Colesf511dca2023-02-01 15:55:08 +000064ifneq (,$(wildcard $(lastword ${PLAT_FIPTOOL_HELPER_MK})))
Pankaj Guptae4aa1bd2020-12-09 14:02:38 +053065include ${PLAT_FIPTOOL_HELPER_MK}
66endif
67
Mikael Olsson1f6e2482022-12-08 17:07:06 +010068DEPS := $(patsubst %.o,%.d,$(OBJECTS))
69
Juan Pablo Conde3539c742022-10-25 19:41:02 -040070.PHONY: all clean distclean --openssl
Harry Liebelf58ad362014-01-10 18:00:33 +000071
Vincent Stehléb75a0dd2023-07-04 16:14:02 +020072all: --openssl ${PROJECT}
Harry Liebelf58ad362014-01-10 18:00:33 +000073
Vincent Stehléb75a0dd2023-07-04 16:14:02 +020074${PROJECT}: ${OBJECTS} Makefile
Chris Kay1870c722024-05-02 17:52:37 +000075 $(s)echo " HOSTLD $@"
76 $(q)$(host-cc) ${OBJECTS} -o $@ $(LDOPTS)
77 $(s)echo
78 $(s)echo "Built $@ successfully"
79 $(s)echo
Harry Liebelf58ad362014-01-10 18:00:33 +000080
Pankaj Guptae4aa1bd2020-12-09 14:02:38 +053081%.o: %.c Makefile
Chris Kay1870c722024-05-02 17:52:37 +000082 $(s)echo " HOSTCC $<"
83 $(q)$(host-cc) -c ${CPPFLAGS} ${HOSTCCFLAGS} ${INCLUDE_PATHS} -MD -MP $< -o $@
Mikael Olsson1f6e2482022-12-08 17:07:06 +010084
85-include $(DEPS)
Harry Liebelf58ad362014-01-10 18:00:33 +000086
Juan Pablo Conde3539c742022-10-25 19:41:02 -040087--openssl:
Olivier Deprez9b9a5dc2023-08-31 11:46:54 +020088ifeq ($(STATIC),0)
Juan Pablo Conde3539c742022-10-25 19:41:02 -040089ifeq ($(DEBUG),1)
Chris Kay1870c722024-05-02 17:52:37 +000090 $(s)echo "Selected OpenSSL version: ${OPENSSL_CURRENT_VER}"
Juan Pablo Conde3539c742022-10-25 19:41:02 -040091endif
Olivier Deprez9b9a5dc2023-08-31 11:46:54 +020092endif # STATIC
Juan Pablo Conde3539c742022-10-25 19:41:02 -040093
Harry Liebelf58ad362014-01-10 18:00:33 +000094clean:
Chris Kayfaab7482025-01-13 15:57:32 +000095 $(q)rm -rf $(PROJECT) $(OBJECTS) $(DEPS)