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