Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH v2] linux-yocto: build out-of-tree drivers with SDK
@ 2025-05-13  3:55 Vincent Davis Jr
  2025-05-13  3:57 ` Vincent Davis Jr
  2025-05-15 17:58 ` [OE-core] " Bruce Ashfield
  0 siblings, 2 replies; 5+ messages in thread
From: Vincent Davis Jr @ 2025-05-13  3:55 UTC (permalink / raw)
  To: openembedded-core; +Cc: Vincent Davis Jr

Attached patch enables the compilation
of out-of-tree drivers whilst utilizing
the Yocto built SDK.

Signed-off-by: Vincent Davis Jr <vince@underview.tech>
---
 ...-add-KCFLAGS-to-build-with-Yocto-SDK.patch | 65 +++++++++++++++++++
 meta/recipes-kernel/linux/linux-yocto-dev.bb  |  4 ++
 .../linux/linux-yocto-rt_6.12.bb              |  4 ++
 .../linux/linux-yocto-tiny_6.12.bb            |  4 ++
 meta/recipes-kernel/linux/linux-yocto_6.12.bb |  4 ++
 5 files changed, 81 insertions(+)
 create mode 100644 meta/recipes-kernel/linux/files/0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch

diff --git a/meta/recipes-kernel/linux/files/0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch b/meta/recipes-kernel/linux/files/0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch
new file mode 100644
index 0000000000..edf6a8480f
--- /dev/null
+++ b/meta/recipes-kernel/linux/files/0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch
@@ -0,0 +1,65 @@
+From e48021f480428b5e34d299261029bfafdf0e3a2f Mon Sep 17 00:00:00 2001
+From: Vincent Davis Jr <vince@underview.tech>
+Date: Sun, 11 May 2025 19:57:46 -0400
+Subject: [PATCH] Makefile: add KCFLAGS to build with Yocto SDK
+
+Upstream-Status: Pending
+
+When running
+
+make -C \
+"${SDKTARGETSYSROOT}/lib/modules/<kernel version>/build" \
+modules_prepare
+
+Issues that are encountered include
+
+make -f ./Makefile syncconfig
+make -f ./scripts/Makefile.build obj=scripts/basic
+   92 | #include <sys/types.h>
+      |          ^~~~~~~~~~~~~
+compilation terminated.
+
+ld: cannot find Scrt1.o: No such file or directory
+ld: cannot find crti.o: No such file or directory
+ld: cannot find crtbeginS.o: No such file or directory
+ld: cannot find -lgcc: No such file or directory
+ld: cannot find -lgcc_s: No such file or directory
+ld: cannot find -lc: No such file or directory
+ld: cannot find -lgcc: No such file or directory
+ld: cannot find -lgcc_s: No such file or directory
+ld: cannot find crtendS.o: No such file or directory
+ld: cannot find crtn.o: No such file or directory
+
+Solved by setting KCFLAGS as the yocto project SDK
+KCFLAGS is set to --sysroot="${SDKTARGETSYSROOT}".
+
+Signed-off-by: Vincent Davis Jr <vince@underview.tech>
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 64c514f4bc19..bbe7b0503841 100644
+--- a/Makefile
++++ b/Makefile
+@@ -459,7 +459,7 @@ HOSTRUSTC = rustc
+ HOSTPKG_CONFIG	= pkg-config
+ 
+ KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
+-			 -O2 -fomit-frame-pointer -std=gnu11
++			 -O2 -fomit-frame-pointer -std=gnu11 $(KCFLAGS)
+ KBUILD_USERCFLAGS  := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS)
+ KBUILD_USERLDFLAGS := $(USERLDFLAGS)
+ 
+@@ -491,7 +491,7 @@ KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS) \
+ 		       -I $(srctree)/scripts/include
+ KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \
+ 			-Zallow-features= $(HOSTRUSTFLAGS)
+-KBUILD_HOSTLDFLAGS  := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
++KBUILD_HOSTLDFLAGS  := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS) $(KCFLAGS)
+ KBUILD_HOSTLDLIBS   := $(HOST_LFS_LIBS) $(HOSTLDLIBS)
+ KBUILD_PROCMACROLDFLAGS := $(or $(PROCMACROLDFLAGS),$(KBUILD_HOSTLDFLAGS))
+ 
+-- 
+2.43.0
+
diff --git a/meta/recipes-kernel/linux/linux-yocto-dev.bb b/meta/recipes-kernel/linux/linux-yocto-dev.bb
index 4b1f93a692..43ad4c4791 100644
--- a/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -20,6 +20,10 @@ KMETA = "kernel-meta"
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine;protocol=https \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=master;destsuffix=${KMETA};protocol=https"
 
+# Appears to be the only way to build out-of-tree
+# kernel drivers with the yocto project SDK.
+SRC_URI += "file://0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch"
+
 # Set default SRCREVs. Both the machine and meta SRCREVs are statically set
 # to the korg v3.7 tag, and hence prevent network access during parsing. If
 # linux-yocto-dev is the preferred provider, they will be overridden to
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb
index 6560175461..3f34dbf87d 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.12.bb
@@ -20,6 +20,10 @@ SRCREV_meta ?= "a50ff542f8d79235030741f9e850d34768907d2d"
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https"
 
+# Appears to be the only way to build out-of-tree
+# kernel drivers with the yocto project SDK.
+SRC_URI += "file://0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch"
+
 LINUX_VERSION ?= "6.12.27"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb
index cf6014efad..aab465e9dd 100644
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.12.bb
@@ -25,6 +25,10 @@ PV = "${LINUX_VERSION}+git"
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https"
 
+# Appears to be the only way to build out-of-tree
+# kernel drivers with the yocto project SDK.
+SRC_URI += "file://0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch"
+
 COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm64|qemuarm|qemuarmv5)$"
 
 # Functionality flags
diff --git a/meta/recipes-kernel/linux/linux-yocto_6.12.bb b/meta/recipes-kernel/linux/linux-yocto_6.12.bb
index fefed8c9c5..b5efcc0192 100644
--- a/meta/recipes-kernel/linux/linux-yocto_6.12.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_6.12.bb
@@ -43,6 +43,10 @@ KBRANCH:class-devupstream = "v6.12/base"
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH};protocol=https \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.12;destsuffix=${KMETA};protocol=https"
 
+# Appears to be the only way to build out-of-tree
+# kernel drivers with the yocto project SDK.
+SRC_URI += "file://0001-Makefile-add-KCFLAGS-to-build-with-Yocto-SDK.patch"
+
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 LINUX_VERSION ?= "6.12.27"
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-05-20  0:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-13  3:55 [PATCH v2] linux-yocto: build out-of-tree drivers with SDK Vincent Davis Jr
2025-05-13  3:57 ` Vincent Davis Jr
2025-05-15 17:58 ` [OE-core] " Bruce Ashfield
2025-05-20  0:36   ` Vincent Davis Jr
2025-05-20  0:44     ` Vincent Davis Jr

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox