Whamcloud - gitweb
Fix build problems with RH ia64 kernel on TDEV/Thunder:
[fs/lustre-release.git] / lnet / archdep.m4
1
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"
6
7 # -------- liblustre compilation --------------
8 AC_ARG_WITH(lib, [  --with-lib compile lustre library], host_cpu="lib")
9
10 # -------- set linuxdir ------------
11
12 AC_ARG_WITH(linux, [  --with-linux=[path] set path to Linux source (default=/usr/src/linux)],LINUX=$with_linux,LINUX=/usr/src/linux)
13 AC_SUBST(LINUX)
14 if test x$enable_inkernel = xyes ; then
15         echo ln -s `pwd` $LINUX/fs/lustre
16         rm $LINUX/fs/lustre
17         ln -s `pwd` $LINUX/fs/lustre
18 fi
19
20 #  --------------------
21 AC_MSG_CHECKING(if you are running user mode linux for $host_cpu ...)
22 if test $host_cpu = "lib" ; then 
23         host_cpu="lib"
24         AC_MSG_RESULT(no building Lustre library)
25 else
26   if test -e $LINUX/include/asm-um ; then
27     if test  X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then
28         host_cpu="um";
29         AC_MSG_RESULT(yes)
30     else
31         AC_MSG_RESULT(no (asm doesn't point at asm-um))
32     fi
33
34   else 
35         AC_MSG_RESULT(no (asm-um missing))
36   fi
37 fi
38
39 # --------- Linux 25 ------------------
40
41 AC_MSG_CHECKING(if you are running linux 2.5)
42 if test -e $LINUX/include/linux/namei.h ; then
43         linux25="yes"
44         AC_MSG_RESULT(yes)
45 else
46         linux25="no"
47         AC_MSG_RESULT(no)
48 fi
49 AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
50 echo "Makefiles for in linux 2.5 build: $LINUX25"
51
52 # -------  Makeflags ------------------
53
54 AC_MSG_CHECKING(setting make flags system architecture: )
55 case ${host_cpu} in
56         lib )
57         AC_MSG_RESULT($host_cpu)
58         KCFLAGS='-g -Wall '
59         KCPPFLAGS='-D__arch_lib__ '
60         libdir='${exec_prefix}/lib/lustre'
61         MOD_LINK=elf_i386
62 ;;
63         um )
64         AC_MSG_RESULT($host_cpu)
65         KCFLAGS='-g -Wall -pipe -Wno-trigraphs -Wstrict-prototypes -fno-strict-aliasing -fno-common '
66         case ${linux25} in
67                 yes )
68                 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 -DKBUILD_BASENAME=$(MODULE) -DKBUILD_MODNAME=$(MODULE) '
69         ;;
70                 * )
71                 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 '
72         ;;
73         esac
74
75         MOD_LINK=elf_i386
76 ;;
77         i*86 )
78         AC_MSG_RESULT($host_cpu)
79         KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -pipe'
80         case ${linux25} in
81                 yes )
82                 KCPPFLAGS='-D__KERNEL__ -DMODULE -march=i686 -I$(LINUX)/include/asm-i386/mach-default -nostdinc -iwithprefix include '
83         ;;
84                 * )
85                 KCPPFLAGS='-D__KERNEL__ -DMODULE '
86         ;;
87         esac
88         MOD_LINK=elf_i386
89 ;;
90
91         alphaev6 )
92         AC_MSG_RESULT($host_cpu)
93         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'
94         KCPPFLAGS='-D__KERNEL__ -DMODULE '
95         MOD_LINK=elf64alpha
96 ;;
97
98         alphaev67 )
99         AC_MSG_RESULT($host_cpu)
100         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'
101         KCPPFLAGS='-D__KERNEL__ -DMODULE '
102         MOD_LINK=elf64alpha
103 ;;
104
105         alpha* )
106         AC_MSG_RESULT($host_cpu)
107         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'
108         KCPPFLAGS='-D__KERNEL__ -DMODULE '
109         MOD_LINK=elf64alpha
110 ;;
111
112         ia64 )
113         AC_MSG_RESULT($host_cpu)
114         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'
115         KCPPFLAGS='-D__KERNEL__ -DMODULE'
116         MOD_LINK=elf64_ia64
117 ;;
118
119         x86_64 )
120         AC_MSG_RESULT($host_cpu)
121         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'
122         KCPPFLAGS='-D__KERNEL__ -DMODULE'
123         MOD_LINK=elf_x86_64
124 ;;
125
126         sparc64 )
127         AC_MSG_RESULT($host_cpu)
128         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'
129         KCPPFLAGS='-D__KERNEL__'
130         MOD_LINK=elf64_sparc
131
132 ;;
133
134         powerpc )
135         AC_MSG_RESULT($host_cpu)
136         KCFLAGS='-O2 -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'
137         KCPPFLAGS='-D__KERNEL__'
138         MOD_LINK=elf32ppclinux
139 ;;
140
141         *)
142         AC_ERROR("Unknown Linux Platform: $host_cpu")
143 ;;
144 esac
145
146 # ----------- make dep run? ------------------
147
148 if test $host_cpu != "lib" ; then 
149   AC_MSG_CHECKING(if make dep has been run in kernel source (host $host_cpu) )
150   if test -f $LINUX/include/linux/config.h ; then
151   AC_MSG_RESULT(yes)
152  else
153   AC_MSG_ERROR(** cannot find $LINUX/include/linux/config.h. Run make dep in $LINUX.)
154   fi
155 fi
156
157 # ------------ include paths ------------------
158
159 if test $host_cpu != "lib" ; then 
160     KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include"
161 else
162     KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include'
163 fi
164 CPPFLAGS="$KINCFLAGS $ARCHCPPFLAGS"
165
166 if test $host_cpu != "lib" ; then 
167 # ------------ autoconf.h ------------------
168   AC_MSG_CHECKING(if autoconf.h is in kernel source)
169   if test -f $LINUX/include/linux/autoconf.h ; then
170       AC_MSG_RESULT(yes)
171   else
172       AC_MSG_ERROR(** cannot find $LINUX/include/linux/autoconf.h. Run make config in $LINUX.)
173   fi
174
175 # ------------ LINUXRELEASE and moduledir ------------------
176   AC_MSG_CHECKING(for Linux release)
177   
178   dnl We need to rid ourselves of the nasty [ ] quotes.
179   changequote(, )
180   dnl Get release from version.h
181   LINUXRELEASE="`sed -ne 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_-]*\).*/\1/p' $LINUX/include/linux/version.h`"
182   changequote([, ])
183   
184   moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel
185   AC_SUBST(moduledir)
186   
187   modulefsdir='$(moduledir)/fs/$(PACKAGE)'
188   AC_SUBST(modulefsdir)
189   
190   AC_MSG_RESULT($LINUXRELEASE)
191   AC_SUBST(LINUXRELEASE)
192
193 # ------------ RELEASE --------------------------------
194   AC_MSG_CHECKING(lustre release)
195   
196   dnl We need to rid ourselves of the nasty [ ] quotes.
197   changequote(, )
198   dnl Get release from version.h
199   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`"
200   changequote([, ])
201
202   AC_MSG_RESULT($RELEASE)
203   AC_SUBST(RELEASE)
204
205 # ---------- modversions? --------------------
206   AC_MSG_CHECKING(for MODVERSIONS)
207   if egrep -e 'MODVERSIONS.*1' $LINUX/include/linux/autoconf.h >/dev/null 2>&1;
208   then
209         MFLAGS="-DMODULE -DMODVERSIONS -include $LINUX/include/linux/modversions.h -DEXPORT_SYMTAB"
210         AC_MSG_RESULT(yes)
211   else
212         MFLAGS=
213         AC_MSG_RESULT(no)
214   fi
215 fi
216
217 # ---------- Portals flags --------------------
218
219 #AC_PREFIX_DEFAULT([])
220 #if test "x$prefix" = xNONE || test "x$prefix" = x; then
221 #  usrprefix=/usr
222 #else
223 #  usrprefix='${prefix}'
224 #fi
225 #AC_SUBST(usrprefix)
226
227 AC_MSG_CHECKING(if kernel has CPU affinity support)
228 SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`"
229 if test "$SET_CPUS_ALLOW" != 0 ; then
230   enable_affinity_temp="-DCPU_AFFINITY=1"
231   AC_MSG_RESULT(yes)
232 else
233   enable_affinity_temp=""
234   AC_MSG_RESULT(no)
235 fi
236
237 AC_MSG_CHECKING(if kernel has zero-copy TCP support)
238 ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
239 if test "$ZCCD" != 0 ; then
240   enable_zerocopy_temp="-DSOCKNAL_ZC=1"
241   AC_MSG_RESULT(yes)
242 else
243   enable_zerocopy_temp=""
244   AC_MSG_RESULT(no)
245 fi
246
247 AC_ARG_ENABLE(zerocopy, [  --disable-zerocopy disable socknal zerocopy],enable_zerocopy="", enable_zerocopy=$enable_zerocopy_temp)
248
249 AC_ARG_ENABLE(affinity, [  --disable-affinity disable process/irq affinity],enable_affinity="", enable_affinity=$enable_affinity_temp)
250 #####################################
251
252 AC_MSG_CHECKING(if quadrics kernel headers are present)
253 if test -d $LINUX/drivers/net/qsnet ; then
254   AC_MSG_RESULT(yes)
255   QSWNAL="qswnal"
256   AC_MSG_CHECKING(for multirail EKC)
257   if test -f $LINUX/include/elan/epcomms.h; then
258         AC_MSG_RESULT(supported)
259         with_quadrics="-DMULTIRAIL_EKC=1"
260   else
261         AC_MSG_RESULT(not supported)
262         with_quadrics="-I$LINUX/drivers/net/qsnet/include"
263   fi
264   :
265 elif test -d $LINUX/drivers/qsnet1 ; then
266   AC_MSG_RESULT(yes)
267   QSWNAL="qswnal"
268   with_quadrics="-I$LINUX/drivers/qsnet1/include -DPROPRIETARY_ELAN"
269   :
270 elif test -d $LINUX/drivers/quadrics ; then
271   AC_MSG_RESULT(yes)
272   QSWNAL="qswnal"
273   with_quadrics="-I$LINUX/drivers/quadrics/include -DPROPRIETARY_ELAN"
274   :
275 #elif test -d /usr/include/elan3 ; then
276 #  AC_MSG_RESULT(yes)
277 #  QSWNAL="qswnal"
278 #  with_quadrics=""
279 #  :
280 else
281   AC_MSG_RESULT(no)
282   QSWNAL=""
283   with_quadrics=""
284   :
285 fi
286 AC_SUBST(with_quadrics)
287 AC_SUBST(QSWNAL)
288
289 # R. Read 5/02
290 GMNAL=""
291 echo "checking with-gm=" ${with_gm}
292 if test "${with_gm+set}" = set; then
293   if test "${with_gm}" = yes; then
294     with_gm="-I/usr/local/gm/include"
295   else
296     with_gm="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
297   fi
298   GMNAL="gmnal"
299 else
300 # default case - no GM
301   with_gm=""
302 fi
303 AC_SUBST(with_gm)
304 AC_SUBST(GMNAL)
305
306
307 #fixme: where are the default IB includes?
308 default_ib_include_dir=/usr/local/ib/include
309 an_ib_include_file=vapi.h
310
311 AC_ARG_WITH(ib, [ --with-ib=[yes/no/path] Path to IB includes], with_ib=$withval, with_ib=$default_ib)
312 AC_MSG_CHECKING(if IB headers are present)
313 if test "$with_ib" = yes; then
314     with_ib=$default_ib_include_dir
315 fi
316 if test "$with_ib" != no -a -f ${with_ib}/${an_ib_include_file}; then
317     AC_MSG_RESULT(yes)
318     IBNAL="ibnal"
319     with_ib="-I${with_ib}"
320 else
321     AC_MSG_RESULT(no)
322     IBNAL=""
323     with_ib=""
324 fi
325 AC_SUBST(IBNAL)
326 AC_SUBST(with_ib)
327
328
329 def_scamac=/opt/scali/include
330 AC_ARG_WITH(scamac, [  --with-scamac=[yes/no/path] Path to ScaMAC includes (default=/opt/scali/include)], with_scamac=$withval, with_scamac=$def_scamac)
331 AC_MSG_CHECKING(if ScaMAC headers are present)
332 if test "$with_scamac" = yes; then
333   with_scamac=$def_scamac
334 fi
335 if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then
336   AC_MSG_RESULT(yes)
337   SCIMACNAL="scimacnal"
338   with_scamac="-I${with_scamac} -I${with_scamac}/icm"
339 else
340   AC_MSG_RESULT(no)
341   SCIMACNAL=""
342   with_scamac=""
343 fi
344
345 AC_SUBST(with_scamac)
346 AC_SUBST(SCIMACNAL)
347
348 CFLAGS="$KCFLAGS"
349 CPPFLAGS="$KINCFLAGS $KCPPFLAGS $MFLAGS $enable_zerocopy $enable_affinity $with_quadrics $with_gm $with_scamac $with_ib"
350
351 AC_SUBST(MOD_LINK)
352 AC_SUBST(LINUX25)
353 AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
354
355 # ---------- Red Hat 2.4.20 backports some 2.5 bits --------
356 # This needs to run after we've defined the KCPPFLAGS
357
358 AC_MSG_CHECKING(for kernel version)
359 AC_TRY_COMPILE([#define __KERNEL__
360              #include <linux/sched.h>],
361             [struct task_struct p;
362              p.sighand = NULL;],
363             [RH_2_4_20=1],
364             [RH_2_4_20=0])
365
366 if test $RH_2_4_20 = 1; then
367         AC_MSG_RESULT(redhat-2.4.20)
368         CPPFLAGS="$CPPFLAGS -DCONFIG_RH_2_4_20"
369 else
370         AC_MSG_RESULT($LINUXRELEASE)
371 fi 
372
373 # ---------- Red Hat 2.4.21 backports some more 2.5 bits --------
374
375 AC_MSG_CHECKING(if kernel defines PDE)
376 HAVE_PDE="`grep -c 'proc_dir_entry..PDE' $LINUX/include/linux/proc_fs.h`"
377 if test "$HAVE_PDE" != 0 ; then
378   CPPFLAGS="$CPPFLAGS -DHAVE_PDE"
379   AC_MSG_RESULT(yes)
380 else
381   AC_MSG_RESULT(no)
382 fi
383
384 AC_MSG_CHECKING(if kernel passes struct file to direct_IO)
385 HAVE_DIO_FILE="`grep -c 'direct_IO.*struct file' $LINUX/include/linux/fs.h`"
386 if test "$HAVE_DIO_FILE" != 0 ; then
387   CPPFLAGS="$CPPFLAGS -DHAVE_DIO_FILE"
388   AC_MSG_RESULT(yes)
389 else
390   AC_MSG_RESULT(no)
391 fi