mirror of
https://git.proxmox.com/git/mirror_zfs
synced 2025-04-27 21:27:26 +00:00
Support for cross-compiling kernel modules
In order to correctly cross-compile, one has to pass ARCH and CROSS_COMPILE make flags to kernel module build calls. Facilitate this in the same way as for custom CC flag by recognizing KERNEL_-prefixed configure environment variables of same name. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Phil Sutter <phil@nwl.cc> Closes #16924
This commit is contained in:
parent
3a445f2ef5
commit
18c67d2418
@ -681,11 +681,16 @@ AC_DEFUN([ZFS_LINUX_COMPILE], [
|
||||
building kernel modules])
|
||||
AC_ARG_VAR([KERNEL_LLVM], [Binary option to
|
||||
build kernel modules with LLVM/CLANG toolchain])
|
||||
AC_ARG_VAR([KERNEL_CROSS_COMPILE], [Cross compile prefix
|
||||
for kernel module builds])
|
||||
AC_ARG_VAR([KERNEL_ARCH], [Architecture to build kernel modules for])
|
||||
AC_TRY_COMMAND([
|
||||
KBUILD_MODPOST_NOFINAL="$5" KBUILD_MODPOST_WARN="$6"
|
||||
make modules -k -j$TEST_JOBS ${KERNEL_CC:+CC=$KERNEL_CC}
|
||||
${KERNEL_LD:+LD=$KERNEL_LD} ${KERNEL_LLVM:+LLVM=$KERNEL_LLVM}
|
||||
CONFIG_MODULES=y CFLAGS_MODULE=-DCONFIG_MODULES
|
||||
${KERNEL_CROSS_COMPILE:+CROSS_COMPILE=$KERNEL_CROSS_COMPILE}
|
||||
${KERNEL_ARCH:+ARCH=$KERNEL_ARCH}
|
||||
-C $LINUX_OBJ $ARCH_UM M=$PWD/$1 >$1/build.log 2>&1])
|
||||
AS_IF([AC_TRY_COMMAND([$2])], [$3], [$4])
|
||||
])
|
||||
|
@ -393,6 +393,8 @@ AC_DEFUN([ZFS_AC_RPM], [
|
||||
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_cc KERNEL_CC=$(KERNEL_CC)"'
|
||||
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_ld KERNEL_LD=$(KERNEL_LD)"'
|
||||
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_llvm KERNEL_LLVM=$(KERNEL_LLVM)"'
|
||||
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_cross_compile KERNEL_CROSS_COMPILE=$(KERNEL_CROSS_COMPILE)"'
|
||||
RPM_DEFINE_KMOD=${RPM_DEFINE_KMOD}' --define "kernel_arch KERNEL_ARCH=$(KERNEL_ARCH)"'
|
||||
])
|
||||
|
||||
RPM_DEFINE_DKMS=''
|
||||
|
@ -55,6 +55,8 @@ modules-Linux:
|
||||
mkdir -p $(sort $(dir $(zfs-objs) $(zfs-)))
|
||||
$(MAKE) -C @LINUX_OBJ@ $(if @KERNEL_CC@,CC=@KERNEL_CC@) \
|
||||
$(if @KERNEL_LD@,LD=@KERNEL_LD@) $(if @KERNEL_LLVM@,LLVM=@KERNEL_LLVM@) \
|
||||
$(if @KERNEL_CROSS_COMPILE@,CROSS_COMPILE=@KERNEL_CROSS_COMPILE@) \
|
||||
$(if @KERNEL_ARCH@,ARCH=@KERNEL_ARCH@) \
|
||||
M="$$PWD" @KERNEL_MAKE@ CONFIG_ZFS=m modules
|
||||
|
||||
modules-FreeBSD:
|
||||
|
@ -144,7 +144,9 @@ for kernel_version in %{?kernel_versions}; do
|
||||
%{debuginfo} \
|
||||
%{?kernel_cc} \
|
||||
%{?kernel_ld} \
|
||||
%{?kernel_llvm}
|
||||
%{?kernel_llvm} \
|
||||
%{?kernel_cross_compile} \
|
||||
%{?kernel_arch}
|
||||
|
||||
# Pre-6.10 kernel builds didn't need to copy over the source files to the
|
||||
# build directory. However we do need to do it though post-6.10 due to
|
||||
|
@ -69,7 +69,9 @@ fi
|
||||
%{debuginfo} \
|
||||
%{?kernel_cc} \
|
||||
%{?kernel_ld} \
|
||||
%{?kernel_llvm}
|
||||
%{?kernel_llvm} \
|
||||
%{?kernel_cross_compile} \
|
||||
%{?kernel_arch}
|
||||
make %{?_smp_mflags}
|
||||
|
||||
# Module signing (modsign)
|
||||
|
Loading…
Reference in New Issue
Block a user