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