diff options
author | Trent Piepho <trent.piepho@igorinstitute.com> | 2021-09-22 11:13:36 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-10-05 09:03:39 +0200 |
commit | 2ae7ac7ab2f11e2ae7541749d8496ef0bc282c89 (patch) | |
tree | a8760e8e2be4a58587ccc527f942c288601bd05e /scripts | |
parent | 866e6e41cda21de6704fef3dae0c8e9c93436968 (diff) | |
download | barebox-2ae7ac7ab2f11e2ae7541749d8496ef0bc282c89.tar.gz barebox-2ae7ac7ab2f11e2ae7541749d8496ef0bc282c89.tar.xz |
kbuild: dtc: Allow adding device tree fragments via config
This introduces a config variable that allows adding additional fragments
to the Barebox device tree(s).
Example uses are adjusting the flash partition layout, adding barebox
state variables, or adding an I2C device. These can be now be done with
build configuration only, without needing to patch the existing dts
files in the Barebox source.
The advantage is greater when an external build system, such as Yocto or
Buildroot, is being used to build Barebox. The build system can drop in
a dts fragment to partition flash and build from unaltered Barebox
source. This avoids the need for cumbersome maintenance of patch files
to modify Barebox's source for each flash partition layout.
Preprocessing the dts file gains another layer, where a generated dts
source consisting of an include directive for the original dts source is
followed by more includes for each fragment. This is piped to the
existing preprocessor call on stdin to avoid another temporary file.
cpp/dtc will correctly identify errors in the source files they occur
in. The -MT option is used so the cpp auto-dependencies reference the
original dts source and not the generated code passed on stdin.
A preprocessor macro named after the base dts file, e.g. foo-bar.dts
will define foo_bar_dts, will be defined so that the fragments can
possibly operate differently based on which image's dts is being built.
Signed-off-by: Trent Piepho <trent.piepho@igorinstitute.com>
Link: https://lore.barebox.org/20210922181336.1350460-1-trent.piepho@igorinstitute.com
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.lib | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 80d76b177c..13b1789c01 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -201,6 +201,7 @@ cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(__cpp_flags) ld_flags = $(KBUILD_LDFLAGS) $(ldflags-y) dtc_cpp_flags = -Wp,-MD,$(depfile).pre -nostdinc \ + -Wp,-MT,$(basename $(notdir $@)).o \ -I$(srctree)/arch/$(SRCARCH)/dts/include \ -I$(srctree)/dts/include \ -I$(srctree)/include \ @@ -335,8 +336,12 @@ cmd_dt_S_dtb = $(srctree)/scripts/gen-dtb-s $(subst -,_,$(*F)) $< $(CONFIG_IMD) $(obj)/%.dtb.S: $(obj)/%.dtb $(srctree)/scripts/gen-dtb-s FORCE $(call if_changed,dt_S_dtb) +dts-frags = $(subst $(quote),,$(CONFIG_EXTERNAL_DTS_FRAGMENTS)) quiet_cmd_dtc = DTC $@ -cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ +# For compatibility between make 4.2 and 4.3 +H := \# +cmd_dtc = /bin/echo -e '$(H)define $(subst -,_,$(*F))_dts 1\n'$(foreach f,$< $(dts-frags),'$(H)include "$(f)"\n') | \ + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) - ; \ $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \ -i $(srctree)/arch/$(SRCARCH)/dts $(DTC_FLAGS) \ -i $(srctree)/dts/src/$(SRCARCH) \ |