mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-08 05:43:53 +00:00

Since the introduction of the toolchain detection framework into the build system, we have done determination and identification of the toolchain(s) used for the build at the initialization of the build system. This incurs a large cost to the build every time - for every toolchain that has been requested by the current makefile, we try to identify each tool in the list of known tool classes, even if that tool doesn't actually see any use. For the clean and check-like targets we worked around this by disabling most of the toolchains if we detect these targets, but this is inflexible and not very reliable, and it still means that when building normal targets we are incurring that cost for all tools whether they are used or not. This change instead modifies the toolchain detection framework to only initialize a tool for a given toolchain when it is first used. This does mean that we can no longer warn about an incorrectly-configured toolchain at the beginning of build system invocation, but it has the advantage of substantially reducing build time and the complexity of *using* the framework (at the cost of an increase in complexity in the framework itself). Change-Id: I7f3d06b2eb58c1b26a846791a13b0037f32c8013 Signed-off-by: Chris Kay <chris.kay@arm.com>
53 lines
1.2 KiB
Makefile
53 lines
1.2 KiB
Makefile
#
|
|
# Copyright 2018-2020 NXP
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
|
|
MAKE_HELPERS_DIRECTORY := ../../../make_helpers/
|
|
include ${MAKE_HELPERS_DIRECTORY}build_macros.mk
|
|
include ${MAKE_HELPERS_DIRECTORY}build_env.mk
|
|
include ${MAKE_HELPERS_DIRECTORY}common.mk
|
|
include ${MAKE_HELPERS_DIRECTORY}toolchain.mk
|
|
|
|
PROJECT_1 := create_pbl${BIN_EXT}
|
|
OBJECTS_1 := create_pbl.o
|
|
PROJECT_2 := byte_swap${BIN_EXT}
|
|
OBJECTS_2 := byte_swap.o
|
|
|
|
override CPPFLAGS += -D_GNU_SOURCE -D_XOPEN_SOURCE=700
|
|
CFLAGS := -Wall -Werror -pedantic -std=c99
|
|
ifeq (${DEBUG},1)
|
|
CFLAGS += -g -O0 -DDEBUG
|
|
else
|
|
CFLAGS += -O2
|
|
endif
|
|
LDLIBS :=
|
|
|
|
INCLUDE_PATHS :=
|
|
|
|
.PHONY: all clean distclean
|
|
|
|
all: create_pbl byte_swap
|
|
|
|
${PROJECT_1}: ${OBJECTS_1} Makefile
|
|
$(s)echo " LD $@"
|
|
$(q)$(host-cc) ${OBJECTS_1} -o $@ ${LDLIBS}
|
|
$(s)echo
|
|
$(s)echo "Built $@ successfully"
|
|
$(s)echo
|
|
|
|
${PROJECT_2}: ${OBJECTS_2} Makefile
|
|
$(s)echo " LD $@"
|
|
$(q)$(host-cc) ${OBJECTS_2} -o $@ ${LDLIBS}
|
|
$(s)echo
|
|
$(s)echo "Built $@ successfully"
|
|
$(s)echo
|
|
|
|
%.o: %.c %.h Makefile
|
|
$(s)echo " CC $<"
|
|
$(q)$(host-cc) -c ${CPPFLAGS} ${CFLAGS} ${INCLUDE_PATHS} $< -o $@
|
|
|
|
clean:
|
|
$(call SHELL_DELETE_ALL, ${PROJECT_1} ${OBJECTS_1})
|
|
$(call SHELL_DELETE_ALL, ${PROJECT_2} ${OBJECTS_2})
|