Current way of compuling dts files involves calling C preprocessor on main dts file only. This means that dtsi includes cannot have C-style includes.
This patch addresses this problem. It uses approach similar to one use in linux kernel: it preprocesses all dtsi's in current dir into tmp dir and then uses that tmp dir as include dir for main dts compilation. Note: this patch preprocesses onlt *.dtsi, not *.dts, so only *.dtsi can be includes, but it looks like all current architectures follow this convention. This approach should be compatible with all current architectures. This patch also updates ramips arch to use new dtsi comilation code. v2: Use LINUX_KARCH to get to linux dh bindings. Signed-off-by: Nikolay Martynov <[email protected]> --- include/image.mk | 26 +++++++++++++++++++------- target/linux/ramips/image/Makefile | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/image.mk b/include/image.mk index fd5e3f4..73be8d5 100644 --- a/include/image.mk +++ b/include/image.mk @@ -16,7 +16,7 @@ override NO_TRACE_MAKE:=$(_SINGLE)$(NO_TRACE_MAKE) KDIR=$(KERNEL_BUILD_DIR) KDIR_TMP=$(KDIR)/tmp -DTS_DIR:=$(LINUX_DIR)/arch/$(ARCH)/boot/dts/ +DTS_DIR:=$(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts IMG_PREFIX:=openwrt-$(if $(CONFIG_VERSION_FILENAMES),$(VERSION_NUMBER)-)$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET)) @@ -138,19 +138,31 @@ define Image/BuildKernel/MkFIT endef # $(1) source dts file +# $(2) target dts file +# $(3) extra CPP flags +define Image/PreprocessDTS + $(CPP) -nostdinc -x assembler-with-cpp \ + -I$(DTS_DIR) \ + -I$(DTS_DIR)/include \ + -undef -D__DTS__ $(3) \ + -o $(2) $(1); +endef + + +# $(1) source dts file # $(2) target dtb file # $(3) extra CPP flags # $(4) extra DTC flags define Image/BuildDTB - $(CPP) -nostdinc -x assembler-with-cpp \ - -I$(LINUX_DIR)/arch/$(ARCH)/boot/dts \ - -I$(LINUX_DIR)/arch/$(ARCH)/boot/dts/include \ - -undef -D__DTS__ $(3) \ - -o $(2).tmp $(1) + mkdir -p $(2).inc.tmp + $(foreach inc,$(wildcard $(dir $(1))*.dtsi), \ + $(call Image/PreprocessDTS,$(inc),$(2).inc.tmp/$(notdir $(inc)),$(3))) + $(call Image/PreprocessDTS,$(1),$(2).tmp,$(3)) $(LINUX_DIR)/scripts/dtc/dtc -O dtb \ - -i$(dir $(1)) $(4) \ + -i$(2).inc.tmp $(4) \ -o $(2) $(2).tmp $(RM) $(2).tmp + $(RM) -rf $(2).inc.tmp endef define Image/mkfs/jffs2/sub diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index e58d012..01e3fcb 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -39,7 +39,7 @@ define Device/Default endef define Build/patch-dtb - $(LINUX_DIR)/scripts/dtc/dtc -O dtb -o [email protected] ../dts/$(DTS).dts + $(call Image/BuildDTB,../dts/$(DTS).dts,[email protected]) $(STAGING_DIR_HOST)/bin/patch-dtb $@ [email protected] endef -- 2.6.3 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
