[OpenWrt-Devel] [PATCH v2] Add support for C-style in dtsi files
Nikolay Martynov
mar.kolya at gmail.com
Thu Dec 3 18:40:24 EST 2015
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 <mar.kolya at gmail.com>
---
include/image.mk | 24 ++++++++++++++++++------
target/linux/ramips/image/Makefile | 2 +-
2 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/include/image.mk b/include/image.mk
index fd5e3f4..fa0314f 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -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$(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts \
+ -I$(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/dts/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 $@.dtb ../dts/$(DTS).dts
+ $(call Image/BuildDTB,../dts/$(DTS).dts,$@.dtb)
$(STAGING_DIR_HOST)/bin/patch-dtb $@ $@.dtb
endef
--
2.6.3
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list