linux-2624-20071123
[openafs.git] / acinclude.m4
1 dnl This file contains the common configuration code which would
2 dnl otherwise be duplicated between configure and configure-libafs.
3 dnl
4 dnl NB: Because this code is a macro, references to positional shell
5 dnl parameters must be done like $[]1 instead of $1
6
7 AC_DEFUN([OPENAFS_CONFIGURE_COMMON],[
8
9 AC_CANONICAL_HOST
10 SRCDIR_PARENT=`pwd`
11
12 #BOZO_SAVE_CORES pam
13 AC_ARG_WITH(afs-sysname,
14 [  --with-afs-sysname=sys    use sys for the afs sysname]
15 )
16 AC_ARG_ENABLE( afsdb,
17 [  --disable-afsdb                      disable AFSDB DNS RR support],, enable_afsdb="yes")
18 AC_ARG_ENABLE( pam,
19 [  --disable-pam                        disable PAM support],, enable_pam="yes")
20 AC_ARG_ENABLE( bos-restricted-mode,
21 [  --enable-bos-restricted-mode         enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no")
22 AC_ARG_ENABLE( bos-new-config,
23 [  --enable-bos-new-config              enable bosserver pickup of BosConfig.new on restarts],, enable_bos_new_config="no")
24 AC_ARG_ENABLE( largefile-fileserver,
25 [  --disable-largefile-fileserver       disable large file support in fileserver],, enable_largefile_fileserver="yes")
26 AC_ARG_ENABLE( namei-fileserver,
27 [  --enable-namei-fileserver            force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
28 AC_ARG_ENABLE( supergroups,
29 [  --enable-supergroups                 enable support for nested pts groups],, enable_supergroups="no")
30 AC_ARG_ENABLE( fast-restart,
31 [  --enable-fast-restart                enable fast startup of file server without salvaging],, enable_fast_restart="no")
32 AC_ARG_ENABLE( bitmap-later,
33 [  --enable-bitmap-later                enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
34 AC_ARG_ENABLE( demand-attach-fs,
35 [  --enable-demand-attach-fs            enable Demand Attach Fileserver (please see documentation)],, enable_demand_attach_fs="no")
36 AC_ARG_ENABLE( unix-sockets,
37 [  --enable-unix-sockets                enable use of unix domain sockets for fssync],, enable_unix_sockets="yes")
38 AC_ARG_ENABLE( full-vos-listvol-switch,
39 [  --disable-full-vos-listvol-switch    disable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="yes")
40 AC_ARG_WITH(dux-kernel-headers,
41 [  --with-dux-kernel-headers=path       use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
42 )
43 AC_ARG_WITH(linux-kernel-headers,
44 [  --with-linux-kernel-headers=path     use the kernel headers found at path(optional, defaults to /usr/src/linux-2.4, then /usr/src/linux)]
45 )
46 AC_ARG_WITH(bsd-kernel-headers,
47 [  --with-bsd-kernel-headers=path       use the kernel headers found at path(optional, defaults to /usr/src/sys)]
48 )
49 AC_ARG_WITH(bsd-kernel-build,
50 [  --with-bsd-kernel-build=path         use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC)]
51 )
52 AC_ARG_ENABLE(kernel-module,
53 [  --disable-kernel-module              disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
54 )
55 AC_ARG_ENABLE(redhat-buildsys,
56 [  --enable-redhat-buildsys             enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no"
57 )
58 AC_ARG_ENABLE(transarc-paths,
59 [  --enable-transarc-paths                      Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no"
60 )
61 AC_ARG_ENABLE(tivoli-tsm,
62 [  --enable-tivoli-tsm                  Enable use of the Tivoli TSM API libraries for butc support],, enable_tivoli_tsm="no"
63 )
64 AC_ARG_ENABLE(debug-kernel,
65 [  --enable-debug-kernel                enable compilation of the kernel module with debugging information (defaults to disabled)],, enable_debug_kernel="no"
66 )
67 AC_ARG_ENABLE(optimize-kernel,
68 [  --disable-optimize-kernel            disable compilation of the kernel module with optimization (defaults based on platform)],, enable_optimize_kernel="yes"
69 )
70 AC_ARG_ENABLE(debug,
71 [  --enable-debug                       enable compilation of the user space code with debugging information (defaults to disabled)],, enable_debug="no"
72 )
73 AC_ARG_ENABLE(strip-binaries,
74 [  --disable-strip-binaries             disable stripping of symbol information from binaries (defaults to enabled)],, enable_strip_binaries="maybe"
75 )
76 AC_ARG_ENABLE(optimize,
77 [  --disable-optimize                   disable optimization for compilation of the user space code (defaults to enabled)],, enable_optimize="yes"
78 )
79 AC_ARG_ENABLE(debug-lwp,
80 [  --enable-debug-lwp                   enable compilation of the LWP code with debugging information (defaults to disabled)],, enable_debug_lwp="no"
81 )
82 AC_ARG_ENABLE(optimize-lwp,
83 [  --disable-optimize-lwp               disable optimization for compilation of the LWP code (defaults to enabled)],, enable_optimize_lwp="yes"
84 )
85 AC_ARG_ENABLE(debug-pam,
86 [  --enable-debug-pam                   enable compilation of the PAM code with debugging information (defaults to disabled)],, enable_debug_pam="no"
87 )
88 AC_ARG_ENABLE(optimize-pam,
89 [  --disable-optimize-pam               disable optimization for compilation of the PAM code (defaults to enabled)],, enable_optimize_pam="yes"
90 )
91
92
93 enable_login="no"
94
95 dnl weird ass systems
96 AC_AIX
97 AC_ISC_POSIX
98 AC_MINIX
99
100 dnl Various compiler setup.
101 AC_TYPE_PID_T
102 AC_TYPE_SIZE_T
103 AC_TYPE_SIGNAL
104 COMPILER_HAS_FUNCTION_MACRO
105
106 dnl Checks for programs.
107 AC_PROG_INSTALL
108 AC_PROG_LN_S
109 AC_PROG_RANLIB
110 AC_PROG_YACC
111 AM_PROG_LEX
112
113 OPENAFS_CHECK_BIGENDIAN
114
115 AC_MSG_CHECKING(your OS)
116 system=$host
117 case $system in
118         *-linux*)
119
120                 MKAFS_OSTYPE=LINUX
121                 if test "x$enable_redhat_buildsys" = "xyes"; then
122                  AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
123                 fi
124                 if test "x$enable_kernel_module" = "xyes"; then
125                  if test "x$with_linux_kernel_headers" != "x"; then
126                    LINUX_KERNEL_PATH="$with_linux_kernel_headers"
127                  else
128                    LINUX_KERNEL_PATH="/lib/modules/`uname -r`/source"
129                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
130                      LINUX_KERNEL_PATH="/lib/modules/`uname -r`/build"
131                    fi
132                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
133                      LINUX_KERNEL_PATH="/usr/src/linux-2.4"
134                    fi
135                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
136                      LINUX_KERNEL_PATH="/usr/src/linux"
137                    fi
138                  fi
139                if test -f "$LINUX_KERNEL_PATH/include/linux/utsrelease.h"; then
140                  linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
141                  LINUX_VERSION="$linux_kvers"
142                else
143                  if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
144                   linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
145                   if test "x$linux_kvers" = "x"; then
146                     if test -f "$LINUX_KERNEL_PATH/include/linux/version-up.h"; then
147                       linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
148                       if test "x$linux_kvers" = "x"; then
149
150                         AC_MSG_ERROR(Linux headers lack version definition [2])
151                         exit 1
152                       else
153                         LINUX_VERSION="$linux_kvers"
154                       fi
155                     else
156                       AC_MSG_ERROR(Linux headers lack version definition)
157                       exit 1
158                     fi
159                   else
160                     LINUX_VERSION="$linux_kvers"
161                   fi
162                  else
163                     enable_kernel_module="no"
164                  fi
165                fi
166                  if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
167                      enable_kernel_module="no"
168                  fi
169                  if test "x$enable_kernel_module" = "xno"; then
170                   if test "x$with_linux_kernel_headers" != "x"; then
171                    AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
172                    exit 1
173                   else
174                    AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
175                   fi
176                  fi
177                  dnl do we need to determine SUBARCH from autoconf.h
178                  SUBARCH=default
179                 fi
180                 AC_MSG_RESULT(linux)
181                 if test "x$enable_kernel_module" = "xyes"; then
182                  AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
183                  if test "x${AFS_SYSKVERS}" = "x"; then
184                   AC_MSG_ERROR(Couldn't guess your Linux version [2])
185                  fi
186                 fi
187                 ;;
188         *-solaris*)
189                 MKAFS_OSTYPE=SOLARIS
190                 AC_MSG_RESULT(sun4)
191                 SOLARIS_UFSVFS_HAS_DQRWLOCK
192                 SOLARIS_PROC_HAS_P_COREFILE
193                 SOLARIS_FS_HAS_FS_ROLLED
194                 ;;
195         *-sunos*)
196                 MKAFS_OSTYPE=SUNOS
197                 enable_kernel_module=no
198                 AC_MSG_RESULT(sun4)
199                 ;;
200         *-hpux*)
201                 MKAFS_OSTYPE=HPUX
202                 AC_MSG_RESULT(hp_ux)
203                 if test -f "/usr/old/usr/include/ndir.h"; then
204                  AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
205                 fi
206                 ;;
207         *-irix*)
208                 if test -d /usr/include/sys/SN/SN1; then
209                  IRIX_BUILD_IP35="IP35"
210                 fi
211                 MKAFS_OSTYPE=IRIX
212                 AC_MSG_RESULT(sgi)
213                 ;;
214         *-aix*)
215                 MKAFS_OSTYPE=AIX
216                 AC_MSG_RESULT(rs_aix)
217                 ;;
218         *-osf*)
219                 MKAFS_OSTYPE=DUX
220                 AC_MSG_RESULT(alpha_dux)
221                 ;;
222         powerpc-*-darwin*)
223                 MKAFS_OSTYPE=DARWIN
224                 AC_MSG_RESULT(ppc_darwin)
225                 ;;
226         i386-*-darwin*)
227                 MKAFS_OSTYPE=DARWIN
228                 AC_MSG_RESULT(x86_darwin)
229                 ;;
230         *-freebsd*)
231                 MKAFS_OSTYPE=FBSD
232                 AC_MSG_RESULT(i386_fbsd)
233                 ;;
234         *-netbsd*)
235                 MKAFS_OSTYPE=NBSD
236                 AC_MSG_RESULT(nbsd)
237                 ;;
238         *-openbsd*)
239                 MKAFS_OSTYPE=OBSD
240                 AC_MSG_RESULT(i386_obsd)
241                 ;;
242         *)
243                 AC_MSG_RESULT($system)
244                 ;;
245 esac
246
247 if test "x$with_afs_sysname" != "x"; then
248         AFS_SYSNAME="$with_afs_sysname"
249 else
250         AC_MSG_CHECKING(your AFS sysname)
251         case $host in
252                 i?86-*-openbsd?.?)
253                         v=${host#*openbsd}
254                         vM=${v%.*}
255                         vm=${v#*.}
256                         AFS_SYSNAME="i386_obsd${vM}${vm}"
257                         ;;
258                 sparc64-*-openbsd?.?)
259                         v=${host#*openbsd}
260                         vM=${v%.*}
261                         vm=${v#*.}
262                         AFS_SYSNAME="sparc64_obsd${vM}${vm}"
263                         ;;
264                 i?86-*-freebsd?.*)
265                         v=${host#*freebsd}
266                         vM=${v%.*}
267                         vm=${v#*.}
268                         AFS_SYSNAME="i386_fbsd_${vM}${vm}"
269                         ;;
270                 i?86-*-netbsd*1.5*)
271                         AFS_SYSNAME="i386_nbsd15"
272                         ;;
273                 alpha-*-netbsd*1.5*)
274                         AFS_SYSNAME="alpha_nbsd15"
275                         ;;
276                 i?86-*-netbsd*1.6[[M-Z]]*)
277                         AFS_SYSNAME="i386_nbsd20"
278                         ;;
279                 powerpc-*-netbsd*1.6[[M-Z]]*)
280                         AFS_SYSNAME="ppc_nbsd20"
281                         ;;
282                 i?86-*-netbsd*2.0*)
283                         AFS_SYSNAME="i386_nbsd20"
284                         ;;
285                 amd64-*-netbsd*2.0*)
286                         AFS_SYSNAME="amd64_nbsd20"
287                         ;;
288                 powerpc-*-netbsd*2.0*)
289                         AFS_SYSNAME="ppc_nbsd20"
290                         ;;
291                 i?86-*-netbsd*1.6*)
292                         AFS_SYSNAME="i386_nbsd16"
293                         ;;
294                 alpha-*-netbsd*1.6*)
295                         AFS_SYSNAME="alpha_nbsd16"
296                         ;;
297                 powerpc-*-netbsd*1.6*)
298                         AFS_SYSNAME="ppc_nbsd16"
299                         ;;
300                 i?86-*-netbsd*2.1*)
301                         AFS_SYSNAME="i386_nbsd21"
302                         ;;
303                 i?86-*-netbsd*2.99*)
304                         AFS_SYSNAME="i386_nbsd30"
305                         ;;
306                 i?86-*-netbsd*3.[[0-8]]*)
307                         AFS_SYSNAME="i386_nbsd30"
308                         ;;
309                 i?86-*-netbsd*3.99*)
310                         AFS_SYSNAME="i386_nbsd30"
311                         ;;
312                 i?86-*-netbsd*4.[[0-8]]*)
313                         AFS_SYSNAME="i386_nbsd40"
314                         ;;
315                 i?86-*-netbsd*4.99*)
316                         AFS_SYSNAME="i386_nbsd40"
317                         ;;
318                 hppa*-hp-hpux11.0*)
319                         AFS_SYSNAME="hp_ux110"
320                         ;;
321                 hppa*-hp-hpux11.11)
322                         AFS_SYSNAME="hp_ux11i"
323                         ;;
324                 ia64-hp-hpux11.22)
325                         AFS_SYSNAME="ia64_hpux1122"
326                         ;;
327                 ia64-hp-hpux*)
328                         AFS_SYSNAME="ia64_hpux1123"
329                         ;;
330                 hppa*-hp-hpux10*)
331                         AFS_SYSNAME="hp_ux102"
332                         ;;
333                 powerpc-apple-darwin1.2*)
334                         AFS_SYSNAME="ppc_darwin_12"
335                         ;;
336                 powerpc-apple-darwin1.3*)
337                         AFS_SYSNAME="ppc_darwin_13"
338                         ;;
339                 powerpc-apple-darwin1.4*)
340                         AFS_SYSNAME="ppc_darwin_14"
341                         ;;
342                 powerpc-apple-darwin5.1*)
343                         AFS_SYSNAME="ppc_darwin_14"
344                         ;;
345                 powerpc-apple-darwin5.2*)
346                         AFS_SYSNAME="ppc_darwin_14"
347                         ;;
348                 powerpc-apple-darwin5.3*)
349                         AFS_SYSNAME="ppc_darwin_14"
350                         ;;
351                 powerpc-apple-darwin5.4*)
352                         AFS_SYSNAME="ppc_darwin_14"
353                         ;;
354                 powerpc-apple-darwin5.5*)
355                         AFS_SYSNAME="ppc_darwin_14"
356                         ;;
357                 powerpc-apple-darwin6.0*)
358                         AFS_SYSNAME="ppc_darwin_60"
359                         ;;
360                 powerpc-apple-darwin6.1*)
361                         AFS_SYSNAME="ppc_darwin_60"
362                         ;;
363                 powerpc-apple-darwin6.2*)
364                         AFS_SYSNAME="ppc_darwin_60"
365                         ;;
366                 powerpc-apple-darwin6.3*)
367                         AFS_SYSNAME="ppc_darwin_60"
368                         ;;
369                 powerpc-apple-darwin6.4*)
370                         AFS_SYSNAME="ppc_darwin_60"
371                         ;;
372                 powerpc-apple-darwin6.5*)
373                         AFS_SYSNAME="ppc_darwin_60"
374                         ;;
375                 powerpc-apple-darwin7.0*)
376                         AFS_SYSNAME="ppc_darwin_70"
377                         ;;
378                 powerpc-apple-darwin7.1*)
379                         AFS_SYSNAME="ppc_darwin_70"
380                         ;;
381                 powerpc-apple-darwin7.2*)
382                         AFS_SYSNAME="ppc_darwin_70"
383                         ;;
384                 powerpc-apple-darwin7.3*)
385                         AFS_SYSNAME="ppc_darwin_70"
386                         ;;
387                 powerpc-apple-darwin7.4*)
388                         AFS_SYSNAME="ppc_darwin_70"
389                         ;;
390                 powerpc-apple-darwin7.5*)
391                         AFS_SYSNAME="ppc_darwin_70"
392                         ;;
393                 powerpc-apple-darwin8.0*)
394                         AFS_SYSNAME="ppc_darwin_80"
395                         ;;
396                 powerpc-apple-darwin8.*)
397                         AFS_SYSNAME="ppc_darwin_80"
398                         ;;
399                 i386-apple-darwin8.*)
400                         AFS_SYSNAME="x86_darwin_80"
401                         ;;
402                 powerpc-apple-darwin9.*)
403                         AFS_SYSNAME="ppc_darwin_90"
404                         ;;
405                 i386-apple-darwin9.*)
406                         AFS_SYSNAME="x86_darwin_90"
407                         ;;
408                 sparc-sun-solaris2.5*)
409                         AFS_SYSNAME="sun4x_55"
410                         enable_login="yes"
411                         ;;
412                 sparc-sun-solaris2.6)
413                         AFS_SYSNAME="sun4x_56"
414                         ;;
415                 sparc-sun-solaris2.7)
416                         AFS_SYSNAME="sun4x_57"
417                         ;;
418                 sparc-sun-solaris2.8)
419                         AFS_SYSNAME="sun4x_58"
420                         ;;
421                 sparc-sun-solaris2.9)
422                         AFS_SYSNAME="sun4x_59"
423                         ;;
424                 sparc-sun-solaris2.10)
425                         AFS_SYSNAME="sun4x_510"
426                         ;;
427                 sparc-sun-solaris2.11)
428                         AFS_SYSNAME="sun4x_511"
429                         ;;
430                 sparc-sun-sunos4*)
431                         AFS_SYSNAME="sun4_413"
432                         enable_login="yes"
433                         ;;
434                 i386-pc-solaris2.7)
435                         AFS_SYSNAME="sunx86_57"
436                         ;;
437                 i386-pc-solaris2.8)
438                         AFS_SYSNAME="sunx86_58"
439                         ;;
440                 i386-pc-solaris2.9)
441                         AFS_SYSNAME="sunx86_59"
442                         ;;
443                 i386-pc-solaris2.10)
444                         AFS_SYSNAME="sunx86_510"
445                         ;;
446                 i386-pc-solaris2.11)
447                         AFS_SYSNAME="sunx86_511"
448                         ;;
449                 alpha*-dec-osf4.0*)
450                         AFS_SYSNAME="alpha_dux40"
451                         ;;
452                 alpha*-dec-osf5.0*)
453                         AFS_SYSNAME="alpha_dux50"
454                         ;;
455                 alpha*-dec-osf5.1*)
456                         AFS_SYSNAME="alpha_dux51"
457                         ;;
458                 mips-sgi-irix6.5)
459                         AFS_SYSNAME="sgi_65"
460                         ;;
461                 ia64-*-linux*)
462                         AFS_SYSNAME="ia64_linuxXX"
463                         ;;
464                 powerpc-*-linux*)
465                         AFS_SYSNAME="`/bin/arch`_linuxXX"
466                         ;;
467                 powerpc64-*-linux*)
468                         AFS_SYSNAME="ppc64_linuxXX"
469                         ;;
470                 alpha*-linux*)
471                         AFS_SYSNAME="alpha_linux_XX"
472                         ;;
473                 s390-*-linux*)
474                         AFS_SYSNAME="s390_linuxXX"
475                         ;;
476                 s390x-*-linux*)
477                         AFS_SYSNAME="s390x_linuxXX"
478                         ;;
479                 sparc-*-linux*)
480                         AFS_SYSNAME="`/bin/arch`_linuxXX"
481                         ;;
482                 sparc64-*-linux*)
483                         AFS_SYSNAME="sparc64_linuxXX"
484                         ;;
485                 i?86-*-linux*)
486                         AFS_SYSNAME="i386_linuxXX"
487                         ;;
488                 parisc-*-linux-gnu|hppa-*-linux-gnu)
489                         AFS_SYSNAME="parisc_linuxXX"
490                         enable_pam="no"
491                         ;;
492                 power*-ibm-aix4.2*)
493                         AFS_SYSNAME="rs_aix42"
494                         enable_pam="no"
495                         ;;
496                 power*-ibm-aix4.3*)
497                         AFS_SYSNAME="rs_aix42"
498                         enable_pam="no"
499                         ;;
500                 power*-ibm-aix5.1*)
501                         AFS_SYSNAME="rs_aix51"
502                         enable_pam="no"
503                         ;;
504                 power*-ibm-aix5.2*)
505                         AFS_SYSNAME="rs_aix52"
506                         enable_pam="no"
507                         ;;
508                 power*-ibm-aix5.3*)
509                         AFS_SYSNAME="rs_aix53"
510                         enable_pam="no"
511                         ;;
512                 x86_64-*-linux-gnu)
513                         AFS_SYSNAME="amd64_linuxXX"
514                         enable_pam="no"
515                         ;;
516                 *)
517                         AC_MSG_ERROR(An AFS sysname is required)
518                         exit 1
519                         ;;
520         esac
521         case $AFS_SYSNAME in
522                 *_linux* | *_umlinux*)
523                         if test "x${AFS_SYSKVERS}" = "x"; then
524                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
525                         fi
526                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
527                         AFS_SYSNAME="$_AFS_SYSNAME"
528                         save_CPPFLAGS="$CPPFLAGS"
529                         CPPFLAGS="-I${LINUX_KERNEL_PATH}/include $CPPFLAGS"
530                         AC_TRY_COMPILE(
531                          [#include <linux/autoconf.h>],
532                          [#ifndef CONFIG_USERMODE
533                           #error not UML
534                           #endif],
535                          ac_cv_linux_is_uml=yes,)
536                         if test "${ac_cv_linux_is_uml}" = yes; then
537                          _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
538                         fi
539                         CPPFLAGS="$save_CPPFLAGS"
540                         AFS_SYSNAME="$_AFS_SYSNAME"
541                         ;;
542         esac
543         AC_MSG_RESULT($AFS_SYSNAME)
544 fi
545
546 dnl Some hosts have a separate common param file they should include.  Figure
547 dnl out if we're on one of them now that we know the sysname.
548 case $AFS_SYSNAME in
549     *_nbsd15)   AFS_PARAM_COMMON=param.nbsd15.h  ;;
550     *_nbsd16)   AFS_PARAM_COMMON=param.nbsd16.h  ;;
551     *_nbsd20)   AFS_PARAM_COMMON=param.nbsd20.h  ;;
552     *_nbsd21)   AFS_PARAM_COMMON=param.nbsd21.h  ;;
553     *_nbsd30)   AFS_PARAM_COMMON=param.nbsd30.h  ;;
554     *_nbsd40)   AFS_PARAM_COMMON=param.nbsd40.h  ;;
555     *_linux22)  AFS_PARAM_COMMON=param.linux22.h ;;
556     *_linux24)  AFS_PARAM_COMMON=param.linux24.h ;;
557     *_linux26)  AFS_PARAM_COMMON=param.linux26.h ;;
558 esac
559
560 case $AFS_SYSNAME in *_linux* | *_umlinux*)
561
562                 # Add (sub-) architecture-specific paths needed by conftests
563                 case $AFS_SYSNAME  in
564                         *_umlinux26)
565                                 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
566                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
567                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
568                                 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
569                 esac
570
571                 if test "x$enable_kernel_module" = "xyes"; then
572                  if test "x$enable_debug_kernel" = "xno"; then
573                         LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
574                  fi
575                  OPENAFS_GCC_SUPPORTS_MARCH
576                  AC_SUBST(P5PLUS_KOPTS)
577                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
578                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
579                  OPENAFS_GCC_SUPPORTS_NO_COMMON
580                  OPENAFS_GCC_SUPPORTS_PIPE
581                  AC_SUBST(LINUX_GCC_KOPTS)
582                  ifdef([OPENAFS_CONFIGURE_LIBAFS],
583                    [LINUX_BUILD_VNODE_FROM_INODE(src/config,src/afs)],
584                    [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
585                  )
586
587                  LINUX_KERNEL_COMPILE_WORKS
588                  LINUX_KBUILD_USES_EXTRA_CFLAGS
589                  LINUX_HAVE_CURRENT_KERNEL_TIME
590                  LINUX_KMEM_CACHE_INIT
591                  LINUX_HAVE_KMEM_CACHE_T
592                  LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
593                  LINUX_CONFIG_H_EXISTS
594                  LINUX_COMPLETION_H_EXISTS
595                  LINUX_EXPORTFS_H_EXISTS
596                  LINUX_DEFINES_FOR_EACH_PROCESS
597                  LINUX_DEFINES_PREV_TASK
598                  LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE
599                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
600                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
601                  LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
602                  LINUX_FS_STRUCT_INODE_HAS_I_BLKBITS
603                  LINUX_FS_STRUCT_INODE_HAS_I_BLKSIZE
604                  LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
605                  LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
606                  LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
607                  LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED
608                  LINUX_FS_STRUCT_INODE_HAS_I_MUTEX
609                  LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST
610                  LINUX_FS_STRUCT_INODE_HAS_I_SECURITY
611                  LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK
612                  LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM
613                  LINUX_INODE_SETATTR_RETURN_TYPE
614                  LINUX_WRITE_INODE_RETURN_TYPE
615                  LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
616                  LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
617                  LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
618                  LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
619                  LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
620                  LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
621                  LINUX_AOP_WRITEBACK_CONTROL
622                  LINUX_FS_STRUCT_FOP_HAS_FLOCK
623                  LINUX_FS_STRUCT_FOP_HAS_SENDFILE
624                  LINUX_FS_STRUCT_FOP_HAS_SPLICE
625                  LINUX_KERNEL_LINUX_SYSCALL_H
626                  LINUX_KERNEL_LINUX_SEQ_FILE_H
627                  LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
628                  LINUX_KERNEL_SELINUX
629                  LINUX_KERNEL_SOCK_CREATE
630                  LINUX_KERNEL_PAGE_FOLLOW_LINK
631                  LINUX_KEY_TYPE_H_EXISTS
632                  LINUX_NEED_RHCONFIG
633                  LINUX_RECALC_SIGPENDING_ARG_TYPE
634                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT
635                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT
636                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG
637                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND
638                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK
639                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM
640                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
641                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE
642                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TGID
643                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TODO
644                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO
645                  LINUX_EXPORTS_TASKLIST_LOCK
646                  LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
647                  LINUX_STATFS_TAKES_DENTRY
648                  LINUX_FREEZER_H_EXISTS
649                  LINUX_HAVE_SVC_ADDR_IN
650                  if test "x$ac_cv_linux_freezer_h_exists" = "xyes" ; then
651                   AC_DEFINE(FREEZER_H_EXISTS, 1, [define if you have linux/freezer.h])
652                  fi
653                  LINUX_REFRIGERATOR
654                  LINUX_LINUX_KEYRING_SUPPORT
655                  LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
656                  LINUX_DO_SYNC_READ
657                  LINUX_GENERIC_FILE_AIO_READ
658                  LINUX_INIT_WORK_HAS_DATA
659                  LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
660                  LINUX_SYSCTL_TABLE_CHECKING
661                  LINUX_EXPORTS_SYS_CHDIR
662                  LINUX_EXPORTS_SYS_CLOSE
663                  LINUX_EXPORTS_SYS_OPEN
664                  LINUX_EXPORTS_SYS_WAIT4
665                  LINUX_WHICH_MODULES
666                  if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
667                    AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
668                    ac_cv_linux_exports_sys_call_table=no
669                    if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
670                      ac_cv_linux_exports_ia32_sys_call_table=yes
671                    fi
672                  else
673                    LINUX_EXPORTS_INIT_MM
674                    LINUX_EXPORTS_KALLSYMS_ADDRESS
675                    LINUX_EXPORTS_KALLSYMS_SYMBOL
676                    LINUX_EXPORTS_SYS_CALL_TABLE
677                    LINUX_EXPORTS_IA32_SYS_CALL_TABLE
678                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
679                          linux_syscall_method=none
680                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
681                             linux_syscall_method=scan
682                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
683                                linux_syscall_method=scan_with_kallsyms_address
684                             fi
685                          fi
686                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
687                             linux_syscall_method=kallsyms_symbol
688                          fi
689                          if test "x$linux_syscall_method" = "xnone"; then
690                             AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
691                             linux_syscall_method=scan
692                          fi
693                    fi
694                  fi
695                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
696                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
697                  fi
698                  if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
699                   AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
700                  fi
701                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
702                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
703                  fi
704                  if test "x$ac_cv_linux_exports_sys_chdir" = "xyes" ; then
705                   AC_DEFINE(EXPORTED_SYS_CHDIR, 1, [define if your linux kernel exports sys_chdir])
706                  fi
707                  if test "x$ac_cv_linux_exports_sys_open" = "xyes" ; then
708                   AC_DEFINE(EXPORTED_SYS_OPEN, 1, [define if your linux kernel exports sys_open])
709                  fi
710                  if test "x$ac_cv_linux_exports_sys_close" = "xyes" ; then
711                   AC_DEFINE(EXPORTED_SYS_CLOSE, 1, [define if your linux kernel exports sys_close])
712                  fi
713                  if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
714                   AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
715                  fi
716                  if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
717                   AC_DEFINE(EXPORTED_SYS_CALL_TABLE)
718                  fi
719                  if test "x$ac_cv_linux_exports_ia32_sys_call_table" = "xyes"; then
720                   AC_DEFINE(EXPORTED_IA32_SYS_CALL_TABLE)
721                  fi
722                  if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
723                   AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL)
724                  fi
725                  if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
726                   AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS)
727                  fi
728                  if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
729                   AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if completion_h exists])
730                  fi
731                  if test "x$ac_cv_linux_config_h_exists" = "xyes" ; then
732                   AC_DEFINE(CONFIG_H_EXISTS, 1, [define if config.h exists])
733                  fi
734                  if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then
735                   AC_DEFINE(EXPORTFS_H_EXISTS, 1, [define if linux/exportfs.h exists])
736                  fi
737                  if test "x$ac_cv_linux_key_type_h_exists" = "xyes" ; then
738                   AC_DEFINE(KEY_TYPE_H_EXISTS, 1, [define if key-type.h exists])
739                  fi
740                  if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then
741                   AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined])
742                  fi
743                  if test "x$ac_cv_linux_defines_prev_task" = "xyes" ; then
744                   AC_DEFINE(DEFINED_PREV_TASK, 1, [define if prev_task defined])
745                  fi
746                  if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
747                   AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
748                  fi
749                  if test "x$ac_cv_linux_func_write_inode_returns_int" = "xyes" ; then
750                   AC_DEFINE(WRITE_INODE_NOT_VOID, 1, [define if your sops.write_inode returns non-void])
751                  fi
752                  if test "x$ac_cv_linux_fs_struct_super_has_alloc_inode" = "xyes" ; then
753                   AC_DEFINE(STRUCT_SUPER_HAS_ALLOC_INODE, 1, [define if your struct super_operations has alloc_inode])
754                  fi
755                  if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then 
756                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
757                  fi
758                  if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then 
759                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
760                  fi
761                  if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then 
762                   AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
763                  fi
764                  if test "x$ac_cv_linux_fs_struct_inode_has_i_alloc_sem" = "xyes"; then 
765                   AC_DEFINE(STRUCT_INODE_HAS_I_ALLOC_SEM, 1, [define if your struct inode has alloc_sem])
766                  fi
767                  if test "x$ac_cv_linux_fs_struct_inode_has_i_blksize" = "xyes"; then 
768                   AC_DEFINE(STRUCT_INODE_HAS_I_BLKSIZE, 1, [define if your struct inode has i_blksize])
769                  fi
770                  if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then 
771                   AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
772                  fi
773                  if test "x$ac_cv_linux_fs_struct_inode_has_i_security" = "xyes"; then 
774                   AC_DEFINE(STRUCT_INODE_HAS_I_SECURITY, 1, [define if you struct inode has i_security])
775                  fi
776                  if test "x$ac_cv_linux_fs_struct_inode_has_i_mutex" = "xyes"; then 
777                   AC_DEFINE(STRUCT_INODE_HAS_I_MUTEX, 1, [define if you struct inode has i_mutex])
778                  fi
779                  if test "x$ac_cv_linux_fs_struct_inode_has_i_sb_list" = "xyes"; then 
780                   AC_DEFINE(STRUCT_INODE_HAS_I_SB_LIST, 1, [define if you struct inode has i_sb_list])
781                  fi
782                  if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then 
783                   AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if your struct inode has data_buffers])
784                  fi
785                  if test "x$ac_cv_linux_fs_struct_inode_has_inotify_lock" = "xyes"; then 
786                   AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_LOCK, 1, [define if your struct inode has inotify_lock])
787                  fi
788                  if test "x$ac_cv_linux_fs_struct_inode_has_inotify_sem" = "xyes"; then 
789                   AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_SEM, 1, [define if your struct inode has inotify_sem])
790                  fi
791                  if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then 
792                   AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void])
793                  fi
794                  if test "x$ac_cv_linux_kernel_posix_lock_file_wait_arg" = "xyes" ; then
795                   AC_DEFINE(POSIX_LOCK_FILE_WAIT_ARG, 1, [define if your linux kernel uses 3 arguments for posix_lock_file])
796                  fi
797                  if test "x$ac_cv_linux_kernel_is_selinux" = "xyes" ; then
798                   AC_DEFINE(LINUX_KERNEL_IS_SELINUX, 1, [define if your linux kernel uses SELinux features])
799                  fi
800                  if test "x$ac_cv_linux_kernel_sock_create_v" = "xyes" ; then
801                   AC_DEFINE(LINUX_KERNEL_SOCK_CREATE_V, 1, [define if your linux kernel uses 5 arguments for sock_create])
802                  fi
803                  if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" ; then
804                   AC_DEFINE(HAVE_KERNEL_PAGE_FOLLOW_LINK, 1, [define if your linux kernel provides page_follow_link])
805                  fi
806                  if test "x$ac_linux_syscall" = "xyes" ; then
807                   AC_DEFINE(HAVE_KERNEL_LINUX_SYSCALL_H, 1, [define if your linux kernel has linux/syscall.h])
808                  fi
809                  if test "x$ac_linux_seq_file" = "xyes" ; then
810                   AC_DEFINE(HAVE_KERNEL_LINUX_SEQ_FILE_H, 1, [define if your linux kernel has linux/seq_file.h])
811                  fi
812                  if test "x$ac_cv_linux_sched_struct_task_struct_has_parent" = "xyes"; then 
813                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_PARENT, 1, [define if your struct task_struct has parent])
814                  fi
815                  if test "x$ac_cv_linux_sched_struct_task_struct_has_real_parent" = "xyes"; then 
816                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_REAL_PARENT, 1, [define if your struct task_struct has real_parent])
817                  fi
818                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sigmask_lock" = "xyes"; then 
819                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK, 1, [define if your struct task_struct has sigmask_lock])
820                  fi
821                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sighand" = "xyes"; then 
822                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGHAND, 1, [define if your struct task_struct has sighand])
823                  fi
824                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sig" = "xyes"; then 
825                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIG, 1, [define if your struct task_struct has sig])
826                  fi
827                  if test "x$ac_cv_linux_sched_struct_task_struct_has_rlim" = "xyes"; then 
828                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_RLIM, 1, [define if your struct task_struct has rlim])
829                  fi
830                  if test "x$ac_cv_linux_sched_struct_task_struct_has_signal_rlim" = "xyes"; then 
831                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM, 1, [define if your struct task_struct has signal->rlim])
832                  fi
833                  if test "x$ac_cv_linux_sched_struct_task_struct_has_exit_state" = "xyes"; then 
834                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_EXIT_STATE, 1, [define if your struct task_struct has exit_state])
835                  fi
836                  if test "x$ac_cv_linux_sched_struct_task_struct_has_tgid" = "xyes"; then 
837                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TGID, 1, [define if your struct task_struct has tgid])
838                  fi
839                  if test "x$ac_cv_linux_sched_struct_task_struct_has_todo" = "xyes"; then 
840                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TODO, 1, [define if your struct task_struct has todo])
841                  fi
842                  if test "x$ac_cv_linux_sched_struct_task_struct_has_thread_info" = "xyes"; then 
843                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_THREAD_INFO, 1, [define if your struct task_struct has thread_info])
844                  fi
845                  if test "x$ac_cv_linux_get_sb_has_struct_vfsmount" = "xyes"; then
846                   AC_DEFINE(GET_SB_HAS_STRUCT_VFSMOUNT, 1, [define if your get_sb_nodev needs a struct vfsmount argument])
847                  fi
848                  if test "x$ac_cv_linux_statfs_takes_dentry" = "xyes"; then
849                   AC_DEFINE(STATFS_TAKES_DENTRY, 1, [define if your statfs takes a dentry argument])
850                  fi
851                  if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then
852                   AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument])
853                  fi
854                  if test "x$ac_cv_linux_func_refrigerator_takes_pf_freeze" = "xyes" ; then
855                   AC_DEFINE(LINUX_REFRIGERATOR_TAKES_PF_FREEZE, 1, [define if your refrigerator takes PF_FREEZE])
856                  fi
857                  if test "x$ac_cv_linux_func_i_create_takes_nameidata" = "xyes" ; then
858                   AC_DEFINE(IOP_CREATE_TAKES_NAMEIDATA, 1, [define if your iops.create takes a nameidata argument])
859                  fi
860                  if test "x$ac_cv_linux_func_f_flush_takes_fl_owner_t" = "xyes" ; then
861                   AC_DEFINE(FOP_FLUSH_TAKES_FL_OWNER_T, 1, [define if your fops.flush takes an fl_owner_t argument])
862                  fi
863                  if test "x$ac_cv_linux_func_i_lookup_takes_nameidata" = "xyes" ; then
864                   AC_DEFINE(IOP_LOOKUP_TAKES_NAMEIDATA, 1, [define if your iops.lookup takes a nameidata argument])
865                  fi
866                  if test "x$ac_cv_linux_func_i_permission_takes_nameidata" = "xyes" ; then
867                   AC_DEFINE(IOP_PERMISSION_TAKES_NAMEIDATA, 1, [define if your iops.permission takes a nameidata argument])
868                  fi
869                  if test "x$ac_cv_linux_func_d_revalidate_takes_nameidata" = "xyes" ; then
870                   AC_DEFINE(DOP_REVALIDATE_TAKES_NAMEIDATA, 1, [define if your dops.d_revalidate takes a nameidata argument])
871                  fi
872                  if test "x$ac_cv_linux_init_work_has_data" = "xyes" ; then
873                   AC_DEFINE(INIT_WORK_HAS_DATA, 1, [define if INIT_WORK takes a data (3rd) argument])
874                  fi
875                  if test "x$ac_cv_linux_fs_struct_fop_has_flock" = "xyes" ; then
876                   AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_FLOCK, 1, [define if your struct file_operations has flock])
877                  fi
878                  if test "x$ac_cv_linux_fs_struct_fop_has_sendfile" = "xyes" ; then
879                   AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SENDFILE, 1, [define if your struct file_operations has sendfile])
880                  fi
881                  if test "x$ac_cv_linux_fs_struct_fop_has_splice" = "xyes" ; then
882                   AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SPLICE, 1, [define if your struct file_operations has splice_write and splice_read])
883                  fi
884                  if test "x$ac_cv_linux_register_sysctl_table_noflag" = "xyes" ; then
885                   AC_DEFINE(REGISTER_SYSCTL_TABLE_NOFLAG, 1, [define if register_sysctl_table has no insert_at head flag])
886                  fi
887                  if test "x$ac_cv_linux_sysctl_table_checking" = "xyes" ; then
888                   AC_DEFINE(SYSCTL_TABLE_CHECKING, 1, [define if your kernel has sysctl table checking])
889                  fi
890                  if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
891                   AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported])
892                  fi
893                  if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
894                   AC_DEFINE(HAVE_KMEM_CACHE_T, 1, [define if kmem_cache_t exists])
895                  fi
896                  if test "x$ac_cv_linux_kmem_cache_init" = "xyes" ; then
897                   AC_DEFINE(KMEM_CACHE_INIT, 1, [define for new kmem_cache init function parameters])
898                  fi
899                  if test "x$ac_cv_linux_have_current_kernel_time" = "xyes" ; then
900                   AC_DEFINE(HAVE_CURRENT_KERNEL_TIME, 1, [define if current_kernel_time() exists])
901                  fi
902                  if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
903                   AC_DEFINE(KMEM_CACHE_TAKES_DTOR, 1, [define if kmem_cache_create takes a destructor argument])
904                  fi
905                  if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
906                   AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
907                  else
908                   AC_MSG_WARN([your kernel does not have a usable symlink cache API])
909                  fi
910                  if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then
911                   AC_DEFINE(HAVE_SVC_ADDR_IN, 1, [define if svc_add_in exists])
912                  fi
913                 :
914                 fi
915 esac
916
917 case $AFS_SYSNAME in
918         *_darwin*)
919                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
920                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
921                 dnl the test below fails on darwin, even if the CPPFLAGS below
922                 dnl are added. the headers from Kernel.framework must be used
923                 dnl when KERNEL is defined.
924
925                 dnl really, such a thing isn't guaranteed to work on any 
926                 dnl platform until the kernel cflags from MakefileProto are
927                 dnl known to configure
928                 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
929                 ;;
930         *)
931 AC_MSG_CHECKING(for definition of struct buf)
932 dnl save_CPPFLAGS="$CPPFLAGS"
933 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
934 AC_CACHE_VAL(ac_cv_have_struct_buf, [
935         ac_cv_have_struct_buf=no
936         AC_TRY_COMPILE(
937                 [#include <sys/buf.h>],
938                 [struct buf x;
939                 printf("%d\n", sizeof(x));],
940                 ac_cv_have_struct_buf=yes,)
941         ]
942 )
943 dnl CPPFLAGS="$save_CPPFLAGS"
944 AC_MSG_RESULT($ac_cv_have_struct_buf)
945 if test "$ac_cv_have_struct_buf" = yes; then
946         AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
947 fi
948 ;;
949 esac
950
951
952 AC_CACHE_VAL(ac_cv_sockaddr_len,
953 [
954 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
955 AC_TRY_COMPILE( [#include <sys/types.h>
956 #include <sys/socket.h>],
957 [struct sockaddr *a;
958 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
959 AC_MSG_RESULT($ac_cv_sockaddr_len)])
960 if test "$ac_cv_sockaddr_len" = "yes"; then
961    AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
962 fi
963 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
964         echo Skipping library tests because they confuse Irix.
965 else
966   AC_CHECK_FUNCS(socket)
967
968   if test "$ac_cv_func_socket" = no; then
969     for lib in socket inet; do
970         if test "$HAVE_SOCKET" != 1; then
971                 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
972         fi
973     done
974   fi
975   
976   AC_CHECK_FUNCS(connect)       
977
978   if test "$ac_cv_func_connect" = no; then
979     for lib in nsl; do
980         if test "$HAVE_CONNECT" != 1; then
981                 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
982         fi
983     done
984   fi
985
986   AC_CHECK_FUNCS(gethostbyname)
987   if test "$ac_cv_func_gethostbyname" = no; then
988         for lib in dns nsl resolv; do
989           if test "$HAVE_GETHOSTBYNAME" != 1; then
990             AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
991           fi
992         done    
993   fi    
994
995   dnl darwin wants it, aix hates it
996   AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
997   AC_TRY_COMPILE([
998   #include <stdlib.h>
999   #include <stdio.h>
1000   #include <sys/types.h>
1001   #include <sys/socket.h>
1002   #include <netinet/in.h>
1003   #include <arpa/inet.h>
1004   #include <arpa/nameser.h>
1005   #include <arpa/nameser_compat.h>
1006   #include <resolv.h>
1007   ], [static int i; i = 0;],
1008   [AC_MSG_RESULT(yes)
1009    AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H)],
1010   [AC_MSG_RESULT(no)
1011    ])
1012
1013   openafs_save_libs="$LIBS"
1014   AC_MSG_CHECKING([for res_search])
1015   AC_FUNC_RES_SEARCH
1016
1017   if test "$ac_cv_func_res_search" = no; then
1018       for lib in dns nsl resolv; do
1019         if test "$ac_cv_func_res_search" != yes; then
1020           LIBS="-l$lib $LIBS"
1021           AC_FUNC_RES_SEARCH
1022           LIBS="$openafs_save_libs"
1023         fi
1024       done    
1025       if test "$ac_cv_func_res_search" = yes; then
1026         LIB_res_search="-l$lib"       
1027         AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1028         AC_MSG_RESULT([yes, in lib$lib])
1029       else
1030         AC_MSG_RESULT(no)
1031       fi
1032   else
1033     AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1034     AC_MSG_RESULT(yes)
1035   fi
1036   
1037 fi
1038
1039 PTHREAD_LIBS=error
1040 if test "x$MKAFS_OSTYPE" = OBSD; then
1041         PTHREAD_LIBS="-pthread"
1042 fi
1043 if test "x$PTHREAD_LIBS" = xerror; then
1044         AC_CHECK_LIB(pthread, pthread_attr_init,
1045                 PTHREAD_LIBS="-lpthread")
1046 fi
1047 if test "x$PTHREAD_LIBS" = xerror; then
1048         AC_CHECK_LIB(pthreads, pthread_attr_init,
1049                 PTHREAD_LIBS="-lpthreads")
1050 fi
1051 if test "x$PTHREAD_LIBS" = xerror; then
1052         AC_CHECK_LIB(c_r, pthread_attr_init,
1053                 PTHREAD_LIBS="-lc_r")
1054 fi
1055 if test "x$PTHREAD_LIBS" = xerror; then
1056         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1057 fi
1058 if test "x$PTHREAD_LIBS" = xerror; then
1059         # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1060         AC_CHECK_LIB(pthread, pthread_attr_destroy,
1061                 PTHREAD_LIBS="-lpthread")
1062 fi
1063 if test "x$PTHREAD_LIBS" = xerror; then
1064         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1065 fi
1066 AC_SUBST(PTHREAD_LIBS)
1067
1068 HOST_CPU="$host_cpu"
1069
1070 if test "x$with_bsd_kernel_headers" != "x"; then
1071         BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1072 else
1073         BSD_KERNEL_PATH="/usr/src/sys"
1074 fi
1075
1076 if test "x$with_bsd_kernel_build" != "x"; then
1077         BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1078 else
1079         case $AFS_SYSNAME in
1080                 *_fbsd_4?)
1081                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC"
1082                         ;;
1083                 *_fbsd_*)
1084                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1085                         ;;
1086         esac
1087 fi
1088
1089 # Fast restart
1090 if test "$enable_supergroups" = "yes"; then
1091         AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1092 fi
1093
1094 if test "$enable_fast_restart" = "yes"; then
1095         AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
1096 fi
1097
1098 if test "$enable_bitmap_later" = "yes"; then
1099         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1100 fi
1101
1102 if test "$enable_demand_attach_fs" = "yes"; then
1103         AC_DEFINE(DEMAND_ATTACH_ENABLE, 1, [define if you want the demand attach fileserver])
1104         DEMAND_ATTACH="yes"
1105 else
1106         DEMAND_ATTACH="no"
1107 fi
1108 AC_SUBST(DEMAND_ATTACH)
1109
1110 if test "$enable_unix_sockets" = "yes"; then
1111         AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1112         USE_UNIX_SOCKETS="yes"
1113 else
1114         USE_UNIX_SOCKETS="no"
1115 fi
1116 AC_SUBST(USE_UNIX_SOCKETS)
1117
1118 if test "$enable_fast_restart" = "yes" &&
1119    test "$enable_demand_attach_fs" = "yes" ; then
1120         AC_MSG_ERROR([The Demand Attach and Fast Restart extensions are mutually exclusive.  Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless.])
1121         exit 1
1122 fi
1123
1124 if test "$enable_full_vos_listvol_switch" = "yes"; then
1125         AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
1126 fi
1127
1128 if test "$enable_bos_restricted_mode" = "yes"; then
1129         AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
1130 fi
1131
1132 if test "$enable_bos_new_config" = "yes"; then
1133         AC_DEFINE(BOS_NEW_CONFIG, 1, [define if you want to enable automatic renaming of BosConfig.new to BosConfig at startup])
1134 fi
1135
1136 if test "$enable_largefile_fileserver" = "yes"; then
1137         AC_DEFINE(AFS_LARGEFILE_ENV, 1, [define if you want large file fileserver])
1138 fi
1139
1140 if test "$enable_namei_fileserver" = "yes"; then
1141         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1142 fi
1143
1144 if test "$enable_afsdb" = "yes"; then
1145         LIB_AFSDB="$LIB_res_search"
1146         AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
1147 fi
1148
1149 dnl check for tivoli
1150 AC_MSG_CHECKING(for tivoli tsm butc support)
1151 XBSA_CFLAGS=""
1152 if test "$enable_tivoli_tsm" = "yes"; then
1153         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1154         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1155
1156         if test -r "$XBSADIR1/xbsa.h"; then
1157                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1158                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1159         elif test -r "$XBSADIR2/xbsa.h"; then
1160                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1161                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1162         else
1163                 AC_MSG_RESULT([no, missing xbsa.h header file])
1164         fi
1165 else
1166         AC_MSG_RESULT([no])
1167 fi
1168 AC_SUBST(XBSA_CFLAGS)
1169
1170 dnl checks for header files.
1171 AC_HEADER_STDC
1172 AC_HEADER_SYS_WAIT
1173 AC_HEADER_DIRENT
1174 AC_CHECK_HEADERS(stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h)
1175 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
1176 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h)
1177 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
1178 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h)
1179 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h)
1180
1181 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1182 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1183         case $AFS_SYSNAME in
1184         sgi_*)
1185                 HAVE_PAM="no"
1186                 ;;
1187         *)
1188                 HAVE_PAM="yes"
1189                 ;;
1190         esac
1191 else
1192         HAVE_PAM="no"
1193 fi
1194 AC_SUBST(HAVE_PAM)
1195
1196 if test "$enable_login" = yes; then
1197         BUILD_LOGIN="yes"
1198 else
1199         BUILD_LOGIN="no"
1200 fi
1201 AC_SUBST(BUILD_LOGIN)
1202
1203 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf strlcat strlcpy re_comp re_exec flock)
1204 AC_CHECK_FUNCS(setprogname getprogname sigaction mkstemp vsnprintf strerror strcasestr)
1205 AC_CHECK_FUNCS(setvbuf)
1206 AC_FUNC_SETVBUF_REVERSED
1207 AC_CHECK_FUNCS(regcomp regexec regerror)
1208 AC_MSG_CHECKING([for POSIX regex library])
1209 if test "$ac_cv_header_regex_h" = "yes" && \
1210         test "$ac_cv_func_regcomp" = "yes" && \
1211         test "$ac_cv_func_regexec" = "yes" && \
1212         test "$ac_cv_func_regerror" = "yes"; then
1213     AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1214     AC_MSG_RESULT(yes)
1215 else
1216     AC_MSG_RESULT(no)
1217 fi
1218
1219 AC_TYPE_SIGNAL
1220 AC_CHECK_TYPE(ssize_t, int)
1221 AC_CHECK_TYPE([sig_atomic_t], ,
1222     [AC_DEFINE([sig_atomic_t], [int],
1223         [Define to int if <signal.h> does not define.])],
1224 [#include <sys/types.h>
1225 #include <signal.h>])
1226 AC_SIZEOF_TYPE(long)
1227
1228 AC_MSG_CHECKING(size of time_t)
1229 AC_CACHE_VAL(ac_cv_sizeof_time_t,
1230 [AC_TRY_RUN([#include <stdio.h>
1231 #include <time.h>
1232 main()
1233 {
1234   FILE *f=fopen("conftestval", "w");
1235   if (!f) exit(1);
1236   fprintf(f, "%d\n", sizeof(time_t));
1237   exit(0);
1238 }], ac_cv_sizeof_time_t=`cat conftestval`, ac_cv_sizeof_time_t=0)
1239 ])
1240 AC_MSG_RESULT($ac_cv_sizeof_time_t)
1241 AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t)
1242
1243 AC_CHECK_FUNCS(timegm)
1244 AC_CHECK_FUNCS(daemon)
1245
1246 dnl Directory PATH handling
1247 if test "x$enable_transarc_paths" = "xyes"  ; then 
1248     afsconfdir=${afsconfdir=/usr/afs/etc}
1249     viceetcdir=${viceetcdir=/usr/vice/etc}
1250     afskerneldir=${afskerneldir=${viceetcdir}}
1251     afssrvbindir=${afssrvbindir=/usr/afs/bin}
1252     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1253     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1254     afsdbdir=${afsdbdir=/usr/afs/db}
1255     afslogsdir=${afslogsdir=/usr/afs/logs}
1256     afslocaldir=${afslocaldir=/usr/afs/local}
1257     afsbackupdir=${afsbackupdir=/usr/afs/backup}
1258     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1259 else 
1260     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1261     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1262     afskerneldir=${afskerneldir='${libdir}/openafs'}
1263     afssrvbindir=${afssrvbindir='${bindir}'}
1264     afssrvsbindir=${afssrvsbindir='${sbindir}'}
1265     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1266     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1267     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1268     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1269     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1270     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1271 fi
1272 AC_SUBST(afsconfdir)
1273 AC_SUBST(viceetcdir)
1274 AC_SUBST(afskerneldir)
1275 AC_SUBST(afssrvbindir)
1276 AC_SUBST(afssrvsbindir)
1277 AC_SUBST(afssrvlibexecdir)
1278 AC_SUBST(afsdbdir)
1279 AC_SUBST(afslogsdir)
1280 AC_SUBST(afslocaldir)
1281 AC_SUBST(afsbackupdir)
1282 AC_SUBST(afsbosconfigdir)
1283
1284 if test "x$enable_kernel_module" = "xyes"; then
1285 ENABLE_KERNEL_MODULE=libafs
1286 fi
1287
1288 AC_SUBST(AFS_SYSNAME)
1289 AC_SUBST(AFS_PARAM_COMMON)
1290 AC_SUBST(ENABLE_KERNEL_MODULE)
1291 AC_SUBST(LIB_AFSDB)
1292 AC_SUBST(LINUX_KERNEL_PATH)
1293 AC_SUBST(HOST_CPU)
1294 AC_SUBST(BSD_KERNEL_PATH)
1295 AC_SUBST(BSD_KERNEL_BUILD)
1296 AC_SUBST(LINUX_VERSION)
1297 AC_SUBST(MKAFS_OSTYPE)
1298 AC_SUBST(TOP_OBJDIR)
1299 AC_SUBST(TOP_SRCDIR)
1300 AC_SUBST(TOP_INCDIR)
1301 AC_SUBST(TOP_LIBDIR)
1302 AC_SUBST(DEST)
1303 AC_SUBST(DARWIN_INFOFILE)
1304 AC_SUBST(IRIX_BUILD_IP35)
1305
1306 OPENAFS_OSCONF
1307 OPENAFS_KRB5CONF
1308
1309 TOP_SRCDIR="${srcdir}/src"
1310 dnl
1311 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1312 dnl
1313 case $TOP_SRCDIR in
1314         /*)
1315                 ;;
1316         *)
1317                 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1318                 ;;
1319 esac
1320
1321 TOP_OBJDIR="${SRCDIR_PARENT}"
1322 TOP_INCDIR="${SRCDIR_PARENT}/include"
1323 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1324 if test "${DEST}x" = "x"; then
1325         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1326 fi
1327
1328 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1329 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1330 AC_SUBST(HELPER_SPLINT)
1331 AC_SUBST(HELPER_SPLINTCFG)
1332
1333 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
1334
1335 ])