diff options
Diffstat (limited to 'config/kernel.m4')
-rw-r--r-- | config/kernel.m4 | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/config/kernel.m4 b/config/kernel.m4 new file mode 100644 index 000000000..de557a18a --- /dev/null +++ b/config/kernel.m4 @@ -0,0 +1,63 @@ +dnl # +dnl # Default ZFS kernel mode configuration +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [ + dnl # Kernel build make options + KERNELMAKE_PARAMS= + dnl #KERNELMAKE_PARAMS="V=1" # Enable verbose module build + + dnl # Kernel build cpp flags + KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL " + KERNELCPPFLAGS="$KERNELCPPFLAGS -I$splsrc -I$splsrc/include -I$TOPDIR" + + dnl # Required for pread() functionality an other GNU goodness + HOSTCFLAGS="$HOSTCFLAGS -ggdb -O2 -std=c99 " + HOSTCFLAGS="$HOSTCFLAGS -D_GNU_SOURCE -D__EXTENSIONS__ " + + dnl # XXX: Quiet warnings not covered by the gcc-* patches + dnl # XXX: Remove once all the warnings are resolved + HOSTCFLAGS="$HOSTCFLAGS -Wno-switch -Wno-unused -Wno-missing-braces " + HOSTCFLAGS="$HOSTCFLAGS -Wno-parentheses " + HOSTCFLAGS="$HOSTCFLAGS -Wno-uninitialized -fno-strict-aliasing " + + dnl # Expected defines not covered by zfs_config.h or spl_config.h + HOSTCFLAGS="$HOSTCFLAGS -DHAVE_SPL -D_POSIX_PTHREAD_SEMANTICS " + HOSTCFLAGS="$HOSTCFLAGS -D_FILE_OFFSET_BITS=64 " + HOSTCFLAGS="$HOSTCFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT " + HOSTCFLAGS="$HOSTCFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\" " + + dnl # Expected default include path + HOSTCFLAGS="$HOSTCFLAGS -I$TOPDIR " + + if test "$kernelbuild" != "$kernelsrc"; then + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$kernelbuild" + fi + + AC_SUBST(KERNELMAKE_PARAMS) + AC_SUBST(KERNELCPPFLAGS) + AC_SUBST(HOSTCFLAGS) + + dnl # XXX: I really, really hate this... but to ensure the kernel + dnl # build system compiles C files shared between a library and a + dnl # kernel module, we need to ensure each file has a unique make + dnl # target. To do that I'm creating symlinks for each shared + dnl # file at configure time. It may be possible something better + dnl # can be done in the Makefile but it will take some serious + dnl # investigation and I don't have the time now. + + echo "Creating symlinks for additional make targets" + ln -f -s $LIBDIR/libport/u8_textprep.c $LIBDIR/libport/ku8_textprep.c + ln -f -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/kavl.c + ln -f -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/uavl.c + ln -f -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/knvpair.c + ln -f -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/unvpair.c + ln -f -s $LIBDIR/libzcommon/zfs_deleg.c $LIBDIR/libzcommon/kzfs_deleg.c + ln -f -s $LIBDIR/libzcommon/zfs_prop.c $LIBDIR/libzcommon/kzfs_prop.c + ln -f -s $LIBDIR/libzcommon/zprop_common.c $LIBDIR/libzcommon/kzprop_common.c + ln -f -s $LIBDIR/libzcommon/compress.c $LIBDIR/libzcommon/kcompress.c + ln -f -s $LIBDIR/libzcommon/list.c $LIBDIR/libzcommon/klist.c + ln -f -s $LIBDIR/libzcommon/zfs_namecheck.c $LIBDIR/libzcommon/kzfs_namecheck.c + ln -f -s $LIBDIR/libzcommon/zfs_comutil.c $LIBDIR/libzcommon/kzfs_comutil.c + ln -f -s $LIBDIR/libzcommon/zpool_prop.c $LIBDIR/libzcommon/kzpool_prop.c + ] +) |