Make everything a M4 macro, it's just cleaner that way
[zfs.git] / config / kernel.m4
1 dnl #
2 dnl # Default ZFS kernel mode configuration 
3 dnl #
4 AC_DEFUN([ZFS_AC_KERNEL_CONFIG], [
5         dnl # Kernel build make options
6         KERNELMAKE_PARAMS=
7         dnl #KERNELMAKE_PARAMS="V=1"    # Enable verbose module build
8
9         dnl # Kernel build cpp flags
10         KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL "
11         KERNELCPPFLAGS="$KERNELCPPFLAGS -I$splsrc -I$splsrc/include -I$TOPDIR"
12
13         dnl # Required for pread() functionality an other GNU goodness
14         HOSTCFLAGS="$HOSTCFLAGS -ggdb -O2 -std=c99 "
15         HOSTCFLAGS="$HOSTCFLAGS -D_GNU_SOURCE -D__EXTENSIONS__ "
16
17         dnl # XXX: Quiet warnings not covered by the gcc-* patches
18         dnl # XXX: Remove once all the warnings are resolved
19         HOSTCFLAGS="$HOSTCFLAGS -Wno-switch -Wno-unused -Wno-missing-braces "
20         HOSTCFLAGS="$HOSTCFLAGS -Wno-parentheses "
21         HOSTCFLAGS="$HOSTCFLAGS -Wno-uninitialized -fno-strict-aliasing "
22
23         dnl # Expected defines not covered by zfs_config.h or spl_config.h
24         HOSTCFLAGS="$HOSTCFLAGS -DHAVE_SPL -D_POSIX_PTHREAD_SEMANTICS "
25         HOSTCFLAGS="$HOSTCFLAGS -D_FILE_OFFSET_BITS=64 "
26         HOSTCFLAGS="$HOSTCFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT "
27         HOSTCFLAGS="$HOSTCFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\" "
28
29         dnl # Expected default include path
30         HOSTCFLAGS="$HOSTCFLAGS -I$TOPDIR "
31
32         if test "$kernelbuild" != "$kernelsrc"; then
33                 KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$kernelbuild"
34         fi
35
36         AC_SUBST(KERNELMAKE_PARAMS)
37         AC_SUBST(KERNELCPPFLAGS)
38         AC_SUBST(HOSTCFLAGS)
39
40         dnl # XXX: I really, really hate this...  but to ensure the kernel
41         dnl # build system compiles C files shared between a library and a 
42         dnl # kernel module, we need to ensure each file has a unique make
43         dnl # target.  To do that I'm creating symlinks for each shared
44         dnl # file at configure time.  It may be possible something better
45         dnl # can be done in the Makefile but it will take some serious
46         dnl # investigation and I don't have the time now.
47
48         echo "Creating symlinks for additional make targets"
49         ln -f -s $LIBDIR/libport/u8_textprep.c      $LIBDIR/libport/ku8_textprep.c
50         ln -f -s $LIBDIR/libavl/avl.c               $LIBDIR/libavl/kavl.c
51         ln -f -s $LIBDIR/libavl/avl.c               $LIBDIR/libavl/uavl.c
52         ln -f -s $LIBDIR/libnvpair/nvpair.c         $LIBDIR/libnvpair/knvpair.c
53         ln -f -s $LIBDIR/libnvpair/nvpair.c         $LIBDIR/libnvpair/unvpair.c
54         ln -f -s $LIBDIR/libzcommon/zfs_deleg.c     $LIBDIR/libzcommon/kzfs_deleg.c
55         ln -f -s $LIBDIR/libzcommon/zfs_prop.c      $LIBDIR/libzcommon/kzfs_prop.c
56         ln -f -s $LIBDIR/libzcommon/zprop_common.c  $LIBDIR/libzcommon/kzprop_common.c
57         ln -f -s $LIBDIR/libzcommon/compress.c      $LIBDIR/libzcommon/kcompress.c
58         ln -f -s $LIBDIR/libzcommon/list.c          $LIBDIR/libzcommon/klist.c
59         ln -f -s $LIBDIR/libzcommon/zfs_namecheck.c $LIBDIR/libzcommon/kzfs_namecheck.c
60         ln -f -s $LIBDIR/libzcommon/zfs_comutil.c   $LIBDIR/libzcommon/kzfs_comutil.c
61         ln -f -s $LIBDIR/libzcommon/zpool_prop.c    $LIBDIR/libzcommon/kzpool_prop.c
62         ]
63 )