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