2008-05-26 04:38:26 +00:00
|
|
|
/*
|
|
|
|
* This file is part of the SPL: Solaris Porting Layer.
|
|
|
|
*
|
|
|
|
* Copyright (c) 2008 Lawrence Livermore National Security, LLC.
|
|
|
|
* Produced at Lawrence Livermore National Laboratory
|
|
|
|
* Written by:
|
|
|
|
* Brian Behlendorf <behlendorf1@llnl.gov>,
|
|
|
|
* Herb Wartens <wartens2@llnl.gov>,
|
|
|
|
* Jim Garlick <garlick@llnl.gov>
|
|
|
|
* UCRL-CODE-235197
|
|
|
|
*
|
|
|
|
* This is free software; you can redistribute it and/or modify it
|
|
|
|
* under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
|
* for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2008-02-26 20:36:04 +00:00
|
|
|
AC_INIT
|
|
|
|
|
|
|
|
AC_CANONICAL_SYSTEM
|
2008-05-26 05:01:15 +00:00
|
|
|
AM_INIT_AUTOMAKE(spl, 0.3.1)
|
2008-03-01 00:45:59 +00:00
|
|
|
AC_CONFIG_HEADERS([config.h])
|
2008-02-26 20:36:04 +00:00
|
|
|
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PROG_CC
|
2008-02-26 23:20:41 +00:00
|
|
|
AC_PROG_LIBTOOL
|
2008-02-26 20:36:04 +00:00
|
|
|
|
|
|
|
kernelsrc=
|
|
|
|
kernelbuild=
|
2008-05-19 02:49:12 +00:00
|
|
|
|
|
|
|
AC_DEFUN([SPL_AC_KERNEL], [
|
|
|
|
ver=`uname -r`
|
|
|
|
|
|
|
|
AC_ARG_WITH([linux],
|
|
|
|
AS_HELP_STRING([--with-linux=PATH],
|
|
|
|
[Path to kernel source]),
|
|
|
|
[kernelsrc="$withval"; kernelbuild="$withval"])
|
|
|
|
|
2008-05-21 21:11:47 +00:00
|
|
|
AC_ARG_WITH([linux-obj],
|
2008-05-19 02:49:12 +00:00
|
|
|
AS_HELP_STRING([--with-linux-obj=PATH],
|
|
|
|
[Path to kernel build objects]),
|
|
|
|
[kernelbuild="$withval"])
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([kernel source directory])
|
2008-02-26 20:36:04 +00:00
|
|
|
if test -z "$kernelsrc"; then
|
2008-05-19 02:49:12 +00:00
|
|
|
kernelbuild=
|
|
|
|
sourcelink=/lib/modules/${ver}/source
|
|
|
|
buildlink=/lib/modules/${ver}/build
|
|
|
|
|
|
|
|
if test -e $sourcelink; then
|
|
|
|
kernelsrc=`(cd $sourcelink; /bin/pwd)`
|
|
|
|
fi
|
|
|
|
if test -e $buildlink; then
|
|
|
|
kernelbuild=`(cd $buildlink; /bin/pwd)`
|
|
|
|
fi
|
|
|
|
if test -z "$kernelsrc"; then
|
|
|
|
kernelsrc=$kernelbuild
|
|
|
|
fi
|
|
|
|
if test -z "$kernelsrc" -o -z "$kernelbuild"; then
|
|
|
|
AC_MSG_RESULT([Not found])
|
|
|
|
AC_MSG_ERROR([
|
2008-02-26 20:36:04 +00:00
|
|
|
*** Please specify the location of the kernel source
|
|
|
|
*** with the '--with-kernel=PATH' option])
|
2008-05-19 02:49:12 +00:00
|
|
|
fi
|
2008-02-26 20:36:04 +00:00
|
|
|
fi
|
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
AC_MSG_RESULT([$kernelsrc])
|
|
|
|
AC_MSG_CHECKING([kernel build directory])
|
|
|
|
AC_MSG_RESULT([$kernelbuild])
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
AC_MSG_CHECKING([kernel source version])
|
|
|
|
if test -r $kernelbuild/include/linux/version.h &&
|
|
|
|
fgrep -q UTS_RELEASE $kernelbuild/include/linux/version.h; then
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
kernsrcver=`(echo "#include <linux/version.h>";
|
|
|
|
echo "kernsrcver=UTS_RELEASE") |
|
|
|
|
cpp -I $kernelbuild/include |
|
|
|
|
grep "^kernsrcver=" | cut -d \" -f 2`
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
elif test -r $kernelbuild/include/linux/utsrelease.h &&
|
|
|
|
fgrep -q UTS_RELEASE $kernelbuild/include/linux/utsrelease.h; then
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
kernsrcver=`(echo "#include <linux/utsrelease.h>";
|
|
|
|
echo "kernsrcver=UTS_RELEASE") |
|
|
|
|
cpp -I $kernelbuild/include |
|
|
|
|
grep "^kernsrcver=" | cut -d \" -f 2`
|
|
|
|
fi
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
if test -z "$kernsrcver"; then
|
|
|
|
AC_MSG_RESULT([Not found])
|
|
|
|
AC_MSG_ERROR([
|
2008-02-26 20:36:04 +00:00
|
|
|
*** Cannot determine the version of the linux kernel source.
|
|
|
|
*** Please prepare the kernel before running this script])
|
2008-05-19 02:49:12 +00:00
|
|
|
fi
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
AC_MSG_RESULT([$kernsrcver])
|
|
|
|
kmoduledir=${INSTALL_MOD_PATH}/lib/modules/$kernsrcver
|
|
|
|
AC_SUBST(kernelsrc)
|
|
|
|
AC_SUBST(kmoduledir)
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([SPL_AC_DEBUG], [
|
|
|
|
AC_MSG_CHECKING([whether debugging is enabled])
|
|
|
|
AC_ARG_ENABLE( [debug],
|
|
|
|
AS_HELP_STRING([--enable-debug],
|
|
|
|
[Enable generic debug support (default off)]),
|
|
|
|
[ case "$enableval" in
|
|
|
|
yes) spl_ac_debug=yes ;;
|
|
|
|
no) spl_ac_debug=no ;;
|
|
|
|
*) AC_MSG_RESULT([Error!])
|
|
|
|
AC_MSG_ERROR([Bad value "$enableval" for --enable-debug]) ;;
|
|
|
|
esac ]
|
|
|
|
)
|
|
|
|
if test "$spl_ac_debug" = yes; then
|
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG"
|
|
|
|
else
|
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG"
|
|
|
|
AC_DEFINE([NDEBUG], [1],
|
|
|
|
[Define to 1 to disable debug tracing])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT([${spl_ac_debug=no}])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([SPL_AC_DEBUG_KMEM], [
|
|
|
|
AC_MSG_CHECKING([whether kmem debugging is enabled])
|
|
|
|
AC_ARG_ENABLE( [debug-kmem],
|
|
|
|
AS_HELP_STRING([--enable-debug-kmem],
|
|
|
|
[Enable kmem debug support (default off)]),
|
|
|
|
[ case "$enableval" in
|
|
|
|
yes) spl_ac_debug=yes ;;
|
|
|
|
no) spl_ac_debug=no ;;
|
|
|
|
*) AC_MSG_RESULT([Error!])
|
|
|
|
AC_MSG_ERROR([Bad value "$enableval" for --enable-debug-kmem]) ;;
|
|
|
|
esac ]
|
|
|
|
)
|
|
|
|
if test "$spl_ac_debug" = yes; then
|
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KMEM"
|
|
|
|
AC_DEFINE([DEBUG_KMEM], [1],
|
|
|
|
[Define to 1 to enable kmem debugging])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT([${spl_ac_debug=no}])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([SPL_AC_DEBUG_MUTEX], [
|
|
|
|
AC_MSG_CHECKING([whether mutex debugging is enabled])
|
|
|
|
AC_ARG_ENABLE( [debug-mutex],
|
|
|
|
AS_HELP_STRING([--enable-debug-mutex],
|
|
|
|
[Enable mutex debug support (default off)]),
|
|
|
|
[ case "$enableval" in
|
|
|
|
yes) spl_ac_debug=yes ;;
|
|
|
|
no) spl_ac_debug=no ;;
|
|
|
|
*) AC_MSG_RESULT([Error!])
|
|
|
|
AC_MSG_ERROR([Bad value "$enableval" for --enable-debug-mutex]) ;;
|
|
|
|
esac ]
|
|
|
|
)
|
|
|
|
if test "$spl_ac_debug" = yes; then
|
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_MUTEX"
|
|
|
|
AC_DEFINE([DEBUG_MUTEX], [1],
|
|
|
|
[Define to 1 to enable mutex debugging])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT([${spl_ac_debug=no}])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([SPL_AC_DEBUG_KSTAT], [
|
|
|
|
AC_MSG_CHECKING([whether kstat debugging is enabled])
|
|
|
|
AC_ARG_ENABLE( [debug-kstat],
|
|
|
|
AS_HELP_STRING([--enable-debug-kstat],
|
|
|
|
[Enable kstat debug support (default off)]),
|
|
|
|
[ case "$enableval" in
|
|
|
|
yes) spl_ac_debug=yes ;;
|
|
|
|
no) spl_ac_debug=no ;;
|
|
|
|
*) AC_MSG_RESULT([Error!])
|
|
|
|
AC_MSG_ERROR([Bad value "$enableval" for --enable-debug-kstat]) ;;
|
|
|
|
esac ]
|
|
|
|
)
|
|
|
|
if test "$spl_ac_debug" = yes; then
|
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_KSTAT"
|
|
|
|
AC_DEFINE([DEBUG_KSTAT], [1],
|
|
|
|
[Define to 1 to enable kstat debugging])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT([${spl_ac_debug=no}])
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_DEFUN([SPL_AC_DEBUG_CALLB], [
|
|
|
|
AC_MSG_CHECKING([whether callb debugging is enabled])
|
|
|
|
AC_ARG_ENABLE( [debug-callb],
|
|
|
|
AS_HELP_STRING([--enable-debug-callb],
|
|
|
|
[Enable callb debug support (default off)]),
|
|
|
|
[ case "$enableval" in
|
|
|
|
yes) spl_ac_debug=yes ;;
|
|
|
|
no) spl_ac_debug=no ;;
|
|
|
|
*) AC_MSG_RESULT([Error!])
|
|
|
|
AC_MSG_ERROR([Bad value "$enableval" for --enable-debug-callb]) ;;
|
|
|
|
esac ]
|
|
|
|
)
|
|
|
|
if test "$spl_ac_debug" = yes; then
|
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG_CALLB"
|
|
|
|
AC_DEFINE([DEBUG_CALLB], [1],
|
|
|
|
[Define to 1 to enable callb debugging])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT([${spl_ac_debug=no}])
|
|
|
|
])
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-05-19 02:49:12 +00:00
|
|
|
SPL_AC_KERNEL
|
|
|
|
SPL_AC_DEBUG
|
|
|
|
SPL_AC_DEBUG_KMEM
|
|
|
|
SPL_AC_DEBUG_MUTEX
|
|
|
|
SPL_AC_DEBUG_KSTAT
|
|
|
|
SPL_AC_DEBUG_CALLB
|
2008-02-26 20:36:04 +00:00
|
|
|
|
2008-03-01 00:51:41 +00:00
|
|
|
TOPDIR=`/bin/pwd`
|
|
|
|
|
2008-02-27 00:59:48 +00:00
|
|
|
# Add "V=1" to KERNELMAKE_PARAMS to enable verbose module build
|
|
|
|
KERNELMAKE_PARAMS=
|
2008-05-19 02:49:12 +00:00
|
|
|
KERNELCPPFLAGS="${KERNELCPPFLAGS} -I$TOPDIR -I$TOPDIR/include"
|
2008-02-27 00:59:48 +00:00
|
|
|
|
2008-02-26 20:36:04 +00:00
|
|
|
if test "$kernelbuild" != "$kernelsrc"; then
|
|
|
|
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$kernelbuild"
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_SUBST(KERNELMAKE_PARAMS)
|
|
|
|
AC_SUBST(KERNELCPPFLAGS)
|
|
|
|
AC_SUBST(KERNELCFLAGS)
|
|
|
|
|
|
|
|
AC_CONFIG_FILES([ Makefile
|
2008-02-27 20:52:44 +00:00
|
|
|
lib/Makefile
|
|
|
|
cmd/Makefile
|
|
|
|
modules/Makefile
|
|
|
|
modules/spl/Makefile
|
|
|
|
modules/splat/Makefile
|
2008-02-26 20:36:04 +00:00
|
|
|
include/Makefile
|
2008-03-01 00:45:59 +00:00
|
|
|
include/sys/Makefile
|
2008-02-26 20:36:04 +00:00
|
|
|
scripts/Makefile
|
|
|
|
scripts/spl.spec
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_OUTPUT
|