aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
blob: 3992520ac806b53aa6c55c34f5d9503ea0609e01 (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
AC_INIT

AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(spl, 0.0.1)
AC_CONFIG_HEADERS([config.h])

AC_PROG_INSTALL
AC_PROG_CC
AC_PROG_LIBTOOL

ver=`uname -r`
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 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

# Add "V=1" to KERNELMAKE_PARAMS to enable verbose module build
KERNELMAKE_PARAMS=
KERNELCPPFLAGS="-I`/bin/pwd`/include"

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
                  lib/Makefile
                  cmd/Makefile
                  modules/Makefile
                  modules/spl/Makefile
                  modules/splat/Makefile
                  include/Makefile
                  scripts/Makefile
                  scripts/spl.spec
               ])

AC_OUTPUT