LINUX: add afs_d_alias_lock & _unlock compat wrappers
[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 /* glue for RedHat kernel bug */
63 #undef ENABLE_REDHAT_BUILDSYS
64 #if defined(ENABLE_REDHAT_BUILDSYS) && defined(KERNEL) && defined(REDHAT_FIX)
65 # include "redhat-fix.h"
66 #endif])
67
68 AC_CANONICAL_HOST
69 SRCDIR_PARENT=`pwd`
70
71 #BOZO_SAVE_CORES pam
72
73 dnl System identity.
74 AC_ARG_WITH([afs-sysname],
75     [AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])
76 ])
77
78 dnl General feature options.
79 AC_ARG_ENABLE([namei-fileserver],
80     [AS_HELP_STRING([--enable-namei-fileserver],
81         [force compilation of namei fileserver in preference to inode
82          fileserver])],
83     [],
84     [enable_namei_fileserver="default"])
85 AC_ARG_ENABLE([supergroups],
86     [AS_HELP_STRING([--enable-supergroups],
87         [enable support for nested pts groups])],
88     [],
89     [enable_supergroups="no"])
90 AC_ARG_ENABLE([bitmap-later],
91     [AS_HELP_STRING([--enable-bitmap-later],
92         [enable fast startup of file server by not reading bitmap till
93          needed])],
94     [AS_IF([test x"$withval" = xyes],
95         [AC_MSG_WARN([bitmap-later is only used by non-demand-attach
96             fileservers.  Please migrate to demand-attach instead.])])],
97     [enable_bitmap_later="no"])
98 AC_ARG_ENABLE([unix-sockets],
99     [AS_HELP_STRING([--disable-unix-sockets],
100         [disable use of unix domain sockets for fssync (defaults to enabled)])],
101     [],
102     [enable_unix_sockets="yes"])
103 AC_ARG_ENABLE([tivoli-tsm],
104     [AS_HELP_STRING([--enable-tivoli-tsm],
105         [enable use of the Tivoli TSM API libraries for butc support])],
106     [],
107     [enable_tivoli_tsm="no"])
108 AC_ARG_ENABLE([pthreaded-ubik],
109     [AS_HELP_STRING([--disable-pthreaded-ubik],
110         [disable installation of pthreaded ubik applications (defaults to
111          enabled)])],
112     [],
113     [enable_pthreaded_ubik="yes"])
114 AC_ARG_ENABLE([ubik-read-while-write],
115     [AS_HELP_STRING([--enable-ubik-read-while-write],
116         [enable vlserver read from db cache during write locks (EXPERIMENTAL)])],
117     [],
118     [enable_ubik_read_while_write="no"])
119
120 dnl Kernel module build options.
121 AC_ARG_WITH([linux-kernel-headers],
122     [AS_HELP_STRING([--with-linux-kernel-headers=path],
123         [use the kernel headers found at path (optional, defaults to
124          /lib/modules/`uname -r`/build, then /lib/modules/`uname -r`/source,
125          then /usr/src/linux-2.4, and lastly /usr/src/linux)])
126 ])
127 AC_ARG_WITH([linux-kernel-build],
128     [AS_HELP_STRING([--with-linux-kernel-build=path],
129         [use the kernel build found at path(optional, defaults to
130         kernel headers path)]
131 )])
132 AC_ARG_WITH([bsd-kernel-headers],
133     [AS_HELP_STRING([--with-bsd-kernel-headers=path],
134         [use the kernel headers found at path (optional, defaults to
135          /usr/src/sys)])
136 ])
137 AC_ARG_WITH([bsd-kernel-build],
138     [AS_HELP_STRING([--with-bsd-kernel-build=path],
139         [use the kernel build found at path (optional, defaults to
140          KSRC/i386/compile/GENERIC)])
141 ])
142 AC_ARG_WITH([linux-kernel-packaging],
143     [AS_HELP_STRING([--with-linux-kernel-packaging],
144         [use standard naming conventions to aid Linux kernel build packaging
145          (disables MPS, sets the kernel module name to openafs.ko, and
146          installs kernel modules into the standard Linux location)])],
147     [AC_SUBST([LINUX_KERNEL_PACKAGING], [yes])
148      AC_SUBST([LINUX_LIBAFS_NAME], [openafs])],
149     [AC_SUBST([LINUX_LIBAFS_NAME], [libafs])
150 ])
151 AC_ARG_ENABLE([kernel-module],
152     [AS_HELP_STRING([--disable-kernel-module],
153         [disable compilation of the kernel module (defaults to enabled)])],
154     [],
155     [enable_kernel_module="yes"])
156 AC_ARG_ENABLE([redhat-buildsys],
157     [AS_HELP_STRING([--enable-redhat-buildsys],
158         [enable compilation of the redhat build system kernel (defaults to
159          disabled)])],
160     [],
161     [enable_redhat_buildsys="no"])
162
163 dnl Installation locations.
164 AC_ARG_ENABLE([transarc-paths],
165     [AS_HELP_STRING([--enable-transarc-paths],
166         [use Transarc style paths like /usr/afs and /usr/vice])],
167     [],
168     [enable_transarc_paths="no"])
169
170 dnl Deprecated crypto
171 AC_ARG_ENABLE([kauth],
172     [AS_HELP_STRING([--enable-kauth],
173         [install the deprecated kauth server, pam modules, and utilities
174          (defaults to disabled)])],
175     [enable_pam="yes"],
176     [enable_kauth="no"
177      enable_pam="no"])
178
179 dnl Optimization and debugging flags.
180 AC_ARG_ENABLE([strip-binaries],
181     [AS_HELP_STRING([--disable-strip-binaries],
182         [disable stripping of symbol information from binaries (defaults to
183          enabled)])],
184     [],
185     [enable_strip_binaries="maybe"])
186 AC_ARG_ENABLE([debug],
187     [AS_HELP_STRING([--enable-debug],
188         [enable compilation of the user space code with debugging information
189          (defaults to disabled)])],
190     [],
191     [enable_debug="no"])
192 AC_ARG_ENABLE([optimize],
193     [AS_HELP_STRING([--disable-optimize],
194         [disable optimization for compilation of the user space code (defaults
195          to enabled)])],
196     [],
197     [enable_optimize="yes"])
198 AC_ARG_ENABLE([warnings],
199     [AS_HELP_STRING([--enable-warnings],
200         [enable compilation warnings when building with gcc (defaults to
201          disabled)])],
202     [],
203     [enable_warnings="no"])
204 AC_ARG_ENABLE([checking],
205     [AS_HELP_STRING([--enable-checking],
206         [turn compilation warnings into errors when building with gcc (defaults
207          to disabled)])],
208     [enable_checking="$enableval"],
209     [enable_checking="no"])
210 AC_ARG_ENABLE([debug-locks],
211     [AS_HELP_STRING([--enable-debug-locks],
212         [turn on lock debugging assertions (defaults to disabled)])],
213     [enable_debug_locks="$enableval"],
214     [enable_debug_locks="no"])
215 AC_ARG_ENABLE([debug-kernel],
216     [AS_HELP_STRING([--enable-debug-kernel],
217         [enable compilation of the kernel module with debugging information
218          (defaults to disabled)])],
219     [],
220     [enable_debug_kernel="no"])
221 AC_ARG_ENABLE([optimize-kernel],
222     [AS_HELP_STRING([--disable-optimize-kernel],
223         [disable compilation of the kernel module with optimization (defaults
224          based on platform)])],
225     [],
226     [enable_optimize_kernel=""])
227 AC_ARG_ENABLE([debug-lwp],
228     [AS_HELP_STRING([--enable-debug-lwp],
229         [enable compilation of the LWP code with debugging information
230          (defaults to disabled)])],
231     [],
232     [enable_debug_lwp="no"])
233 AC_ARG_ENABLE([optimize-lwp],
234     [AS_HELP_STRING([--disable-optimize-lwp],
235         [disable optimization for compilation of the LWP code (defaults to
236          enabled)])],
237     [],
238     [enable_optimize_lwp="yes"])
239 AC_ARG_ENABLE([debug-pam],
240     [AS_HELP_STRING([--enable-debug-pam],
241         [enable compilation of the PAM code with debugging information
242          (defaults to disabled)])],
243     [],
244     [enable_debug_pam="no"])
245 AC_ARG_ENABLE([optimize-pam],
246     [AS_HELP_STRING([--disable-optimize-pam],
247         [disable optimization for compilation of the PAM code (defaults to
248          enabled)])],
249     [],
250     [enable_optimize_pam="yes"])
251 AC_ARG_ENABLE([linux-syscall-probing],
252     [AS_HELP_STRING([--enable-linux-syscall-probing],
253         [enable Linux syscall probing (defaults to autodetect)])],
254     [],
255     [enable_linux_syscall_probing="maybe"])
256 AC_ARG_ENABLE([linux-d_splice_alias-extra-iput],
257     [AS_HELP_STRING([--enable-linux-d_splice_alias-extra-iput],
258         [Linux kernels in the 3.17 series prior to 3.17.3 had a bug
259          wherein error returns from the d_splice_alias() function were
260          leaking a reference on the inode.  The bug was fixed for the
261          3.17.3 kernel, and the possibility of an error return was only
262          introduced in kernel 3.17, so only the narrow range of kernels
263          is affected.  Enable this option for builds on systems with
264          kernels affected by this bug, to manually release the reference
265          on error returns and correct the reference counting.
266          Linux commit 51486b900ee92856b977eacfc5bfbe6565028070 (or
267          equivalent) is the fix for the upstream bug, so if such a commit
268          is present, leave this option disabled.  We apologize
269          that you are required to know this about your running kernel,
270          but luckily only a narrow range of versions is affected.])],
271     [],
272     [enable_linux_d_splice_alias_extra_iput="no"])
273 AC_ARG_WITH([crosstools-dir],
274     [AS_HELP_STRING([--with-crosstools-dir=path],
275         [use path for native versions of rxgen, compile_et and config])
276 ])
277
278 AC_ARG_WITH([xslt-processor],
279         AS_HELP_STRING([--with-xslt-processor=ARG],
280         [which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]),
281         [XSLTPROC="$withval"],
282         [AC_CHECK_PROGS([XSLTPROC], [libxslt saxon xalan-j xsltproc], [echo])])
283
284 AC_ARG_WITH([html-xsl],
285         AS_HELP_STRING([--with-html-xsl],
286         [build HTML documentation using this stylesheet (default is html/chunk.dsl; specify either html/chunk.xsl or html/docbook.xsl)]),
287         [HTML_XSL="$withval"],
288         [HTML_XSL="html/chunk.xsl"])
289
290 AC_ARG_WITH([docbook2pdf],
291         AS_HELP_STRING([--with-docbook2pdf=ARG],
292         [which Docbook to PDF utility to use (possible choices are: fop, dblatex, docbook2pdf)]),
293         [DOCBOOK2PDF="$withval"],
294         [AC_CHECK_PROGS([DOCBOOK2PDF], [fop dblatex docbook2pdf], [echo])])
295
296 AC_ARG_WITH([docbook-stylesheets],
297         AS_HELP_STRING([--with-docbook-stylesheets=ARG],
298         [location of DocBook stylesheets (default is to search a set of likely paths)]),
299         [DOCBOOK_STYLESHEETS="$withval"],
300         [OPENAFS_SEARCH_DIRLIST([DOCBOOK_STYLESHEETS],
301                 [/usr/share/xml/docbook/stylesheet/nwalsh/current \
302                  /usr/share/xml/docbook/stylesheet/nwalsh \
303                  /usr/share/xml/docbook/xsl-stylesheets \
304                  /usr/share/sgml/docbook/docbook-xsl-stylesheets \
305                  /usr/share/sgml/docbook/xsl-stylesheets \
306                  /usr/share/docbook-xsl \
307                  /usr/share/sgml/docbkxsl \
308                  /usr/local/share/xsl/docbook \
309                  /sw/share/xml/xsl/docbook-xsl \
310                  /opt/local/share/xsl/docbook-xsl],
311                 [$HTML_XSL])
312            AS_IF([test "x$DOCBOOK_STYLESHEETS" = "x"],
313                 [AC_WARN([Docbook stylesheets not found; some documentation can't be built])
314            ])
315         ])
316
317 AC_ARG_WITH([dot],
318         AS_HELP_STRING([--with-dot@<:@=PATH@:>@],
319         [use graphviz dot to generate dependency graphs with doxygen (defaults to autodetect)]),
320         [], [with_dot="maybe"])
321
322 enable_login="no"
323
324 dnl Check whether kindlegen exists.  If not, we'll suppress that part of the
325 dnl documentation build.
326 AC_CHECK_PROGS([KINDLEGEN], [kindlegen])
327 AC_CHECK_PROGS([DOXYGEN], [doxygen])
328
329 dnl Optionally generate graphs with doxygen.
330 case "$with_dot" in
331 maybe)
332     AC_CHECK_PROGS([DOT], [dot])
333     AS_IF([test "x$DOT" = "x"], [HAVE_DOT="no"], [HAVE_DOT="yes"])
334     ;;
335 yes)
336     HAVE_DOT="yes"
337     ;;
338 no)
339     HAVE_DOT="no"
340     ;;
341 *)
342     HAVE_DOT="yes"
343     DOT_PATH=$with_dot
344 esac
345 AC_SUBST(HAVE_DOT)
346 AC_SUBST(DOT_PATH)
347
348 dnl Checks for UNIX variants.
349 AC_ISC_POSIX
350
351 dnl Various compiler setup.
352 AC_TYPE_PID_T
353 AC_TYPE_SIZE_T
354
355 dnl Checks for programs.
356 AC_PROG_INSTALL
357 AC_PROG_LN_S
358 AC_PROG_RANLIB
359 AC_PROG_YACC
360 AM_PROG_LEX
361 dnl if we are flex, be lex-compatible
362 OPENAFS_LEX_IS_FLEX([AC_SUBST([LEX], ["$LEX -l"])])
363
364 OPENAFS_FORCE_ABS_INSTALL
365 OPENAFS_CHECK_BIGENDIAN
366 OPENAFS_PRINTF_TAKES_Z_LEN
367
368 AC_MSG_CHECKING(your OS)
369 system=$host
370 case $system in
371         *-linux*)
372
373                 MKAFS_OSTYPE=LINUX
374                 if test "x$enable_redhat_buildsys" = "xyes"; then
375                  AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
376                 fi
377                 if test "x$enable_kernel_module" = "xyes"; then
378                  if test "x$with_linux_kernel_headers" != "x"; then
379                    LINUX_KERNEL_PATH="$with_linux_kernel_headers"
380                  else
381                    for utsdir in "/lib/modules/`uname -r`/build" \
382                                  "/lib/modules/`uname -r`/source" \
383                                  "/usr/src/linux-2.4" \
384                                  "/usr/src/linux"; do
385                      LINUX_KERNEL_PATH="$utsdir"
386                      for utsfile in "include/generated/utsrelease.h" \
387                                     "include/linux/utsrelease.h" \
388                                     "include/linux/version.h" \
389                                     "include/linux/version-up.h"; do
390                        if grep "UTS_RELEASE" "$utsdir/$utsfile" >/dev/null 2>&1; then
391                          break 2
392                        fi
393                      done
394                    done
395                  fi
396                  if test "x$with_linux_kernel_build" != "x"; then
397                          LINUX_KERNEL_BUILD="$with_linux_kernel_build"
398                  else
399                    LINUX_KERNEL_BUILD=$LINUX_KERNEL_PATH
400                  fi
401                  if test -f "$LINUX_KERNEL_BUILD/include/generated/utsrelease.h"; then
402                    linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/generated/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
403                    LINUX_VERSION="$linux_kvers"
404                  else
405                    if test -f "$LINUX_KERNEL_BUILD/include/linux/utsrelease.h"; then
406                      linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
407                      LINUX_VERSION="$linux_kvers"
408                    else
409                      if test -f "$LINUX_KERNEL_BUILD/include/linux/version.h"; then
410                        linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
411                        if test "x$linux_kvers" = "x"; then
412                          if test -f "$LINUX_KERNEL_BUILD/include/linux/version-up.h"; then
413                            linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
414                            if test "x$linux_kvers" = "x"; then
415                              AC_MSG_ERROR(Linux headers lack version definition [2])
416                              exit 1
417                            else
418                              LINUX_VERSION="$linux_kvers"
419                            fi
420                          else
421                            AC_MSG_ERROR(Linux headers lack version definition)
422                            exit 1
423                          fi
424                        else
425                          LINUX_VERSION="$linux_kvers"
426                        fi
427                      else
428                        enable_kernel_module="no"
429                      fi
430                    fi
431                  fi
432                  if test ! -f "$LINUX_KERNEL_BUILD/include/generated/autoconf.h" &&
433                     test ! -f "$LINUX_KERNEL_BUILD/include/linux/autoconf.h"; then
434                      enable_kernel_module="no"
435                  fi
436                  if test "x$enable_kernel_module" = "xno"; then
437                   if test "x$with_linux_kernel_headers" != "x"; then
438                    AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
439                    exit 1
440                   else
441                    AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
442                   fi
443                  fi
444                  dnl do we need to determine SUBARCH from autoconf.h
445                  SUBARCH=default
446                 fi
447                 AC_MSG_RESULT(linux)
448                 GUESS_LINUX_VERSION=
449                 if test "x$enable_kernel_module" = "xyes"; then
450                  GUESS_LINUX_VERSION=${LINUX_VERSION}
451                 else
452                  GUESS_LINUX_VERSION=`uname -r`
453                 fi
454                 case "$GUESS_LINUX_VERSION" in
455                   2.2.*) AFS_SYSKVERS=22 ;;
456                   2.4.*) AFS_SYSKVERS=24 ;;
457                   [2.6.* | [3-9]* | [1-2][0-9]*]) AFS_SYSKVERS=26 ;;
458                   *) AC_MSG_ERROR(Couldn't guess your Linux version [2]) ;;
459                 esac
460                 ;;
461         *-solaris*)
462                 MKAFS_OSTYPE=SOLARIS
463                 AC_MSG_RESULT(sun4)
464                 SOLARIS_PATH_CC
465                 SOLARIS_CC_TAKES_XVECTOR_NONE
466                 AC_SUBST(SOLARIS_CC_KOPTS)
467                 SOLARIS_UFSVFS_HAS_DQRWLOCK
468                 SOLARIS_FS_HAS_FS_ROLLED
469                 SOLARIS_SOLOOKUP_TAKES_SOCKPARAMS
470                 SOLARIS_HAVE_VN_RENAMEPATH
471                 ;;
472         *-sunos*)
473                 MKAFS_OSTYPE=SUNOS
474                 enable_kernel_module=no
475                 AC_MSG_RESULT(sun4)
476                 ;;
477         *-hpux*)
478                 MKAFS_OSTYPE=HPUX
479                 AC_MSG_RESULT(hp_ux)
480                 if test -f "/usr/old/usr/include/ndir.h"; then
481                  AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
482                 fi
483                 ;;
484         *-irix*)
485                 if test -d /usr/include/sys/SN/SN1; then
486                  IRIX_BUILD_IP35="IP35"
487                 fi
488                 MKAFS_OSTYPE=IRIX
489                 AC_MSG_RESULT(sgi)
490                 ;;
491         *-aix*)
492                 MKAFS_OSTYPE=AIX
493                 AC_MSG_RESULT(rs_aix)
494                 ;;
495         arm-*-darwin*)
496                 MKAFS_OSTYPE=DARWIN
497                 AC_MSG_RESULT(arm_darwin)
498                 ;;
499         powerpc-*-darwin*)
500                 MKAFS_OSTYPE=DARWIN
501                 AC_MSG_RESULT(ppc_darwin)
502                 ;;
503         i386-*-darwin*)
504                 MKAFS_OSTYPE=DARWIN
505                 AC_MSG_RESULT(x86_darwin)
506                 ;;
507         x86_64-*-darwin*)
508                 MKAFS_OSTYPE=DARWIN
509                 AC_MSG_RESULT(x86_darwin)
510                 ;;
511         i386-*-freebsd*)
512                 MKAFS_OSTYPE=FBSD
513                 AC_MSG_RESULT(i386_fbsd)
514                 ;;
515         x86_64-*-freebsd*)
516                 MKAFS_OSTYPE=FBSD
517                 AC_MSG_RESULT(amd64_fbsd)
518                 ;;
519         *-netbsd*)
520                 MKAFS_OSTYPE=NBSD
521                 AC_MSG_RESULT(nbsd)
522                 ;;
523         x86_64-*-openbsd*)
524                 MKAFS_OSTYPE=OBSD
525                 AC_MSG_RESULT(amd64_obsd)
526                 ;;
527         i386-*-openbsd*)
528                 MKAFS_OSTYPE=OBSD
529                 AC_MSG_RESULT(i386_obsd)
530                 ;;
531         *-dragonfly*)
532                 MKAFS_OSTYPE=DFBSD
533                 AC_MSG_RESULT(i386_dfbsd)
534                 ;;
535         *)
536                 AC_MSG_RESULT($system)
537                 ;;
538 esac
539
540 if test "x$with_afs_sysname" != "x"; then
541         AFS_SYSNAME="$with_afs_sysname"
542 else
543         AC_MSG_CHECKING(your AFS sysname)
544         case $host in
545                 i?86-*-openbsd?.?)
546                         v=${host#*openbsd}
547                         vM=${v%.*}
548                         vm=${v#*.}
549                         AFS_SYSNAME="i386_obsd${vM}${vm}"
550                         ;;
551                 sparc64-*-openbsd?.?)
552                         v=${host#*openbsd}
553                         vM=${v%.*}
554                         vm=${v#*.}
555                         AFS_SYSNAME="sparc64_obsd${vM}${vm}"
556                         ;;
557                 x86_64-*-openbsd?.?)
558                         v=${host#*openbsd}
559                         vM=${v%.*}
560                         vm=${v#*.}
561                         AFS_SYSNAME="amd64_obsd${vM}${vm}"
562                         ;;
563                 i?86-*-freebsd*.*)
564                         v=${host#*freebsd}
565                         vM=${v%.*}
566                         vm=${v#*.}
567                         AFS_SYSNAME="i386_fbsd_${vM}${vm}"
568                         ;;
569                 x86_64-*-freebsd*.*)
570                         v=${host#*freebsd}
571                         vM=${v%.*}
572                         vm=${v#*.}
573                         AFS_SYSNAME="amd64_fbsd_${vM}${vm}"
574                         ;;
575                 i386-*-dragonfly?.*)
576                         v=${host#*dragonfly}
577                         vM=${v%.*}
578                         vm=${v#*.}
579                         AFS_SYSNAME="i386_dfbsd_${vM}${vm}"
580                         ;;
581                 i?86-*-netbsd*1.6[[M-Z]]*)
582                         AFS_SYSNAME="i386_nbsd20"
583                         ;;
584                 powerpc-*-netbsd*1.6[[M-Z]]*)
585                         AFS_SYSNAME="ppc_nbsd20"
586                         ;;
587                 *-*-netbsd*)
588                         arch=${host%%-unknown*}
589                         arch=$(echo $arch |sed -e 's/x86_64/amd64/g' \
590                                                -e 's/powerpc/ppc/g')
591                         v=${host#*netbsd}
592                         v=${v#*aout}
593                         v=${v#*ecoff}
594                         v=${v#*elf}
595                         vM=${v%%.*}
596                         vM=${vM%.*}
597                         v=${v#*.}
598                         vm=${v%%.*}
599                         vm=${vm%.*}
600                         vm=${vm%%[[_A-Z]]*}
601                         if test $vm -eq 99 ; then
602                                 vM=$((vM+1))
603                         fi
604                         if test $vM -gt 1 ; then
605                                 vm=0
606                         fi
607                         AFS_SYSNAME="${arch}_nbsd${vM}${vm}"
608                         ;;
609                 hppa*-hp-hpux11.0*)
610                         AFS_SYSNAME="hp_ux110"
611                         ;;
612                 hppa*-hp-hpux11.11)
613                         AFS_SYSNAME="hp_ux11i"
614                         ;;
615                 hppa*-hp-hpux11.23)
616                         AFS_SYSNAME="hp_ux1123"
617                         ;;
618                 ia64-hp-hpux11.22)
619                         AFS_SYSNAME="ia64_hpux1122"
620                         ;;
621                 ia64-hp-hpux*)
622                         AFS_SYSNAME="ia64_hpux1123"
623                         ;;
624                 hppa*-hp-hpux10*)
625                         AFS_SYSNAME="hp_ux102"
626                         ;;
627                 powerpc-apple-darwin7*)
628                         AFS_SYSNAME="ppc_darwin_70"
629                         OSXSDK="macosx10.3"
630                         ;;
631                 powerpc-apple-darwin8.*)
632                         AFS_SYSNAME="ppc_darwin_80"
633                         OSXSDK="macosx10.4"
634                         ;;
635                 i386-apple-darwin8.*)
636                         AFS_SYSNAME="x86_darwin_80"
637                         OSXSDK="macosx10.4"
638                         ;;
639                 powerpc-apple-darwin9.*)
640                         AFS_SYSNAME="ppc_darwin_90"
641                         OSXSDK="macosx10.5"
642                         ;;
643                 i386-apple-darwin9.*)
644                         AFS_SYSNAME="x86_darwin_90"
645                         OSXSDK="macosx10.5"
646                         ;;
647                 i?86-apple-darwin10.*)
648                         AFS_SYSNAME="x86_darwin_100"
649                         OSXSDK="macosx10.6"
650                         ;;
651                 x86_64-apple-darwin10.*)
652                         AFS_SYSNAME="x86_darwin_100"
653                         OSXSDK="macosx10.6"
654                         ;;
655                 arm-apple-darwin10.*)
656                         AFS_SYSNAME="arm_darwin_100"
657                         OSXSDK="iphoneos4.0"
658                         ;;
659                 x86_64-apple-darwin11.*)
660                         AFS_SYSNAME="x86_darwin_110"
661                         OSXSDK="macosx10.7"
662                         ;;
663                 i?86-apple-darwin11.*)
664                         AFS_SYSNAME="x86_darwin_110"
665                         OSXSDK="macosx10.7"
666                         ;;
667                 x86_64-apple-darwin12.*)
668                         AFS_SYSNAME="x86_darwin_120"
669                         OSXSDK="macosx10.8"
670                         ;;
671                 i?86-apple-darwin12.*)
672                         AFS_SYSNAME="x86_darwin_120"
673                         OSXSDK="macosx10.8"
674                         ;;
675                 x86_64-apple-darwin13.*)
676                         AFS_SYSNAME="x86_darwin_130"
677                         OSXSDK="macosx10.9"
678                         ;;
679                 i?86-apple-darwin13.*)
680                         AFS_SYSNAME="x86_darwin_130"
681                         OSXSDK="macosx10.9"
682                         ;;
683                 x86_64-apple-darwin14.*)
684                         AFS_SYSNAME="x86_darwin_140"
685                         OSXSDK="macosx10.10"
686                         ;;
687                 i?86-apple-darwin14.*)
688                         AFS_SYSNAME="x86_darwin_140"
689                         OSXSDK="macosx10.10"
690                         ;;
691                 x86_64-apple-darwin15.*)
692                         AFS_SYSNAME="x86_darwin_150"
693                         OSXSDK="macosx10.11"
694                         ;;
695                 i?86-apple-darwin15.*)
696                         AFS_SYSNAME="x86_darwin_150"
697                         OSXSDK="macosx10.11"
698                         ;;
699                 x86_64-apple-darwin16.*)
700                         AFS_SYSNAME="x86_darwin_160"
701                         OSXSDK="macosx10.12"
702                         ;;
703                 i?86-apple-darwin16.*)
704                         AFS_SYSNAME="x86_darwin_160"
705                         OSXSDK="macosx10.12"
706                         ;;
707                 x86_64-apple-darwin17.*)
708                         AFS_SYSNAME="x86_darwin_170"
709                         OSXSDK="macosx10.13"
710                         ;;
711                 i?86-apple-darwin17.*)
712                         AFS_SYSNAME="x86_darwin_170"
713                         OSXSDK="macosx10.13"
714                         ;;
715                 sparc-sun-solaris2.8)
716                         AFS_SYSNAME="sun4x_58"
717                         ;;
718                 sparc-sun-solaris2.9)
719                         AFS_SYSNAME="sun4x_59"
720                         ;;
721                 sparc-sun-solaris2.10)
722                         AFS_SYSNAME="sun4x_510"
723                         ;;
724                 sparc-sun-solaris2.11)
725                         AFS_SYSNAME="sun4x_511"
726                         ;;
727                 i386-pc-solaris2.8)
728                         AFS_SYSNAME="sunx86_58"
729                         ;;
730                 i386-pc-solaris2.9)
731                         AFS_SYSNAME="sunx86_59"
732                         ;;
733                 i386-pc-solaris2.10)
734                         AFS_SYSNAME="sunx86_510"
735                         ;;
736                 i386-pc-solaris2.11)
737                         AFS_SYSNAME="sunx86_511"
738                         ;;
739                 alpha*-dec-osf4.0*)
740                         AFS_SYSNAME="alpha_dux40"
741                         ;;
742                 alpha*-dec-osf5.0*)
743                         AFS_SYSNAME="alpha_dux50"
744                         ;;
745                 alpha*-dec-osf5.1*)
746                         AFS_SYSNAME="alpha_dux51"
747                         ;;
748                 mips-sgi-irix6.5)
749                         AFS_SYSNAME="sgi_65"
750                         enable_pam="no"
751                         ;;
752                 ia64-*-linux*)
753                         AFS_SYSNAME="ia64_linuxXX"
754                         ;;
755                 powerpc-*-linux*)
756                         AFS_SYSNAME="`/bin/arch`_linuxXX"
757                         ;;
758                 powerpc64-*-linux*)
759                         AFS_SYSNAME="ppc64_linuxXX"
760                         ;;
761                 alpha*-linux*)
762                         AFS_SYSNAME="alpha_linux_XX"
763                         ;;
764                 s390-*-linux*)
765                         AFS_SYSNAME="s390_linuxXX"
766                         ;;
767                 s390x-*-linux*)
768                         AFS_SYSNAME="s390x_linuxXX"
769                         ;;
770                 sparc-*-linux*)
771                         AFS_SYSNAME="`/bin/arch`_linuxXX"
772                         ;;
773                 sparc64-*-linux*)
774                         AFS_SYSNAME="sparc64_linuxXX"
775                         ;;
776                 i?86-*-linux*)
777                         AFS_SYSNAME="i386_linuxXX"
778                         ;;
779                 arm*-linux*)
780                         AFS_SYSNAME="arm_linuxXX"
781                         ;;
782                 parisc-*-linux-gnu|hppa-*-linux-gnu)
783                         AFS_SYSNAME="parisc_linuxXX"
784                         enable_pam="no"
785                         ;;
786                 power*-ibm-aix4.2*)
787                         AFS_SYSNAME="rs_aix42"
788                         enable_pam="no"
789                         ;;
790                 power*-ibm-aix4.3*)
791                         AFS_SYSNAME="rs_aix42"
792                         enable_pam="no"
793                         ;;
794                 power*-ibm-aix5.1*)
795                         AFS_SYSNAME="rs_aix51"
796                         enable_pam="no"
797                         ;;
798                 power*-ibm-aix5.2*)
799                         AFS_SYSNAME="rs_aix52"
800                         enable_pam="no"
801                         ;;
802                 power*-ibm-aix5.3*)
803                         AFS_SYSNAME="rs_aix53"
804                         enable_pam="no"
805                         ;;
806                 power*-ibm-aix6.1*)
807                         AFS_SYSNAME="rs_aix61"
808                         enable_pam="no"
809                         ;;
810                 x86_64-*-linux-gnu)
811                         AFS_SYSNAME="amd64_linuxXX"
812                         enable_pam="yes"
813                         ;;
814                 *)
815                         AC_MSG_ERROR(An AFS sysname is required)
816                         exit 1
817                         ;;
818         esac
819         case $AFS_SYSNAME in
820                 *_linux* | *_umlinux*)
821                         if test "x${AFS_SYSKVERS}" = "x"; then
822                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
823                         fi
824                         if test "x${AFS_SYSKVERS}" = "x24" ||
825                                 test "x${AFS_SYSKVERS}" = "x22"; then
826                             AC_MSG_ERROR([Linux 2.4.x and older are no longer supported by OpenAFS.  Please use an OpenAFS 1.6.x release on those systems.])
827                         fi
828                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
829                         AFS_SYSNAME="$_AFS_SYSNAME"
830                         AC_TRY_KBUILD(
831                          [],
832                          [#ifndef CONFIG_USERMODE
833                           #error not UML
834                           #endif],
835                          ac_cv_linux_is_uml=yes,)
836                         if test "${ac_cv_linux_is_uml}" = yes; then
837                          _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
838                         fi
839                         AFS_SYSNAME="$_AFS_SYSNAME"
840                         ;;
841         esac
842         AC_MSG_RESULT($AFS_SYSNAME)
843 fi
844
845 case $AFS_SYSNAME in
846         *_darwin*)
847                 AC_CHECK_HEADERS(crt_externs.h)
848                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
849                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
850                 AC_SUBST(OSXSDK)
851                 ;;
852 esac
853
854 dnl Some hosts have a separate common param file they should include.  Figure
855 dnl out if we're on one of them now that we know the sysname.
856 case $AFS_SYSNAME in
857     *_nbsd15)   AFS_PARAM_COMMON=param.nbsd15.h  ;;
858     *_nbsd16)   AFS_PARAM_COMMON=param.nbsd16.h  ;;
859     *_nbsd20)   AFS_PARAM_COMMON=param.nbsd20.h  ;;
860     *_nbsd21)   AFS_PARAM_COMMON=param.nbsd21.h  ;;
861     *_nbsd30)   AFS_PARAM_COMMON=param.nbsd30.h  ;;
862     *_nbsd40)   AFS_PARAM_COMMON=param.nbsd40.h  ;;
863     *_nbsd50)   AFS_PARAM_COMMON=param.nbsd50.h  ;;
864     *_nbsd60)   AFS_PARAM_COMMON=param.nbsd60.h  ;;
865     *_nbsd70)   AFS_PARAM_COMMON=param.nbsd70.h  ;;
866     *_obsd31)   AFS_PARAM_COMMON=param.obsd31.h  ;;
867     *_obsd32)   AFS_PARAM_COMMON=param.obsd32.h  ;;
868     *_obsd33)   AFS_PARAM_COMMON=param.obsd33.h  ;;
869     *_obsd34)   AFS_PARAM_COMMON=param.obsd34.h  ;;
870     *_obsd35)   AFS_PARAM_COMMON=param.obsd35.h  ;;
871     *_obsd36)   AFS_PARAM_COMMON=param.obsd36.h  ;;
872     *_obsd37)   AFS_PARAM_COMMON=param.obsd37.h  ;;
873     *_obsd38)   AFS_PARAM_COMMON=param.obsd38.h  ;;
874     *_obsd39)   AFS_PARAM_COMMON=param.obsd39.h  ;;
875     *_obsd40)   AFS_PARAM_COMMON=param.obsd40.h  ;;
876     *_obsd41)   AFS_PARAM_COMMON=param.obsd41.h  ;;
877     *_obsd42)   AFS_PARAM_COMMON=param.obsd42.h  ;;
878     *_obsd43)   AFS_PARAM_COMMON=param.obsd43.h  ;;
879     *_obsd44)   AFS_PARAM_COMMON=param.obsd44.h  ;;
880     *_obsd45)   AFS_PARAM_COMMON=param.obsd45.h  ;;
881     *_obsd46)   AFS_PARAM_COMMON=param.obsd46.h  ;;
882     *_obsd47)   AFS_PARAM_COMMON=param.obsd47.h  ;;
883     *_obsd48)   AFS_PARAM_COMMON=param.obsd48.h  ;;
884     *_obsd49)   AFS_PARAM_COMMON=param.obsd49.h  ;;
885     *_obsd50)   AFS_PARAM_COMMON=param.obsd50.h  ;;
886     *_obsd51)   AFS_PARAM_COMMON=param.obsd51.h  ;;
887     *_obsd52)   AFS_PARAM_COMMON=param.obsd52.h  ;;
888     *_obsd53)   AFS_PARAM_COMMON=param.obsd53.h  ;;
889     *_obsd54)   AFS_PARAM_COMMON=param.obsd54.h  ;;
890     *_linux26)  AFS_PARAM_COMMON=param.linux26.h ;;
891 # Linux alpha adds an extra underscore for no good reason.
892     *_linux_26) AFS_PARAM_COMMON=param.linux26.h ;;
893     *_fbsd_*)   AFS_PARAM_COMMON=param.generic_fbsd.h ;;
894 esac
895
896 OPENAFS_OSCONF
897
898 case $AFS_SYSNAME in *_linux* | *_umlinux*)
899
900                 # Add (sub-) architecture-specific paths needed by conftests
901                 case $AFS_SYSNAME  in
902                         *_umlinux26)
903                                 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
904                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
905                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
906                                 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
907                 esac
908
909                 if test "x$enable_kernel_module" = "xyes"; then
910                  if test "x$enable_debug_kernel" = "xno"; then
911                         LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
912                  fi
913                  OPENAFS_GCC_SUPPORTS_MARCH
914                  AC_SUBST(P5PLUS_KOPTS)
915                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
916                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
917                  OPENAFS_GCC_SUPPORTS_NO_COMMON
918                  OPENAFS_GCC_SUPPORTS_PIPE
919                  AC_SUBST(LINUX_GCC_KOPTS)
920
921                  dnl Setup the kernel build environment
922                  LINUX_KBUILD_USES_EXTRA_CFLAGS
923                  LINUX_KERNEL_COMPILE_WORKS
924
925                  dnl Operation signature checks
926                  AC_CHECK_LINUX_OPERATION([inode_operations], [follow_link], [no_nameidata],
927                                           [#include <linux/fs.h>],
928                                           [const char *],
929                                           [struct dentry *dentry, void **link_data])
930                  AC_CHECK_LINUX_OPERATION([inode_operations], [put_link], [no_nameidata],
931                                           [#include <linux/fs.h>],
932                                           [void],
933                                           [struct inode *inode, void *link_data])
934                  AC_CHECK_LINUX_OPERATION([inode_operations], [rename], [takes_flags],
935                                           [#include <linux/fs.h>],
936                                           [int],
937                                           [struct inode *oinode, struct dentry *odentry,
938                                                 struct inode *ninode, struct dentry *ndentry,
939                                                 unsigned int flags])
940
941                  dnl Check for header files
942                  AC_CHECK_LINUX_HEADER([cred.h])
943                  AC_CHECK_LINUX_HEADER([config.h])
944                  AC_CHECK_LINUX_HEADER([exportfs.h])
945                  AC_CHECK_LINUX_HEADER([freezer.h])
946                  AC_CHECK_LINUX_HEADER([key-type.h])
947                  AC_CHECK_LINUX_HEADER([semaphore.h])
948                  AC_CHECK_LINUX_HEADER([seq_file.h])
949                  AC_CHECK_LINUX_HEADER([sched/signal.h])
950                  AC_CHECK_LINUX_HEADER([uaccess.h])
951
952                  dnl Type existence checks
953                  AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
954                  AC_CHECK_LINUX_TYPE([kuid_t], [uidgid.h])
955
956                  dnl Check for structure elements
957                  AC_CHECK_LINUX_STRUCT([address_space], [backing_dev_info], [fs.h])
958                  AC_CHECK_LINUX_STRUCT([address_space_operations],
959                                        [write_begin], [fs.h])
960                  AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
961                                        [backing-dev.h])
962                  AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h])
963                  AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
964                  AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h])
965                  AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h])
966                  AC_CHECK_LINUX_STRUCT([group_info], [gid], [cred.h])
967                  AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h])
968                  AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h])
969                  AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h])
970                  AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h])
971                  AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
972                  AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h])
973                  AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
974                  AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
975                  AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h])
976                  AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
977                  AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
978                  AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
979                  AC_CHECK_LINUX_STRUCT([inode_operations], [get_link], [fs.h])
980                  AC_CHECK_LINUX_STRUCT([key], [payload.value], [key.h])
981                  AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h])
982                  AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h])
983                  AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
984                  AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h])
985                  AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
986                  AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
987                  AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
988                  AC_CHECK_LINUX_STRUCT([super_block], [s_d_op], [fs.h])
989                  AC_CHECK_LINUX_STRUCT([super_operations], [alloc_inode],
990                                        [fs.h])
991                  AC_CHECK_LINUX_STRUCT([super_operations], [evict_inode],
992                                        [fs.h])
993                  AC_CHECK_LINUX_STRUCT([task_struct], [cred], [sched.h])
994                  AC_CHECK_LINUX_STRUCT([task_struct], [exit_state], [sched.h])
995                  AC_CHECK_LINUX_STRUCT([task_struct], [parent], [sched.h])
996                  AC_CHECK_LINUX_STRUCT([task_struct], [real_parent], [sched.h])
997                  AC_CHECK_LINUX_STRUCT([task_struct], [rlim], [sched.h])
998                  AC_CHECK_LINUX_STRUCT([task_struct], [sig], [sched.h])
999                  AC_CHECK_LINUX_STRUCT([task_struct], [sighand], [sched.h])
1000                  AC_CHECK_LINUX_STRUCT([task_struct], [sigmask_lock], [sched.h])
1001                  AC_CHECK_LINUX_STRUCT([task_struct], [tgid], [sched.h])
1002                  AC_CHECK_LINUX_STRUCT([task_struct], [thread_info], [sched.h])
1003                  AC_CHECK_LINUX_STRUCT([task_struct], [total_link_count], [sched.h])
1004                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
1005
1006                  dnl Check for typed structure elements
1007                  AC_CHECK_LINUX_TYPED_STRUCT([read_descriptor_t],
1008                                              [buf], [fs.h])
1009
1010                  dnl Function existence checks
1011
1012                  AC_CHECK_LINUX_FUNC([__vfs_write],
1013                                      [#include <linux/fs.h>],
1014                                      [__vfs_write(NULL, NULL, 0, NULL);])
1015                  AC_CHECK_LINUX_FUNC([kernel_write],
1016                                      [#include <linux/fs.h>],
1017                                      [kernel_write(NULL, NULL, 0, NULL);])
1018                  AC_CHECK_LINUX_FUNC([bdi_init],
1019                                      [#include <linux/backing-dev.h>],
1020                                      [bdi_init(NULL);])
1021                  AC_CHECK_LINUX_FUNC([super_setup_bdi],
1022                                      [#include <linux/backing-dev.h>],
1023                                      [struct super_block *sb;
1024                                       super_setup_bdi(sb);])
1025                  AC_CHECK_LINUX_FUNC([PageChecked],
1026                                      [#include <linux/mm.h>
1027 #include <linux/page-flags.h>],
1028                                      [struct page *_page;
1029                                       int bchecked = PageChecked(_page);])
1030                  AC_CHECK_LINUX_FUNC([PageFsMisc],
1031                                      [#include <linux/mm.h>
1032 #include <linux/page-flags.h>],
1033                                      [struct page *_page;
1034                                       int bchecked = PageFsMisc(_page);])
1035                  AC_CHECK_LINUX_FUNC([clear_inode],
1036                                      [#include <linux/fs.h>],
1037                                      [clear_inode(NULL);])
1038                  AC_CHECK_LINUX_FUNC([current_kernel_time],
1039                                      [#include <linux/time.h>],
1040                                      [struct timespec s;
1041                                       s = current_kernel_time();])
1042                  AC_CHECK_LINUX_FUNC([d_alloc_anon],
1043                                      [#include <linux/fs.h>],
1044                                      [d_alloc_anon(NULL);])
1045                  AC_CHECK_LINUX_FUNC([d_count],
1046                                      [#include <linux/dcache.h>],
1047                                      [d_count(NULL);])
1048                  AC_CHECK_LINUX_FUNC([d_make_root],
1049                                      [#include <linux/fs.h>],
1050                                      [d_make_root(NULL);])
1051                  AC_CHECK_LINUX_FUNC([do_sync_read],
1052                                      [#include <linux/fs.h>],
1053                                      [do_sync_read(NULL, NULL, 0, NULL);])
1054                  AC_CHECK_LINUX_FUNC([file_dentry],
1055                                      [#include <linux/fs.h>],
1056                                      [struct file *f; file_dentry(f);])
1057                  AC_CHECK_LINUX_FUNC([find_task_by_pid],
1058                                      [#include <linux/sched.h>],
1059                                      [pid_t p; find_task_by_pid(p);])
1060                  AC_CHECK_LINUX_FUNC([generic_file_aio_read],
1061                                      [#include <linux/fs.h>],
1062                                      [generic_file_aio_read(NULL,NULL,0,0);])
1063                  AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
1064                                      [#include <linux/pagemap.h>],
1065                                      [grab_cache_page_write_begin(NULL, 0, 0);])
1066                  AC_CHECK_LINUX_FUNC([hlist_unhashed],
1067                                      [#include <linux/list.h>],
1068                                      [hlist_unhashed(0);])
1069                  AC_CHECK_LINUX_FUNC([ihold],
1070                                      [#include <linux/fs.h>],
1071                                      [ihold(NULL);])
1072                  AC_CHECK_LINUX_FUNC([i_size_read],
1073                                      [#include <linux/fs.h>],
1074                                      [i_size_read(NULL);])
1075                  AC_CHECK_LINUX_FUNC([inode_setattr],
1076                                      [#include <linux/fs.h>],
1077                                      [inode_setattr(NULL, NULL);])
1078                  AC_CHECK_LINUX_FUNC([iter_file_splice_write],
1079                                      [#include <linux/fs.h>],
1080                                      [iter_file_splice_write(NULL,NULL,NULL,0,0);])
1081                  AC_CHECK_LINUX_FUNC([kernel_setsockopt],
1082                                      [#include <linux/net.h>],
1083                                      [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
1084                  AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
1085                                      [#include <linux/fs.h>],
1086                                      [locks_lock_file_wait(NULL, NULL);])
1087                  AC_CHECK_LINUX_FUNC([page_follow_link],
1088                                      [#include <linux/fs.h>],
1089                                      [page_follow_link(0,0);])
1090                  AC_CHECK_LINUX_FUNC([page_get_link],
1091                                      [#include <linux/fs.h>],
1092                                      [page_get_link(0,0,0);])
1093                  AC_CHECK_LINUX_FUNC([page_offset],
1094                                      [#include <linux/pagemap.h>],
1095                                      [page_offset(NULL);])
1096                  AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
1097                                      [#include <linux/pagevec.h>],
1098                                      [__pagevec_lru_add_file(NULL);])
1099                  AC_CHECK_LINUX_FUNC([path_lookup],
1100                                      [#include <linux/fs.h>
1101                                       #include <linux/namei.h>],
1102                                      [path_lookup(NULL, 0, NULL);])
1103                  AC_CHECK_LINUX_FUNC([proc_create],
1104                                      [#include <linux/proc_fs.h>],
1105                                      [proc_create(NULL, 0, NULL, NULL);])
1106                  AC_CHECK_LINUX_FUNC([rcu_read_lock],
1107                                      [#include <linux/rcupdate.h>],
1108                                      [rcu_read_lock();])
1109                  AC_CHECK_LINUX_FUNC([set_nlink],
1110                                      [#include <linux/fs.h>],
1111                                      [set_nlink(NULL, 1);])
1112                  AC_CHECK_LINUX_FUNC([setattr_prepare],
1113                                      [#include <linux/fs.h>],
1114                                      [setattr_prepare(NULL, NULL);])
1115                  AC_CHECK_LINUX_FUNC([sock_create_kern],
1116                                      [#include <linux/net.h>],
1117                                      [sock_create_kern(0, 0, 0, NULL);])
1118                  AC_CHECK_LINUX_FUNC([sock_create_kern_ns],
1119                                      [#include <linux/net.h>],
1120                                      [sock_create_kern(NULL, 0, 0, 0, NULL);])
1121                  AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
1122                                      [#include <linux/splice.h>],
1123                                      [splice_direct_to_actor(NULL,NULL,NULL);])
1124                  AC_CHECK_LINUX_FUNC([default_file_splice_read],
1125                                      [#include <linux/fs.h>],
1126                                      [default_file_splice_read(NULL,NULL,NULL, 0, 0);])
1127                  AC_CHECK_LINUX_FUNC([svc_addr_in],
1128                                      [#include <linux/sunrpc/svc.h>],
1129                                      [svc_addr_in(NULL);])
1130                  AC_CHECK_LINUX_FUNC([zero_user_segments],
1131                                      [#include <linux/highmem.h>],
1132                                      [zero_user_segments(NULL, 0, 0, 0, 0);])
1133                  AC_CHECK_LINUX_FUNC([noop_fsync],
1134                                      [#include <linux/fs.h>],
1135                                      [void *address = &noop_fsync; printk("%p\n", address)];)
1136                  AC_CHECK_LINUX_FUNC([kthread_run],
1137                                      [#include <linux/kernel.h>
1138                                       #include <linux/kthread.h>],
1139                                      [kthread_run(NULL, NULL, "test");])
1140                  AC_CHECK_LINUX_FUNC([inode_nohighmem],
1141                                      [#include <linux/fs.h>],
1142                                      [inode_nohighmem(NULL);])
1143                  AC_CHECK_LINUX_FUNC([inode_lock],
1144                                      [#include <linux/fs.h>],
1145                                      [inode_lock(NULL);])
1146
1147                  dnl Consequences - things which get set as a result of the
1148                  dnl                above tests
1149                  AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
1150                        [AC_DEFINE([AFS_NONFSTRANS], 1,
1151                                   [define to disable the nfs translator])])
1152
1153                  dnl Assorted more complex tests
1154                  LINUX_AIO_NONVECTOR
1155                  LINUX_EXPORTS_PROC_ROOT_FS
1156                  LINUX_KMEM_CACHE_INIT
1157                  LINUX_HAVE_KMEM_CACHE_T
1158                  LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
1159                  LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID
1160                  LINUX_D_PATH_TAKES_STRUCT_PATH
1161                  LINUX_NEW_EXPORT_OPS
1162                  LINUX_INODE_SETATTR_RETURN_TYPE
1163                  LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
1164                  LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
1165                  LINUX_IOP_I_PERMISSION_TAKES_FLAGS
1166                  LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
1167                  LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
1168                  LINUX_DOP_D_DELETE_TAKES_CONST
1169                  LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
1170                  LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
1171                  LINUX_FOP_F_FSYNC_TAKES_DENTRY
1172                  LINUX_FOP_F_FSYNC_TAKES_RANGE
1173                  LINUX_AOP_WRITEBACK_CONTROL
1174                  LINUX_FS_STRUCT_FOP_HAS_SPLICE
1175                  LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
1176                  LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG
1177                  LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
1178                  LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
1179                  LINUX_KERNEL_SOCK_CREATE
1180                  LINUX_EXPORTS_KEY_TYPE_KEYRING
1181                  LINUX_NEED_RHCONFIG
1182                  LINUX_RECALC_SIGPENDING_ARG_TYPE
1183                  LINUX_EXPORTS_TASKLIST_LOCK
1184                  LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
1185                  LINUX_STATFS_TAKES_DENTRY
1186                  LINUX_REFRIGERATOR
1187                  LINUX_HAVE_TRY_TO_FREEZE
1188                  LINUX_LINUX_KEYRING_SUPPORT
1189                  LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
1190                  LINUX_KEY_ALLOC_NEEDS_CRED
1191                  LINUX_INIT_WORK_HAS_DATA
1192                  LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
1193                  LINUX_HAVE_DCACHE_LOCK
1194                  LINUX_D_COUNT_IS_INT
1195                  LINUX_IOP_GETATTR_TAKES_PATH_STRUCT
1196                  LINUX_IOP_MKDIR_TAKES_UMODE_T
1197                  LINUX_IOP_CREATE_TAKES_UMODE_T
1198                  LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
1199                  LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
1200                  LINUX_DENTRY_OPEN_TAKES_PATH
1201                  LINUX_D_ALIAS_IS_HLIST
1202                  LINUX_HLIST_ITERATOR_NO_NODE
1203                  LINUX_IOP_I_CREATE_TAKES_BOOL
1204                  LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
1205                  LINUX_IOP_LOOKUP_TAKES_UNSIGNED
1206                  LINUX_D_INVALIDATE_IS_VOID
1207                  LINUX_KERNEL_READ_OFFSET_IS_LAST
1208
1209                  dnl If we are guaranteed that keyrings will work - that is
1210                  dnl  a) The kernel has keyrings enabled
1211                  dnl  b) The code is new enough to give us a key_type_keyring
1212                  dnl then we just disable syscall probing unless we've been
1213                  dnl told otherwise
1214
1215                  AS_IF([test "$enable_linux_syscall_probing" = "maybe"],
1216                    [AS_IF([test "$ac_cv_linux_keyring_support" = "yes" -a "$ac_cv_linux_exports_key_type_keyring" = "yes"],
1217                           [enable_linux_syscall_probing="no"],
1218                           [enable_linux_syscall_probing="yes"])
1219                  ])
1220
1221                  dnl Syscall probing needs a few tests of its own, and just
1222                  dnl won't work if the kernel doesn't export init_mm
1223                  AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1224                    LINUX_EXPORTS_INIT_MM
1225                    AS_IF([test "$ac_cv_linux_exports_init_mm" = "no"], [
1226                      AC_MSG_ERROR(
1227                        [Can't do syscall probing without exported init_mm])
1228                    ])
1229                    LINUX_EXPORTS_SYS_CHDIR
1230                    LINUX_EXPORTS_SYS_OPEN
1231                    AC_DEFINE(ENABLE_LINUX_SYSCALL_PROBING, 1,
1232                              [define to enable syscall table probes])
1233                  ])
1234
1235                  dnl Packaging and SMP build
1236                  if test "x$with_linux_kernel_packaging" != "xyes" ; then
1237                    LINUX_WHICH_MODULES
1238                  else
1239                    AC_SUBST(MPS,'SP')
1240                  fi
1241
1242                  dnl Syscall probing
1243                  if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
1244                    AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1245                      AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
1246                    ])
1247                    ac_cv_linux_exports_sys_call_table=no
1248                    if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
1249                      ac_cv_linux_exports_ia32_sys_call_table=yes
1250                    fi
1251                  else
1252                    LINUX_EXPORTS_KALLSYMS_ADDRESS
1253                    LINUX_EXPORTS_KALLSYMS_SYMBOL
1254                    LINUX_EXPORTS_SYS_CALL_TABLE
1255                    LINUX_EXPORTS_IA32_SYS_CALL_TABLE
1256                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
1257                          linux_syscall_method=none
1258                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
1259                             linux_syscall_method=scan
1260                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
1261                                linux_syscall_method=scan_with_kallsyms_address
1262                             fi
1263                          fi
1264                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
1265                             linux_syscall_method=kallsyms_symbol
1266                          fi
1267                          if test "x$linux_syscall_method" = "xnone"; then
1268                             AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
1269                             linux_syscall_method=scan
1270                          fi
1271                    fi
1272                  fi
1273                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
1274                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
1275                  fi
1276                  if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
1277                   AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
1278                  fi
1279                  if test "x$ac_cv_linux_func_page_get_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1280                   AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1281                  else
1282                   AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1283                  fi
1284                  if test "x$ac_cv_linux_func_page_get_link" != "xyes" -a "x$ac_cv_linux_struct_inode_operations_has_get_link" = "xyes"; then
1285                         AC_MSG_ERROR([Your kernel does not use follow_link - not supported without symlink cache API])
1286                         exit 1
1287                  fi
1288                 :
1289                 fi
1290                 if test "x$enable_linux_d_splice_alias_extra_iput" = xyes; then
1291                     AC_DEFINE(D_SPLICE_ALIAS_LEAK_ON_ERROR, 1, [for internal use])
1292                 fi
1293 dnl Linux-only, but just enable always.
1294                 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1295 esac
1296
1297 AC_CACHE_CHECK([if compiler has __sync_add_and_fetch],
1298     [ac_cv_sync_fetch_and_add],
1299     [AC_TRY_LINK(, [int var; return __sync_add_and_fetch(&var, 1);],
1300                     [ac_cv_sync_fetch_and_add=yes],
1301                     [ac_cv_sync_fetch_and_add=no])
1302 ])
1303 AS_IF([test "$ac_cv_sync_fetch_and_add" = "yes"],
1304       [AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD, 1,
1305                 [define if your C compiler has __sync_add_and_fetch])])
1306
1307 AC_CACHE_CHECK([if struct sockaddr has sa_len field],
1308     [ac_cv_sockaddr_len],
1309     [AC_TRY_COMPILE( [#include <sys/types.h>
1310 #include <sys/socket.h>],
1311                      [struct sockaddr *a; a->sa_len=0;],
1312                      [ac_cv_sockaddr_len=yes],
1313                      [ac_cv_sockaddr_len=no])
1314 ])
1315 AS_IF([test "$ac_cv_sockaddr_len" = "yes"],
1316       [AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1,
1317                  [define if you struct sockaddr sa_len])])
1318
1319 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1320         echo Skipping library tests because they confuse Irix.
1321 else
1322   AC_SEARCH_LIBS([socket], [socket inet])
1323   AC_SEARCH_LIBS([connect], [nsl])
1324   AC_SEARCH_LIBS([gethostbyname], [dns nsl resolv])
1325
1326   dnl darwin wants it, aix hates it
1327   AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1328   AC_TRY_COMPILE([
1329   #include <stdlib.h>
1330   #include <stdio.h>
1331   #include <sys/types.h>
1332   #include <sys/socket.h>
1333   #include <netinet/in.h>
1334   #include <arpa/inet.h>
1335   #include <arpa/nameser.h>
1336   #include <arpa/nameser_compat.h>
1337   #include <resolv.h>
1338   ], [static int i; i = 0;],
1339   [AC_MSG_RESULT(yes)
1340    AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1341   [AC_MSG_RESULT(no)
1342    ])
1343
1344   openafs_save_libs="$LIBS"
1345   AC_MSG_CHECKING([for res_search])
1346   AC_FUNC_RES_SEARCH
1347
1348   if test "$ac_cv_func_res_search" = no; then
1349       for lib in dns nsl resolv; do
1350         if test "$ac_cv_func_res_search" != yes; then
1351           LIBS="-l$lib $LIBS"
1352           AC_FUNC_RES_SEARCH
1353           LIBS="$openafs_save_libs"
1354         fi
1355       done    
1356       if test "$ac_cv_func_res_search" = yes; then
1357         LIB_AFSDB="-l$lib"
1358         AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1359         AC_MSG_RESULT([yes, in lib$lib])
1360       else
1361         AC_MSG_RESULT(no)
1362       fi
1363   else
1364     AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1365     AC_MSG_RESULT(yes)
1366   fi
1367   
1368 fi
1369 XLIBS="$LIB_AFSDB $XLIBS"
1370
1371 AC_CHECK_RESOLV_RETRANS
1372
1373 AC_CACHE_CHECK([for setsockopt(, SOL_IP, IP_RECVERR)],
1374     [ac_cv_setsockopt_iprecverr],
1375     [AC_TRY_COMPILE( [
1376 #include <sys/types.h>
1377 #include <sys/socket.h>
1378 #include <netinet/in.h>],
1379 [int on=1;
1380 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));],
1381         [ac_cv_setsockopt_iprecverr=yes],
1382         [ac_cv_setsockopt_iprecverr=no])])
1383
1384 AS_IF([test "$ac_cv_setsockopt_iprecverr" = "yes"],
1385       [AC_DEFINE([HAVE_SETSOCKOPT_IP_RECVERR], [1],
1386                  [define if we can receive socket errors via IP_RECVERR])])
1387
1388 PTHREAD_LIBS=error
1389 if test "x$MKAFS_OSTYPE" = OBSD; then
1390         PTHREAD_LIBS="-pthread"
1391 fi
1392 if test "x$MKAFS_OSTYPE" = xDFBSD; then
1393         PTHREAD_LIBS="-pthread"
1394 fi
1395 if test "x$PTHREAD_LIBS" = xerror; then
1396         AC_CHECK_LIB(pthread, pthread_attr_init,
1397                 PTHREAD_LIBS="-lpthread")
1398 fi
1399 if test "x$PTHREAD_LIBS" = xerror; then
1400         AC_CHECK_LIB(pthreads, pthread_attr_init,
1401                 PTHREAD_LIBS="-lpthreads")
1402 fi
1403 if test "x$PTHREAD_LIBS" = xerror; then
1404         AC_CHECK_LIB(c_r, pthread_attr_init,
1405                 PTHREAD_LIBS="-lc_r")
1406 fi
1407 if test "x$PTHREAD_LIBS" = xerror; then
1408         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1409 fi
1410 if test "x$PTHREAD_LIBS" = xerror; then
1411         # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1412         AC_CHECK_LIB(pthread, pthread_attr_destroy,
1413                 PTHREAD_LIBS="-lpthread")
1414 fi
1415 if test "x$PTHREAD_LIBS" = xerror; then
1416         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1417 fi
1418 AC_SUBST(PTHREAD_LIBS)
1419
1420 HOST_CPU="$host_cpu"
1421
1422 if test "x$with_bsd_kernel_headers" != "x"; then
1423         BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1424 else
1425         BSD_KERNEL_PATH="/usr/src/sys"
1426 fi
1427
1428 if test "x$with_bsd_kernel_build" != "x"; then
1429         BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1430 else
1431         case $AFS_SYSNAME in
1432                 *_fbsd_*)
1433                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1434                         ;;
1435                 *_nbsd*)
1436                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/arch/${HOST_CPU}/compile/GENERIC"
1437         esac
1438 fi
1439
1440 # Fast restart
1441 if test "$enable_supergroups" = "yes"; then
1442         AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1443 fi
1444
1445 if test "$enable_bitmap_later" = "yes"; then
1446         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1447 fi
1448
1449 if test "$enable_unix_sockets" = "yes"; then
1450         AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1451         USE_UNIX_SOCKETS="yes"
1452 else
1453         USE_UNIX_SOCKETS="no"
1454 fi
1455 AC_SUBST(USE_UNIX_SOCKETS)
1456
1457 if test "$enable_ubik_read_while_write" = "yes"; then
1458         AC_DEFINE(UBIK_READ_WHILE_WRITE, 1, [define if you want to enable ubik read while write])
1459 fi
1460
1461 if test "$enable_namei_fileserver" = "yes"; then
1462         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1463         VFSCK=""
1464 else
1465         if test "$enable_namei_fileserver" = "default"; then
1466                 case $host in
1467                         *-solaris2.10*)
1468                                 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1469                                 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1470                                 VFSCK=""
1471                                 ;;
1472                         *-solaris2.11*)
1473                                 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1474                                 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1475                                 VFSCK=""
1476                                 ;;
1477                         *)
1478                                 VFSCK="vfsck"
1479                                 ;;
1480                 esac
1481         else
1482                 VFSCK="vfsck"
1483         fi
1484 fi
1485
1486 dnl check for tivoli
1487 AC_MSG_CHECKING(for tivoli tsm butc support)
1488 XBSA_CFLAGS=""
1489 if test "$enable_tivoli_tsm" = "yes"; then
1490         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1491         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1492         XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1493         XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1494         XBSADIR5=/usr/tivoli/tsm/client/api/bin64/sample
1495         XBSADIR6=/opt/tivoli/tsm/client/api/bin64/sample
1496
1497         if test -r "$XBSADIR3/dsmapifp.h"; then
1498                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1499                 XBSA_XLIBS="-ldl"
1500                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1501         elif test -r "$XBSADIR4/dsmapifp.h"; then
1502                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1503                 XBSA_XLIBS="-ldl"
1504                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1505         elif test -r "$XBSADIR5/dsmapifp.h"; then
1506                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR5"
1507                 XBSA_XLIBS="-ldl"
1508                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1509         elif test -r "$XBSADIR6/dsmapifp.h"; then
1510                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR6"
1511                 XBSA_XLIBS="-ldl"
1512                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1513         elif test -r "$XBSADIR1/xbsa.h"; then
1514                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1515                 XBSA_XLIBS=""
1516                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1517         elif test -r "$XBSADIR2/xbsa.h"; then
1518                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1519                 XBSA_XLIBS=""
1520                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1521         else
1522                 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1523         fi
1524 else
1525         AC_MSG_RESULT([no])
1526 fi
1527 AC_SUBST(XBSA_CFLAGS)
1528 AC_SUBST(XBSA_XLIBS) 
1529 XLIBS="$XBSA_XLIBS $XLIBS"
1530
1531 dnl checks for header files.
1532 AC_HEADER_STDC
1533 AC_HEADER_SYS_WAIT
1534 AC_HEADER_DIRENT
1535 AC_CHECK_HEADERS([ \
1536                    arpa/inet.h \
1537                    arpa/nameser.h \
1538                    curses.h\
1539                    direct.h \
1540                    errno.h \
1541                    fcntl.h \
1542                    grp.h \
1543                    math.h \
1544                    mntent.h \
1545                    ncurses.h \
1546                    ncurses/ncurses.h \
1547                    netdb.h \
1548                    netinet/in.h \
1549                    pthread_np.h \
1550                    pwd.h \
1551                    regex.h \
1552                    security/pam_appl.h \
1553                    signal.h \
1554                    stdint.h \
1555                    stdio_ext.h \
1556                    stdlib.h \
1557                    string.h \
1558                    strings.h \
1559                    sys/bitypes.h \
1560                    sys/bswap.h \
1561                    sys/dk.h \
1562                    sys/fcntl.h \
1563                    sys/file.h \
1564                    sys/fs_types.h \
1565                    sys/fstyp.h \
1566                    sys/ioctl.h \
1567                    sys/ipc.h \
1568                    sys/lockf.h \
1569                    sys/map.h \
1570                    sys/mount.h \
1571                    sys/mntent.h \
1572                    sys/mnttab.h \
1573                    sys/pag.h \
1574                    sys/param.h \
1575                    sys/resource.h \
1576                    sys/select.h \
1577                    sys/statfs.h \
1578                    sys/statvfs.h \
1579                    sys/socket.h \
1580                    sys/sysctl.h \
1581                    sys/time.h \
1582                    sys/types.h \
1583                    sys/uio.h \
1584                    sys/un.h \
1585                    sys/vfs.h \
1586                    syslog.h \
1587                    termios.h \
1588                    time.h \
1589                    ucontext.h \
1590                    unistd.h \
1591                    windows.h \
1592                 ])
1593
1594 AC_CHECK_HEADERS([resolv.h], [], [], [AC_INCLUDES_DEFAULT
1595 #ifdef HAVE_NETINET_IN_H
1596 # include <netinet/in.h>
1597 #endif])
1598
1599 AC_CHECK_HEADERS([net/if.h],[],[],[AC_INCLUDES_DEFAULT
1600 #ifdef HAVE_SYS_SOCKET_H
1601 # include <sys/socket.h>
1602 #endif])
1603
1604 AC_CHECK_HEADERS([netinet/if_ether.h],[],[],[AC_INCLUDES_DEFAULT
1605 #ifdef HAVE_SYS_SOCKET_H
1606 # include <sys/socket.h>
1607 #endif
1608 #ifdef HAVE_NETINET_IN_H
1609 # include <netinet/in.h>
1610 #endif
1611 #ifdef HAVE_NET_IF_H
1612 # include <net/if.h>
1613 #endif])
1614
1615 AC_CHECK_HEADERS([security/pam_modules.h],[],[],[AC_INCLUDES_DEFAULT
1616 #ifdef HAVE_SECURITY_PAM_APPL_H
1617 # include <security/pam_appl.h>
1618 #endif])
1619
1620 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1621
1622 AC_CHECK_TYPES([fsblkcnt_t],,,[
1623 #include <sys/types.h>
1624 #ifdef HAVE_SYS_BITYPES_H
1625 #include <sys/bitypes.h>
1626 #endif
1627 #ifdef HAVE_SYS_STATFS_H
1628 #include <sys/statfs.h>
1629 #endif
1630 #ifdef HAVE_SYS_STATVFS_H
1631 #include <sys/statvfs.h>
1632 #endif
1633 ])
1634
1635 dnl see what struct stat has for timestamps
1636 AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
1637
1638 OPENAFS_TEST_PACKAGE(libintl,[#include <libintl.h>],[-lintl],,,INTL)
1639
1640 if test "$enable_debug_locks" = yes; then
1641         AC_DEFINE(OPR_DEBUG_LOCKS, 1, [turn on lock debugging in opr])
1642 fi
1643
1644 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1645         HAVE_PAM="yes"
1646 else
1647         HAVE_PAM="no"
1648 fi
1649 AC_SUBST(HAVE_PAM)
1650
1651 if test "$enable_login" = yes; then
1652         BUILD_LOGIN="yes"
1653 else
1654         BUILD_LOGIN="no"
1655 fi
1656 AC_SUBST(BUILD_LOGIN)
1657
1658 if test "$enable_kauth" = yes; then
1659         INSTALL_KAUTH="yes"
1660 else
1661         INSTALL_KAUTH="no"
1662 fi
1663 AC_SUBST(INSTALL_KAUTH)
1664
1665 AC_CHECK_FUNCS([ \
1666         arc4random \
1667         closelog \
1668         fcntl \
1669         fseeko64 \
1670         ftello64 \
1671         getcwd \
1672         getegid \
1673         geteuid \
1674         getgid \
1675         getuid \
1676         getrlimit \
1677         issetugid \
1678         mkstemp \
1679         openlog \
1680         poll \
1681         pread \
1682         preadv \
1683         preadv64 \
1684         pwrite \
1685         pwritev \
1686         pwritev64 \
1687         regcomp \
1688         regerror \
1689         regexec \
1690         setitimer \
1691         setvbuf \
1692         sigaction \
1693         strcasestr \
1694         strerror \
1695         sysconf \
1696         sysctl \
1697         syslog \
1698         tdestroy \
1699         timegm \
1700 ])
1701
1702 OPENAFS_ROKEN()
1703 OPENAFS_HCRYPTO()
1704 OPENAFS_CURSES()
1705 OPENAFS_C_ATTRIBUTE()
1706 OPENAFS_C_PRAGMA()
1707
1708 dnl Functions that Heimdal's libroken provides, but that we
1709 dnl haven't found a need for yet, and so haven't imported
1710 AC_CHECK_FUNCS([ \
1711         chown \
1712         fchown \
1713         gethostname \
1714         lstat \
1715         inet_aton \
1716         putenv \
1717         readv \
1718         setenv \
1719         strdup \
1720         strftime \
1721         strndup \
1722         strsep \
1723         unsetenv \
1724 ])
1725
1726 dnl Functions that are in objects that we always build from libroken
1727 AC_CHECK_FUNCS([ \
1728         asprintf \
1729         asnprintf \
1730         vasprintf \
1731         vasnprintf \
1732         vsnprintf \
1733         snprintf \
1734 ])
1735
1736 dnl Functions that we're going to try and get from libroken
1737 AC_REPLACE_FUNCS([ \
1738         daemon \
1739         ecalloc \
1740         emalloc \
1741         erealloc \
1742         err \
1743         errx \
1744         flock \
1745         freeaddrinfo \
1746         gai_strerror \
1747         getaddrinfo \
1748         getdtablesize \
1749         getnameinfo \
1750         getopt \
1751         getprogname \
1752         gettimeofday \
1753         inet_ntop \
1754         inet_pton \
1755         localtime_r \
1756         mkstemp \
1757         setenv \
1758         setprogname \
1759         strcasecmp \
1760         strlcat \
1761         strnlen \
1762         strlcpy \
1763         strsep \
1764         tdelete \
1765         tfind \
1766         tsearch \
1767         twalk \
1768         unsetenv \
1769         verr \
1770         verrx \
1771         vsyslog \
1772         vwarn \
1773         vwarnx \
1774         warn \
1775         warnx \
1776 ])
1777
1778 dnl Headers that we're going to try and get from libroken
1779 AC_CHECK_HEADERS([ \
1780         err.h \
1781         search.h \
1782 ])
1783
1784 AC_CHECK_DECLS([h_errno], [], [], [
1785 #include <sys/types.h>
1786 #ifdef HAVE_NETDB_H
1787 #include <netdb.h>
1788 #endif
1789 ])
1790
1791 AC_HEADER_TIME
1792
1793 ROKEN_HEADERS=
1794 AS_IF([test "$ac_cv_header_err_h" != "yes" ],
1795       [ROKEN_HEADERS="$ROKEN_HEADERS \$(TOP_INCDIR)/err.h"],
1796       [])
1797 AC_SUBST(ROKEN_HEADERS)
1798
1799 dnl Stuff that's harder ...
1800 AC_MSG_CHECKING([for bswap16])
1801 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1802 #ifdef HAVE_SYS_TYPES_H
1803 #include <sys/types.h>
1804 #endif
1805 #ifdef HAVE_SYS_BSWAP_H
1806 #include <sys/bswap.h>
1807 #endif
1808 ],
1809 [short a, b; b = bswap16(a); ])],
1810 [AC_MSG_RESULT(yes)
1811  AC_DEFINE(HAVE_BSWAP16, 1, [Define to 1 if you have the bswap16 function])
1812 ],
1813 [AC_MSG_RESULT(no)])
1814
1815 AC_MSG_CHECKING([for bswap32])
1816 AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifdef HAVE_SYS_TYPES_H
1817 #include <sys/types.h>
1818 #endif
1819 #ifdef HAVE_SYS_BSWAP_H
1820 #include <sys/bswap.h>
1821 #endif
1822 ],
1823 [int a, b; b = bswap32(a); ])],
1824 [AC_MSG_RESULT(yes)
1825  AC_DEFINE(HAVE_BSWAP32, 1, [Define to 1 if you have the bswap32 function])
1826 ],
1827 [AC_MSG_RESULT(no)])
1828
1829 case $AFS_SYSNAME in
1830 *hp_ux* | *hpux*)
1831    AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.])
1832    ;;
1833 *)
1834    AC_MSG_CHECKING([for positional I/O])
1835    if test "$ac_cv_func_pread" = "yes" && \
1836            test "$ac_cv_func_pwrite" = "yes"; then
1837       AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()])
1838       AC_MSG_RESULT(yes)
1839    else
1840      AC_MSG_RESULT(no)
1841    fi
1842    AC_MSG_CHECKING([for vectored positional I/O])
1843    AS_IF([test "$ac_cv_func_preadv" = "yes" -a \
1844                "$ac_cv_func_pwritev" = "yes" -a \
1845                "$ac_cv_func_preadv64" = "yes" -a \
1846                "$ac_cv_func_pwritev64" = "yes"],
1847          [AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()])
1848           AC_MSG_RESULT(yes)],
1849          [AC_MSG_RESULT(no)])
1850    ;;
1851 esac
1852
1853 AC_MSG_CHECKING([for POSIX regex library])
1854 if test "$ac_cv_header_regex_h" = "yes" && \
1855         test "$ac_cv_func_regcomp" = "yes" && \
1856         test "$ac_cv_func_regexec" = "yes" && \
1857         test "$ac_cv_func_regerror" = "yes"; then
1858     AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1859     AC_MSG_RESULT(yes)
1860 else
1861     AC_MSG_RESULT(no)
1862 fi
1863
1864 dnl Look for "non-portable" pthreads functions.
1865 save_LIBS="$LIBS"
1866 LIBS="$LIBS $PTHREAD_LIBS"
1867 AC_CHECK_FUNCS([ \
1868         pthread_set_name_np \
1869         pthread_setname_np \
1870 ])
1871
1872 dnl Sadly, there are three different versions of pthread_setname_np.
1873 dnl Try to cater for all of them.
1874 if test "$ac_cv_func_pthread_setname_np" = "yes" ; then
1875     AC_MSG_CHECKING([for signature of pthread_setname_np])
1876     AC_TRY_COMPILE([
1877 #include <pthread.h>
1878 #ifdef HAVE_PTHREAD_NP_H
1879 #include <pthread_np.h>
1880 #endif
1881 ], [pthread_setname_np(pthread_self(), "test", (void *)0)], [
1882         AC_MSG_RESULT([three arguments])
1883         pthread_setname_np_args=3], [
1884         AC_TRY_COMPILE([
1885 #include <pthread.h>
1886 #ifdef HAVE_PTHREAD_NP_H
1887 #include <pthread_np.h>
1888 #endif
1889 ], [pthread_setname_np(pthread_self(), "test")], [
1890             AC_MSG_RESULT([two arguments])
1891             pthread_setname_np_args=2], [
1892             AC_TRY_COMPILE([
1893 #include <pthread.h>
1894 #ifdef HAVE_PTHREAD_NP_H
1895 #include <pthread_np.h>
1896 #endif
1897 ], [pthread_setname_np("test")], [
1898                 AC_MSG_RESULT([one argument])
1899                 pthread_setname_np_args=1], [pthread_setname_np_args=0])
1900 ])
1901 ])
1902 AC_DEFINE_UNQUOTED([PTHREAD_SETNAME_NP_ARGS], $pthread_setname_np_args, [Number of arguments required by pthread_setname_np() function])
1903 fi
1904 LIBS="$save_LIBS"
1905
1906 openafs_cv_saved_CFLAGS="$CFLAGS"
1907 CFLAGS="$CFLAGS $XCFLAGS_NOCHECKING"
1908
1909 AC_TYPE_SIGNAL
1910 OPENAFS_RETSIGTYPE
1911 AC_CHECK_SIZEOF(void *)
1912 AC_CHECK_SIZEOF(unsigned long long)
1913 AC_CHECK_SIZEOF(unsigned long)
1914 AC_CHECK_SIZEOF(unsigned int)
1915 AC_TYPE_INTPTR_T
1916 AC_TYPE_UINTPTR_T
1917 AC_TYPE_SSIZE_T
1918 AC_CHECK_TYPE([sig_atomic_t],[],
1919     [AC_DEFINE([sig_atomic_t], [int],
1920         [Define to int if <signal.h> does not define.])],
1921 [#include <sys/types.h>
1922 #include <signal.h>])
1923 AC_CHECK_TYPE([socklen_t],[],
1924     [AC_DEFINE([socklen_t], [int],
1925         [Define to int if <sys/socket.h> does not define.])],
1926 [#include <sys/types.h>
1927 #include <sys/socket.h>])
1928 AC_CHECK_TYPES(off64_t)
1929 AC_CHECK_TYPES([ssize_t], [], [], [#include <unistd.h>])
1930 AC_CHECK_TYPES([struct winsize], [], [], [
1931 #ifdef HAVE_TERMIOS_H
1932 # include <termios.h>
1933 #else
1934 # include <sys/termios.h>
1935 #endif
1936 #include <sys/ioctl.h>])
1937 AC_CHECK_TYPES([sa_family_t, socklen_t, struct sockaddr,
1938                 struct sockaddr_storage],
1939                [], [], [
1940 #include <sys/types.h>
1941 #include <sys/socket.h>
1942 ])
1943 AC_CHECK_TYPES([sa_family_t], [], [], [
1944 #include <sys/types.h>
1945 #include <sys/socket.h>
1946 ])
1947 AC_CHECK_TYPES([struct addrinfo], [], [], [
1948 #include <sys/types.h>
1949 #ifdef HAVE_NETDB_H
1950 #include <netdb.h>
1951 #endif
1952 ])
1953 AC_CHECK_TYPES([long long], [], [], [])
1954
1955 AC_SIZEOF_TYPE(long)
1956
1957 CFLAGS="$openafs_cv_saved_CFLAGS"
1958
1959 RRA_HEADER_PAM_CONST
1960
1961
1962 dnl Directory PATH handling
1963 if test "x$enable_transarc_paths" = "xyes"  ; then 
1964     afsconfdir=${afsconfdir=/usr/afs/etc}
1965     viceetcdir=${viceetcdir=/usr/vice/etc}
1966     afskerneldir=${afskerneldir=${viceetcdir}}
1967     afssrvbindir=${afssrvbindir=/usr/afs/bin}
1968     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1969     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1970     afsdbdir=${afsdbdir=/usr/afs/db}
1971     afslogsdir=${afslogsdir=/usr/afs/logs}
1972     afslocaldir=${afslocaldir=/usr/afs/local}
1973     afsbackupdir=${afsbackupdir=/usr/afs/backup}
1974     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1975     afsdatadir=${afsdatadir=/usr/vice/etc}
1976 else 
1977     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1978     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1979     afskerneldir=${afskerneldir='${libdir}/openafs'}
1980     afssrvbindir=${afssrvbindir='${bindir}'}
1981     afssrvsbindir=${afssrvsbindir='${sbindir}'}
1982     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1983     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1984     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1985     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1986     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1987     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1988     afsdatadir=${afsdatadir='${datadir}/openafs'}
1989 fi
1990 AC_SUBST(afsconfdir)
1991 AC_SUBST(viceetcdir)
1992 AC_SUBST(afskerneldir)
1993 AC_SUBST(afssrvbindir)
1994 AC_SUBST(afssrvsbindir)
1995 AC_SUBST(afssrvlibexecdir)
1996 AC_SUBST(afsdbdir)
1997 AC_SUBST(afslogsdir)
1998 AC_SUBST(afslocaldir)
1999 AC_SUBST(afsbackupdir)
2000 AC_SUBST(afsbosconfigdir)
2001 AC_SUBST(afsdatadir)
2002
2003 if test "x$enable_kernel_module" = "xyes"; then
2004 ENABLE_KERNEL_MODULE=libafs
2005 fi
2006
2007 if test "x$enable_pthreaded_ubik" = "xyes"; then
2008 ENABLE_PTHREADED_UBIK=yes
2009 fi
2010
2011 AC_SUBST(VFSCK)
2012 AC_SUBST(AFS_SYSNAME)
2013 AC_SUBST(AFS_PARAM_COMMON)
2014 AC_SUBST(ENABLE_KERNEL_MODULE)
2015 AC_SUBST(ENABLE_PTHREADED_UBIK)
2016 AC_SUBST(LIB_AFSDB)
2017 AC_SUBST(LINUX_KERNEL_PATH)
2018 AC_SUBST(LINUX_KERNEL_BUILD)
2019 AC_SUBST(HOST_CPU)
2020 AC_SUBST(BSD_KERNEL_PATH)
2021 AC_SUBST(BSD_KERNEL_BUILD)
2022 AC_SUBST(LINUX_VERSION)
2023 AC_SUBST(MKAFS_OSTYPE)
2024 AC_SUBST(TOP_OBJDIR)
2025 AC_SUBST(TOP_SRCDIR)
2026 AC_SUBST(TOP_INCDIR)
2027 AC_SUBST(TOP_LIBDIR)
2028 AC_SUBST(DEST)
2029 AC_SUBST(DARWIN_INFOFILE)
2030 AC_SUBST(IRIX_BUILD_IP35)
2031 AC_SUBST(HTML_XSL)
2032 AC_SUBST(XSLTPROC)
2033 AC_SUBST(DOCBOOK2PDF)
2034 AC_SUBST(DOCBOOK_STYLESHEETS)
2035
2036 OPENAFS_FUSE
2037 OPENAFS_SWIG
2038
2039 TOP_SRCDIR="${srcdir}/src"
2040 dnl
2041 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
2042 dnl
2043 case $TOP_SRCDIR in
2044         /*)
2045                 ;;
2046         *)
2047                 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
2048                 ;;
2049 esac
2050
2051 TOP_OBJDIR="${SRCDIR_PARENT}"
2052 TOP_INCDIR="${SRCDIR_PARENT}/include"
2053 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
2054 if test "${DEST}x" = "x"; then
2055         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
2056 fi
2057
2058 if test "x$with_crosstools_dir" != "x"; then
2059         if test -f "$with_crosstools_dir/rxgen" -a -f "$with_crosstools_dir/compile_et" -a -f "$with_crosstools_dir/config"; then
2060                 COMPILE_ET_PATH=$with_crosstools_dir/compile_et
2061                 CONFIGTOOL_PATH=$with_crosstools_dir/config
2062                 RXGEN_PATH=$with_crosstools_dir/rxgen
2063         else
2064                 AC_MSG_ERROR(Tools not found in $with_crosstools_dir)
2065                 exit 1
2066         fi
2067 else
2068         COMPILE_ET_PATH="${SRCDIR_PARENT}/src/comerr/compile_et"
2069         CONFIGTOOL_PATH="${SRCDIR_PARENT}/src/config/config"
2070         RXGEN_PATH="${SRCDIR_PARENT}/src/rxgen/rxgen"
2071 fi
2072 AC_SUBST(COMPILE_ET_PATH)
2073 AC_SUBST(CONFIGTOOL_PATH)
2074 AC_SUBST(RXGEN_PATH)
2075
2076 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
2077 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
2078 AC_SUBST(HELPER_SPLINT)
2079 AC_SUBST(HELPER_SPLINTCFG)
2080
2081 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
2082
2083 dnl Check to see if crypt lives in a different library
2084 AC_CHECK_LIB(crypt, crypt, LIB_crypt="-lcrypt")
2085 AC_SUBST(LIB_crypt)
2086
2087 dnl Check to see if the compiler support labels in structs
2088 AC_MSG_CHECKING(for label support in structs)
2089 AC_TRY_COMPILE([], [
2090 extern void osi_UFSOpen(void);
2091 struct labeltest {
2092    void (*open) (void);
2093 };
2094 struct labeltest struct_labeltest = {
2095    .open       = osi_UFSOpen,
2096 }
2097 ],
2098 [AC_MSG_RESULT(yes)
2099  AC_DEFINE(HAVE_STRUCT_LABEL_SUPPORT, 1, [Define to 1 if your compiler supports labels in structs.])
2100 ],
2101 [AC_MSG_RESULT(no)
2102 ])
2103
2104 AC_MSG_CHECKING([checking for dirfd])
2105 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
2106 #ifdef HAVE_DIRENT_H
2107 #include <dirent.h>
2108 #endif
2109 ]],
2110         [[DIR *d = 0; dirfd(d);]])],
2111         [ac_rk_have_dirfd=yes], [ac_rk_have_dirfd=no])
2112 if test "$ac_rk_have_dirfd" = "yes" ; then
2113         AC_DEFINE_UNQUOTED(HAVE_DIRFD, 1, [have a dirfd function/macro])
2114 fi
2115 AC_MSG_RESULT($ac_rk_have_dirfd)
2116
2117 OPENAFS_HAVE_STRUCT_FIELD(DIR, dd_fd, [#include <sys/types.h>
2118 #ifdef HAVE_DIRENT_H
2119 #include <dirent.h>
2120 #endif])
2121
2122 OPENAFS_HAVE_STRUCT_FIELD(struct rusage, ru_idrss,
2123 [#ifdef HAVE_SYS_RESOURCE_H
2124 #include <sys/resource.h>
2125 #endif])
2126
2127 dnl Check for UUID library
2128 AC_CHECK_HEADERS([uuid/uuid.h])
2129 AC_CHECK_LIB(uuid, uuid_generate, LIBS_uuid="-luuid")
2130 AC_CHECK_FUNCS([uuid_generate])
2131 ])
2132
2133