Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
842c00eb
Unverified
Commit
842c00eb
authored
Dec 14, 2017
by
davidcunado-arm
Committed by
GitHub
Dec 14, 2017
Browse files
Merge pull request #1104 from nmenon/dtb_build-v2
Makefile: Add ability to build dtb (v2)
parents
211d307c
03b397a8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
842c00eb
...
...
@@ -125,6 +125,7 @@ OC := ${CROSS_COMPILE}objcopy
OD
:=
${CROSS_COMPILE}
objdump
NM
:=
${CROSS_COMPILE}
nm
PP
:=
${CROSS_COMPILE}
gcc
-E
DTC
?=
dtc
ifeq
(${ARM_ARCH_MAJOR},7)
target32-directive
=
-target
arm-none-eabi
...
...
@@ -163,6 +164,8 @@ TF_LDFLAGS += --fatal-warnings -O1
TF_LDFLAGS
+=
--gc-sections
TF_LDFLAGS
+=
$
(
TF_LDFLAGS_
$(ARCH)
)
DTC_FLAGS
+=
-I
dts
-O
dtb
################################################################################
# Common sources and include directories
################################################################################
...
...
@@ -451,6 +454,10 @@ include bl31/bl31.mk
endif
endif
ifdef FDT_SOURCES
NEED_FDT := yes
endif
################################################################################
# Build options checks
################################################################################
...
...
@@ -551,7 +558,7 @@ endif
# Build targets
################################################################################
.PHONY: all msg_start clean realclean distclean cscope locate-checkpatch checkcodebase checkpatch fiptool fip fwu_fip certtool
.PHONY: all msg_start clean realclean distclean cscope locate-checkpatch checkcodebase checkpatch fiptool fip fwu_fip certtool
dtbs
.SUFFIXES:
all: msg_start
...
...
@@ -604,6 +611,13 @@ $(if ${BL2U}, ,$(eval $(call MAKE_BL,2u)))
$(eval
$(call
FWU_FIP_ADD_PAYLOAD,${BL2U_PATH},--ap-fwu-cfg))
endif
# Expand build macros for the different images
ifeq
(${NEED_FDT},yes)
$(eval
$(call
MAKE_DTBS,$(BUILD_PLAT)/fdts,$(FDT_SOURCES)))
$(eval
$(call
MAKE_FDT))
dtbs
:
$(DTBS)
endif
locate-checkpatch
:
ifndef
CHECKPATCH
$(
error
"Please set CHECKPATCH to point to the Linux checkpatch.pl file, eg: CHECKPATCH=../linux/scripts/checkpatch.pl"
)
...
...
@@ -731,6 +745,7 @@ help:
@
echo
" distclean Remove all build artifacts for all platforms"
@
echo
" certtool Build the Certificate generation tool"
@
echo
" fiptool Build the Firmware Image Package (FIP) creation tool"
@
echo
" dtbs Build the Flattened device tree (if required for the platform)"
@
echo
""
@
echo
"Note: most build targets require PLAT to be set to a specific platform."
@
echo
""
...
...
make_helpers/build_macros.mk
View file @
842c00eb
...
...
@@ -336,3 +336,49 @@ $(eval $(call MAKE_TOOL_ARGS,$(1),$(BIN),$(2)))
endef
define
SOURCES_TO_DTBS
$(notdir
$(patsubst
%.dts,%.dtb,$(filter
%.dts,$(1))))
endef
# MAKE_FDT macro defines the targets and options to build each FDT binary
# Arguments: (none)
define
MAKE_FDT
$(eval DTB_BUILD_DIR
:
= ${BUILD_PLAT}/fdts)
$(eval DTBS
:
= $(addprefix $(DTB_BUILD_DIR)/
,
$(call SOURCES_TO_DTBS
,
$(FDT_SOURCES))))
$(eval TEMP_DTB_DIRS
:
= $(sort $(dir ${DTBS})))
# The $(dir ) function leaves a trailing / on the directory names
# Rip off the / to match directory names with make rule targets.
$(eval DTB_DIRS
:
= $(patsubst %/
,
%
,
$(TEMP_DTB_DIRS)))
$(eval
$(foreach
objd,${DTB_DIRS},$(call
MAKE_PREREQ_DIR,${objd},${BUILD_DIR})))
fdt_dirs
:
${DTB_DIRS}
endef
# MAKE_DTB generate the Flattened device tree binary (device tree binary)
# $(1) = output directory
# $(2) = input dts
define
MAKE_DTB
$(eval DOBJ
:
= $(1)/$(patsubst %.dts
,
%.dtb
,
$(notdir $(2))))
$(eval DEP
:
= $(patsubst %.dtb
,
%.d
,
$(DOBJ)))
$(DOBJ)
:
$(2) | fdt_dirs
@
echo
" DTC
$$
<"
$
$(Q)
$
$(DTC)
$
$(DTC_FLAGS)
-d
$(DEP)
-o
$$
@
$$
<
-include
$(DEP)
endef
# MAKE_DTBS builds flattened device tree sources
# $(1) = output directory
# $(2) = list of flattened device tree source files
define
MAKE_DTBS
$(eval DOBJS
:
= $(filter %.dts
,
$(2)))
$(eval REMAIN
:
= $(filter-out %.dts
,
$(2)))
$(eval
$(foreach
obj,$(DOBJS),$(call
MAKE_DTB,$(1),$(obj))))
$(and $(REMAIN),$(error Unexpected s present
:
$(REMAIN)))
endef
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment