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