aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
blob: 52bc4f593b68d4b7fdd76df049159b2606acb921 (plain)
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