Some vendor kernels come with additional directories to be included in the
linux-headers package in order to support building of their out-of-tree
drivers. HEADERS_INSTALL_EXTRA may be set to a list of directories relative
to ${S} in any kernel recipes that includes linux-custom.inc
Signed-off-by: Cedric Hombourger <
cedric.h...@siemens.com>
---
RECIPE-API-CHANGELOG.md | 12 ++++++++++++
.../linux/files/debian/isar/install.tmpl | 6 ++++++
meta/recipes-kernel/linux/linux-custom.inc | 12 ++++++++++++
3 files changed, 30 insertions(+)
diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 65cd98b3..21c558d2 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -634,3 +634,15 @@ into kernel kbuild package.
When downloading from debian snapshot mirrors, rate limits might apply.
To limit the amount of parallel fetching to n kB / s, you can set `ISAR_APT_DL_LIMIT="<n>`.
+
+### Custom directories in vendor kernels
+
+Some vendor kernels come with additional directories to be included in the
+linux-headers package in order to support building of their out-of-tree
+drivers. `HEADERS_INSTALL_EXTRA` may be set to a list of directories relative
+to ${S} in any kernel recipes that includes `linux-custom.inc`. A l4t kernel
+recipe would use the following setting:
+
+```
+HEADERS_INSTALL_EXTRA += "nvidia"
+```
diff --git a/meta/recipes-kernel/linux/files/debian/isar/install.tmpl b/meta/recipes-kernel/linux/files/debian/isar/install.tmpl
index 00011517..0a7bdd66 100644
--- a/meta/recipes-kernel/linux/files/debian/isar/install.tmpl
+++ b/meta/recipes-kernel/linux/files/debian/isar/install.tmpl
@@ -193,6 +193,12 @@ kernel_headers() {
(cd ${S}; find arch/${ARCH} -name module.lds -o -name Kbuild.platforms -o -name Platform) >>${src_hdr_files}
(cd ${S}; find $(find arch/${ARCH} -name include -o -name scripts -type d) -type f) >>${src_hdr_files}
+ if [ -n "${HEADERS_INSTALL_EXTRA}" ]; then
+ for d in ${HEADERS_INSTALL_EXTRA}; do
+ (cd ${S}; find ${d} -type f) >>${src_hdr_files}
+ done
+ fi
+
if [ -n "${CONFIG_MODULES}" ]; then
echo Module.symvers >> ${obj_hdr_files}
fi
diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index 6aa70fd3..7e312b75 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -48,6 +48,8 @@ LINUX_VERSION_EXTENSION ?= ""
KERNEL_DEFCONFIG ??= ""
+HEADERS_INSTALL_EXTRA ??= ""
+
# Add our template meta-data to the sources
FILESPATH:append := ":${FILE_DIRNAME}/files"
SRC_URI += "file://debian"
@@ -84,6 +86,7 @@ TEMPLATE_VARS += " \
KAFLAGS \
DISTRIBUTOR \
KERNEL_EXTRA_BUILDARGS \
+ HEADERS_INSTALL_EXTRA \
"
inherit dpkg
@@ -224,6 +227,15 @@ do_prepare_build:prepend() {
# produce a changelog for our kernel build
deb_add_changelog
+
+ # make sure user-specified directories do exist in ${S}
+ if [ -n "${HEADERS_INSTALL_EXTRA}" ]; then
+ for d in ${HEADERS_INSTALL_EXTRA}; do
+ [ -d ${S}/${d} ] || {
+ bbfatal "HEADERS_INSTALL_EXTRA: '${d}' not found in \${S}!"
+ }
+ done
+ fi
}
# build directory for our "full" kernel build
--
2.39.2