1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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
|