f1ca4da6f7
in an initial reasonable autoconf style build system. This does not yet build but the configure system does appear to work properly and integrate with the kernel. Hopefully the next commit gets us back to a buildable version we can run the test suite against. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@1 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
134 lines
3.5 KiB
Plaintext
134 lines
3.5 KiB
Plaintext
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 <linux/version.h>";
|
|
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 <linux/utsrelease.h>";
|
|
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
|