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