Add event-related mutex assertions
[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                 sparc-sun-solaris2.8)
708                         AFS_SYSNAME="sun4x_58"
709                         ;;
710                 sparc-sun-solaris2.9)
711                         AFS_SYSNAME="sun4x_59"
712                         ;;
713                 sparc-sun-solaris2.10)
714                         AFS_SYSNAME="sun4x_510"
715                         ;;
716                 sparc-sun-solaris2.11)
717                         AFS_SYSNAME="sun4x_511"
718                         ;;
719                 i386-pc-solaris2.8)
720                         AFS_SYSNAME="sunx86_58"
721                         ;;
722                 i386-pc-solaris2.9)
723                         AFS_SYSNAME="sunx86_59"
724                         ;;
725                 i386-pc-solaris2.10)
726                         AFS_SYSNAME="sunx86_510"
727                         ;;
728                 i386-pc-solaris2.11)
729                         AFS_SYSNAME="sunx86_511"
730                         ;;
731                 alpha*-dec-osf4.0*)
732                         AFS_SYSNAME="alpha_dux40"
733                         ;;
734                 alpha*-dec-osf5.0*)
735                         AFS_SYSNAME="alpha_dux50"
736                         ;;
737                 alpha*-dec-osf5.1*)
738                         AFS_SYSNAME="alpha_dux51"
739                         ;;
740                 mips-sgi-irix6.5)
741                         AFS_SYSNAME="sgi_65"
742                         enable_pam="no"
743                         ;;
744                 ia64-*-linux*)
745                         AFS_SYSNAME="ia64_linuxXX"
746                         ;;
747                 powerpc-*-linux*)
748                         AFS_SYSNAME="`/bin/arch`_linuxXX"
749                         ;;
750                 powerpc64-*-linux*)
751                         AFS_SYSNAME="ppc64_linuxXX"
752                         ;;
753                 alpha*-linux*)
754                         AFS_SYSNAME="alpha_linux_XX"
755                         ;;
756                 s390-*-linux*)
757                         AFS_SYSNAME="s390_linuxXX"
758                         ;;
759                 s390x-*-linux*)
760                         AFS_SYSNAME="s390x_linuxXX"
761                         ;;
762                 sparc-*-linux*)
763                         AFS_SYSNAME="`/bin/arch`_linuxXX"
764                         ;;
765                 sparc64-*-linux*)
766                         AFS_SYSNAME="sparc64_linuxXX"
767                         ;;
768                 i?86-*-linux*)
769                         AFS_SYSNAME="i386_linuxXX"
770                         ;;
771                 arm*-linux*)
772                         AFS_SYSNAME="arm_linuxXX"
773                         ;;
774                 parisc-*-linux-gnu|hppa-*-linux-gnu)
775                         AFS_SYSNAME="parisc_linuxXX"
776                         enable_pam="no"
777                         ;;
778                 power*-ibm-aix4.2*)
779                         AFS_SYSNAME="rs_aix42"
780                         enable_pam="no"
781                         ;;
782                 power*-ibm-aix4.3*)
783                         AFS_SYSNAME="rs_aix42"
784                         enable_pam="no"
785                         ;;
786                 power*-ibm-aix5.1*)
787                         AFS_SYSNAME="rs_aix51"
788                         enable_pam="no"
789                         ;;
790                 power*-ibm-aix5.2*)
791                         AFS_SYSNAME="rs_aix52"
792                         enable_pam="no"
793                         ;;
794                 power*-ibm-aix5.3*)
795                         AFS_SYSNAME="rs_aix53"
796                         enable_pam="no"
797                         ;;
798                 power*-ibm-aix6.1*)
799                         AFS_SYSNAME="rs_aix61"
800                         enable_pam="no"
801                         ;;
802                 x86_64-*-linux-gnu)
803                         AFS_SYSNAME="amd64_linuxXX"
804                         enable_pam="yes"
805                         ;;
806                 *)
807                         AC_MSG_ERROR(An AFS sysname is required)
808                         exit 1
809                         ;;
810         esac
811         case $AFS_SYSNAME in
812                 *_linux* | *_umlinux*)
813                         if test "x${AFS_SYSKVERS}" = "x"; then
814                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
815                         fi
816                         if test "x${AFS_SYSKVERS}" = "x24" ||
817                                 test "x${AFS_SYSKVERS}" = "x22"; then
818                             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.])
819                         fi
820                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
821                         AFS_SYSNAME="$_AFS_SYSNAME"
822                         AC_TRY_KBUILD(
823                          [],
824                          [#ifndef CONFIG_USERMODE
825                           #error not UML
826                           #endif],
827                          ac_cv_linux_is_uml=yes,)
828                         if test "${ac_cv_linux_is_uml}" = yes; then
829                          _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
830                         fi
831                         AFS_SYSNAME="$_AFS_SYSNAME"
832                         ;;
833         esac
834         AC_MSG_RESULT($AFS_SYSNAME)
835 fi
836
837 case $AFS_SYSNAME in
838         *_darwin*)
839                 AC_CHECK_HEADERS(crt_externs.h)
840                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
841                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
842                 AC_SUBST(OSXSDK)
843                 ;;
844 esac
845
846 dnl Some hosts have a separate common param file they should include.  Figure
847 dnl out if we're on one of them now that we know the sysname.
848 case $AFS_SYSNAME in
849     *_nbsd15)   AFS_PARAM_COMMON=param.nbsd15.h  ;;
850     *_nbsd16)   AFS_PARAM_COMMON=param.nbsd16.h  ;;
851     *_nbsd20)   AFS_PARAM_COMMON=param.nbsd20.h  ;;
852     *_nbsd21)   AFS_PARAM_COMMON=param.nbsd21.h  ;;
853     *_nbsd30)   AFS_PARAM_COMMON=param.nbsd30.h  ;;
854     *_nbsd40)   AFS_PARAM_COMMON=param.nbsd40.h  ;;
855     *_nbsd50)   AFS_PARAM_COMMON=param.nbsd50.h  ;;
856     *_nbsd60)   AFS_PARAM_COMMON=param.nbsd60.h  ;;
857     *_nbsd70)   AFS_PARAM_COMMON=param.nbsd70.h  ;;
858     *_obsd31)   AFS_PARAM_COMMON=param.obsd31.h  ;;
859     *_obsd32)   AFS_PARAM_COMMON=param.obsd32.h  ;;
860     *_obsd33)   AFS_PARAM_COMMON=param.obsd33.h  ;;
861     *_obsd34)   AFS_PARAM_COMMON=param.obsd34.h  ;;
862     *_obsd35)   AFS_PARAM_COMMON=param.obsd35.h  ;;
863     *_obsd36)   AFS_PARAM_COMMON=param.obsd36.h  ;;
864     *_obsd37)   AFS_PARAM_COMMON=param.obsd37.h  ;;
865     *_obsd38)   AFS_PARAM_COMMON=param.obsd38.h  ;;
866     *_obsd39)   AFS_PARAM_COMMON=param.obsd39.h  ;;
867     *_obsd40)   AFS_PARAM_COMMON=param.obsd40.h  ;;
868     *_obsd41)   AFS_PARAM_COMMON=param.obsd41.h  ;;
869     *_obsd42)   AFS_PARAM_COMMON=param.obsd42.h  ;;
870     *_obsd43)   AFS_PARAM_COMMON=param.obsd43.h  ;;
871     *_obsd44)   AFS_PARAM_COMMON=param.obsd44.h  ;;
872     *_obsd45)   AFS_PARAM_COMMON=param.obsd45.h  ;;
873     *_obsd46)   AFS_PARAM_COMMON=param.obsd46.h  ;;
874     *_obsd47)   AFS_PARAM_COMMON=param.obsd47.h  ;;
875     *_obsd48)   AFS_PARAM_COMMON=param.obsd48.h  ;;
876     *_obsd49)   AFS_PARAM_COMMON=param.obsd49.h  ;;
877     *_obsd50)   AFS_PARAM_COMMON=param.obsd50.h  ;;
878     *_obsd51)   AFS_PARAM_COMMON=param.obsd51.h  ;;
879     *_obsd52)   AFS_PARAM_COMMON=param.obsd52.h  ;;
880     *_obsd53)   AFS_PARAM_COMMON=param.obsd53.h  ;;
881     *_obsd54)   AFS_PARAM_COMMON=param.obsd54.h  ;;
882     *_linux26)  AFS_PARAM_COMMON=param.linux26.h ;;
883 # Linux alpha adds an extra underscore for no good reason.
884     *_linux_26) AFS_PARAM_COMMON=param.linux26.h ;;
885     *_fbsd_*)   AFS_PARAM_COMMON=param.generic_fbsd.h ;;
886 esac
887
888 OPENAFS_OSCONF
889
890 case $AFS_SYSNAME in *_linux* | *_umlinux*)
891
892                 # Add (sub-) architecture-specific paths needed by conftests
893                 case $AFS_SYSNAME  in
894                         *_umlinux26)
895                                 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
896                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
897                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
898                                 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
899                 esac
900
901                 if test "x$enable_kernel_module" = "xyes"; then
902                  if test "x$enable_debug_kernel" = "xno"; then
903                         LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
904                  fi
905                  OPENAFS_GCC_SUPPORTS_MARCH
906                  AC_SUBST(P5PLUS_KOPTS)
907                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
908                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
909                  OPENAFS_GCC_SUPPORTS_NO_COMMON
910                  OPENAFS_GCC_SUPPORTS_PIPE
911                  AC_SUBST(LINUX_GCC_KOPTS)
912
913                  dnl Setup the kernel build environment
914                  LINUX_KBUILD_USES_EXTRA_CFLAGS
915                  LINUX_KERNEL_COMPILE_WORKS
916
917                  dnl Operation signature checks
918                  AC_CHECK_LINUX_OPERATION([inode_operations], [follow_link], [no_nameidata],
919                                           [#include <linux/fs.h>],
920                                           [const char *],
921                                           [struct dentry *dentry, void **link_data])
922                  AC_CHECK_LINUX_OPERATION([inode_operations], [put_link], [no_nameidata],
923                                           [#include <linux/fs.h>],
924                                           [void],
925                                           [struct inode *inode, void *link_data])
926                  AC_CHECK_LINUX_OPERATION([inode_operations], [rename], [takes_flags],
927                                           [#include <linux/fs.h>],
928                                           [int],
929                                           [struct inode *oinode, struct dentry *odentry,
930                                                 struct inode *ninode, struct dentry *ndentry,
931                                                 unsigned int flags])
932
933                  dnl Check for header files
934                  AC_CHECK_LINUX_HEADER([cred.h])
935                  AC_CHECK_LINUX_HEADER([config.h])
936                  AC_CHECK_LINUX_HEADER([exportfs.h])
937                  AC_CHECK_LINUX_HEADER([freezer.h])
938                  AC_CHECK_LINUX_HEADER([key-type.h])
939                  AC_CHECK_LINUX_HEADER([semaphore.h])
940                  AC_CHECK_LINUX_HEADER([seq_file.h])
941                  AC_CHECK_LINUX_HEADER([sched/signal.h])
942                  AC_CHECK_LINUX_HEADER([uaccess.h])
943
944                  dnl Type existence checks
945                  AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
946                  AC_CHECK_LINUX_TYPE([kuid_t], [uidgid.h])
947
948                  dnl Check for structure elements
949                  AC_CHECK_LINUX_STRUCT([address_space], [backing_dev_info], [fs.h])
950                  AC_CHECK_LINUX_STRUCT([address_space_operations],
951                                        [write_begin], [fs.h])
952                  AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
953                                        [backing-dev.h])
954                  AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h])
955                  AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
956                  AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h])
957                  AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h])
958                  AC_CHECK_LINUX_STRUCT([group_info], [gid], [cred.h])
959                  AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h])
960                  AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h])
961                  AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h])
962                  AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h])
963                  AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
964                  AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h])
965                  AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
966                  AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
967                  AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h])
968                  AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
969                  AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
970                  AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
971                  AC_CHECK_LINUX_STRUCT([inode_operations], [get_link], [fs.h])
972                  AC_CHECK_LINUX_STRUCT([key], [payload.value], [key.h])
973                  AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h])
974                  AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h])
975                  AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
976                  AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h])
977                  AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
978                  AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
979                  AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
980                  AC_CHECK_LINUX_STRUCT([super_block], [s_d_op], [fs.h])
981                  AC_CHECK_LINUX_STRUCT([super_operations], [alloc_inode],
982                                        [fs.h])
983                  AC_CHECK_LINUX_STRUCT([super_operations], [evict_inode],
984                                        [fs.h])
985                  AC_CHECK_LINUX_STRUCT([task_struct], [cred], [sched.h])
986                  AC_CHECK_LINUX_STRUCT([task_struct], [exit_state], [sched.h])
987                  AC_CHECK_LINUX_STRUCT([task_struct], [parent], [sched.h])
988                  AC_CHECK_LINUX_STRUCT([task_struct], [real_parent], [sched.h])
989                  AC_CHECK_LINUX_STRUCT([task_struct], [rlim], [sched.h])
990                  AC_CHECK_LINUX_STRUCT([task_struct], [sig], [sched.h])
991                  AC_CHECK_LINUX_STRUCT([task_struct], [sighand], [sched.h])
992                  AC_CHECK_LINUX_STRUCT([task_struct], [sigmask_lock], [sched.h])
993                  AC_CHECK_LINUX_STRUCT([task_struct], [tgid], [sched.h])
994                  AC_CHECK_LINUX_STRUCT([task_struct], [thread_info], [sched.h])
995                  AC_CHECK_LINUX_STRUCT([task_struct], [total_link_count], [sched.h])
996                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
997
998                  dnl Check for typed structure elements
999                  AC_CHECK_LINUX_TYPED_STRUCT([read_descriptor_t],
1000                                              [buf], [fs.h])
1001
1002                  dnl Function existence checks
1003
1004                  AC_CHECK_LINUX_FUNC([__vfs_write],
1005                                      [#include <linux/fs.h>],
1006                                      [__vfs_write(NULL, NULL, 0, NULL);])
1007                  AC_CHECK_LINUX_FUNC([kernel_write],
1008                                      [#include <linux/fs.h>],
1009                                      [kernel_write(NULL, NULL, 0, NULL);])
1010                  AC_CHECK_LINUX_FUNC([bdi_init],
1011                                      [#include <linux/backing-dev.h>],
1012                                      [bdi_init(NULL);])
1013                  AC_CHECK_LINUX_FUNC([super_setup_bdi],
1014                                      [#include <linux/backing-dev.h>],
1015                                      [struct super_block *sb;
1016                                       super_setup_bdi(sb);])
1017                  AC_CHECK_LINUX_FUNC([PageChecked],
1018                                      [#include <linux/mm.h>
1019 #include <linux/page-flags.h>],
1020                                      [struct page *_page;
1021                                       int bchecked = PageChecked(_page);])
1022                  AC_CHECK_LINUX_FUNC([PageFsMisc],
1023                                      [#include <linux/mm.h>
1024 #include <linux/page-flags.h>],
1025                                      [struct page *_page;
1026                                       int bchecked = PageFsMisc(_page);])
1027                  AC_CHECK_LINUX_FUNC([clear_inode],
1028                                      [#include <linux/fs.h>],
1029                                      [clear_inode(NULL);])
1030                  AC_CHECK_LINUX_FUNC([current_kernel_time],
1031                                      [#include <linux/time.h>],
1032                                      [struct timespec s;
1033                                       s = current_kernel_time();])
1034                  AC_CHECK_LINUX_FUNC([d_alloc_anon],
1035                                      [#include <linux/fs.h>],
1036                                      [d_alloc_anon(NULL);])
1037                  AC_CHECK_LINUX_FUNC([d_count],
1038                                      [#include <linux/dcache.h>],
1039                                      [d_count(NULL);])
1040                  AC_CHECK_LINUX_FUNC([d_make_root],
1041                                      [#include <linux/fs.h>],
1042                                      [d_make_root(NULL);])
1043                  AC_CHECK_LINUX_FUNC([do_sync_read],
1044                                      [#include <linux/fs.h>],
1045                                      [do_sync_read(NULL, NULL, 0, NULL);])
1046                  AC_CHECK_LINUX_FUNC([file_dentry],
1047                                      [#include <linux/fs.h>],
1048                                      [struct file *f; file_dentry(f);])
1049                  AC_CHECK_LINUX_FUNC([find_task_by_pid],
1050                                      [#include <linux/sched.h>],
1051                                      [pid_t p; find_task_by_pid(p);])
1052                  AC_CHECK_LINUX_FUNC([generic_file_aio_read],
1053                                      [#include <linux/fs.h>],
1054                                      [generic_file_aio_read(NULL,NULL,0,0);])
1055                  AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
1056                                      [#include <linux/pagemap.h>],
1057                                      [grab_cache_page_write_begin(NULL, 0, 0);])
1058                  AC_CHECK_LINUX_FUNC([hlist_unhashed],
1059                                      [#include <linux/list.h>],
1060                                      [hlist_unhashed(0);])
1061                  AC_CHECK_LINUX_FUNC([ihold],
1062                                      [#include <linux/fs.h>],
1063                                      [ihold(NULL);])
1064                  AC_CHECK_LINUX_FUNC([i_size_read],
1065                                      [#include <linux/fs.h>],
1066                                      [i_size_read(NULL);])
1067                  AC_CHECK_LINUX_FUNC([inode_setattr],
1068                                      [#include <linux/fs.h>],
1069                                      [inode_setattr(NULL, NULL);])
1070                  AC_CHECK_LINUX_FUNC([iter_file_splice_write],
1071                                      [#include <linux/fs.h>],
1072                                      [iter_file_splice_write(NULL,NULL,NULL,0,0);])
1073                  AC_CHECK_LINUX_FUNC([kernel_setsockopt],
1074                                      [#include <linux/net.h>],
1075                                      [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
1076                  AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
1077                                      [#include <linux/fs.h>],
1078                                      [locks_lock_file_wait(NULL, NULL);])
1079                  AC_CHECK_LINUX_FUNC([page_follow_link],
1080                                      [#include <linux/fs.h>],
1081                                      [page_follow_link(0,0);])
1082                  AC_CHECK_LINUX_FUNC([page_get_link],
1083                                      [#include <linux/fs.h>],
1084                                      [page_get_link(0,0,0);])
1085                  AC_CHECK_LINUX_FUNC([page_offset],
1086                                      [#include <linux/pagemap.h>],
1087                                      [page_offset(NULL);])
1088                  AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
1089                                      [#include <linux/pagevec.h>],
1090                                      [__pagevec_lru_add_file(NULL);])
1091                  AC_CHECK_LINUX_FUNC([path_lookup],
1092                                      [#include <linux/fs.h>
1093                                       #include <linux/namei.h>],
1094                                      [path_lookup(NULL, 0, NULL);])
1095                  AC_CHECK_LINUX_FUNC([proc_create],
1096                                      [#include <linux/proc_fs.h>],
1097                                      [proc_create(NULL, 0, NULL, NULL);])
1098                  AC_CHECK_LINUX_FUNC([rcu_read_lock],
1099                                      [#include <linux/rcupdate.h>],
1100                                      [rcu_read_lock();])
1101                  AC_CHECK_LINUX_FUNC([set_nlink],
1102                                      [#include <linux/fs.h>],
1103                                      [set_nlink(NULL, 1);])
1104                  AC_CHECK_LINUX_FUNC([setattr_prepare],
1105                                      [#include <linux/fs.h>],
1106                                      [setattr_prepare(NULL, NULL);])
1107                  AC_CHECK_LINUX_FUNC([sock_create_kern],
1108                                      [#include <linux/net.h>],
1109                                      [sock_create_kern(0, 0, 0, NULL);])
1110                  AC_CHECK_LINUX_FUNC([sock_create_kern_ns],
1111                                      [#include <linux/net.h>],
1112                                      [sock_create_kern(NULL, 0, 0, 0, NULL);])
1113                  AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
1114                                      [#include <linux/splice.h>],
1115                                      [splice_direct_to_actor(NULL,NULL,NULL);])
1116                  AC_CHECK_LINUX_FUNC([default_file_splice_read],
1117                                      [#include <linux/fs.h>],
1118                                      [default_file_splice_read(NULL,NULL,NULL, 0, 0);])
1119                  AC_CHECK_LINUX_FUNC([svc_addr_in],
1120                                      [#include <linux/sunrpc/svc.h>],
1121                                      [svc_addr_in(NULL);])
1122                  AC_CHECK_LINUX_FUNC([zero_user_segments],
1123                                      [#include <linux/highmem.h>],
1124                                      [zero_user_segments(NULL, 0, 0, 0, 0);])
1125                  AC_CHECK_LINUX_FUNC([noop_fsync],
1126                                      [#include <linux/fs.h>],
1127                                      [void *address = &noop_fsync; printk("%p\n", address)];)
1128                  AC_CHECK_LINUX_FUNC([kthread_run],
1129                                      [#include <linux/kernel.h>
1130                                       #include <linux/kthread.h>],
1131                                      [kthread_run(NULL, NULL, "test");])
1132                  AC_CHECK_LINUX_FUNC([inode_nohighmem],
1133                                      [#include <linux/fs.h>],
1134                                      [inode_nohighmem(NULL);])
1135                  AC_CHECK_LINUX_FUNC([inode_lock],
1136                                      [#include <linux/fs.h>],
1137                                      [inode_lock(NULL);])
1138
1139                  dnl Consequences - things which get set as a result of the
1140                  dnl                above tests
1141                  AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
1142                        [AC_DEFINE([AFS_NONFSTRANS], 1,
1143                                   [define to disable the nfs translator])])
1144
1145                  dnl Assorted more complex tests
1146                  LINUX_AIO_NONVECTOR
1147                  LINUX_EXPORTS_PROC_ROOT_FS
1148                  LINUX_KMEM_CACHE_INIT
1149                  LINUX_HAVE_KMEM_CACHE_T
1150                  LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
1151                  LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID
1152                  LINUX_D_PATH_TAKES_STRUCT_PATH
1153                  LINUX_NEW_EXPORT_OPS
1154                  LINUX_INODE_SETATTR_RETURN_TYPE
1155                  LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
1156                  LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
1157                  LINUX_IOP_I_PERMISSION_TAKES_FLAGS
1158                  LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
1159                  LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
1160                  LINUX_DOP_D_DELETE_TAKES_CONST
1161                  LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
1162                  LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
1163                  LINUX_FOP_F_FSYNC_TAKES_DENTRY
1164                  LINUX_FOP_F_FSYNC_TAKES_RANGE
1165                  LINUX_AOP_WRITEBACK_CONTROL
1166                  LINUX_FS_STRUCT_FOP_HAS_SPLICE
1167                  LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
1168                  LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
1169                  LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
1170                  LINUX_KERNEL_SOCK_CREATE
1171                  LINUX_EXPORTS_KEY_TYPE_KEYRING
1172                  LINUX_NEED_RHCONFIG
1173                  LINUX_RECALC_SIGPENDING_ARG_TYPE
1174                  LINUX_EXPORTS_TASKLIST_LOCK
1175                  LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
1176                  LINUX_STATFS_TAKES_DENTRY
1177                  LINUX_REFRIGERATOR
1178                  LINUX_HAVE_TRY_TO_FREEZE
1179                  LINUX_LINUX_KEYRING_SUPPORT
1180                  LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
1181                  LINUX_KEY_ALLOC_NEEDS_CRED
1182                  LINUX_INIT_WORK_HAS_DATA
1183                  LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
1184                  LINUX_HAVE_DCACHE_LOCK
1185                  LINUX_D_COUNT_IS_INT
1186                  LINUX_IOP_GETATTR_TAKES_PATH_STRUCT
1187                  LINUX_IOP_MKDIR_TAKES_UMODE_T
1188                  LINUX_IOP_CREATE_TAKES_UMODE_T
1189                  LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
1190                  LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
1191                  LINUX_DENTRY_OPEN_TAKES_PATH
1192                  LINUX_D_ALIAS_IS_HLIST
1193                  LINUX_HLIST_ITERATOR_NO_NODE
1194                  LINUX_IOP_I_CREATE_TAKES_BOOL
1195                  LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
1196                  LINUX_IOP_LOOKUP_TAKES_UNSIGNED
1197                  LINUX_D_INVALIDATE_IS_VOID
1198
1199                  dnl If we are guaranteed that keyrings will work - that is
1200                  dnl  a) The kernel has keyrings enabled
1201                  dnl  b) The code is new enough to give us a key_type_keyring
1202                  dnl then we just disable syscall probing unless we've been
1203                  dnl told otherwise
1204
1205                  AS_IF([test "$enable_linux_syscall_probing" = "maybe"],
1206                    [AS_IF([test "$ac_cv_linux_keyring_support" = "yes" -a "$ac_cv_linux_exports_key_type_keyring" = "yes"],
1207                           [enable_linux_syscall_probing="no"],
1208                           [enable_linux_syscall_probing="yes"])
1209                  ])
1210
1211                  dnl Syscall probing needs a few tests of its own, and just
1212                  dnl won't work if the kernel doesn't export init_mm
1213                  AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1214                    LINUX_EXPORTS_INIT_MM
1215                    AS_IF([test "$ac_cv_linux_exports_init_mm" = "no"], [
1216                      AC_MSG_ERROR(
1217                        [Can't do syscall probing without exported init_mm])
1218                    ])
1219                    LINUX_EXPORTS_SYS_CHDIR
1220                    LINUX_EXPORTS_SYS_OPEN
1221                    AC_DEFINE(ENABLE_LINUX_SYSCALL_PROBING, 1,
1222                              [define to enable syscall table probes])
1223                  ])
1224
1225                  dnl Packaging and SMP build
1226                  if test "x$with_linux_kernel_packaging" != "xyes" ; then
1227                    LINUX_WHICH_MODULES
1228                  else
1229                    AC_SUBST(MPS,'SP')
1230                  fi
1231
1232                  dnl Syscall probing
1233                  if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
1234                    AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1235                      AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
1236                    ])
1237                    ac_cv_linux_exports_sys_call_table=no
1238                    if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
1239                      ac_cv_linux_exports_ia32_sys_call_table=yes
1240                    fi
1241                  else
1242                    LINUX_EXPORTS_KALLSYMS_ADDRESS
1243                    LINUX_EXPORTS_KALLSYMS_SYMBOL
1244                    LINUX_EXPORTS_SYS_CALL_TABLE
1245                    LINUX_EXPORTS_IA32_SYS_CALL_TABLE
1246                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
1247                          linux_syscall_method=none
1248                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
1249                             linux_syscall_method=scan
1250                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
1251                                linux_syscall_method=scan_with_kallsyms_address
1252                             fi
1253                          fi
1254                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
1255                             linux_syscall_method=kallsyms_symbol
1256                          fi
1257                          if test "x$linux_syscall_method" = "xnone"; then
1258                             AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
1259                             linux_syscall_method=scan
1260                          fi
1261                    fi
1262                  fi
1263                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
1264                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
1265                  fi
1266                  if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
1267                   AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
1268                  fi
1269                  if test "x$ac_cv_linux_func_page_get_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1270                   AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1271                  else
1272                   AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1273                  fi
1274                  if test "x$ac_cv_linux_func_page_get_link" != "xyes" -a "x$ac_cv_linux_struct_inode_operations_has_get_link" = "xyes"; then
1275                         AC_MSG_ERROR([Your kernel does not use follow_link - not supported without symlink cache API])
1276                         exit 1
1277                  fi
1278                 :
1279                 fi
1280                 if test "x$enable_linux_d_splice_alias_extra_iput" = xyes; then
1281                     AC_DEFINE(D_SPLICE_ALIAS_LEAK_ON_ERROR, 1, [for internal use])
1282                 fi
1283 dnl Linux-only, but just enable always.
1284                 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1285 esac
1286
1287 AC_CACHE_CHECK([if compiler has __sync_add_and_fetch],
1288     [ac_cv_sync_fetch_and_add],
1289     [AC_TRY_LINK(, [int var; return __sync_add_and_fetch(&var, 1);],
1290                     [ac_cv_sync_fetch_and_add=yes],
1291                     [ac_cv_sync_fetch_and_add=no])
1292 ])
1293 AS_IF([test "$ac_cv_sync_fetch_and_add" = "yes"],
1294       [AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD, 1,
1295                 [define if your C compiler has __sync_add_and_fetch])])
1296
1297 AC_CACHE_CHECK([if struct sockaddr has sa_len field],
1298     [ac_cv_sockaddr_len],
1299     [AC_TRY_COMPILE( [#include <sys/types.h>
1300 #include <sys/socket.h>],
1301                      [struct sockaddr *a; a->sa_len=0;],
1302                      [ac_cv_sockaddr_len=yes],
1303                      [ac_cv_sockaddr_len=no])
1304 ])
1305 AS_IF([test "$ac_cv_sockaddr_len" = "yes"],
1306       [AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1,
1307                  [define if you struct sockaddr sa_len])])
1308
1309 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1310         echo Skipping library tests because they confuse Irix.
1311 else
1312   AC_SEARCH_LIBS([socket], [socket inet])
1313   AC_SEARCH_LIBS([connect], [nsl])
1314   AC_SEARCH_LIBS([gethostbyname], [dns nsl resolv])
1315
1316   dnl darwin wants it, aix hates it
1317   AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1318   AC_TRY_COMPILE([
1319   #include <stdlib.h>
1320   #include <stdio.h>
1321   #include <sys/types.h>
1322   #include <sys/socket.h>
1323   #include <netinet/in.h>
1324   #include <arpa/inet.h>
1325   #include <arpa/nameser.h>
1326   #include <arpa/nameser_compat.h>
1327   #include <resolv.h>
1328   ], [static int i; i = 0;],
1329   [AC_MSG_RESULT(yes)
1330    AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1331   [AC_MSG_RESULT(no)
1332    ])
1333
1334   openafs_save_libs="$LIBS"
1335   AC_MSG_CHECKING([for res_search])
1336   AC_FUNC_RES_SEARCH
1337
1338   if test "$ac_cv_func_res_search" = no; then
1339       for lib in dns nsl resolv; do
1340         if test "$ac_cv_func_res_search" != yes; then
1341           LIBS="-l$lib $LIBS"
1342           AC_FUNC_RES_SEARCH
1343           LIBS="$openafs_save_libs"
1344         fi
1345       done    
1346       if test "$ac_cv_func_res_search" = yes; then
1347         LIB_AFSDB="-l$lib"
1348         AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1349         AC_MSG_RESULT([yes, in lib$lib])
1350       else
1351         AC_MSG_RESULT(no)
1352       fi
1353   else
1354     AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1355     AC_MSG_RESULT(yes)
1356   fi
1357   
1358 fi
1359 XLIBS="$LIB_AFSDB $XLIBS"
1360
1361 AC_CHECK_RESOLV_RETRANS
1362
1363 AC_CACHE_CHECK([for setsockopt(, SOL_IP, IP_RECVERR)],
1364     [ac_cv_setsockopt_iprecverr],
1365     [AC_TRY_COMPILE( [
1366 #include <sys/types.h>
1367 #include <sys/socket.h>
1368 #include <netinet/in.h>],
1369 [int on=1;
1370 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));],
1371         [ac_cv_setsockopt_iprecverr=yes],
1372         [ac_cv_setsockopt_iprecverr=no])])
1373
1374 AS_IF([test "$ac_cv_setsockopt_iprecverr" = "yes"],
1375       [AC_DEFINE([HAVE_SETSOCKOPT_IP_RECVERR], [1],
1376                  [define if we can receive socket errors via IP_RECVERR])])
1377
1378 PTHREAD_LIBS=error
1379 if test "x$MKAFS_OSTYPE" = OBSD; then
1380         PTHREAD_LIBS="-pthread"
1381 fi
1382 if test "x$MKAFS_OSTYPE" = xDFBSD; then
1383         PTHREAD_LIBS="-pthread"
1384 fi
1385 if test "x$PTHREAD_LIBS" = xerror; then
1386         AC_CHECK_LIB(pthread, pthread_attr_init,
1387                 PTHREAD_LIBS="-lpthread")
1388 fi
1389 if test "x$PTHREAD_LIBS" = xerror; then
1390         AC_CHECK_LIB(pthreads, pthread_attr_init,
1391                 PTHREAD_LIBS="-lpthreads")
1392 fi
1393 if test "x$PTHREAD_LIBS" = xerror; then
1394         AC_CHECK_LIB(c_r, pthread_attr_init,
1395                 PTHREAD_LIBS="-lc_r")
1396 fi
1397 if test "x$PTHREAD_LIBS" = xerror; then
1398         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1399 fi
1400 if test "x$PTHREAD_LIBS" = xerror; then
1401         # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1402         AC_CHECK_LIB(pthread, pthread_attr_destroy,
1403                 PTHREAD_LIBS="-lpthread")
1404 fi
1405 if test "x$PTHREAD_LIBS" = xerror; then
1406         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1407 fi
1408 AC_SUBST(PTHREAD_LIBS)
1409
1410 HOST_CPU="$host_cpu"
1411
1412 if test "x$with_bsd_kernel_headers" != "x"; then
1413         BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1414 else
1415         BSD_KERNEL_PATH="/usr/src/sys"
1416 fi
1417
1418 if test "x$with_bsd_kernel_build" != "x"; then
1419         BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1420 else
1421         case $AFS_SYSNAME in
1422                 *_fbsd_*)
1423                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1424                         ;;
1425                 *_nbsd*)
1426                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/arch/${HOST_CPU}/compile/GENERIC"
1427         esac
1428 fi
1429
1430 # Fast restart
1431 if test "$enable_supergroups" = "yes"; then
1432         AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1433 fi
1434
1435 if test "$enable_bitmap_later" = "yes"; then
1436         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1437 fi
1438
1439 if test "$enable_unix_sockets" = "yes"; then
1440         AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1441         USE_UNIX_SOCKETS="yes"
1442 else
1443         USE_UNIX_SOCKETS="no"
1444 fi
1445 AC_SUBST(USE_UNIX_SOCKETS)
1446
1447 if test "$enable_ubik_read_while_write" = "yes"; then
1448         AC_DEFINE(UBIK_READ_WHILE_WRITE, 1, [define if you want to enable ubik read while write])
1449 fi
1450
1451 if test "$enable_namei_fileserver" = "yes"; then
1452         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1453         VFSCK=""
1454 else
1455         if test "$enable_namei_fileserver" = "default"; then
1456                 case $host in
1457                         *-solaris2.10*)
1458                                 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1459                                 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1460                                 VFSCK=""
1461                                 ;;
1462                         *-solaris2.11*)
1463                                 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1464                                 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1465                                 VFSCK=""
1466                                 ;;
1467                         *)
1468                                 VFSCK="vfsck"
1469                                 ;;
1470                 esac
1471         else
1472                 VFSCK="vfsck"
1473         fi
1474 fi
1475
1476 dnl check for tivoli
1477 AC_MSG_CHECKING(for tivoli tsm butc support)
1478 XBSA_CFLAGS=""
1479 if test "$enable_tivoli_tsm" = "yes"; then
1480         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1481         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1482         XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1483         XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1484         XBSADIR5=/usr/tivoli/tsm/client/api/bin64/sample
1485         XBSADIR6=/opt/tivoli/tsm/client/api/bin64/sample
1486
1487         if test -r "$XBSADIR3/dsmapifp.h"; then
1488                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1489                 XBSA_XLIBS="-ldl"
1490                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1491         elif test -r "$XBSADIR4/dsmapifp.h"; then
1492                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1493                 XBSA_XLIBS="-ldl"
1494                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1495         elif test -r "$XBSADIR5/dsmapifp.h"; then
1496                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR5"
1497                 XBSA_XLIBS="-ldl"
1498                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1499         elif test -r "$XBSADIR6/dsmapifp.h"; then
1500                 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR6"
1501                 XBSA_XLIBS="-ldl"
1502                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1503         elif test -r "$XBSADIR1/xbsa.h"; then
1504                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1505                 XBSA_XLIBS=""
1506                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1507         elif test -r "$XBSADIR2/xbsa.h"; then
1508                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1509                 XBSA_XLIBS=""
1510                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1511         else
1512                 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1513         fi
1514 else
1515         AC_MSG_RESULT([no])
1516 fi
1517 AC_SUBST(XBSA_CFLAGS)
1518 AC_SUBST(XBSA_XLIBS) 
1519 XLIBS="$XBSA_XLIBS $XLIBS"
1520
1521 dnl checks for header files.
1522 AC_HEADER_STDC
1523 AC_HEADER_SYS_WAIT
1524 AC_HEADER_DIRENT
1525 AC_CHECK_HEADERS([ \
1526                    arpa/inet.h \
1527                    arpa/nameser.h \
1528                    curses.h\
1529                    direct.h \
1530                    errno.h \
1531                    fcntl.h \
1532                    grp.h \
1533                    math.h \
1534                    mntent.h \
1535                    ncurses.h \
1536                    ncurses/ncurses.h \
1537                    netdb.h \
1538                    netinet/in.h \
1539                    pthread_np.h \
1540                    pwd.h \
1541                    regex.h \
1542                    security/pam_appl.h \
1543                    signal.h \
1544                    stdint.h \
1545                    stdio_ext.h \
1546                    stdlib.h \
1547                    string.h \
1548                    strings.h \
1549                    sys/bitypes.h \
1550                    sys/bswap.h \
1551                    sys/dk.h \
1552                    sys/fcntl.h \
1553                    sys/file.h \
1554                    sys/fs_types.h \
1555                    sys/fstyp.h \
1556                    sys/ioctl.h \
1557                    sys/ipc.h \
1558                    sys/lockf.h \
1559                    sys/map.h \
1560                    sys/mount.h \
1561                    sys/mntent.h \
1562                    sys/mnttab.h \
1563                    sys/pag.h \
1564                    sys/param.h \
1565                    sys/resource.h \
1566                    sys/select.h \
1567                    sys/statfs.h \
1568                    sys/statvfs.h \
1569                    sys/socket.h \
1570                    sys/sysctl.h \
1571                    sys/time.h \
1572                    sys/types.h \
1573                    sys/uio.h \
1574                    sys/un.h \
1575                    sys/vfs.h \
1576                    syslog.h \
1577                    termios.h \
1578                    time.h \
1579                    ucontext.h \
1580                    unistd.h \
1581                    windows.h \
1582                 ])
1583
1584 AC_CHECK_HEADERS([resolv.h], [], [], [AC_INCLUDES_DEFAULT
1585 #ifdef HAVE_NETINET_IN_H
1586 # include <netinet/in.h>
1587 #endif])
1588
1589 AC_CHECK_HEADERS([net/if.h],[],[],[AC_INCLUDES_DEFAULT
1590 #ifdef HAVE_SYS_SOCKET_H
1591 # include <sys/socket.h>
1592 #endif])
1593
1594 AC_CHECK_HEADERS([netinet/if_ether.h],[],[],[AC_INCLUDES_DEFAULT
1595 #ifdef HAVE_SYS_SOCKET_H
1596 # include <sys/socket.h>
1597 #endif
1598 #ifdef HAVE_NETINET_IN_H
1599 # include <netinet/in.h>
1600 #endif
1601 #ifdef HAVE_NET_IF_H
1602 # include <net/if.h>
1603 #endif])
1604
1605 AC_CHECK_HEADERS([security/pam_modules.h],[],[],[AC_INCLUDES_DEFAULT
1606 #ifdef HAVE_SECURITY_PAM_APPL_H
1607 # include <security/pam_appl.h>
1608 #endif])
1609
1610 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1611
1612 AC_CHECK_TYPES([fsblkcnt_t],,,[
1613 #include <sys/types.h>
1614 #ifdef HAVE_SYS_BITYPES_H
1615 #include <sys/bitypes.h>
1616 #endif
1617 #ifdef HAVE_SYS_STATFS_H
1618 #include <sys/statfs.h>
1619 #endif
1620 #ifdef HAVE_SYS_STATVFS_H
1621 #include <sys/statvfs.h>
1622 #endif
1623 ])
1624
1625 dnl see what struct stat has for timestamps
1626 AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
1627
1628 OPENAFS_TEST_PACKAGE(libintl,[#include <libintl.h>],[-lintl],,,INTL)
1629
1630 if test "$enable_debug_locks" = yes; then
1631         AC_DEFINE(OPR_DEBUG_LOCKS, 1, [turn on lock debugging in opr])
1632 fi
1633
1634 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1635         HAVE_PAM="yes"
1636 else
1637         HAVE_PAM="no"
1638 fi
1639 AC_SUBST(HAVE_PAM)
1640
1641 if test "$enable_login" = yes; then
1642         BUILD_LOGIN="yes"
1643 else
1644         BUILD_LOGIN="no"
1645 fi
1646 AC_SUBST(BUILD_LOGIN)
1647
1648 if test "$enable_kauth" = yes; then
1649         INSTALL_KAUTH="yes"
1650 else
1651         INSTALL_KAUTH="no"
1652 fi
1653 AC_SUBST(INSTALL_KAUTH)
1654
1655 AC_CHECK_FUNCS([ \
1656         arc4random \
1657         closelog \
1658         fcntl \
1659         fseeko64 \
1660         ftello64 \
1661         getcwd \
1662         getegid \
1663         geteuid \
1664         getgid \
1665         getuid \
1666         getrlimit \
1667         issetugid \
1668         mkstemp \
1669         openlog \
1670         poll \
1671         pread \
1672         preadv \
1673         preadv64 \
1674         pwrite \
1675         pwritev \
1676         pwritev64 \
1677         regcomp \
1678         regerror \
1679         regexec \
1680         setitimer \
1681         setvbuf \
1682         sigaction \
1683         strcasestr \
1684         strerror \
1685         sysconf \
1686         sysctl \
1687         syslog \
1688         tdestroy \
1689         timegm \
1690 ])
1691
1692 OPENAFS_ROKEN()
1693 OPENAFS_HCRYPTO()
1694 OPENAFS_CURSES()
1695 OPENAFS_C_ATTRIBUTE()
1696 OPENAFS_C_PRAGMA()
1697
1698 dnl Functions that Heimdal's libroken provides, but that we
1699 dnl haven't found a need for yet, and so haven't imported
1700 AC_CHECK_FUNCS([ \
1701         chown \
1702         fchown \
1703         gethostname \
1704         lstat \
1705         inet_aton \
1706         putenv \
1707         readv \
1708         setenv \
1709         strdup \
1710         strftime \
1711         strndup \
1712         strsep \
1713         unsetenv \
1714 ])
1715
1716 dnl Functions that are in objects that we always build from libroken
1717 AC_CHECK_FUNCS([ \
1718         asprintf \
1719         asnprintf \
1720         vasprintf \
1721         vasnprintf \
1722         vsnprintf \
1723         snprintf \
1724 ])
1725
1726 dnl Functions that we're going to try and get from libroken
1727 AC_REPLACE_FUNCS([ \
1728         daemon \
1729         ecalloc \
1730         emalloc \
1731         erealloc \
1732         err \
1733         errx \
1734         flock \
1735         freeaddrinfo \
1736         gai_strerror \
1737         getaddrinfo \
1738         getdtablesize \
1739         getnameinfo \
1740         getopt \
1741         getprogname \
1742         gettimeofday \
1743         inet_ntop \
1744         inet_pton \
1745         localtime_r \
1746         mkstemp \
1747         setenv \
1748         setprogname \
1749         strcasecmp \
1750         strlcat \
1751         strnlen \
1752         strlcpy \
1753         strsep \
1754         tdelete \
1755         tfind \
1756         tsearch \
1757         twalk \
1758         unsetenv \
1759         verr \
1760         verrx \
1761         vsyslog \
1762         vwarn \
1763         vwarnx \
1764         warn \
1765         warnx \
1766 ])
1767
1768 dnl Headers that we're going to try and get from libroken
1769 AC_CHECK_HEADERS([ \
1770         err.h \
1771         search.h \
1772 ])
1773
1774 AC_CHECK_DECLS([h_errno], [], [], [
1775 #include <sys/types.h>
1776 #ifdef HAVE_NETDB_H
1777 #include <netdb.h>
1778 #endif
1779 ])
1780
1781 AC_HEADER_TIME
1782
1783 ROKEN_HEADERS=
1784 AS_IF([test "$ac_cv_header_err_h" != "yes" ],
1785       [ROKEN_HEADERS="$ROKEN_HEADERS \$(TOP_INCDIR)/err.h"],
1786       [])
1787 AC_SUBST(ROKEN_HEADERS)
1788
1789 dnl Stuff that's harder ...
1790 AC_MSG_CHECKING([for bswap16])
1791 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1792 #ifdef HAVE_SYS_TYPES_H
1793 #include <sys/types.h>
1794 #endif
1795 #ifdef HAVE_SYS_BSWAP_H
1796 #include <sys/bswap.h>
1797 #endif
1798 ],
1799 [short a, b; b = bswap16(a); ])],
1800 [AC_MSG_RESULT(yes)
1801  AC_DEFINE(HAVE_BSWAP16, 1, [Define to 1 if you have the bswap16 function])
1802 ],
1803 [AC_MSG_RESULT(no)])
1804
1805 AC_MSG_CHECKING([for bswap32])
1806 AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifdef HAVE_SYS_TYPES_H
1807 #include <sys/types.h>
1808 #endif
1809 #ifdef HAVE_SYS_BSWAP_H
1810 #include <sys/bswap.h>
1811 #endif
1812 ],
1813 [int a, b; b = bswap32(a); ])],
1814 [AC_MSG_RESULT(yes)
1815  AC_DEFINE(HAVE_BSWAP32, 1, [Define to 1 if you have the bswap32 function])
1816 ],
1817 [AC_MSG_RESULT(no)])
1818
1819 case $AFS_SYSNAME in
1820 *hp_ux* | *hpux*)
1821    AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.])
1822    ;;
1823 *)
1824    AC_MSG_CHECKING([for positional I/O])
1825    if test "$ac_cv_func_pread" = "yes" && \
1826            test "$ac_cv_func_pwrite" = "yes"; then
1827       AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()])
1828       AC_MSG_RESULT(yes)
1829    else
1830      AC_MSG_RESULT(no)
1831    fi
1832    AC_MSG_CHECKING([for vectored positional I/O])
1833    AS_IF([test "$ac_cv_func_preadv" = "yes" -a \
1834                "$ac_cv_func_pwritev" = "yes" -a \
1835                "$ac_cv_func_preadv64" = "yes" -a \
1836                "$ac_cv_func_pwritev64" = "yes"],
1837          [AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()])
1838           AC_MSG_RESULT(yes)],
1839          [AC_MSG_RESULT(no)])
1840    ;;
1841 esac
1842
1843 AC_MSG_CHECKING([for POSIX regex library])
1844 if test "$ac_cv_header_regex_h" = "yes" && \
1845         test "$ac_cv_func_regcomp" = "yes" && \
1846         test "$ac_cv_func_regexec" = "yes" && \
1847         test "$ac_cv_func_regerror" = "yes"; then
1848     AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1849     AC_MSG_RESULT(yes)
1850 else
1851     AC_MSG_RESULT(no)
1852 fi
1853
1854 dnl Look for "non-portable" pthreads functions.
1855 save_LIBS="$LIBS"
1856 LIBS="$LIBS $PTHREAD_LIBS"
1857 AC_CHECK_FUNCS([ \
1858         pthread_set_name_np \
1859         pthread_setname_np \
1860 ])
1861
1862 dnl Sadly, there are three different versions of pthread_setname_np.
1863 dnl Try to cater for all of them.
1864 if test "$ac_cv_func_pthread_setname_np" = "yes" ; then
1865     AC_MSG_CHECKING([for signature of pthread_setname_np])
1866     AC_TRY_COMPILE([
1867 #include <pthread.h>
1868 #ifdef HAVE_PTHREAD_NP_H
1869 #include <pthread_np.h>
1870 #endif
1871 ], [pthread_setname_np(pthread_self(), "test", (void *)0)], [
1872         AC_MSG_RESULT([three arguments])
1873         pthread_setname_np_args=3], [
1874         AC_TRY_COMPILE([
1875 #include <pthread.h>
1876 #ifdef HAVE_PTHREAD_NP_H
1877 #include <pthread_np.h>
1878 #endif
1879 ], [pthread_setname_np(pthread_self(), "test")], [
1880             AC_MSG_RESULT([two arguments])
1881             pthread_setname_np_args=2], [
1882             AC_TRY_COMPILE([
1883 #include <pthread.h>
1884 #ifdef HAVE_PTHREAD_NP_H
1885 #include <pthread_np.h>
1886 #endif
1887 ], [pthread_setname_np("test")], [
1888                 AC_MSG_RESULT([one argument])
1889                 pthread_setname_np_args=1], [pthread_setname_np_args=0])
1890 ])
1891 ])
1892 AC_DEFINE_UNQUOTED([PTHREAD_SETNAME_NP_ARGS], $pthread_setname_np_args, [Number of arguments required by pthread_setname_np() function])
1893 fi
1894 LIBS="$save_LIBS"
1895
1896 openafs_cv_saved_CFLAGS="$CFLAGS"
1897 CFLAGS="$CFLAGS $XCFLAGS_NOCHECKING"
1898
1899 AC_TYPE_SIGNAL
1900 OPENAFS_RETSIGTYPE
1901 AC_CHECK_SIZEOF(void *)
1902 AC_CHECK_SIZEOF(unsigned long long)
1903 AC_CHECK_SIZEOF(unsigned long)
1904 AC_CHECK_SIZEOF(unsigned int)
1905 AC_TYPE_INTPTR_T
1906 AC_TYPE_UINTPTR_T
1907 AC_TYPE_SSIZE_T
1908 AC_CHECK_TYPE([sig_atomic_t],[],
1909     [AC_DEFINE([sig_atomic_t], [int],
1910         [Define to int if <signal.h> does not define.])],
1911 [#include <sys/types.h>
1912 #include <signal.h>])
1913 AC_CHECK_TYPE([socklen_t],[],
1914     [AC_DEFINE([socklen_t], [int],
1915         [Define to int if <sys/socket.h> does not define.])],
1916 [#include <sys/types.h>
1917 #include <sys/socket.h>])
1918 AC_CHECK_TYPES(off64_t)
1919 AC_CHECK_TYPES([ssize_t], [], [], [#include <unistd.h>])
1920 AC_CHECK_TYPES([struct winsize], [], [], [
1921 #ifdef HAVE_TERMIOS_H
1922 # include <termios.h>
1923 #else
1924 # include <sys/termios.h>
1925 #endif
1926 #include <sys/ioctl.h>])
1927 AC_CHECK_TYPES([sa_family_t, socklen_t, struct sockaddr,
1928                 struct sockaddr_storage],
1929                [], [], [
1930 #include <sys/types.h>
1931 #include <sys/socket.h>
1932 ])
1933 AC_CHECK_TYPES([sa_family_t], [], [], [
1934 #include <sys/types.h>
1935 #include <sys/socket.h>
1936 ])
1937 AC_CHECK_TYPES([struct addrinfo], [], [], [
1938 #include <sys/types.h>
1939 #ifdef HAVE_NETDB_H
1940 #include <netdb.h>
1941 #endif
1942 ])
1943 AC_CHECK_TYPES([long long], [], [], [])
1944
1945 AC_SIZEOF_TYPE(long)
1946
1947 CFLAGS="$openafs_cv_saved_CFLAGS"
1948
1949 RRA_HEADER_PAM_CONST
1950
1951
1952 dnl Directory PATH handling
1953 if test "x$enable_transarc_paths" = "xyes"  ; then 
1954     afsconfdir=${afsconfdir=/usr/afs/etc}
1955     viceetcdir=${viceetcdir=/usr/vice/etc}
1956     afskerneldir=${afskerneldir=${viceetcdir}}
1957     afssrvbindir=${afssrvbindir=/usr/afs/bin}
1958     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1959     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1960     afsdbdir=${afsdbdir=/usr/afs/db}
1961     afslogsdir=${afslogsdir=/usr/afs/logs}
1962     afslocaldir=${afslocaldir=/usr/afs/local}
1963     afsbackupdir=${afsbackupdir=/usr/afs/backup}
1964     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1965     afsdatadir=${afsdatadir=/usr/vice/etc}
1966 else 
1967     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1968     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1969     afskerneldir=${afskerneldir='${libdir}/openafs'}
1970     afssrvbindir=${afssrvbindir='${bindir}'}
1971     afssrvsbindir=${afssrvsbindir='${sbindir}'}
1972     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1973     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1974     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1975     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1976     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1977     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1978     afsdatadir=${afsdatadir='${datadir}/openafs'}
1979 fi
1980 AC_SUBST(afsconfdir)
1981 AC_SUBST(viceetcdir)
1982 AC_SUBST(afskerneldir)
1983 AC_SUBST(afssrvbindir)
1984 AC_SUBST(afssrvsbindir)
1985 AC_SUBST(afssrvlibexecdir)
1986 AC_SUBST(afsdbdir)
1987 AC_SUBST(afslogsdir)
1988 AC_SUBST(afslocaldir)
1989 AC_SUBST(afsbackupdir)
1990 AC_SUBST(afsbosconfigdir)
1991 AC_SUBST(afsdatadir)
1992
1993 if test "x$enable_kernel_module" = "xyes"; then
1994 ENABLE_KERNEL_MODULE=libafs
1995 fi
1996
1997 if test "x$enable_pthreaded_ubik" = "xyes"; then
1998 ENABLE_PTHREADED_UBIK=yes
1999 fi
2000
2001 AC_SUBST(VFSCK)
2002 AC_SUBST(AFS_SYSNAME)
2003 AC_SUBST(AFS_PARAM_COMMON)
2004 AC_SUBST(ENABLE_KERNEL_MODULE)
2005 AC_SUBST(ENABLE_PTHREADED_UBIK)
2006 AC_SUBST(LIB_AFSDB)
2007 AC_SUBST(LINUX_KERNEL_PATH)
2008 AC_SUBST(LINUX_KERNEL_BUILD)
2009 AC_SUBST(HOST_CPU)
2010 AC_SUBST(BSD_KERNEL_PATH)
2011 AC_SUBST(BSD_KERNEL_BUILD)
2012 AC_SUBST(LINUX_VERSION)
2013 AC_SUBST(MKAFS_OSTYPE)
2014 AC_SUBST(TOP_OBJDIR)
2015 AC_SUBST(TOP_SRCDIR)
2016 AC_SUBST(TOP_INCDIR)
2017 AC_SUBST(TOP_LIBDIR)
2018 AC_SUBST(DEST)
2019 AC_SUBST(DARWIN_INFOFILE)
2020 AC_SUBST(IRIX_BUILD_IP35)
2021 AC_SUBST(HTML_XSL)
2022 AC_SUBST(XSLTPROC)
2023 AC_SUBST(DOCBOOK2PDF)
2024 AC_SUBST(DOCBOOK_STYLESHEETS)
2025
2026 OPENAFS_FUSE
2027 OPENAFS_SWIG
2028
2029 TOP_SRCDIR="${srcdir}/src"
2030 dnl
2031 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
2032 dnl
2033 case $TOP_SRCDIR in
2034         /*)
2035                 ;;
2036         *)
2037                 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
2038                 ;;
2039 esac
2040
2041 TOP_OBJDIR="${SRCDIR_PARENT}"
2042 TOP_INCDIR="${SRCDIR_PARENT}/include"
2043 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
2044 if test "${DEST}x" = "x"; then
2045         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
2046 fi
2047
2048 if test "x$with_crosstools_dir" != "x"; then
2049         if test -f "$with_crosstools_dir/rxgen" -a -f "$with_crosstools_dir/compile_et" -a -f "$with_crosstools_dir/config"; then
2050                 COMPILE_ET_PATH=$with_crosstools_dir/compile_et
2051                 CONFIGTOOL_PATH=$with_crosstools_dir/config
2052                 RXGEN_PATH=$with_crosstools_dir/rxgen
2053         else
2054                 AC_MSG_ERROR(Tools not found in $with_crosstools_dir)
2055                 exit 1
2056         fi
2057 else
2058         COMPILE_ET_PATH="${SRCDIR_PARENT}/src/comerr/compile_et"
2059         CONFIGTOOL_PATH="${SRCDIR_PARENT}/src/config/config"
2060         RXGEN_PATH="${SRCDIR_PARENT}/src/rxgen/rxgen"
2061 fi
2062 AC_SUBST(COMPILE_ET_PATH)
2063 AC_SUBST(CONFIGTOOL_PATH)
2064 AC_SUBST(RXGEN_PATH)
2065
2066 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
2067 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
2068 AC_SUBST(HELPER_SPLINT)
2069 AC_SUBST(HELPER_SPLINTCFG)
2070
2071 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
2072
2073 dnl Check to see if crypt lives in a different library
2074 AC_CHECK_LIB(crypt, crypt, LIB_crypt="-lcrypt")
2075 AC_SUBST(LIB_crypt)
2076
2077 dnl Check to see if the compiler support labels in structs
2078 AC_MSG_CHECKING(for label support in structs)
2079 AC_TRY_COMPILE([], [
2080 extern void osi_UFSOpen(void);
2081 struct labeltest {
2082    void (*open) (void);
2083 };
2084 struct labeltest struct_labeltest = {
2085    .open       = osi_UFSOpen,
2086 }
2087 ],
2088 [AC_MSG_RESULT(yes)
2089  AC_DEFINE(HAVE_STRUCT_LABEL_SUPPORT, 1, [Define to 1 if your compiler supports labels in structs.])
2090 ],
2091 [AC_MSG_RESULT(no)
2092 ])
2093
2094 AC_MSG_CHECKING([checking for dirfd])
2095 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
2096 #ifdef HAVE_DIRENT_H
2097 #include <dirent.h>
2098 #endif
2099 ]],
2100         [[DIR *d = 0; dirfd(d);]])],
2101         [ac_rk_have_dirfd=yes], [ac_rk_have_dirfd=no])
2102 if test "$ac_rk_have_dirfd" = "yes" ; then
2103         AC_DEFINE_UNQUOTED(HAVE_DIRFD, 1, [have a dirfd function/macro])
2104 fi
2105 AC_MSG_RESULT($ac_rk_have_dirfd)
2106
2107 OPENAFS_HAVE_STRUCT_FIELD(DIR, dd_fd, [#include <sys/types.h>
2108 #ifdef HAVE_DIRENT_H
2109 #include <dirent.h>
2110 #endif])
2111
2112 OPENAFS_HAVE_STRUCT_FIELD(struct rusage, ru_idrss,
2113 [#ifdef HAVE_SYS_RESOURCE_H
2114 #include <sys/resource.h>
2115 #endif])
2116
2117 dnl Check for UUID library
2118 AC_CHECK_HEADERS([uuid/uuid.h])
2119 AC_CHECK_LIB(uuid, uuid_generate, LIBS_uuid="-luuid")
2120 AC_CHECK_FUNCS([uuid_generate])
2121 ])
2122
2123