AC_INIT AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE(spl, 0.0.1) AC_CONFIG_HEADERS([config.h]) AC_PROG_INSTALL AC_PROG_CC ver=`uname -r` KERNELCFLAGS= kernelsrc= kernelbuild= AC_ARG_WITH(kernel, [ --with-linux=PATH Path to kernel source ], [kernelsrc="$withval"; kernelbuild="$withval"]) AC_ARG_WITH(kernel-build, [ --with-linux-obj=PATH Path to kernel build objects ], [kernelbuild="$withval"]) AC_MSG_CHECKING([kernel source directory]) if test -z "$kernelsrc"; then 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([ *** Please specify the location of the kernel source *** with the '--with-kernel=PATH' option]) fi fi AC_MSG_RESULT([$kernelsrc]) AC_MSG_CHECKING([kernel build directory]) AC_MSG_RESULT([$kernelbuild]) AC_MSG_CHECKING([kernel source version]) if test -r $kernelbuild/include/linux/version.h && fgrep -q UTS_RELEASE $kernelbuild/include/linux/version.h; then kernsrcver=`(echo "#include "; echo "kernsrcver=UTS_RELEASE") | cpp -I $kernelbuild/include | grep "^kernsrcver=" | cut -d \" -f 2` elif test -r $kernelbuild/include/linux/utsrelease.h && fgrep -q UTS_RELEASE $kernelbuild/include/linux/utsrelease.h; then kernsrcver=`(echo "#include "; echo "kernsrcver=UTS_RELEASE") | cpp -I $kernelbuild/include | grep "^kernsrcver=" | cut -d \" -f 2` fi if test -z "$kernsrcver"; then AC_MSG_RESULT([Not found]) AC_MSG_ERROR([ *** Cannot determine the version of the linux kernel source. *** Please prepare the kernel before running this script]) fi AC_MSG_RESULT([$kernsrcver]) kmoduledir=${INSTALL_MOD_PATH}/lib/modules/$kernsrcver AC_SUBST(kernelsrc) AC_SUBST(kmoduledir) # # Each version of the kernel provides a slightly different # ABI, so figure out what we have to work with and adapt. # AC_MSG_CHECKING([if kernel defines kzalloc function]) if egrep -qw "kzalloc" $kernelsrc/include/linux/slab.h; then AC_DEFINE(HAVE_KZALLOC, 1, [kzalloc() is defined]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi AC_MSG_CHECKING([if inode has i_private field]) if egrep -qw "i_private" $kernelsrc/include/linux/fs.h; then AC_DEFINE(HAVE_I_PRIVATE, 1, [inode has i_private field]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi AC_MSG_CHECKING([if inode has i_mutex field ]) if egrep -qw "i_mutex" $kernelsrc/include/linux/fs.h; then AC_DEFINE(HAVE_I_MUTEX, 1, [inode has i_mutex field]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi AC_MSG_CHECKING([if kernel has mutex.h ]) if test -f $kernelsrc/include/linux/mutex.h; then AC_DEFINE(HAVE_MUTEX_H, 1, [kernel has mutex.h]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi 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 src/Makefile src/cmd/Makefile src/spl/Makefile src/splat/Makefile include/Makefile scripts/Makefile scripts/spl.spec ]) AC_OUTPUT