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