summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorbehlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>2008-02-26 20:36:04 +0000
committerbehlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>2008-02-26 20:36:04 +0000
commitf1ca4da6f79730bad6d0ad75db567881c96a5e51 (patch)
treed92a49c708a3bfc2511094b689b6931f2def765c /configure.ac
Initial commit. All spl source written up to this point wrapped
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
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac133
1 files changed, 133 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 000000000..52bc4f593
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,133 @@
+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