commit:     7b55c828e5df46717ed9eaecd18598eaaacab856
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 11 12:31:04 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Mar 11 12:31:04 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7b55c828

sys-fs/zfs-kmod: add Clang logic

The needed patch made its way upstream but we need
a small amount of logic in the ebuild to accommodate
it fully.

Bug: https://github.com/openzfs/zfs/pull/13046
Closes: https://bugs.gentoo.org/814194
Thanks-to: Peter Levine <plevine457 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-fs/zfs-kmod/zfs-kmod-2.1.3.ebuild | 18 ++++++++++++++++++
 sys-fs/zfs-kmod/zfs-kmod-9999.ebuild  | 18 ++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/sys-fs/zfs-kmod/zfs-kmod-2.1.3.ebuild 
b/sys-fs/zfs-kmod/zfs-kmod-2.1.3.ebuild
index 2c6ab28bcfde..cb47cb1d7d8b 100644
--- a/sys-fs/zfs-kmod/zfs-kmod-2.1.3.ebuild
+++ b/sys-fs/zfs-kmod/zfs-kmod-2.1.3.ebuild
@@ -111,6 +111,24 @@ pkg_setup() {
 
        kernel_is -ge 3 10 || die "Linux 3.10 or newer required"
 
+       if tc-is-clang ; then
+               # See bug #814194
+               ewarn "Warning: building ${PN} with LLVM/Clang is experimental!"
+               export KERNEL_CC="$(tc-getBUILD_CC)"
+
+               if tc-ld-is-lld ; then
+                       export KERNEL_LD="$(tc-getBUILD_LD)"
+
+                       KERNEL_LLVM=1
+
+                       local tool
+                       for tool in AR NM STRIP OBJCOPY READELF; do
+                               [[ $(tc-getBUILD_${tool}) != *llvm-${tool,,} ]] 
&& KERNEL_LLVM=0
+                       done
+                       export KERNEL_LLVM
+               fi
+       fi
+
        linux-mod_pkg_setup
 }
 

diff --git a/sys-fs/zfs-kmod/zfs-kmod-9999.ebuild 
b/sys-fs/zfs-kmod/zfs-kmod-9999.ebuild
index 2c6ab28bcfde..cb47cb1d7d8b 100644
--- a/sys-fs/zfs-kmod/zfs-kmod-9999.ebuild
+++ b/sys-fs/zfs-kmod/zfs-kmod-9999.ebuild
@@ -111,6 +111,24 @@ pkg_setup() {
 
        kernel_is -ge 3 10 || die "Linux 3.10 or newer required"
 
+       if tc-is-clang ; then
+               # See bug #814194
+               ewarn "Warning: building ${PN} with LLVM/Clang is experimental!"
+               export KERNEL_CC="$(tc-getBUILD_CC)"
+
+               if tc-ld-is-lld ; then
+                       export KERNEL_LD="$(tc-getBUILD_LD)"
+
+                       KERNEL_LLVM=1
+
+                       local tool
+                       for tool in AR NM STRIP OBJCOPY READELF; do
+                               [[ $(tc-getBUILD_${tool}) != *llvm-${tool,,} ]] 
&& KERNEL_LLVM=0
+                       done
+                       export KERNEL_LLVM
+               fi
+       fi
+
        linux-mod_pkg_setup
 }
 

Reply via email to