Cleanly support debug packages
[zfs.git] / config / zfs-build.m4
index 773a944..823f332 100644 (file)
@@ -20,19 +20,27 @@ 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_ALWAYS], [
+       ZFS_AC_CONFIG_ALWAYS_NO_UNUSED_BUT_SET_VARIABLE
+])
+
 AC_DEFUN([ZFS_AC_CONFIG], [
        TARGET_ASM_DIR=asm-generic
        AC_SUBST(TARGET_ASM_DIR)
@@ -47,6 +55,8 @@ AC_DEFUN([ZFS_AC_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   ;;
@@ -169,6 +179,48 @@ AC_DEFUN([ZFS_AC_ALIEN], [
 ])
 
 dnl #
+dnl # Check for pacman+makepkg to build Arch Linux packages.  If these
+dnl # tools are missing it is non-fatal but you will not be able to
+dnl # build Arch Linux packages and will be warned if you try too.
+dnl #
+AC_DEFUN([ZFS_AC_PACMAN], [
+       PACMAN=pacman
+       MAKEPKG=makepkg
+
+       AC_MSG_CHECKING([whether $PACMAN is available])
+       tmp=$($PACMAN --version 2>/dev/null)
+       AS_IF([test -n "$tmp"], [
+               PACMAN_VERSION=$(echo $tmp |
+                                $AWK '/Pacman/ { print $[3] }' |
+                                $SED 's/^v//')
+               HAVE_PACMAN=yes
+               AC_MSG_RESULT([$HAVE_PACMAN ($PACMAN_VERSION)])
+       ],[
+               HAVE_PACMAN=no
+               AC_MSG_RESULT([$HAVE_PACMAN])
+       ])
+
+       AC_MSG_CHECKING([whether $MAKEPKG is available])
+       tmp=$($MAKEPKG --version 2>/dev/null)
+       AS_IF([test -n "$tmp"], [
+               MAKEPKG_VERSION=$(echo $tmp | $AWK '/makepkg/ { print $[3] }')
+               HAVE_MAKEPKG=yes
+               AC_MSG_RESULT([$HAVE_MAKEPKG ($MAKEPKG_VERSION)])
+       ],[
+               HAVE_MAKEPKG=no
+               AC_MSG_RESULT([$HAVE_MAKEPKG])
+       ])
+
+       AC_SUBST(HAVE_PACMAN)
+       AC_SUBST(PACMAN)
+       AC_SUBST(PACMAN_VERSION)
+
+       AC_SUBST(HAVE_MAKEPKG)
+       AC_SUBST(MAKEPKG)
+       AC_SUBST(MAKEPKG_VERSION)
+])
+
+dnl #
 dnl # Using the VENDOR tag from config.guess set the default
 dnl # package type for 'make pkg': (rpm | deb | tgz)
 dnl #
@@ -186,6 +238,8 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
                VENDOR=sles ;
        elif test -f /etc/slackware-version ; then
                VENDOR=slackware ;
+       elif test -f /etc/arch-release ; then
+               VENDOR=arch ;
        elif test -f /etc/lsb-release ; then
                VENDOR=ubuntu ;
        elif test -f /etc/lunar.release ; then
@@ -206,12 +260,22 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
                slackware)  DEFAULT_PACKAGE=tgz ;;
                gentoo)     DEFAULT_PACKAGE=tgz ;;
                lunar)      DEFAULT_PACKAGE=tgz ;;
+               arch)       DEFAULT_PACKAGE=arch;;
                *)          DEFAULT_PACKAGE=rpm ;;
        esac
 
        AC_MSG_RESULT([$DEFAULT_PACKAGE])
        AC_SUBST(DEFAULT_PACKAGE)
 
+       AC_MSG_CHECKING([default init directory])
+       case "$VENDOR" in
+               arch)       DEFAULT_INIT_DIR=$sysconfdir/rc.d ;;
+               *)          DEFAULT_INIT_DIR=$sysconfdir/init.d ;;
+       esac
+
+       AC_MSG_RESULT([$DEFAULT_INIT_DIR])
+       AC_SUBST(DEFAULT_INIT_DIR)
+
        AC_MSG_CHECKING([default init script type])
        case "$VENDOR" in
                redhat)     DEFAULT_INIT_SCRIPT=redhat ;;
@@ -222,6 +286,7 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
                slackware)  DEFAULT_INIT_SCRIPT=lsb ;;
                gentoo)     DEFAULT_INIT_SCRIPT=gentoo ;;
                lunar)      DEFAULT_INIT_SCRIPT=lunar ;;
+               arch)       DEFAULT_INIT_SCRIPT=arch ;;
                *)          DEFAULT_INIT_SCRIPT=lsb ;;
        esac
 
@@ -233,8 +298,10 @@ 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
+
+       AS_IF([test "$VENDOR" = "arch"], [ZFS_AC_PACMAN])
 ])