2 # -------- in kernel compilation? (2.5 only) -------------
3 AC_ARG_ENABLE(inkernel, [ --enable-inkernel set up 2.5 kernel makefiles])
4 AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes)
5 echo "Makefile for in kernel build: $INKERNEL"
7 # -------- are we building against an external portals? -------
8 # haha, I wonder how one is really supposed to do this
9 # automake seems to have a DEFS variable which looks good
10 AC_ARG_WITH(cray-portals, [ --with-cray-portals=[path] path to cray portals],
11 CRAY_PORTALS_INCLUDE="-I$with_cray_portals"
12 CC="$CC -DCRAY_PORTALS=1"
14 AC_SUBST(CRAY_PORTALS_INCLUDE)
15 AM_CONDITIONAL(CRAY_PORTALS, test ! "x$with_cray_portals" = x)
17 # -------- liblustre compilation --------------
18 AC_ARG_WITH(lib, [ --with-lib compile lustre library], host_cpu="lib")
20 # -------- set linuxdir ------------
22 AC_ARG_WITH(linux, [ --with-linux=[path] set path to Linux source (default=/usr/src/linux)],LINUX=$with_linux,LINUX=/usr/src/linux)
24 if test x$enable_inkernel = xyes ; then
25 echo ln -s `pwd` $LINUX/fs/lustre
27 ln -s `pwd` $LINUX/fs/lustre
30 # --------------------
31 AC_MSG_CHECKING(if you are running user mode linux for $host_cpu ...)
32 if test $host_cpu = "lib" ; then
34 AC_MSG_RESULT(no building Lustre library)
36 if test -e $LINUX/include/asm-um ; then
37 if test X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then
41 AC_MSG_RESULT(no (asm doesn't point at asm-um))
45 AC_MSG_RESULT(no (asm-um missing))
49 # --------- Linux 25 ------------------
51 AC_MSG_CHECKING(if you are running linux 2.5)
52 if test -e $LINUX/include/linux/namei.h ; then
59 AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
60 echo "Makefiles for in linux 2.5 build: $LINUX25"
62 # ------- Makeflags ------------------
64 AC_MSG_CHECKING(setting make flags system architecture: )
67 AC_MSG_RESULT($host_cpu)
69 KCPPFLAGS='-D__arch_lib__ '
70 libdir='${exec_prefix}/lib/lustre'
74 AC_MSG_RESULT($host_cpu)
75 KCFLAGS='-g -Wall -pipe -Wno-trigraphs -Wstrict-prototypes -fno-strict-aliasing -fno-common '
78 KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/include -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/kernel/skas/include -O2 -nostdinc -iwithprefix include'
81 KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/include '
88 AC_MSG_RESULT($host_cpu)
89 KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -pipe'
92 KCPPFLAGS='-D__KERNEL__ -DMODULE -march=i686 -I$(LINUX)/include/asm-i386/mach-default -nostdinc -iwithprefix include '
95 KCPPFLAGS='-D__KERNEL__ -DMODULE '
102 AC_MSG_RESULT($host_cpu)
103 KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6'
104 KCPPFLAGS='-D__KERNEL__ -DMODULE '
109 AC_MSG_RESULT($host_cpu)
110 KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6'
111 KCPPFLAGS='-D__KERNEL__ -DMODULE '
116 AC_MSG_RESULT($host_cpu)
117 KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev5'
118 KCPPFLAGS='-D__KERNEL__ -DMODULE '
123 AC_MSG_RESULT($host_cpu)
124 KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -mb-step'
125 KCPPFLAGS='-D__KERNEL__ -DMODULE'
130 AC_MSG_RESULT($host_cpu)
131 KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fomit-frame-pointer -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce -fno-asynchronous-unwind-tables'
132 KCPPFLAGS='-D__KERNEL__ -DMODULE'
137 AC_MSG_RESULT($host_cpu)
138 KCFLAGS='-O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -Wno-unused -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare -Wa,--undeclared-regs'
139 KCPPFLAGS='-D__KERNEL__'
145 AC_MSG_RESULT($host_cpu)
146 KCFLAGS='-O2 -g -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -D__powerpc__ -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring'
147 KCPPFLAGS='-D__KERNEL__ -DMODULE'
148 MOD_LINK=elf32ppclinux
152 AC_ERROR("Unknown Linux Platform: $host_cpu")
156 # ----------- make dep run? ------------------
158 if test $host_cpu != "lib" ; then
159 AC_MSG_CHECKING(if make dep has been run in kernel source (host $host_cpu) )
160 if test -f $LINUX/include/linux/config.h ; then
163 AC_MSG_ERROR(** cannot find $LINUX/include/linux/config.h. Run make dep in $LINUX.)
167 # ------------ include paths ------------------
169 KINCFLAGS="$CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE \
170 -I\$(top_srcdir)/include \
171 -I\$(top_srcdir)/portals/include"
172 if test $host_cpu != "lib" ; then
173 KINCFLAGS="$KINCFLAGS -I$LINUX/include -I$LINUX/include"
175 CPPFLAGS="$KINCFLAGS $ARCHCPPFLAGS"
177 if test $host_cpu != "lib" ; then
178 # ------------ autoconf.h ------------------
179 AC_MSG_CHECKING(if autoconf.h is in kernel source)
180 if test -f $LINUX/include/linux/autoconf.h ; then
183 AC_MSG_ERROR(** cannot find $LINUX/include/linux/autoconf.h. Run make config in $LINUX.)
186 # ------------ LINUXRELEASE and moduledir ------------------
187 AC_MSG_CHECKING(for Linux release)
189 dnl We need to rid ourselves of the nasty [ ] quotes.
191 dnl Get release from version.h
192 LINUXRELEASE="`sed -ne 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_-]*\).*/\1/p' $LINUX/include/linux/version.h`"
195 moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel
198 modulefsdir='$(moduledir)/fs/$(PACKAGE)'
199 AC_SUBST(modulefsdir)
201 AC_MSG_RESULT($LINUXRELEASE)
202 AC_SUBST(LINUXRELEASE)
204 # ------------ RELEASE --------------------------------
205 AC_MSG_CHECKING(lustre release)
207 dnl We need to rid ourselves of the nasty [ ] quotes.
209 dnl Get release from version.h
210 RELEASE="`sed -ne 's/-/_/g' -e 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_]*\).*/\1/p' $LINUX/include/linux/version.h`_`date +%Y%m%d%H%M`"
213 AC_MSG_RESULT($RELEASE)
216 # ---------- modversions? --------------------
217 AC_MSG_CHECKING(for MODVERSIONS)
218 if egrep -e 'MODVERSIONS.*1' $LINUX/include/linux/autoconf.h >/dev/null 2>&1;
220 if test $linux25 != "yes"; then
221 MFLAGS="-DMODULE -DMODVERSIONS -include $LINUX/include/linux/modversions.h -DEXPORT_SYMTAB"
227 # ---------- Portals flags --------------------
229 #AC_PREFIX_DEFAULT([])
230 #if test "x$prefix" = xNONE || test "x$prefix" = x; then
233 # usrprefix='${prefix}'
237 AC_MSG_CHECKING(if kernel has CPU affinity support)
238 SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`"
239 if test "$SET_CPUS_ALLOW" != 0 ; then
240 enable_affinity_temp="-DCPU_AFFINITY=1"
243 enable_affinity_temp=""
247 AC_MSG_CHECKING(if kernel has zero-copy TCP support)
248 ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
249 if test "$ZCCD" != 0 ; then
250 enable_zerocopy_temp="-DSOCKNAL_ZC=1"
253 enable_zerocopy_temp=""
257 AC_ARG_ENABLE(zerocopy, [ --disable-zerocopy disable socknal zerocopy],enable_zerocopy="", enable_zerocopy=$enable_zerocopy_temp)
259 AC_ARG_ENABLE(affinity, [ --disable-affinity disable process/irq affinity],enable_affinity="", enable_affinity=$enable_affinity_temp)
260 #####################################
262 AC_MSG_CHECKING(if quadrics kernel headers are present)
263 if test -d $LINUX/drivers/net/qsnet ; then
266 AC_MSG_CHECKING(for multirail EKC)
267 if test -f $LINUX/include/elan/epcomms.h; then
268 AC_MSG_RESULT(supported)
269 with_quadrics="-DMULTIRAIL_EKC=1"
271 AC_MSG_RESULT(not supported)
272 with_quadrics="-I$LINUX/drivers/net/qsnet/include"
281 AC_SUBST(with_quadrics)
286 echo "checking with-gm=" ${with_gm}
287 if test "${with_gm+set}" = set; then
288 if test "${with_gm}" = yes; then
289 with_gm="-I/usr/local/gm/include"
291 with_gm="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
295 # default case - no GM
302 #fixme: where are the default IB includes?
303 default_ib_include_dir=/usr/local/ib/include
304 an_ib_include_file=vapi.h
306 AC_ARG_WITH(ib, [ --with-ib=[yes/no/path] Path to IB includes], with_ib=$withval, with_ib=$default_ib)
307 AC_MSG_CHECKING(if IB headers are present)
308 if test "$with_ib" = yes; then
309 with_ib=$default_ib_include_dir
311 if test "$with_ib" != no -a -f ${with_ib}/${an_ib_include_file}; then
314 with_ib="-I${with_ib}"
324 def_scamac=/opt/scali/include
325 AC_ARG_WITH(scamac, [ --with-scamac=[yes/no/path] Path to ScaMAC includes (default=/opt/scali/include)], with_scamac=$withval, with_scamac=$def_scamac)
326 AC_MSG_CHECKING(if ScaMAC headers are present)
327 if test "$with_scamac" = yes; then
328 with_scamac=$def_scamac
330 if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then
332 SCIMACNAL="scimacnal"
333 with_scamac="-I${with_scamac} -I${with_scamac}/icm"
340 AC_SUBST(with_scamac)
344 CPPFLAGS="$KINCFLAGS $KCPPFLAGS $MFLAGS $enable_zerocopy $enable_affinity $with_quadrics $with_gm $with_scamac $with_ib"
346 AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
349 AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
351 # ---------- Red Hat 2.4.18 has iobuf->dovary --------------
352 # But other kernels don't
354 AC_MSG_CHECKING([if struct kiobuf has a dovary field])
355 AC_TRY_COMPILE([#define __KERNEL__
356 #include <linux/iobuf.h>],
357 [struct kiobuf iobuf;
359 [AC_MSG_RESULT([yes])
360 CPPFLAGS="$CPPFLAGS -DHAVE_KIOBUF_DOVARY"],
361 [AC_MSG_RESULT([no])])
363 # ---------- Red Hat 2.4.20 backports some 2.5 bits --------
364 # This needs to run after we've defined the KCPPFLAGS
366 AC_MSG_CHECKING(for kernel version)
367 AC_TRY_COMPILE([#define __KERNEL__
368 #include <linux/sched.h>],
369 [struct task_struct p;
374 if test $RH_2_4_20 = 1; then
375 AC_MSG_RESULT(redhat-2.4.20)
376 CPPFLAGS="$CPPFLAGS -DCONFIG_RH_2_4_20"
378 AC_MSG_RESULT($LINUXRELEASE)
381 # ---------- Red Hat 2.4.21 backports some more 2.5 bits --------
383 AC_MSG_CHECKING(if kernel defines PDE)
384 HAVE_PDE="`grep -c 'proc_dir_entry..PDE' $LINUX/include/linux/proc_fs.h`"
385 if test "$HAVE_PDE" != 0 ; then
386 CPPFLAGS="$CPPFLAGS -DHAVE_PDE"
392 AC_MSG_CHECKING(if kernel passes struct file to direct_IO)
393 HAVE_DIO_FILE="`grep -c 'direct_IO.*struct file' $LINUX/include/linux/fs.h`"
394 if test "$HAVE_DIO_FILE" != 0 ; then
395 CPPFLAGS="$CPPFLAGS -DHAVE_DIO_FILE"