Make OpenAFS 1.6.21.1
[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_BOTTOM([
9 #undef HAVE_RES_SEARCH
10 #undef STRUCT_SOCKADDR_HAS_SA_LEN
11 #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
12 # if ENDIANESS_IN_SYS_PARAM_H
13 #  ifndef KERNEL
14 #   include <sys/types.h>
15 #   include <sys/param.h>
16 #   if BYTE_ORDER == BIG_ENDIAN
17 #   define WORDS_BIGENDIAN 1
18 #   endif
19 #  else
20 #   if defined(AUTOCONF_FOUND_BIGENDIAN)
21 #    define WORDS_BIGENDIAN 1
22 #   else
23 #    undef WORDS_BIGENDIAN
24 #   endif
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(__BIG_ENDIAN__)
35 #  define WORDS_BIGENDIAN 1
36 # else
37 #  undef WORDS_BIGENDIAN
38 # endif
39 #endif
40 #ifdef UKERNEL
41 /*
42  * Always use 64-bit file offsets for UKERNEL code. Needed for UKERNEL stuff to
43  * play nice with some other interfaces like FUSE. We technically only would
44  * need to define this when building for such interfaces, but set it always to
45  * try and reduce potential confusion. 
46  */
47 #define _FILE_OFFSET_BITS 64
48 #define AFS_CACHE_VNODE_PATH
49 #endif
50
51 #undef AFS_NAMEI_ENV
52 #undef BITMAP_LATER
53 #undef FAST_RESTART
54 #undef DEFINED_FOR_EACH_PROCESS
55 #undef DEFINED_PREV_TASK
56 #undef EXPORTED_SYS_CALL_TABLE
57 #undef EXPORTED_IA32_SYS_CALL_TABLE
58 #undef IRIX_HAS_MEM_FUNCS
59 #undef RECALC_SIGPENDING_TAKES_VOID
60 #undef STRUCT_FS_HAS_FS_ROLLED
61 #undef ssize_t
62 #undef HAVE_ARPA_NAMESER_COMPAT_H
63 /* glue for RedHat kernel bug */
64 #undef ENABLE_REDHAT_BUILDSYS
65 #if defined(ENABLE_REDHAT_BUILDSYS) && defined(KERNEL) && defined(REDHAT_FIX)
66 #include "redhat-fix.h"
67 #endif])
68
69 AC_CANONICAL_HOST
70 SRCDIR_PARENT=`pwd`
71
72 #BOZO_SAVE_CORES pam
73
74 dnl System identity.
75 AC_ARG_WITH([afs-sysname],
76     [AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])])
77
78 dnl General feature options.
79 AC_ARG_ENABLE([pam],
80     [AS_HELP_STRING([--disable-pam], [disable PAM support])],
81     ,
82     [enable_pam="yes"])
83 AC_ARG_ENABLE([namei-fileserver],
84     [AS_HELP_STRING([--enable-namei-fileserver],
85         [force compilation of namei fileserver in preference to inode
86          fileserver])],
87     , 
88     [enable_namei_fileserver="default"])
89 AC_ARG_ENABLE([supergroups],
90     [AS_HELP_STRING([--enable-supergroups],
91         [enable support for nested pts groups])],
92     , 
93     [enable_supergroups="no"])
94 AC_ARG_ENABLE([bitmap-later],
95     [AS_HELP_STRING([--enable-bitmap-later],
96         [enable fast startup of file server by not reading bitmap till
97          needed])],
98     , 
99     [enable_bitmap_later="no"])
100 AC_ARG_ENABLE([unix-sockets],
101     [AS_HELP_STRING([--disable-unix-sockets],
102         [disable use of unix domain sockets for fssync (defaults to enabled)])],
103     ,
104     [enable_unix_sockets="yes"])
105 AC_ARG_ENABLE([tivoli-tsm],
106     [AS_HELP_STRING([--enable-tivoli-tsm],
107         [enable use of the Tivoli TSM API libraries for butc support])],
108     , 
109     [enable_tivoli_tsm="no"])
110 AC_ARG_ENABLE([pthreaded-ubik],
111     [AS_HELP_STRING([--enable-pthreaded-ubik],
112         [enable installation of pthreaded ubik applications (defaults to
113          disabled)])],
114     ,
115     [enable_pthreaded_ubik="no"])
116
117 dnl Kernel module build options.
118 AC_ARG_WITH([linux-kernel-headers],
119     [AS_HELP_STRING([--with-linux-kernel-headers=path],
120         [use the kernel headers found at path (optional, defaults to
121          /lib/modules/`uname -r`/build, then /lib/modules/`uname -r`/source,
122          then /usr/src/linux-2.4, and lastly /usr/src/linux)])])
123 AC_ARG_WITH([linux-kernel-build],
124     [AS_HELP_STRING([--with-linux-kernel-build=path],
125         [use the kernel build found at path(optional, defaults to 
126         kernel headers path)])])
127 AC_ARG_WITH([bsd-kernel-headers],
128     [AS_HELP_STRING([--with-bsd-kernel-headers=path],
129         [use the kernel headers found at path (optional, defaults to
130          /usr/src/sys)])])
131 AC_ARG_WITH([bsd-kernel-build],
132     [AS_HELP_STRING([--with-bsd-kernel-build=path], 
133         [use the kernel build found at path (optional, defaults to
134          KSRC/i386/compile/GENERIC)])])
135 AC_ARG_WITH([linux-kernel-packaging],
136     [AS_HELP_STRING([--with-linux-kernel-packaging],
137         [use standard naming conventions to aid Linux kernel build packaging
138          (disables MPS, sets the kernel module name to openafs.ko, and
139          installs kernel modules into the standard Linux location)])],
140     [AC_SUBST(LINUX_KERNEL_PACKAGING, "yes")
141      AC_SUBST(LINUX_LIBAFS_NAME, "openafs")],
142     [AC_SUBST(LINUX_LIBAFS_NAME, "libafs")])
143 AC_ARG_ENABLE([kernel-module],
144     [AS_HELP_STRING([--disable-kernel-module],
145         [disable compilation of the kernel module (defaults to enabled)])],
146     , 
147     [enable_kernel_module="yes"])
148 AC_ARG_ENABLE([redhat-buildsys],
149     [AS_HELP_STRING([--enable-redhat-buildsys],
150         [enable compilation of the redhat build system kernel (defaults to
151          disabled)])],
152     ,
153     [enable_redhat_buildsys="no"])
154
155 dnl Installation locations.
156 AC_ARG_ENABLE([transarc-paths],
157     [AS_HELP_STRING([--enable-transarc-paths],
158         [use Transarc style paths like /usr/afs and /usr/vice])],
159     , 
160     [enable_transarc_paths="no"])
161
162 dnl Optimization and debugging flags.
163 AC_ARG_ENABLE([strip-binaries],
164     [AS_HELP_STRING([--disable-strip-binaries],
165         [disable stripping of symbol information from binaries (defaults to
166          enabled)])],
167     ,
168     [enable_strip_binaries="maybe"])
169 AC_ARG_ENABLE([debug],
170     [AS_HELP_STRING([--enable-debug],
171         [enable compilation of the user space code with debugging information
172          (defaults to disabled)])],
173     , 
174     [enable_debug="no"])
175 AC_ARG_ENABLE([optimize],
176     [AS_HELP_STRING([--disable-optimize],
177         [disable optimization for compilation of the user space code (defaults
178          to enabled)])],
179     , 
180     [enable_optimize="yes"])
181 AC_ARG_ENABLE([warnings],
182     [AS_HELP_STRING([--enable-warnings],
183         [enable compilation warnings when building with gcc (defaults to
184          disabled)])],
185     ,
186     [enable_warnings="no"])
187 AC_ARG_ENABLE([checking],
188     [AS_HELP_STRING([--enable-checking],
189         [turn compilation warnings into errors when building with gcc (defaults
190          to disabled)])],
191     [enable_checking="$enableval"],
192     [enable_checking="no"])
193 AC_ARG_ENABLE([debug-kernel],
194     [AS_HELP_STRING([--enable-debug-kernel],
195         [enable compilation of the kernel module with debugging information
196          (defaults to disabled)])],
197     ,
198     [enable_debug_kernel="no"])
199 AC_ARG_ENABLE([optimize-kernel],
200     [AS_HELP_STRING([--disable-optimize-kernel],
201         [disable compilation of the kernel module with optimization (defaults
202          based on platform)])],
203     , 
204     [enable_optimize_kernel=""])
205 AC_ARG_ENABLE([debug-lwp],
206     [AS_HELP_STRING([--enable-debug-lwp],
207         [enable compilation of the LWP code with debugging information
208          (defaults to disabled)])],
209     ,
210     [enable_debug_lwp="no"])
211 AC_ARG_ENABLE([optimize-lwp],
212     [AS_HELP_STRING([--disable-optimize-lwp],
213         [disable optimization for compilation of the LWP code (defaults to
214          enabled)])],
215     ,
216     [enable_optimize_lwp="yes"])
217 AC_ARG_ENABLE([debug-pam],
218     [AS_HELP_STRING([--enable-debug-pam],
219         [enable compilation of the PAM code with debugging information
220          (defaults to disabled)])],
221     ,
222     [enable_debug_pam="no"])
223 AC_ARG_ENABLE([optimize-pam],
224     [AS_HELP_STRING([--disable-optimize-pam],
225         [disable optimization for compilation of the PAM code (defaults to
226          enabled)])],
227     ,
228     [enable_optimize_pam="yes"])
229 AC_ARG_ENABLE([linux-syscall-probing],
230     [AS_HELP_STRING([--enable-linux-syscall-probing],
231         [enable Linux syscall probing (defaults to autodetect)])],
232     ,
233     [enable_linux_syscall_probing="maybe"])
234     
235 AC_ARG_ENABLE([linux-d_splice_alias-extra-iput],
236     [AS_HELP_STRING([--enable-linux-d_splice_alias-extra-iput],
237         [Linux has introduced an incompatible behavior change in the
238          d_splice_alias function with no reliable way to determine which
239          behavior will be produced.  If Linux commit
240          51486b900ee92856b977eacfc5bfbe6565028070 (or equivalent) has been
241          applied to your kernel, disable this option.  If that commit is
242          not present in your kernel, enable this option.  We apologize
243          that you are required to know this about your running kernel.])],
244     [],
245     [case $system in
246     *-linux*)
247         AS_IF([test "x$LOGNAME" != "xbuildslave" &&
248             test "x$LOGNAME" != "xbuildbot"],
249             [AC_ERROR([Linux users must specify either
250                 --enable-linux-d_splice_alias-extra-iput or
251                 --disable-linux-d_splice_alias-extra-iput])],
252             [enable_linux_d_splice_alias_extra_iput="no"])
253      esac
254     ])
255 AC_ARG_WITH([xslt-processor],
256         AS_HELP_STRING([--with-xslt-processor=ARG],
257         [which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]),
258         XSLTPROC="$withval",
259         AC_CHECK_PROGS([XSLTPROC], [libxslt saxon xalan-j xsltproc], [echo]))
260
261 AC_ARG_WITH([html-xsl], 
262         AS_HELP_STRING([--with-html-xsl],
263         [build HTML documentation using Norman Walsh's DocBook XSL stylesheets (default is no; specify a path to chunk.xsl or docbook.xsl)]),
264         HTML_XSL="$withval",
265         HTML_XSL=no)
266
267 AC_ARG_WITH([docbook2pdf],
268         AS_HELP_STRING([--with-docbook2pdf=ARG],
269         [which Docbook to PDF utility to use (possible choices are: docbook2pdf, dblatex)]),
270         DOCBOOK2PDF="$withval",
271         AC_CHECK_PROGS([DOCBOOK2PDF], [docbook2pdf dblatex], [echo]))
272
273 enable_login="no"
274
275 dnl weird ass systems
276 dnl AC_AIX
277 AC_ISC_POSIX
278 dnl AC_MINIX
279
280 dnl Various compiler setup.
281 AC_TYPE_PID_T
282 AC_TYPE_SIZE_T
283
284 dnl Checks for programs.
285 AC_PROG_INSTALL
286 AC_PROG_LN_S
287 AC_PROG_RANLIB
288 AC_PROG_YACC
289 AM_PROG_LEX
290 dnl if we are flex, be lex-compatible
291 OPENAFS_LEX_IS_FLEX([AC_SUBST([LEX], ["$LEX -l"])])
292
293 OPENAFS_FORCE_ABS_INSTALL
294 OPENAFS_CHECK_BIGENDIAN
295 OPENAFS_PRINTF_TAKES_Z_LEN
296
297 AC_MSG_CHECKING(your OS)
298 system=$host
299 case $system in
300         *-linux*)
301
302                 MKAFS_OSTYPE=LINUX
303                 if test "x$enable_redhat_buildsys" = "xyes"; then
304                  AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
305                 fi
306                 if test "x$enable_kernel_module" = "xyes"; then
307                  if test "x$with_linux_kernel_headers" != "x"; then
308                    LINUX_KERNEL_PATH="$with_linux_kernel_headers"
309                  else
310                    for utsdir in "/lib/modules/`uname -r`/build" \
311                                  "/lib/modules/`uname -r`/source" \
312                                  "/usr/src/linux-2.4" \
313                                  "/usr/src/linux"; do
314                      LINUX_KERNEL_PATH="$utsdir"
315                      for utsfile in "include/generated/utsrelease.h" \
316                                     "include/linux/utsrelease.h" \
317                                     "include/linux/version.h" \
318                                     "include/linux/version-up.h"; do
319                        if grep "UTS_RELEASE" "$utsdir/$utsfile" >/dev/null 2>&1; then
320                          break 2
321                        fi
322                      done
323                    done
324                  fi
325                  if test "x$with_linux_kernel_build" != "x"; then
326                          LINUX_KERNEL_BUILD="$with_linux_kernel_build"
327                  else
328                    LINUX_KERNEL_BUILD=$LINUX_KERNEL_PATH
329                  fi
330                  if test -f "$LINUX_KERNEL_BUILD/include/generated/utsrelease.h"; then
331                    linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/generated/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
332                    LINUX_VERSION="$linux_kvers"
333                  else
334                    if test -f "$LINUX_KERNEL_BUILD/include/linux/utsrelease.h"; then
335                      linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
336                      LINUX_VERSION="$linux_kvers"
337                    else
338                      if test -f "$LINUX_KERNEL_BUILD/include/linux/version.h"; then
339                        linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
340                        if test "x$linux_kvers" = "x"; then
341                          if test -f "$LINUX_KERNEL_BUILD/include/linux/version-up.h"; then
342                            linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
343                            if test "x$linux_kvers" = "x"; then
344                              AC_MSG_ERROR(Linux headers lack version definition [2])
345                              exit 1
346                            else
347                              LINUX_VERSION="$linux_kvers"
348                            fi
349                          else
350                            AC_MSG_ERROR(Linux headers lack version definition)
351                            exit 1
352                          fi
353                        else
354                          LINUX_VERSION="$linux_kvers"
355                        fi
356                      else
357                        enable_kernel_module="no"
358                      fi
359                    fi
360                  fi
361                  if test ! -f "$LINUX_KERNEL_BUILD/include/generated/autoconf.h" &&
362                     test ! -f "$LINUX_KERNEL_BUILD/include/linux/autoconf.h"; then
363                      enable_kernel_module="no"
364                  fi
365                  if test "x$enable_kernel_module" = "xno"; then
366                   if test "x$with_linux_kernel_headers" != "x"; then
367                    AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
368                    exit 1
369                   else
370                    AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
371                   fi
372                  fi
373                  dnl do we need to determine SUBARCH from autoconf.h
374                  SUBARCH=default
375                 fi
376                 AC_MSG_RESULT(linux)
377                 if test "x$enable_kernel_module" = "xyes"; then
378                  case "$LINUX_VERSION" in
379                   2.2.*) AFS_SYSKVERS=22 ;;
380                   2.4.*) AFS_SYSKVERS=24 ;;
381                   [2.6.* | [3-9]* | [1-2][0-9]*]) AFS_SYSKVERS=26 ;;
382                   *) AC_MSG_ERROR(Couldn't guess your Linux version [2]) ;;
383                  esac
384                 fi
385                 ;;
386         *-solaris*)
387                 MKAFS_OSTYPE=SOLARIS
388                 AC_MSG_RESULT(sun4)
389                 SOLARIS_PATH_CC
390                 SOLARIS_CC_TAKES_XVECTOR_NONE
391                 AC_SUBST(SOLARIS_CC_KOPTS)
392                 SOLARIS_UFSVFS_HAS_DQRWLOCK
393                 SOLARIS_FS_HAS_FS_ROLLED
394                 SOLARIS_SOLOOKUP_TAKES_SOCKPARAMS
395                 SOLARIS_HAVE_VN_RENAMEPATH
396                 ;;
397         *-sunos*)
398                 MKAFS_OSTYPE=SUNOS
399                 enable_kernel_module=no
400                 AC_MSG_RESULT(sun4)
401                 ;;
402         *-hpux*)
403                 MKAFS_OSTYPE=HPUX
404                 AC_MSG_RESULT(hp_ux)
405                 if test -f "/usr/old/usr/include/ndir.h"; then
406                  AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
407                 fi
408                 ;;
409         *-irix*)
410                 if test -d /usr/include/sys/SN/SN1; then
411                  IRIX_BUILD_IP35="IP35"
412                 fi
413                 MKAFS_OSTYPE=IRIX
414                 AC_MSG_RESULT(sgi)
415                 ;;
416         *-aix*)
417                 MKAFS_OSTYPE=AIX
418                 AC_MSG_RESULT(rs_aix)
419                 ;;
420         arm-*-darwin*)
421                 MKAFS_OSTYPE=DARWIN
422                 AC_MSG_RESULT(arm_darwin)
423                 ;;
424         powerpc-*-darwin*)
425                 MKAFS_OSTYPE=DARWIN
426                 AC_MSG_RESULT(ppc_darwin)
427                 ;;
428         i386-*-darwin*)
429                 MKAFS_OSTYPE=DARWIN
430                 AC_MSG_RESULT(x86_darwin)
431                 ;;
432         x86_64-*-darwin*)
433                 MKAFS_OSTYPE=DARWIN
434                 AC_MSG_RESULT(x86_darwin)
435                 ;;
436         i386-*-freebsd*)
437                 MKAFS_OSTYPE=FBSD
438                 AC_MSG_RESULT(i386_fbsd)
439                 ;;
440         x86_64-*-freebsd*)
441                 MKAFS_OSTYPE=FBSD
442                 AC_MSG_RESULT(amd64_fbsd)
443                 ;;
444         *-netbsd*)
445                 MKAFS_OSTYPE=NBSD
446                 AC_MSG_RESULT(nbsd)
447                 ;;
448         x86_64-*-openbsd*)
449                 MKAFS_OSTYPE=OBSD
450                 AC_MSG_RESULT(amd64_obsd)
451                 ;;
452         i386-*-openbsd*)
453                 MKAFS_OSTYPE=OBSD
454                 AC_MSG_RESULT(i386_obsd)
455                 ;;
456         *-dragonfly*)
457                 MKAFS_OSTYPE=DFBSD
458                 AC_MSG_RESULT(i386_dfbsd)
459                 ;;
460         *)
461                 AC_MSG_RESULT($system)
462                 ;;
463 esac
464
465 if test "x$with_afs_sysname" != "x"; then
466         AFS_SYSNAME="$with_afs_sysname"
467 else
468         AC_MSG_CHECKING(your AFS sysname)
469         case $host in
470                 i?86-*-openbsd?.?)
471                         v=${host#*openbsd}
472                         vM=${v%.*}
473                         vm=${v#*.}
474                         AFS_SYSNAME="i386_obsd${vM}${vm}"
475                         ;;
476                 sparc64-*-openbsd?.?)
477                         v=${host#*openbsd}
478                         vM=${v%.*}
479                         vm=${v#*.}
480                         AFS_SYSNAME="sparc64_obsd${vM}${vm}"
481                         ;;
482                 x86_64-*-openbsd?.?)
483                         v=${host#*openbsd}
484                         vM=${v%.*}
485                         vm=${v#*.}
486                         AFS_SYSNAME="amd64_obsd${vM}${vm}"
487                         ;;
488                 i?86-*-freebsd*.*)
489                         v=${host#*freebsd}
490                         vM=${v%.*}
491                         vm=${v#*.}
492                         AFS_SYSNAME="i386_fbsd_${vM}${vm}"
493                         ;;
494                 x86_64-*-freebsd*.*)
495                         v=${host#*freebsd}
496                         vM=${v%.*}
497                         vm=${v#*.}
498                         AFS_SYSNAME="amd64_fbsd_${vM}${vm}"
499                         ;;
500                 i386-*-dragonfly?.*)
501                         v=${host#*dragonfly}
502                         vM=${v%.*}
503                         vm=${v#*.}
504                         AFS_SYSNAME="i386_dfbsd_${vM}${vm}"
505                         ;;
506                 i?86-*-netbsd*1.6[[M-Z]]*)
507                         AFS_SYSNAME="i386_nbsd20"
508                         ;;
509                 powerpc-*-netbsd*1.6[[M-Z]]*)
510                         AFS_SYSNAME="ppc_nbsd20"
511                         ;;
512                 *-*-netbsd*)
513                         arch=${host%%-unknown*}
514                         arch=$(echo $arch |sed -e 's/x86_64/amd64/g' \
515                                                -e 's/powerpc/ppc/g')
516                         v=${host#*netbsd}
517                         v=${v#*aout}
518                         v=${v#*ecoff}
519                         v=${v#*elf}
520                         vM=${v%%.*}
521                         vM=${vM%.*}
522                         v=${v#*.}
523                         vm=${v%%.*}
524                         vm=${vm%.*}
525                         vm=${vm%%[[_A-Z]]*}
526                         if test $vm -eq 99 ; then
527                                 vM=$((vM+1))
528                         fi
529                         if test $vM -gt 1 ; then
530                                 vm=0
531                         fi
532                         AFS_SYSNAME="${arch}_nbsd${vM}${vm}"
533                         ;;
534                 hppa*-hp-hpux11.0*)
535                         AFS_SYSNAME="hp_ux110"
536                         ;;
537                 hppa*-hp-hpux11.11)
538                         AFS_SYSNAME="hp_ux11i"
539                         ;;
540                 hppa*-hp-hpux11.23)
541                         AFS_SYSNAME="hp_ux1123"
542                         ;;
543                 ia64-hp-hpux11.22)
544                         AFS_SYSNAME="ia64_hpux1122"
545                         ;;
546                 ia64-hp-hpux*)
547                         AFS_SYSNAME="ia64_hpux1123"
548                         ;;
549                 hppa*-hp-hpux10*)
550                         AFS_SYSNAME="hp_ux102"
551                         ;;
552                 powerpc-apple-darwin7*)
553                         AFS_SYSNAME="ppc_darwin_70"
554                         OSXSDK="macosx10.3"
555                         ;;
556                 powerpc-apple-darwin8.*)
557                         AFS_SYSNAME="ppc_darwin_80"
558                         OSXSDK="macosx10.4"
559                         ;;
560                 i386-apple-darwin8.*)
561                         AFS_SYSNAME="x86_darwin_80"
562                         OSXSDK="macosx10.4"
563                         ;;
564                 powerpc-apple-darwin9.*)
565                         AFS_SYSNAME="ppc_darwin_90"
566                         OSXSDK="macosx10.5"
567                         ;;
568                 i386-apple-darwin9.*)
569                         AFS_SYSNAME="x86_darwin_90"
570                         OSXSDK="macosx10.5"
571                         ;;
572                 i?86-apple-darwin10.*)
573                         AFS_SYSNAME="x86_darwin_100"
574                         OSXSDK="macosx10.6"
575                         ;;
576                 x86_64-apple-darwin10.*)
577                         AFS_SYSNAME="x86_darwin_100"
578                         OSXSDK="macosx10.6"
579                         ;;
580                 arm-apple-darwin10.*)
581                         AFS_SYSNAME="arm_darwin_100"
582                         OSXSDK="iphoneos4.0"
583                         ;;
584                 x86_64-apple-darwin11.*)
585                         AFS_SYSNAME="x86_darwin_110"
586                         OSXSDK="macosx10.7"
587                         ;;
588                 i?86-apple-darwin11.*)
589                         AFS_SYSNAME="x86_darwin_110"
590                         OSXSDK="macosx10.7"
591                         ;;
592                 x86_64-apple-darwin12.*)
593                         AFS_SYSNAME="x86_darwin_120"
594                         OSXSDK="macosx10.8"
595                         ;;
596                 i?86-apple-darwin12.*)
597                         AFS_SYSNAME="x86_darwin_120"
598                         OSXSDK="macosx10.8"
599                         ;;
600                 x86_64-apple-darwin13.*)
601                         AFS_SYSNAME="x86_darwin_130"
602                         OSXSDK="macosx10.9"
603                         ;;
604                 i?86-apple-darwin13.*)
605                         AFS_SYSNAME="x86_darwin_130"
606                         OSXSDK="macosx10.9"
607                         ;;
608                 x86_64-apple-darwin14.*)
609                         AFS_SYSNAME="x86_darwin_140"
610                         OSXSDK="macosx10.10"
611                         ;;
612                 i?86-apple-darwin14.*)
613                         AFS_SYSNAME="x86_darwin_140"
614                         OSXSDK="macosx10.10"
615                         ;;
616                 x86_64-apple-darwin15.*)
617                         AFS_SYSNAME="x86_darwin_150"
618                         OSXSDK="macosx10.11"
619                         ;;
620                 i?86-apple-darwin15.*)
621                         AFS_SYSNAME="x86_darwin_150"
622                         OSXSDK="macosx10.11"
623                         ;;
624                 x86_64-apple-darwin16.*)
625                         AFS_SYSNAME="x86_darwin_160"
626                         OSXSDK="macosx10.12"
627                         ;;
628                 i?86-apple-darwin16.*)
629                         AFS_SYSNAME="x86_darwin_160"
630                         OSXSDK="macosx10.12"
631                         ;;
632                 sparc-sun-solaris2.5*)
633                         AFS_SYSNAME="sun4x_55"
634                         enable_login="yes"
635                         ;;
636                 sparc-sun-solaris2.6)
637                         AFS_SYSNAME="sun4x_56"
638                         ;;
639                 sparc-sun-solaris2.7)
640                         AFS_SYSNAME="sun4x_57"
641                         ;;
642                 sparc-sun-solaris2.8)
643                         AFS_SYSNAME="sun4x_58"
644                         ;;
645                 sparc-sun-solaris2.9)
646                         AFS_SYSNAME="sun4x_59"
647                         ;;
648                 sparc-sun-solaris2.10)
649                         AFS_SYSNAME="sun4x_510"
650                         ;;
651                 sparc-sun-solaris2.11)
652                         AFS_SYSNAME="sun4x_511"
653                         ;;
654                 sparc-sun-sunos4*)
655                         AFS_SYSNAME="sun4_413"
656                         enable_login="yes"
657                         ;;
658                 i386-pc-solaris2.7)
659                         AFS_SYSNAME="sunx86_57"
660                         ;;
661                 i386-pc-solaris2.8)
662                         AFS_SYSNAME="sunx86_58"
663                         ;;
664                 i386-pc-solaris2.9)
665                         AFS_SYSNAME="sunx86_59"
666                         ;;
667                 i386-pc-solaris2.10)
668                         AFS_SYSNAME="sunx86_510"
669                         ;;
670                 i386-pc-solaris2.11)
671                         AFS_SYSNAME="sunx86_511"
672                         ;;
673                 alpha*-dec-osf4.0*)
674                         AFS_SYSNAME="alpha_dux40"
675                         ;;
676                 alpha*-dec-osf5.0*)
677                         AFS_SYSNAME="alpha_dux50"
678                         ;;
679                 alpha*-dec-osf5.1*)
680                         AFS_SYSNAME="alpha_dux51"
681                         ;;
682                 mips-sgi-irix6.5)
683                         AFS_SYSNAME="sgi_65"
684                         ;;
685                 ia64-*-linux*)
686                         AFS_SYSNAME="ia64_linuxXX"
687                         ;;
688                 powerpc-*-linux*)
689                         AFS_SYSNAME="`/bin/arch`_linuxXX"
690                         ;;
691                 powerpc64-*-linux*)
692                         AFS_SYSNAME="ppc64_linuxXX"
693                         ;;
694                 alpha*-linux*)
695                         AFS_SYSNAME="alpha_linux_XX"
696                         ;;
697                 s390-*-linux*)
698                         AFS_SYSNAME="s390_linuxXX"
699                         ;;
700                 s390x-*-linux*)
701                         AFS_SYSNAME="s390x_linuxXX"
702                         ;;
703                 sparc-*-linux*)
704                         AFS_SYSNAME="`/bin/arch`_linuxXX"
705                         ;;
706                 sparc64-*-linux*)
707                         AFS_SYSNAME="sparc64_linuxXX"
708                         ;;
709                 i?86-*-linux*)
710                         AFS_SYSNAME="i386_linuxXX"
711                         ;;
712                 arm*-linux*)
713                         AFS_SYSNAME="arm_linuxXX"
714                         ;;
715                 parisc-*-linux-gnu|hppa-*-linux-gnu)
716                         AFS_SYSNAME="parisc_linuxXX"
717                         enable_pam="no"
718                         ;;
719                 power*-ibm-aix4.2*)
720                         AFS_SYSNAME="rs_aix42"
721                         enable_pam="no"
722                         ;;
723                 power*-ibm-aix4.3*)
724                         AFS_SYSNAME="rs_aix42"
725                         enable_pam="no"
726                         ;;
727                 power*-ibm-aix5.1*)
728                         AFS_SYSNAME="rs_aix51"
729                         enable_pam="no"
730                         ;;
731                 power*-ibm-aix5.2*)
732                         AFS_SYSNAME="rs_aix52"
733                         enable_pam="no"
734                         ;;
735                 power*-ibm-aix5.3*)
736                         AFS_SYSNAME="rs_aix53"
737                         enable_pam="no"
738                         ;;
739                 power*-ibm-aix6.1*)
740                         AFS_SYSNAME="rs_aix61"
741                         enable_pam="no"
742                         ;;
743                 x86_64-*-linux-gnu)
744                         AFS_SYSNAME="amd64_linuxXX"
745                         enable_pam="yes"
746                         ;;
747                 *)
748                         AC_MSG_ERROR(An AFS sysname is required)
749                         exit 1
750                         ;;
751         esac
752         case $AFS_SYSNAME in
753                 *_linux* | *_umlinux*)
754                         if test "x${AFS_SYSKVERS}" = "x"; then
755                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
756                         fi
757                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
758                         AFS_SYSNAME="$_AFS_SYSNAME"
759                         AC_TRY_KBUILD(
760                          [],
761                          [#ifndef CONFIG_USERMODE
762                           #error not UML
763                           #endif],
764                          ac_cv_linux_is_uml=yes,)
765                         if test "${ac_cv_linux_is_uml}" = yes; then
766                          _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
767                         fi
768                         AFS_SYSNAME="$_AFS_SYSNAME"
769                         ;;
770         esac
771         AC_MSG_RESULT($AFS_SYSNAME)
772 fi
773
774 case $AFS_SYSNAME in
775         *_darwin*)
776                 AC_CHECK_HEADERS(crt_externs.h)
777                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
778                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
779                 AC_SUBST(OSXSDK)
780                 ;;
781 esac
782
783 dnl Some hosts have a separate common param file they should include.  Figure
784 dnl out if we're on one of them now that we know the sysname.
785 case $AFS_SYSNAME in
786     *_nbsd15)   AFS_PARAM_COMMON=param.nbsd15.h  ;;
787     *_nbsd16)   AFS_PARAM_COMMON=param.nbsd16.h  ;;
788     *_nbsd20)   AFS_PARAM_COMMON=param.nbsd20.h  ;;
789     *_nbsd21)   AFS_PARAM_COMMON=param.nbsd21.h  ;;
790     *_nbsd30)   AFS_PARAM_COMMON=param.nbsd30.h  ;;
791     *_nbsd40)   AFS_PARAM_COMMON=param.nbsd40.h  ;;
792     *_nbsd50)   AFS_PARAM_COMMON=param.nbsd50.h  ;;
793     *_nbsd60)   AFS_PARAM_COMMON=param.nbsd60.h  ;;
794     *_obsd31)   AFS_PARAM_COMMON=param.obsd31.h  ;;
795     *_obsd32)   AFS_PARAM_COMMON=param.obsd32.h  ;;
796     *_obsd33)   AFS_PARAM_COMMON=param.obsd33.h  ;;
797     *_obsd34)   AFS_PARAM_COMMON=param.obsd34.h  ;;
798     *_obsd35)   AFS_PARAM_COMMON=param.obsd35.h  ;;
799     *_obsd36)   AFS_PARAM_COMMON=param.obsd36.h  ;;
800     *_obsd37)   AFS_PARAM_COMMON=param.obsd37.h  ;;
801     *_obsd38)   AFS_PARAM_COMMON=param.obsd38.h  ;;
802     *_obsd39)   AFS_PARAM_COMMON=param.obsd39.h  ;;
803     *_obsd40)   AFS_PARAM_COMMON=param.obsd40.h  ;;
804     *_obsd41)   AFS_PARAM_COMMON=param.obsd41.h  ;;
805     *_obsd42)   AFS_PARAM_COMMON=param.obsd42.h  ;;
806     *_obsd43)   AFS_PARAM_COMMON=param.obsd43.h  ;;
807     *_obsd44)   AFS_PARAM_COMMON=param.obsd44.h  ;;
808     *_obsd45)   AFS_PARAM_COMMON=param.obsd45.h  ;;
809     *_obsd46)   AFS_PARAM_COMMON=param.obsd46.h  ;;
810     *_obsd47)   AFS_PARAM_COMMON=param.obsd47.h  ;;
811     *_obsd48)   AFS_PARAM_COMMON=param.obsd48.h  ;;
812     *_obsd49)   AFS_PARAM_COMMON=param.obsd49.h  ;;
813     *_obsd50)   AFS_PARAM_COMMON=param.obsd50.h  ;;
814     *_obsd51)   AFS_PARAM_COMMON=param.obsd51.h  ;;
815     *_obsd52)   AFS_PARAM_COMMON=param.obsd52.h  ;;
816     *_obsd53)   AFS_PARAM_COMMON=param.obsd53.h  ;;
817     *_obsd54)   AFS_PARAM_COMMON=param.obsd54.h  ;;
818     *_linux22)  AFS_PARAM_COMMON=param.linux22.h ;;
819     *_linux24)  AFS_PARAM_COMMON=param.linux24.h ;;
820     *_linux26)  AFS_PARAM_COMMON=param.linux26.h ;;
821 # Linux alpha adds an extra underscore for no good reason.
822     *_linux_22) AFS_PARAM_COMMON=param.linux22.h ;;
823     *_linux_24) AFS_PARAM_COMMON=param.linux24.h ;;
824     *_linux_26) AFS_PARAM_COMMON=param.linux26.h ;;
825 esac
826
827 case $AFS_SYSNAME in *_linux* | *_umlinux*)
828
829                 # Add (sub-) architecture-specific paths needed by conftests
830                 case $AFS_SYSNAME  in
831                         *_umlinux26)
832                                 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
833                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
834                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
835                                 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
836                 esac
837
838                 if test "x$enable_kernel_module" = "xyes"; then
839                  if test "x$enable_debug_kernel" = "xno"; then
840                         LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
841                  fi
842                  OPENAFS_GCC_SUPPORTS_MARCH
843                  AC_SUBST(P5PLUS_KOPTS)
844                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
845                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
846                  OPENAFS_GCC_SUPPORTS_NO_COMMON
847                  OPENAFS_GCC_SUPPORTS_PIPE
848                  AC_SUBST(LINUX_GCC_KOPTS)
849
850                  dnl Setup the kernel build environment
851                  LINUX_KBUILD_USES_EXTRA_CFLAGS
852                  LINUX_KERNEL_COMPILE_WORKS
853
854                  dnl Operation signature checks
855                  AC_CHECK_LINUX_OPERATION([inode_operations], [follow_link], [no_nameidata],
856                                           [#include <linux/fs.h>],
857                                           [const char *],
858                                           [struct dentry *dentry, void **link_data])
859                  AC_CHECK_LINUX_OPERATION([inode_operations], [put_link], [no_nameidata],
860                                           [#include <linux/fs.h>],
861                                           [void],
862                                           [struct inode *inode, void *link_data])
863                  AC_CHECK_LINUX_OPERATION([inode_operations], [rename], [takes_flags],
864                                           [#include <linux/fs.h>],
865                                           [int],
866                                           [struct inode *oinode, struct dentry *odentry,
867                                                 struct inode *ninode, struct dentry *ndentry,
868                                                 unsigned int flags])
869
870                  dnl Check for header files
871                  AC_CHECK_LINUX_HEADER([cred.h])
872                  AC_CHECK_LINUX_HEADER([config.h])
873                  AC_CHECK_LINUX_HEADER([completion.h])
874                  AC_CHECK_LINUX_HEADER([exportfs.h])
875                  AC_CHECK_LINUX_HEADER([freezer.h])
876                  AC_CHECK_LINUX_HEADER([key-type.h])
877                  AC_CHECK_LINUX_HEADER([semaphore.h])
878                  AC_CHECK_LINUX_HEADER([seq_file.h])
879                  AC_CHECK_LINUX_HEADER([sched/signal.h])
880                  AC_CHECK_LINUX_HEADER([uaccess.h])
881
882                  dnl Type existence checks
883                  AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
884                  AC_CHECK_LINUX_TYPE([kuid_t], [uidgid.h])
885
886                  dnl Check for structure elements
887                  AC_CHECK_LINUX_STRUCT([address_space], [backing_dev_info], [fs.h])
888                  AC_CHECK_LINUX_STRUCT([address_space_operations],
889                                        [write_begin], [fs.h])
890                  AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
891                                        [backing-dev.h])
892                  AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h])
893                  AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
894                  AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h])
895                  AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h])
896                  AC_CHECK_LINUX_STRUCT([group_info], [gid], [cred.h])
897                  AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h])
898                  AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h])
899                  AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h])
900                  AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h])
901                  AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
902                  AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h])
903                  AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
904                  AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
905                  AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h])
906                  AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
907                  AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
908                  AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
909                  AC_CHECK_LINUX_STRUCT([inode_operations], [get_link], [fs.h])
910                  AC_CHECK_LINUX_STRUCT([key], [payload.value], [key.h])
911                  AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h])
912                  AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h])
913                  AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
914                  AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h])
915                  AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
916                  AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
917                  AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
918                  AC_CHECK_LINUX_STRUCT([super_block], [s_d_op], [fs.h])
919                  AC_CHECK_LINUX_STRUCT([super_operations], [alloc_inode],
920                                        [fs.h])
921                  AC_CHECK_LINUX_STRUCT([super_operations], [evict_inode],
922                                        [fs.h])
923                  AC_CHECK_LINUX_STRUCT([task_struct], [cred], [sched.h])
924                  AC_CHECK_LINUX_STRUCT([task_struct], [exit_state], [sched.h])
925                  AC_CHECK_LINUX_STRUCT([task_struct], [parent], [sched.h])
926                  AC_CHECK_LINUX_STRUCT([task_struct], [real_parent], [sched.h])
927                  AC_CHECK_LINUX_STRUCT([task_struct], [rlim], [sched.h])
928                  AC_CHECK_LINUX_STRUCT([task_struct], [sig], [sched.h])
929                  AC_CHECK_LINUX_STRUCT([task_struct], [sighand], [sched.h])
930                  AC_CHECK_LINUX_STRUCT([task_struct], [sigmask_lock], [sched.h])
931                  AC_CHECK_LINUX_STRUCT([task_struct], [tgid], [sched.h])
932                  AC_CHECK_LINUX_STRUCT([task_struct], [thread_info], [sched.h])
933                  AC_CHECK_LINUX_STRUCT([task_struct], [total_link_count], [sched.h])
934                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
935
936                  dnl Check for typed structure elements
937                  AC_CHECK_LINUX_TYPED_STRUCT([read_descriptor_t],
938                                              [buf], [fs.h])
939
940                  dnl Function existence checks
941
942                  AC_CHECK_LINUX_FUNC([__vfs_read],
943                                      [#include <linux/fs.h>],
944                                      [__vfs_read(NULL, NULL, 0, NULL);])
945                  AC_CHECK_LINUX_FUNC([bdi_init],
946                                      [#include <linux/backing-dev.h>],
947                                      [bdi_init(NULL);])
948                  AC_CHECK_LINUX_FUNC([super_setup_bdi],
949                                      [#include <linux/backing-dev.h>],
950                                      [struct super_block *sb;
951                                       super_setup_bdi(sb);])
952                  AC_CHECK_LINUX_FUNC([PageChecked],
953                                      [#include <linux/mm.h>
954 #include <linux/page-flags.h>],
955                                      [struct page *_page;
956                                       int bchecked = PageChecked(_page);])
957                  AC_CHECK_LINUX_FUNC([PageFsMisc],
958                                      [#include <linux/mm.h>
959 #include <linux/page-flags.h>],
960                                      [struct page *_page;
961                                       int bchecked = PageFsMisc(_page);])
962                  AC_CHECK_LINUX_FUNC([clear_inode],
963                                      [#include <linux/fs.h>],
964                                      [clear_inode(NULL);])
965                  AC_CHECK_LINUX_FUNC([current_kernel_time],
966                                      [#include <linux/time.h>],
967                                      [struct timespec s;
968                                       s = current_kernel_time();])
969                  AC_CHECK_LINUX_FUNC([d_alloc_anon],
970                                      [#include <linux/fs.h>],
971                                      [d_alloc_anon(NULL);])
972                  AC_CHECK_LINUX_FUNC([d_count],
973                                      [#include <linux/dcache.h>],
974                                      [d_count(NULL);])
975                  AC_CHECK_LINUX_FUNC([d_make_root],
976                                      [#include <linux/fs.h>],
977                                      [d_make_root(NULL);])
978                  AC_CHECK_LINUX_FUNC([do_sync_read],
979                                      [#include <linux/fs.h>],
980                                      [do_sync_read(NULL, NULL, 0, NULL);])
981                  AC_CHECK_LINUX_FUNC([file_dentry],
982                                      [#include <linux/fs.h>],
983                                      [struct file *f; file_dentry(f);])
984                  AC_CHECK_LINUX_FUNC([find_task_by_pid],
985                                      [#include <linux/sched.h>],
986                                      [pid_t p; find_task_by_pid(p);])
987                  AC_CHECK_LINUX_FUNC([generic_file_aio_read],
988                                      [#include <linux/fs.h>],
989                                      [generic_file_aio_read(NULL,NULL,0,0);])
990                  AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
991                                      [#include <linux/pagemap.h>],
992                                      [grab_cache_page_write_begin(NULL, 0, 0);])
993                  AC_CHECK_LINUX_FUNC([hlist_unhashed],
994                                      [#include <linux/list.h>],
995                                      [hlist_unhashed(0);])
996                  AC_CHECK_LINUX_FUNC([ihold],
997                                      [#include <linux/fs.h>],
998                                      [ihold(NULL);])
999                  AC_CHECK_LINUX_FUNC([i_size_read],
1000                                      [#include <linux/fs.h>],
1001                                      [i_size_read(NULL);])
1002                  AC_CHECK_LINUX_FUNC([inode_setattr],
1003                                      [#include <linux/fs.h>],
1004                                      [inode_setattr(NULL, NULL);])
1005                  AC_CHECK_LINUX_FUNC([iter_file_splice_write],
1006                                      [#include <linux/fs.h>],
1007                                      [iter_file_splice_write(NULL,NULL,NULL,0,0);])
1008                  AC_CHECK_LINUX_FUNC([kernel_setsockopt],
1009                                      [#include <linux/net.h>],
1010                                      [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
1011                  AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
1012                                      [#include <linux/fs.h>],
1013                                      [locks_lock_file_wait(NULL, NULL);])
1014                  AC_CHECK_LINUX_FUNC([page_follow_link],
1015                                      [#include <linux/fs.h>],
1016                                      [page_follow_link(0,0);])
1017                  AC_CHECK_LINUX_FUNC([page_get_link],
1018                                      [#include <linux/fs.h>],
1019                                      [page_get_link(0,0,0);])
1020                  AC_CHECK_LINUX_FUNC([page_offset],
1021                                      [#include <linux/pagemap.h>],
1022                                      [page_offset(NULL);])
1023                  AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
1024                                      [#include <linux/pagevec.h>],
1025                                      [__pagevec_lru_add_file(NULL);])
1026                  AC_CHECK_LINUX_FUNC([path_lookup],
1027                                      [#include <linux/fs.h>
1028                                       #include <linux/namei.h>],
1029                                      [path_lookup(NULL, 0, NULL);])
1030                  AC_CHECK_LINUX_FUNC([proc_create],
1031                                      [#include <linux/proc_fs.h>],
1032                                      [proc_create(NULL, 0, NULL, NULL);])
1033                  AC_CHECK_LINUX_FUNC([rcu_read_lock],
1034                                      [#include <linux/rcupdate.h>],
1035                                      [rcu_read_lock();])
1036                  AC_CHECK_LINUX_FUNC([set_nlink],
1037                                      [#include <linux/fs.h>],
1038                                      [set_nlink(NULL, 1);])
1039                  AC_CHECK_LINUX_FUNC([setattr_prepare],
1040                                      [#include <linux/fs.h>],
1041                                      [setattr_prepare(NULL, NULL);])
1042                  AC_CHECK_LINUX_FUNC([sock_create_kern],
1043                                      [#include <linux/net.h>],
1044                                      [sock_create_kern(0, 0, 0, NULL);])
1045                  AC_CHECK_LINUX_FUNC([sock_create_kern_ns],
1046                                      [#include <linux/net.h>],
1047                                      [sock_create_kern(NULL, 0, 0, 0, NULL);])
1048                  AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
1049                                      [#include <linux/splice.h>],
1050                                      [splice_direct_to_actor(NULL,NULL,NULL);])
1051                  AC_CHECK_LINUX_FUNC([default_file_splice_read],
1052                                      [#include <linux/fs.h>],
1053                                      [default_file_splice_read(NULL,NULL,NULL, 0, 0);])
1054                  AC_CHECK_LINUX_FUNC([svc_addr_in],
1055                                      [#include <linux/sunrpc/svc.h>],
1056                                      [svc_addr_in(NULL);])
1057                  AC_CHECK_LINUX_FUNC([zero_user_segments],
1058                                      [#include <linux/highmem.h>],
1059                                      [zero_user_segments(NULL, 0, 0, 0, 0);])
1060                  AC_CHECK_LINUX_FUNC([noop_fsync],
1061                                      [#include <linux/fs.h>],
1062                                      [void *address = &noop_fsync; printk("%p\n", address)];)
1063                  AC_CHECK_LINUX_FUNC([kthread_run],
1064                                      [#include <linux/kernel.h>
1065                                       #include <linux/kthread.h>],
1066                                      [kthread_run(NULL, NULL, "test");])
1067                  AC_CHECK_LINUX_FUNC([inode_nohighmem],
1068                                      [#include <linux/fs.h>],
1069                                      [inode_nohighmem(NULL);])
1070                  AC_CHECK_LINUX_FUNC([inode_lock],
1071                                      [#include <linux/fs.h>],
1072                                      [inode_lock(NULL);])
1073
1074                  dnl Consequences - things which get set as a result of the
1075                  dnl                above tests
1076                  AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
1077                        [AC_DEFINE([AFS_NONFSTRANS], 1,
1078                                   [define to disable the nfs translator])])
1079
1080                  dnl Assorted more complex tests
1081                  LINUX_AIO_NONVECTOR
1082                  LINUX_EXPORTS_PROC_ROOT_FS
1083                  LINUX_KMEM_CACHE_INIT
1084                  LINUX_HAVE_KMEM_CACHE_T
1085                  LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
1086                  LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID
1087                  LINUX_D_PATH_TAKES_STRUCT_PATH
1088                  LINUX_NEW_EXPORT_OPS
1089                  LINUX_INODE_SETATTR_RETURN_TYPE
1090                  LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
1091                  LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
1092                  LINUX_IOP_I_PERMISSION_TAKES_FLAGS
1093                  LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
1094                  LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
1095                  LINUX_DOP_D_DELETE_TAKES_CONST
1096                  LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
1097                  LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
1098                  LINUX_FOP_F_FSYNC_TAKES_DENTRY
1099                  LINUX_FOP_F_FSYNC_TAKES_RANGE
1100                  LINUX_AOP_WRITEBACK_CONTROL
1101                  LINUX_FS_STRUCT_FOP_HAS_SPLICE
1102                  LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
1103                  LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
1104                  LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
1105                  LINUX_KERNEL_SOCK_CREATE
1106                  LINUX_EXPORTS_KEY_TYPE_KEYRING
1107                  LINUX_KEYS_HAVE_SESSION_TO_PARENT
1108                  LINUX_NEED_RHCONFIG
1109                  LINUX_RECALC_SIGPENDING_ARG_TYPE
1110                  LINUX_EXPORTS_TASKLIST_LOCK
1111                  LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
1112                  LINUX_STATFS_TAKES_DENTRY
1113                  LINUX_REFRIGERATOR
1114                  LINUX_HAVE_TRY_TO_FREEZE
1115                  LINUX_LINUX_KEYRING_SUPPORT
1116                  LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
1117                  LINUX_KEY_ALLOC_NEEDS_CRED
1118                  LINUX_INIT_WORK_HAS_DATA
1119                  LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
1120                  LINUX_HAVE_DCACHE_LOCK
1121                  LINUX_D_COUNT_IS_INT
1122                  LINUX_IOP_GETATTR_TAKES_PATH_STRUCT
1123                  LINUX_IOP_MKDIR_TAKES_UMODE_T
1124                  LINUX_IOP_CREATE_TAKES_UMODE_T
1125                  LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
1126                  LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
1127                  LINUX_DENTRY_OPEN_TAKES_PATH
1128                  LINUX_D_ALIAS_IS_HLIST
1129                  LINUX_HLIST_ITERATOR_NO_NODE
1130                  LINUX_IOP_I_CREATE_TAKES_BOOL
1131                  LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
1132                  LINUX_IOP_LOOKUP_TAKES_UNSIGNED
1133                  LINUX_D_INVALIDATE_IS_VOID
1134
1135                  dnl If we are guaranteed that keyrings will work - that is
1136                  dnl  a) The kernel has keyrings enabled
1137                  dnl  b) The code is new enough to give us a key_type_keyring
1138                  dnl then we just disable syscall probing unless we've been
1139                  dnl told otherwise
1140
1141                  AS_IF([test "$enable_linux_syscall_probing" = "maybe"],
1142                    [AS_IF([test "$ac_cv_linux_keyring_support" = "yes" -a "$ac_cv_linux_exports_key_type_keyring" = "yes"],
1143                           [enable_linux_syscall_probing="no"],
1144                           [enable_linux_syscall_probing="yes"])
1145                  ])
1146
1147                  dnl Syscall probing needs a few tests of its own, and just
1148                  dnl won't work if the kernel doesn't export init_mm
1149                  AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1150                    LINUX_EXPORTS_INIT_MM
1151                    AS_IF([test "$ac_cv_linux_exports_init_mm" = "no"], [
1152                      AC_MSG_ERROR(
1153                        [Can't do syscall probing without exported init_mm])
1154                    ])
1155                    LINUX_EXPORTS_SYS_CHDIR
1156                    LINUX_EXPORTS_SYS_OPEN
1157                    AC_DEFINE(ENABLE_LINUX_SYSCALL_PROBING, 1,
1158                              [define to enable syscall table probes])
1159                  ])
1160
1161                  dnl Packaging and SMP build
1162                  if test "x$with_linux_kernel_packaging" != "xyes" ; then
1163                    LINUX_WHICH_MODULES
1164                  else
1165                    AC_SUBST(MPS,'SP')
1166                  fi
1167
1168                  dnl Syscall probing
1169                  if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
1170                    AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1171                      AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
1172                    ])
1173                    ac_cv_linux_exports_sys_call_table=no
1174                    if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
1175                      ac_cv_linux_exports_ia32_sys_call_table=yes
1176                    fi
1177                  else
1178                    LINUX_EXPORTS_KALLSYMS_ADDRESS
1179                    LINUX_EXPORTS_KALLSYMS_SYMBOL
1180                    LINUX_EXPORTS_SYS_CALL_TABLE
1181                    LINUX_EXPORTS_IA32_SYS_CALL_TABLE
1182                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
1183                          linux_syscall_method=none
1184                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
1185                             linux_syscall_method=scan
1186                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
1187                                linux_syscall_method=scan_with_kallsyms_address
1188                             fi
1189                          fi
1190                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
1191                             linux_syscall_method=kallsyms_symbol
1192                          fi
1193                          if test "x$linux_syscall_method" = "xnone"; then
1194                             AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
1195                             linux_syscall_method=scan
1196                          fi
1197                    fi
1198                  fi
1199                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
1200                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
1201                  fi
1202                  if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
1203                   AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
1204                  fi
1205                  if test "x$ac_cv_linux_func_page_get_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1206                   AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1207                  else
1208                   AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1209                  fi
1210                  if test "x$ac_cv_linux_func_page_get_link" != "xyes" -a "x$ac_cv_linux_struct_inode_operations_has_get_link" = "xyes"; then
1211                         AC_MSG_ERROR([Your kernel does not use follow_link - not supported without symlink cache API])
1212                         exit 1
1213                  fi
1214                 :
1215                 fi
1216                 if test "x$enable_linux_d_splice_alias_extra_iput" = xyes; then
1217                     AC_DEFINE(D_SPLICE_ALIAS_LEAK_ON_ERROR, 1, [for internal use])
1218                 fi
1219 dnl Linux-only, but just enable always.
1220                 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1221 esac
1222
1223 AC_CACHE_CHECK([if struct sockaddr has sa_len field],
1224     [ac_cv_sockaddr_len],
1225     [AC_TRY_COMPILE( [#include <sys/types.h>
1226 #include <sys/socket.h>],
1227                      [struct sockaddr *a; a->sa_len=0;],
1228                      [ac_cv_sockaddr_len=yes],
1229                      [ac_cv_sockaddr_len=no])
1230 ])
1231 AS_IF([test "$ac_cv_sockaddr_len" = "yes"],
1232       [AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1,
1233                  [define if you struct sockaddr sa_len])])
1234
1235 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1236         echo Skipping library tests because they confuse Irix.
1237 else
1238   AC_SEARCH_LIBS([socket], [socket inet])
1239   AC_SEARCH_LIBS([connect], [nsl])
1240   AC_SEARCH_LIBS([gethostbyname], [dns nsl resolv])
1241
1242   dnl darwin wants it, aix hates it
1243   AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1244   AC_TRY_COMPILE([
1245   #include <stdlib.h>
1246   #include <stdio.h>
1247   #include <sys/types.h>
1248   #include <sys/socket.h>
1249   #include <netinet/in.h>
1250   #include <arpa/inet.h>
1251   #include <arpa/nameser.h>
1252   #include <arpa/nameser_compat.h>
1253   #include <resolv.h>
1254   ], [static int i; i = 0;],
1255   [AC_MSG_RESULT(yes)
1256    AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1257   [AC_MSG_RESULT(no)
1258    ])
1259
1260   openafs_save_libs="$LIBS"
1261   AC_MSG_CHECKING([for res_search])
1262   AC_FUNC_RES_SEARCH
1263
1264   if test "$ac_cv_func_res_search" = no; then
1265       for lib in dns nsl resolv; do
1266         if test "$ac_cv_func_res_search" != yes; then
1267           LIBS="-l$lib $LIBS"
1268           AC_FUNC_RES_SEARCH
1269           LIBS="$openafs_save_libs"
1270         fi
1271       done    
1272       if test "$ac_cv_func_res_search" = yes; then
1273         LIB_AFSDB="-l$lib"
1274         AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1275         AC_MSG_RESULT([yes, in lib$lib])
1276       else
1277         AC_MSG_RESULT(no)
1278       fi
1279   else
1280     AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1281     AC_MSG_RESULT(yes)
1282   fi
1283   
1284 fi
1285
1286 AC_CHECK_RESOLV_RETRANS
1287
1288 AC_CACHE_CHECK([for setsockopt(, SOL_IP, IP_RECVERR)],
1289     [ac_cv_setsockopt_iprecverr],
1290     [AC_TRY_COMPILE( [
1291 #include <sys/types.h>
1292 #include <sys/socket.h>
1293 #include <netinet/in.h>],
1294 [int on=1;
1295 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));],
1296         [ac_cv_setsockopt_iprecverr=yes],
1297         [ac_cv_setsockopt_iprecverr=no])])
1298
1299 AS_IF([test "$ac_cv_setsockopt_iprecverr" = "yes"],
1300       [AC_DEFINE(ADAPT_PMTU_RECVERR, 1,
1301                  [define if asynchronous socket errors can be received])])
1302
1303 PTHREAD_LIBS=error
1304 if test "x$MKAFS_OSTYPE" = OBSD; then
1305         PTHREAD_LIBS="-pthread"
1306 fi
1307 if test "x$MKAFS_OSTYPE" = xDFBSD; then
1308         PTHREAD_LIBS="-pthread"
1309 fi
1310 if test "x$PTHREAD_LIBS" = xerror; then
1311         AC_CHECK_LIB(pthread, pthread_attr_init,
1312                 PTHREAD_LIBS="-lpthread")
1313 fi
1314 if test "x$PTHREAD_LIBS" = xerror; then
1315         AC_CHECK_LIB(pthreads, pthread_attr_init,
1316                 PTHREAD_LIBS="-lpthreads")
1317 fi
1318 if test "x$PTHREAD_LIBS" = xerror; then
1319         AC_CHECK_LIB(c_r, pthread_attr_init,
1320                 PTHREAD_LIBS="-lc_r")
1321 fi
1322 if test "x$PTHREAD_LIBS" = xerror; then
1323         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1324 fi
1325 if test "x$PTHREAD_LIBS" = xerror; then
1326         # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1327         AC_CHECK_LIB(pthread, pthread_attr_destroy,
1328                 PTHREAD_LIBS="-lpthread")
1329 fi
1330 if test "x$PTHREAD_LIBS" = xerror; then
1331         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1332 fi
1333 AC_SUBST(PTHREAD_LIBS)
1334
1335 HOST_CPU="$host_cpu"
1336
1337 if test "x$with_bsd_kernel_headers" != "x"; then
1338         BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1339 else
1340         BSD_KERNEL_PATH="/usr/src/sys"
1341 fi
1342
1343 if test "x$with_bsd_kernel_build" != "x"; then
1344         BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1345 else
1346         case $AFS_SYSNAME in
1347                 *_fbsd_*)
1348                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1349                         ;;
1350                 *_nbsd*)
1351                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/arch/${HOST_CPU}/compile/GENERIC"
1352         esac
1353 fi
1354
1355 # Fast restart
1356 if test "$enable_supergroups" = "yes"; then
1357         AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1358 fi
1359
1360 if test "$enable_bitmap_later" = "yes"; then
1361         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1362 fi
1363
1364 if test "$enable_unix_sockets" = "yes"; then
1365         AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1366         USE_UNIX_SOCKETS="yes"
1367 else
1368         USE_UNIX_SOCKETS="no"
1369 fi
1370 AC_SUBST(USE_UNIX_SOCKETS)
1371
1372 dnl if test "$ac_cv_setsockopt_iprecverr" = "yes"; then
1373 dnl     AC_DEFINE(ADAPT_PMTU, 1, [define if you want to decode icmp unreachable packets to discover path mtu])
1374 dnl fi
1375
1376 if test "$enable_namei_fileserver" = "yes"; then
1377         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1378         VFSCK=""
1379 else
1380         if test "$enable_namei_fileserver" = "default"; then
1381                 case $host in
1382                         *-solaris2.10*)
1383                                 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1384                                 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1385                                 VFSCK=""
1386                                 ;;
1387                         *-solaris2.11*)
1388                                 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1389                                 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1390                                 VFSCK=""
1391                                 ;;
1392                         *)
1393                                 VFSCK="vfsck"
1394                                 ;;
1395                 esac
1396         else
1397                 VFSCK="vfsck"
1398         fi
1399 fi
1400
1401 dnl check for tivoli
1402 AC_MSG_CHECKING(for tivoli tsm butc support)
1403 XBSA_CFLAGS=""
1404 if test "$enable_tivoli_tsm" = "yes"; then
1405         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1406         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1407         XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1408         XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1409         XBSADIR5=/usr/tivoli/tsm/client/api/bin64/sample
1410         XBSADIR6=/opt/tivoli/tsm/client/api/bin64/sample
1411
1412         if test -r "$XBSADIR3/dsmapifp.h"; then
1413                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1414                 XBSA_XLIBS="-ldl"
1415                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1416         elif test -r "$XBSADIR4/dsmapifp.h"; then
1417                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1418                 XBSA_XLIBS="-ldl"
1419                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1420         elif test -r "$XBSADIR5/dsmapifp.h"; then
1421                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR5"
1422                 XBSA_XLIBS="-ldl"
1423                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1424         elif test -r "$XBSADIR6/dsmapifp.h"; then
1425                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR6"
1426                 XBSA_XLIBS="-ldl"
1427                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1428         elif test -r "$XBSADIR1/xbsa.h"; then
1429                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1430                 XBSA_XLIBS=""
1431                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1432         elif test -r "$XBSADIR2/xbsa.h"; then
1433                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1434                 XBSA_XLIBS=""
1435                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1436         else
1437                 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1438         fi
1439 else
1440         AC_MSG_RESULT([no])
1441 fi
1442 AC_SUBST(XBSA_CFLAGS)
1443 AC_SUBST(XBSA_XLIBS) 
1444
1445 dnl checks for header files.
1446 AC_HEADER_STDC
1447 AC_HEADER_SYS_WAIT
1448 AC_HEADER_DIRENT
1449 AC_CHECK_HEADERS([ \
1450         curses.h \
1451         direct.h \
1452         fcntl.h \
1453         grp.h \
1454         mntent.h \
1455         ncurses.h \
1456         ncurses/ncurses.h \
1457         netinet/in.h \
1458         netdb.h \
1459         regex.h \
1460         search.h \
1461         security/pam_modules.h \
1462         signal.h \
1463         stdio_ext.h \
1464         stdlib.h \
1465         string.h \
1466         strings.h \
1467         sys/bitypes.h \
1468         sys/fcntl.h \
1469         sys/file.h \
1470         sys/fs_types.h \
1471         sys/fstyp.h \
1472         sys/ipc.h \
1473         sys/mntent.h \
1474         sys/mnttab.h \
1475         sys/mount.h \
1476         sys/pag.h \
1477         sys/param.h \
1478         sys/resource.h \
1479         sys/statfs.h \
1480         sys/statvfs.h \
1481         sys/time.h \
1482         sys/vfs.h \
1483         termios.h \
1484         ucontext.h \
1485         unistd.h \
1486         windows.h \
1487 ])
1488
1489 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1490
1491 AC_CHECK_TYPES([fsblkcnt_t],,,[
1492 #include <sys/types.h>
1493 #ifdef HAVE_SYS_BITYPES_H
1494 #include <sys/bitypes.h>
1495 #endif
1496 #ifdef HAVE_SYS_STATFS_H
1497 #include <sys/statfs.h>
1498 #endif
1499 #ifdef HAVE_SYS_STATVFS_H
1500 #include <sys/statvfs.h>
1501 #endif
1502 ])
1503
1504 dnl see what struct stat has for timestamps
1505 AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
1506
1507 OPENAFS_TEST_PACKAGE(libintl,[#include <libintl.h>],[-lintl],,,INTL)
1508
1509 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1510 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1511         case $AFS_SYSNAME in
1512         sgi_*)
1513                 HAVE_PAM="no"
1514                 ;;
1515         *)
1516                 HAVE_PAM="yes"
1517                 ;;
1518         esac
1519 else
1520         HAVE_PAM="no"
1521 fi
1522 AC_SUBST(HAVE_PAM)
1523
1524 if test "$enable_login" = yes; then
1525         BUILD_LOGIN="yes"
1526 else
1527         BUILD_LOGIN="no"
1528 fi
1529 AC_SUBST(BUILD_LOGIN)
1530
1531 AC_CHECK_FUNCS([ \
1532         daemon \
1533         flock \
1534         fseeko64 \
1535         ftello64 \
1536         getcwd \
1537         getprogname \
1538         getrlimit \
1539         mkstemp \
1540         poll \
1541         pread \
1542         preadv \
1543         preadv64 \
1544         pwrite \
1545         pwritev \
1546         pwritev64 \
1547         regcomp \
1548         regerror \
1549         regexec \
1550         setenv \
1551         setprogname \
1552         setvbuf \
1553         sigaction \
1554         snprintf \
1555         strcasestr \
1556         strerror \
1557         strlcat \
1558         strlcpy \
1559         strnlen \
1560         timegm \
1561         tsearch \
1562         unsetenv \
1563         vsnprintf \
1564         vsyslog \
1565 ])
1566
1567 OPENAFS_CURSES()
1568
1569 case $AFS_SYSNAME in
1570 *hp_ux* | *hpux*)
1571    AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.])
1572    ;;
1573 *)
1574    AC_MSG_CHECKING([for positional I/O])
1575    if test "$ac_cv_func_pread" = "yes" && \
1576            test "$ac_cv_func_pwrite" = "yes"; then
1577       AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()])
1578       AC_MSG_RESULT(yes)
1579    else
1580      AC_MSG_RESULT(no)
1581    fi
1582    AC_MSG_CHECKING([for vectored positional I/O])
1583    AS_IF([test "$ac_cv_func_preadv" = "yes" -a \
1584                "$ac_cv_func_pwritev" = "yes" -a \
1585                "$ac_cv_func_preadv64" = "yes" -a \
1586                "$ac_cv_func_pwritev64" = "yes"],
1587          [AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()])
1588           AC_MSG_RESULT(yes)],
1589          [AC_MSG_RESULT(no)])
1590    ;;
1591 esac
1592
1593 AC_MSG_CHECKING([for POSIX regex library])
1594 if test "$ac_cv_header_regex_h" = "yes" && \
1595         test "$ac_cv_func_regcomp" = "yes" && \
1596         test "$ac_cv_func_regexec" = "yes" && \
1597         test "$ac_cv_func_regerror" = "yes"; then
1598     AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1599     AC_MSG_RESULT(yes)
1600 else
1601     AC_MSG_RESULT(no)
1602 fi
1603
1604 AC_TYPE_SIGNAL
1605 AC_CHECK_SIZEOF(void *)
1606 AC_CHECK_SIZEOF(unsigned long long)
1607 AC_CHECK_SIZEOF(unsigned long)
1608 AC_CHECK_SIZEOF(unsigned int)
1609 AC_TYPE_INTPTR_T
1610 AC_TYPE_UINTPTR_T
1611 AC_TYPE_SSIZE_T
1612 AC_CHECK_TYPE([sig_atomic_t],[],
1613     [AC_DEFINE([sig_atomic_t], [int],
1614         [Define to int if <signal.h> does not define.])],
1615 [#include <sys/types.h>
1616 #include <signal.h>])
1617 AC_CHECK_TYPE([socklen_t],[],
1618     [AC_DEFINE([socklen_t], [int],
1619         [Define to int if <sys/socket.h> does not define.])],
1620 [#include <sys/types.h>
1621 #include <sys/socket.h>])
1622 AC_CHECK_TYPES(off64_t)
1623 AC_SIZEOF_TYPE(long)
1624
1625 AC_HEADER_PAM_CONST
1626
1627
1628 dnl Directory PATH handling
1629 if test "x$enable_transarc_paths" = "xyes"  ; then 
1630     afsconfdir=${afsconfdir=/usr/afs/etc}
1631     viceetcdir=${viceetcdir=/usr/vice/etc}
1632     afskerneldir=${afskerneldir=${viceetcdir}}
1633     afssrvbindir=${afssrvbindir=/usr/afs/bin}
1634     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1635     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1636     afsdbdir=${afsdbdir=/usr/afs/db}
1637     afslogsdir=${afslogsdir=/usr/afs/logs}
1638     afslocaldir=${afslocaldir=/usr/afs/local}
1639     afsbackupdir=${afsbackupdir=/usr/afs/backup}
1640     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1641     afsdatadir=${afsdatadir=/usr/vice/etc}
1642 else 
1643     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1644     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1645     afskerneldir=${afskerneldir='${libdir}/openafs'}
1646     afssrvbindir=${afssrvbindir='${bindir}'}
1647     afssrvsbindir=${afssrvsbindir='${sbindir}'}
1648     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1649     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1650     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1651     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1652     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1653     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1654     afsdatadir=${afsdatadir='${datadir}/openafs'}
1655 fi
1656 AC_SUBST(afsconfdir)
1657 AC_SUBST(viceetcdir)
1658 AC_SUBST(afskerneldir)
1659 AC_SUBST(afssrvbindir)
1660 AC_SUBST(afssrvsbindir)
1661 AC_SUBST(afssrvlibexecdir)
1662 AC_SUBST(afsdbdir)
1663 AC_SUBST(afslogsdir)
1664 AC_SUBST(afslocaldir)
1665 AC_SUBST(afsbackupdir)
1666 AC_SUBST(afsbosconfigdir)
1667 AC_SUBST(afsdatadir)
1668
1669 if test "x$enable_kernel_module" = "xyes"; then
1670 ENABLE_KERNEL_MODULE=libafs
1671 fi
1672
1673 if test "x$enable_pthreaded_ubik" = "xyes"; then
1674 ENABLE_PTHREADED_UBIK=yes
1675 fi
1676
1677 AC_SUBST(VFSCK)
1678 AC_SUBST(AFS_SYSNAME)
1679 AC_SUBST(AFS_PARAM_COMMON)
1680 AC_SUBST(ENABLE_KERNEL_MODULE)
1681 AC_SUBST(ENABLE_PTHREADED_UBIK)
1682 AC_SUBST(LIB_AFSDB)
1683 AC_SUBST(LINUX_KERNEL_PATH)
1684 AC_SUBST(LINUX_KERNEL_BUILD)
1685 AC_SUBST(HOST_CPU)
1686 AC_SUBST(BSD_KERNEL_PATH)
1687 AC_SUBST(BSD_KERNEL_BUILD)
1688 AC_SUBST(LINUX_VERSION)
1689 AC_SUBST(MKAFS_OSTYPE)
1690 AC_SUBST(TOP_OBJDIR)
1691 AC_SUBST(TOP_SRCDIR)
1692 AC_SUBST(TOP_INCDIR)
1693 AC_SUBST(TOP_LIBDIR)
1694 AC_SUBST(DEST)
1695 AC_SUBST(DARWIN_INFOFILE)
1696 AC_SUBST(IRIX_BUILD_IP35)
1697 AC_SUBST(HTML_XSL)
1698 AC_SUBST(XSLTPROC)
1699 AC_SUBST(DOCBOOK2PDF)
1700
1701 OPENAFS_OSCONF
1702 OPENAFS_FUSE
1703
1704 TOP_SRCDIR="${srcdir}/src"
1705 dnl
1706 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1707 dnl
1708 case $TOP_SRCDIR in
1709         /*)
1710                 ;;
1711         *)
1712                 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1713                 ;;
1714 esac
1715
1716 TOP_OBJDIR="${SRCDIR_PARENT}"
1717 TOP_INCDIR="${SRCDIR_PARENT}/include"
1718 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1719 if test "${DEST}x" = "x"; then
1720         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1721 fi
1722
1723 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1724 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1725 AC_SUBST(HELPER_SPLINT)
1726 AC_SUBST(HELPER_SPLINTCFG)
1727
1728 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
1729
1730
1731 dnl Check to see if crypt lives in a different library
1732 AC_CHECK_LIB(crypt, crypt, LIB_crypt="-lcrypt")
1733 AC_SUBST(LIB_crypt)
1734
1735 dnl Check to see if the compiler support labels in structs
1736 AC_MSG_CHECKING(for label support in structs)
1737 AC_TRY_COMPILE([], [
1738 extern void osi_UFSOpen(void);
1739 struct labeltest {
1740    void (*open) (void);
1741 };
1742 struct labeltest struct_labeltest = {
1743    .open       = osi_UFSOpen,
1744 }
1745 ],
1746 [AC_MSG_RESULT(yes)
1747  AC_DEFINE(HAVE_STRUCT_LABEL_SUPPORT, 1, [Define to 1 if your compiler supports labels in structs.])
1748 ],
1749 [AC_MSG_RESULT(no)
1750 ])
1751
1752 ])
1753
1754 AC_DEFUN([SUMMARY], [
1755     # Print a configuration summary
1756 echo 
1757 echo "**************************************"
1758 echo configure summary
1759 echo
1760 AS_IF([test $LIB_curses],[
1761 echo "LIB_curses :                $LIB_curses" ],[
1762 echo "XXX LIB_curses  not found! not building scout and afsmonitor!"
1763 ])
1764 echo 
1765 echo "**************************************"
1766 ])