[OpenWrt-Devel] [PATCH v2] Add support for C-style in dtsi files
Jonas Gorski
jogo at openwrt.org
Fri Dec 4 15:57:04 EST 2015
Hi,
On Fri, Dec 4, 2015 at 12:40 AM, Nikolay Martynov <mar.kolya at gmail.com> wrote:
> 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.
Why not? Shouldn't they get processed as well as long as they are
included with #include, not /include/? Can you give an example that
doesn't work?
> 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.
I can't find this code in the kernel at all. Can you please point that out?
> 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.
This issue was copied from the DTS_DIR decleration, so maybe you can
fix that one up and then use -I$(DTS_DIR) -I$(DTS_DIR)/include ?
>
> 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)))
If I read this right you preprocess all dtsi files found there every
time you want to compile a dts file. This sounds like a lot of
unnecessary processing on e.g. arm, where arch/arm/boot/dts contains
435 .dtsi files as of 4.1. And since you remove the preprocessed
files, you need to do it again for the next dts file.
Jonas
_______________________________________________
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