ANDROID: kbuild: add support for compiling external device trees

Similar to external modules, the device tree should also be allowed to
be compiled using out-of-tree source. This would allow one to further
separate the core kernel from the vendor-specific device trees. To do
this, we just need to allow the user to set the "dtstree" and
"DTC_INCLUDE" build properties in the build environment.

To setup the external device tree, you can follow these steps:

1) Move the device tree to your out-of-tree project.
2) Move the dt-bindings to your out-of-tree project.
3) Configure your build environment to set the following variables:

  dtstree=/path/to/device/tree
  DTC_INCLUDE=/path/to/device/tree/dtc/include-prefixes

If you are using build.sh, then you can use DTS_EXT_DIR to define the
dtstree.

Bug: 210036798
Signed-off-by: Will McVicker <willmcvicker@google.com>
Change-Id: Ibf05544ee8250a68b882328817a267518ae478b5
This commit is contained in:
Will McVicker 2021-12-07 09:41:37 -08:00 committed by Isaac J. Manjarres
parent fe033e0b34
commit 50b4a2a7e1
2 changed files with 6 additions and 2 deletions

View File

@ -1460,7 +1460,9 @@ kselftest-merge:
# Devicetree files
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),)
dtstree := arch/$(SRCARCH)/boot/dts
# ANDROID: allow this to be overridden by the build environment. This allows
# one to compile a device tree that is located out-of-tree.
dtstree ?= arch/$(SRCARCH)/boot/dts
endif
ifneq ($(dtstree),)

View File

@ -228,7 +228,9 @@ cpp_flags = -Wp,-MMD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \
ld_flags = $(KBUILD_LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F))
DTC_INCLUDE := $(srctree)/scripts/dtc/include-prefixes
# ANDROID: Allow DTC_INCLUDE to be set by the BUILD_CONFIG. This allows one to
# compile an out-of-tree device tree.
DTC_INCLUDE += $(srctree)/scripts/dtc/include-prefixes
dtc_cpp_flags = -Wp,-MMD,$(depfile).pre.tmp -nostdinc \
$(addprefix -I,$(DTC_INCLUDE)) \