2011-10-15 13:48:21 +08:00
|
|
|
#
|
|
|
|
# Copyright (c) 2011 The Chromium OS Authors.
|
|
|
|
#
|
2013-07-08 15:37:19 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0+
|
2011-10-15 13:48:21 +08:00
|
|
|
#
|
|
|
|
|
|
|
|
# This Makefile builds the internal U-Boot fdt if CONFIG_OF_CONTROL is
|
|
|
|
# enabled. See doc/README.fdt-control for more details.
|
|
|
|
|
2013-02-28 18:20:18 +08:00
|
|
|
ifeq ($(DEVICE_TREE),)
|
2011-10-15 13:48:21 +08:00
|
|
|
$(if $(CONFIG_DEFAULT_DEVICE_TREE),,\
|
|
|
|
$(error Please define CONFIG_DEFAULT_DEVICE_TREE in your board header file))
|
2013-12-05 14:08:31 +08:00
|
|
|
DEVICE_TREE = $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%)
|
2013-02-28 18:20:18 +08:00
|
|
|
endif
|
2011-10-15 13:48:21 +08:00
|
|
|
|
2013-07-25 01:09:19 +08:00
|
|
|
DTS_INCDIRS = $(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts
|
|
|
|
DTS_INCDIRS += $(SRCTREE)/board/$(VENDOR)/dts
|
|
|
|
DTS_INCDIRS += $(SRCTREE)/arch/$(ARCH)/dts
|
|
|
|
|
2013-07-25 01:09:24 +08:00
|
|
|
DTS_CPPFLAGS := -x assembler-with-cpp -undef -D__DTS__ \
|
2013-07-25 01:09:19 +08:00
|
|
|
-nostdinc $(addprefix -I,$(DTS_INCDIRS))
|
|
|
|
|
|
|
|
DTC_FLAGS := -R 4 -p 0x1000 \
|
|
|
|
$(addprefix -i ,$(DTS_INCDIRS))
|
2011-10-15 13:48:21 +08:00
|
|
|
|
|
|
|
# Use a constant name for this so we can access it from C code.
|
|
|
|
# objcopy doesn't seem to allow us to set the symbol name independently of
|
|
|
|
# the filename.
|
2014-02-04 16:24:24 +08:00
|
|
|
DT_BIN := $(obj)/dt.dtb
|
2011-10-15 13:48:21 +08:00
|
|
|
|
|
|
|
$(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts
|
2013-07-25 01:09:23 +08:00
|
|
|
$(CPP) $(DTS_CPPFLAGS) $< -o $(DT_BIN).dts.tmp
|
2013-07-25 01:09:19 +08:00
|
|
|
$(DTC) $(DTC_FLAGS) -O dtb -o ${DT_BIN} $(DT_BIN).dts.tmp
|
2011-10-15 13:48:21 +08:00
|
|
|
|
|
|
|
process_lds = \
|
|
|
|
$(1) | sed -r -n 's/^OUTPUT_$(2)[ ("]*([^")]*).*/\1/p'
|
|
|
|
|
|
|
|
# Run the compiler and get the link script from the linker
|
kbuild: use Linux Kernel build scripts
Now we are ready to switch over to real Kbuild.
This commit disables temporary scripts:
scripts/{Makefile.build.tmp, Makefile.host.tmp}
and enables real Kbuild scripts:
scripts/{Makefile.build,Makefile.host,Makefile.lib}.
This switch is triggered by the line in scripts/Kbuild.include
-build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
+build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
We need to adjust some build scripts for U-Boot.
But smaller amount of modification is preferable.
Additionally, we need to fix compiler flags which are
locally added or removed.
In Kbuild, it is not allowed to change CFLAGS locally.
Instead, ccflags-y, asflags-y, cppflags-y,
CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
are prepared for that purpose.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Tested-by: Gerhard Sittig <gsi@denx.de>
2014-02-04 16:24:28 +08:00
|
|
|
GET_LDS = $(CC) $(c_flags) $(ld_flags) -Wl,--verbose 2>&1
|
2011-10-15 13:48:21 +08:00
|
|
|
|
2014-02-04 16:24:24 +08:00
|
|
|
$(obj)/dt.o: $(DT_BIN)
|
2011-10-15 13:48:21 +08:00
|
|
|
# We want the output format and arch.
|
|
|
|
# We also hope to win a prize for ugliest Makefile / shell interaction
|
|
|
|
# We look in the LDSCRIPT first.
|
|
|
|
# Then try the linker which should give us the answer.
|
|
|
|
# Then check it worked.
|
2012-07-12 10:58:32 +08:00
|
|
|
[ -n "$(LDSCRIPT)" ] && \
|
|
|
|
oformat=`$(call process_lds,cat $(LDSCRIPT),FORMAT)` && \
|
|
|
|
oarch=`$(call process_lds,cat $(LDSCRIPT),ARCH)` ;\
|
2011-10-15 13:48:21 +08:00
|
|
|
\
|
|
|
|
[ -z $${oformat} ] && \
|
|
|
|
oformat=`$(call process_lds,$(GET_LDS),FORMAT)` ;\
|
|
|
|
[ -z $${oarch} ] && \
|
|
|
|
oarch=`$(call process_lds,$(GET_LDS),ARCH)` ;\
|
|
|
|
\
|
|
|
|
[ -z $${oformat} ] && \
|
|
|
|
echo "Cannot read OUTPUT_FORMAT from lds file $(LDSCRIPT)" && \
|
|
|
|
exit 1 || true ;\
|
|
|
|
[ -z $${oarch} ] && \
|
|
|
|
echo "Cannot read OUTPUT_ARCH from lds file $(LDSCRIPT)" && \
|
|
|
|
exit 1 || true ;\
|
|
|
|
\
|
|
|
|
cd $(dir ${DT_BIN}) && \
|
|
|
|
$(OBJCOPY) -I binary -O $${oformat} -B $${oarch} \
|
2014-02-04 16:24:24 +08:00
|
|
|
$(notdir ${DT_BIN}) $(notdir $@)
|
2011-10-15 13:48:21 +08:00
|
|
|
rm $(DT_BIN)
|
|
|
|
|
2013-10-21 10:53:40 +08:00
|
|
|
obj-$(CONFIG_OF_EMBED) := dt.o
|
2011-10-15 13:48:21 +08:00
|
|
|
|
|
|
|
binary: $(DT_BIN)
|