Simon, > -----Original Message----- > From: Simon Glass [mailto:s...@chromium.org] > Sent: Tuesday, May 28, 2013 12:36 PM > To: U-Boot Mailing List > Cc: Tom Rini; Stephen Warren; Devicetree Discuss; u-boot- > rev...@google.com; Simon Glass; Tom Warren; Jerry Van Baren > Subject: [PATCH] fdt: Enhance dts/Makefile to be all things to all men > > There are a few partially conflicting requirements in compiling the device > tree, since U-Boot relies on whatever is installed on the build machine. > > Some versions of dtc support -i, and this is often better than using #include > since you get correct line number information in errors. Unfortunately this > version must be installed manually in current Linux distributions. > > Some device tree files use the word 'linux' which gets replaced with '1' by > many version of gcc, including version 4.7. So undefine this. > > When an device tree file has an error we want to direct the user to the right > file and line number. So instead of piping the file into dts through stdin, > put it > in a real file so that we get a fairly sensible error message from dts. Then > print out the original file details to help further. > > This is based on a commit from Tom Warren. It would help if people can test > it in different environments. > > Signed-off-by: Tom Warren <twar...@nvidia.com> > Signed-off-by: Simon Glass <s...@chromium.org>
Works for me for all Tegra builds, so: Tested-by: Tom Warren <twar...@nvidia.com> Tom > --- > dts/Makefile | 34 +++++++++++++++++++++++++++++----- > 1 file changed, 29 insertions(+), 5 deletions(-) > > diff --git a/dts/Makefile b/dts/Makefile index 03e163e..1f6fabb 100644 > --- a/dts/Makefile > +++ b/dts/Makefile > @@ -37,11 +37,29 @@ $(if $(CONFIG_ARCH_DEVICE_TREE),,\ $(error Your > architecture does not have device tree support enabled. \ Please define > CONFIG_ARCH_DEVICE_TREE)) > > +# Provide a list of include directories for dtc DTS_INCS-y := -i > +$(SRCTREE)/arch/$(ARCH)/dts > + > +DTS_INCS-y += -i $(SRCTREE)/board/$(VENDOR)/dts > + > +DTS_INCS-$(CONFIG_CHROMEOS) += -i $(SRCTREE)/cros/dts > + > +# Check if our dtc includes the -i option DTS_FLAGS := $(shell if ! dtc > +-i 2>&1 | grep -q "invalid option"; then \ > + echo $(DTS_INCS-y); fi) > + > # We preprocess the device tree file provide a useful define -DTS_CPPFLAGS > := -x assembler-with-cpp \ > +# Undefine 'linux' since it might be used in device tree files > +DTS_CPPFLAGS := -x assembler-with-cpp -Ulinux \ > - > DARCH_CPU_DTS=\"$(SRCTREE)/arch/$(ARCH)/dts/$(CONFIG_ARCH_DEVIC > E_TREE).dtsi\" \ > - > DBOARD_DTS=\"$(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts/$(DEVICE_TR > EE).dts\" \ > - -I$(SRCTREE)/board/$(VENDOR)/dts - > I$(SRCTREE)/arch/$(ARCH)/dts > + -D__ASSEMBLY__ -I$(OBJTREE)/include -I$(SRCTREE)/include > \ > + -I$(OBJTREE)/include2 \ > + -I$(SRCTREE)/board/$(VENDOR)/dts - > I$(SRCTREE)/arch/$(ARCH)/dts \ > + -include $(OBJTREE)/include/config.h > + > +DTS_TMP := $(OBJTREE)/include/generated/$(DEVICE_TREE).dts.in > +DTS_SRC := board/$(VENDOR)/dts/$(DEVICE_TREE).dts > > all: $(obj).depend $(LIB) > > @@ -50,13 +68,19 @@ all: $(obj).depend $(LIB) > # the filename. > DT_BIN := $(obj)dt.dtb > > -$(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts > +DTC_CMD := $(DTC) -R 4 -p 0x1000 -O dtb -o ${DT_BIN} $(DTS_FLAGS) > +$(DTS_TMP) > + > +$(DT_BIN): $(TOPDIR)/$(DTS_SRC) > rc=$$( \ > - cat $< | $(CPP) -P $(DTS_CPPFLAGS) - | \ > - { { $(DTC) -R 4 -p 0x1000 -O dtb -o ${DT_BIN} - 2>&1 ; \ > + cat $< | $(CPP) -P $(DTS_CPPFLAGS) - > $(DTS_TMP); \ > + { { $(DTC_CMD) 2>&1 ; \ > echo $$? >&3 ; } | \ > grep -v '^DTC: dts->dtb on file' ; \ > } 3>&1 1>&2 ) ; \ > + if [ $$rc != 0 ]; then \ > + echo "Source file is $(DTS_SRC)"; \ > + echo "Compiler: $(DTC_CMD)"; \ > + fi; \ > exit $$rc > > process_lds = \ > -- > 1.8.2.1 -- nvpublic _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot