Use taskq for dump_bytes()
[zfs.git] / config / zfs-build.m4
index fbaffca..005185b 100644 (file)
@@ -20,103 +20,52 @@ AC_DEFUN([ZFS_AC_DEBUG], [
                HOSTCFLAGS="${HOSTCFLAGS} -DDEBUG -Werror"
                DEBUG_CFLAGS="-DDEBUG -Werror"
                DEBUG_STACKFLAGS="-fstack-check"
+               DEBUG_ZFS="_with_debug"
+               AC_DEFINE(ZFS_DEBUG, 1, [zfs debugging enabled])
        ],
        [
                KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG "
                HOSTCFLAGS="${HOSTCFLAGS} -DNDEBUG "
                DEBUG_CFLAGS="-DNDEBUG"
                DEBUG_STACKFLAGS=""
+               DEBUG_ZFS="_without_debug"
        ])
 
        AC_SUBST(DEBUG_CFLAGS)
        AC_SUBST(DEBUG_STACKFLAGS)
+       AC_SUBST(DEBUG_ZFS)
        AC_MSG_RESULT([$enable_debug])
 ])
 
-AC_DEFUN([ZFS_AC_CONFIG_SCRIPT], [
-       cat >.script-config <<EOF
-KERNELSRC=${LINUX}
-KERNELBUILD=${LINUX_OBJ}
-KERNELSRCVER=${LINUX_VERSION}
-KERNELMOD=/lib/modules/\${KERNELSRCVER}/kernel
-
-SPLSRC=${SPL}
-SPLBUILD=${SPL_OBJ}
-SPLSRCVER=${SPL_VERSION}
-
-TOPDIR=${TOPDIR}
-BUILDDIR=${BUILDDIR}
-LIBDIR=${LIBDIR}
-CMDDIR=${CMDDIR}
-MODDIR=${MODDIR}
-SCRIPTDIR=${SCRIPTDIR}
-ETCDIR=\${TOPDIR}/etc
-DEVDIR=\${TOPDIR}/dev
-ZPOOLDIR=\${TOPDIR}/scripts/zpool-config
-ZPIOSDIR=\${TOPDIR}/scripts/zpios-test
-ZPIOSPROFILEDIR=\${TOPDIR}/scripts/zpios-profile
-
-ZDB=\${CMDDIR}/zdb/zdb
-ZFS=\${CMDDIR}/zfs/zfs
-ZINJECT=\${CMDDIR}/zinject/zinject
-ZPOOL=\${CMDDIR}/zpool/zpool
-ZPOOL_ID=\${CMDDIR}/zpool_id/zpool_id
-ZTEST=\${CMDDIR}/ztest/ztest
-ZPIOS=\${CMDDIR}/zpios/zpios
-
-COMMON_SH=\${SCRIPTDIR}/common.sh
-ZFS_SH=\${SCRIPTDIR}/zfs.sh
-ZPOOL_CREATE_SH=\${SCRIPTDIR}/zpool-create.sh
-ZPIOS_SH=\${SCRIPTDIR}/zpios.sh
-ZPIOS_SURVEY_SH=\${SCRIPTDIR}/zpios-survey.sh
-
-INTREE=1
-LDMOD=/sbin/insmod
-
-KERNEL_MODULES=(                                      \\
-        \${KERNELMOD}/lib/zlib_deflate/zlib_deflate.ko \\
-)
-
-SPL_MODULES=(                                         \\
-        \${SPLBUILD}/spl/spl.ko                        \\
-        \${SPLBUILD}/splat/splat.ko                    \\
-)
-
-ZFS_MODULES=(                                         \\
-        \${MODDIR}/avl/zavl.ko                         \\
-        \${MODDIR}/nvpair/znvpair.ko                   \\
-        \${MODDIR}/unicode/zunicode.ko                 \\
-        \${MODDIR}/zcommon/zcommon.ko                  \\
-        \${MODDIR}/zfs/zfs.ko                          \\
-)
-
-ZPIOS_MODULES=(                                       \\
-        \${MODDIR}/zpios/zpios.ko                      \\
-)
-
-MODULES=(                                             \\
-        \${KERNEL_MODULES[[*]]}                          \\
-        \${SPL_MODULES[[*]]}                             \\
-        \${ZFS_MODULES[[*]]}                             \\
-)
-EOF
+AC_DEFUN([ZFS_AC_DEBUG_DMU_TX], [
+       AC_ARG_ENABLE([debug-dmu-tx],
+               [AS_HELP_STRING([--enable-debug-dmu-tx],
+               [Enable dmu tx validation @<:@default=no@:>@])],
+               [],
+               [enable_debug_dmu_tx=no])
+
+       AS_IF([test "x$enable_debug_dmu_tx" = xyes],
+       [
+               KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_DMU_TX"
+               DEBUG_DMU_TX="_with_debug_dmu_tx"
+               AC_DEFINE([DEBUG_DMU_TX], [1],
+               [Define to 1 to enabled dmu tx validation])
+       ],
+       [
+               DEBUG_DMU_TX="_without_debug_dmu_tx"
+       ])
+
+       AC_SUBST(DEBUG_DMU_TX)
+       AC_MSG_CHECKING([whether dmu tx validation is enabled])
+       AC_MSG_RESULT([$enable_debug_dmu_tx])
+])
+
+AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
+       ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE
 ])
 
 AC_DEFUN([ZFS_AC_CONFIG], [
-       TOPDIR=`readlink -f ${srcdir}`
-       BUILDDIR=$TOPDIR
-       LIBDIR=$TOPDIR/lib
-       CMDDIR=$TOPDIR/cmd
-       MODDIR=$TOPDIR/module
-       SCRIPTDIR=$TOPDIR/scripts
        TARGET_ASM_DIR=asm-generic
-
-       AC_SUBST(TOPDIR)
-       AC_SUBST(BUILDDIR)
-       AC_SUBST(LIBDIR)
-       AC_SUBST(CMDDIR)
-       AC_SUBST(MODDIR)
-       AC_SUBST(SCRIPTDIR)
        AC_SUBST(TARGET_ASM_DIR)
 
        ZFS_CONFIG=all
@@ -124,11 +73,18 @@ AC_DEFUN([ZFS_AC_CONFIG], [
                AS_HELP_STRING([--with-config=CONFIG],
                [Config file 'kernel|user|all|srpm']),
                [ZFS_CONFIG="$withval"])
+       AC_ARG_ENABLE([linux-builtin],
+               [AC_HELP_STRING([--enable-linux-builtin],
+               [Configure for builtin in-tree kernel modules @<:@default=no@:>@])],
+               [],
+               [enable_linux_builtin=no])
 
        AC_MSG_CHECKING([zfs config])
        AC_MSG_RESULT([$ZFS_CONFIG]);
        AC_SUBST(ZFS_CONFIG)
 
+       ZFS_AC_CONFIG_ALWAYS
+
        case "$ZFS_CONFIG" in
                kernel) ZFS_AC_CONFIG_KERNEL ;;
                user)   ZFS_AC_CONFIG_USER   ;;
@@ -142,13 +98,10 @@ AC_DEFUN([ZFS_AC_CONFIG], [
        esac
 
        AM_CONDITIONAL([CONFIG_USER],
-                      [test "$ZFS_CONFIG" = user] ||
-                      [test "$ZFS_CONFIG" = all])
+                      [test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all])
        AM_CONDITIONAL([CONFIG_KERNEL],
-                      [test "$ZFS_CONFIG" = kernel] ||
-                      [test "$ZFS_CONFIG" = all])
-
-       ZFS_AC_CONFIG_SCRIPT
+                      [test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] &&
+                      [test "x$enable_linux_builtin" != xyes ])
 ])
 
 dnl #
@@ -156,6 +109,11 @@ dnl # Check for rpm+rpmbuild to build RPM packages.  If these tools
 dnl # are missing it is non-fatal but you will not be able to build
 dnl # RPM packages and will be warned if you try too.
 dnl #
+dnl # By default the generic spec file will be used because it requires
+dnl # minimal dependencies.  Distribution specific spec files can be
+dnl # placed under the 'rpm/<distribution>' directory and enabled using
+dnl # the --with-spec=<distribution> configure option.
+dnl #
 AC_DEFUN([ZFS_AC_RPM], [
        RPM=rpm
        RPMBUILD=rpmbuild
@@ -180,6 +138,25 @@ AC_DEFUN([ZFS_AC_RPM], [
                AC_MSG_RESULT([$HAVE_RPMBUILD])
        ])
 
+       RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1" --define "$(DEBUG_DMU_TX) 1"'
+       RPM_DEFINE_UTIL=
+       RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"'
+       RPM_DEFINE_DKMS=
+
+       SRPM_DEFINE_COMMON='--define "build_src_rpm 1"'
+       SRPM_DEFINE_UTIL=
+       SRPM_DEFINE_KMOD=
+       SRPM_DEFINE_DKMS=
+
+       RPM_SPEC_DIR="rpm/generic"
+       AC_ARG_WITH([spec],
+               AS_HELP_STRING([--with-spec=SPEC],
+               [Spec files 'generic|fedora']),
+               [RPM_SPEC_DIR="rpm/$withval"])
+
+       AC_MSG_CHECKING([whether spec files are available])
+       AC_MSG_RESULT([yes ($RPM_SPEC_DIR/*.spec.in)])
+
        AC_SUBST(HAVE_RPM)
        AC_SUBST(RPM)
        AC_SUBST(RPM_VERSION)
@@ -187,6 +164,16 @@ AC_DEFUN([ZFS_AC_RPM], [
        AC_SUBST(HAVE_RPMBUILD)
        AC_SUBST(RPMBUILD)
        AC_SUBST(RPMBUILD_VERSION)
+
+       AC_SUBST(RPM_SPEC_DIR)
+       AC_SUBST(RPM_DEFINE_UTIL)
+       AC_SUBST(RPM_DEFINE_KMOD)
+       AC_SUBST(RPM_DEFINE_DKMS)
+       AC_SUBST(RPM_DEFINE_COMMON)
+       AC_SUBST(SRPM_DEFINE_UTIL)
+       AC_SUBST(SRPM_DEFINE_KMOD)
+       AC_SUBST(SRPM_DEFINE_DKMS)
+       AC_SUBST(SRPM_DEFINE_COMMON)
 ])
 
 dnl #
@@ -258,20 +245,26 @@ dnl # package type for 'make pkg': (rpm | deb | tgz)
 dnl #
 AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
        AC_MSG_CHECKING([linux distribution])
-       if test -f /etc/redhat-release ; then
-               VENDOR=redhat ;
+       if test -f /etc/toss-release ; then
+               VENDOR=toss ;
        elif test -f /etc/fedora-release ; then
                VENDOR=fedora ;
-       elif test -f /etc/debian_version ; then
-               VENDOR=debian ;
-       elif test -f /etc/lsb-release ; then
-               VENDOR=ubuntu ;
+       elif test -f /etc/redhat-release ; then
+               VENDOR=redhat ;
+       elif test -f /etc/gentoo-release ; then
+               VENDOR=gentoo ;
+       elif test -f /etc/arch-release ; then
+               VENDOR=arch ;
        elif test -f /etc/SuSE-release ; then
                VENDOR=sles ;
        elif test -f /etc/slackware-version ; then
                VENDOR=slackware ;
-       elif test -f /etc/gentoo-release ; then
-               VENDOR=gentoo ;
+       elif test -f /etc/lunar.release ; then
+               VENDOR=lunar ;
+       elif test -f /etc/lsb-release ; then
+               VENDOR=ubuntu ;
+       elif test -f /etc/debian_version ; then
+               VENDOR=debian ;
        else
                VENDOR= ;
        fi
@@ -280,25 +273,52 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
 
        AC_MSG_CHECKING([default package type])
        case "$VENDOR" in
-               fedora)     DEFAULT_PACKAGE=rpm ;;
-               redhat)     DEFAULT_PACKAGE=rpm ;;
-               sles)       DEFAULT_PACKAGE=rpm ;;
-               ubuntu)     DEFAULT_PACKAGE=deb ;;
-               debian)     DEFAULT_PACKAGE=deb ;;
-               slackware)  DEFAULT_PACKAGE=tgz ;;
-               *)          DEFAULT_PACKAGE=rpm ;;
+               toss)       DEFAULT_PACKAGE=rpm  ;;
+               redhat)     DEFAULT_PACKAGE=rpm  ;;
+               fedora)     DEFAULT_PACKAGE=rpm  ;;
+               gentoo)     DEFAULT_PACKAGE=tgz  ;;
+               arch)       DEFAULT_PACKAGE=tgz  ;;
+               sles)       DEFAULT_PACKAGE=rpm  ;;
+               slackware)  DEFAULT_PACKAGE=tgz  ;;
+               lunar)      DEFAULT_PACKAGE=tgz  ;;
+               ubuntu)     DEFAULT_PACKAGE=deb  ;;
+               debian)     DEFAULT_PACKAGE=deb  ;;
+               *)          DEFAULT_PACKAGE=rpm  ;;
        esac
 
        AC_MSG_RESULT([$DEFAULT_PACKAGE])
        AC_SUBST(DEFAULT_PACKAGE)
+
+       DEFAULT_INIT_DIR=$sysconfdir/init.d
+       AC_MSG_CHECKING([default init directory])
+       AC_MSG_RESULT([$DEFAULT_INIT_DIR])
+       AC_SUBST(DEFAULT_INIT_DIR)
+
+       AC_MSG_CHECKING([default init script type])
+       case "$VENDOR" in
+               toss)       DEFAULT_INIT_SCRIPT=redhat ;;
+               redhat)     DEFAULT_INIT_SCRIPT=redhat ;;
+               fedora)     DEFAULT_INIT_SCRIPT=fedora ;;
+               gentoo)     DEFAULT_INIT_SCRIPT=gentoo ;;
+               arch)       DEFAULT_INIT_SCRIPT=lsb    ;;
+               sles)       DEFAULT_INIT_SCRIPT=lsb    ;;
+               slackware)  DEFAULT_INIT_SCRIPT=lsb    ;;
+               lunar)      DEFAULT_INIT_SCRIPT=lunar  ;;
+               ubuntu)     DEFAULT_INIT_SCRIPT=lsb    ;;
+               debian)     DEFAULT_INIT_SCRIPT=lsb    ;;
+               *)          DEFAULT_INIT_SCRIPT=lsb    ;;
+       esac
+
+       AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT])
+       AC_SUBST(DEFAULT_INIT_SCRIPT)
 ])
 
 dnl #
 dnl # Default ZFS package configuration
 dnl #
 AC_DEFUN([ZFS_AC_PACKAGE], [
+       ZFS_AC_DEFAULT_PACKAGE
        ZFS_AC_RPM
        ZFS_AC_DPKG
        ZFS_AC_ALIEN
-       ZFS_AC_DEFAULT_PACKAGE
 ])