4cd7715af5719d68642c88b208c7b11876a931f8
[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
9 AC_CANONICAL_HOST
10 SRCDIR_PARENT=`pwd`
11
12 #BOZO_SAVE_CORES pam
13 AC_ARG_WITH(afs-sysname,
14 [  --with-afs-sysname=sys    use sys for the afs sysname]
15 )
16 AC_ARG_ENABLE( afsdb,
17 [  --disable-afsdb                      disable AFSDB DNS RR support],, enable_afsdb="yes")
18 AC_ARG_ENABLE( pam,
19 [  --disable-pam                        disable PAM support],, enable_pam="yes")
20 AC_ARG_ENABLE( bos-restricted-mode,
21 [  --enable-bos-restricted-mode         enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no")
22 AC_ARG_ENABLE( bos-new-config,
23 [  --enable-bos-new-config              enable bosserver pickup of BosConfig.new on restarts],, enable_bos_new_config="no")
24 AC_ARG_ENABLE( largefile-fileserver,
25 [  --disable-largefile-fileserver       disable large file support in fileserver],, enable_largefile_fileserver="yes")
26 AC_ARG_ENABLE( namei-fileserver,
27 [  --enable-namei-fileserver            force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
28 AC_ARG_ENABLE( supergroups,
29 [  --enable-supergroups                 enable support for nested pts groups],, enable_supergroups="no")
30 AC_ARG_ENABLE( fast-restart,
31 [  --enable-fast-restart                enable fast startup of file server without salvaging],, enable_fast_restart="no")
32 AC_ARG_ENABLE( bitmap-later,
33 [  --enable-bitmap-later                enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
34 AC_ARG_ENABLE( demand-attach-fs,
35 [  --enable-demand-attach-fs            enable Demand Attach Fileserver (please see documentation)],, enable_demand_attach_fs="no")
36 AC_ARG_ENABLE( unix-sockets,
37 [  --enable-unix-sockets                enable use of unix domain sockets for fssync],, enable_unix_sockets="yes")
38 AC_ARG_ENABLE( full-vos-listvol-switch,
39 [  --disable-full-vos-listvol-switch    disable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="yes")
40 AC_ARG_WITH(dux-kernel-headers,
41 [  --with-dux-kernel-headers=path       use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
42 )
43 AC_ARG_WITH(linux-kernel-headers,
44 [  --with-linux-kernel-headers=path     use the kernel headers found at path(optional, defaults to /usr/src/linux-2.4, then /usr/src/linux)]
45 )
46 AC_ARG_WITH(bsd-kernel-headers,
47 [  --with-bsd-kernel-headers=path       use the kernel headers found at path(optional, defaults to /usr/src/sys)]
48 )
49 AC_ARG_WITH(bsd-kernel-build,
50 [  --with-bsd-kernel-build=path         use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC)]
51 )
52 AC_ARG_ENABLE(kernel-module,
53 [  --disable-kernel-module              disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
54 )
55 AC_ARG_ENABLE(redhat-buildsys,
56 [  --enable-redhat-buildsys             enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no"
57 )
58 AC_ARG_ENABLE(transarc-paths,
59 [  --enable-transarc-paths                      Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no"
60 )
61 AC_ARG_ENABLE(tivoli-tsm,
62 [  --enable-tivoli-tsm                  Enable use of the Tivoli TSM API libraries for butc support],, enable_tivoli_tsm="no"
63 )
64 AC_ARG_ENABLE(debug-kernel,
65 [  --enable-debug-kernel                enable compilation of the kernel module with debugging information (defaults to disabled)],, enable_debug_kernel="no"
66 )
67 AC_ARG_ENABLE(optimize-kernel,
68 [  --disable-optimize-kernel            disable compilation of the kernel module with optimization (defaults based on platform)],, enable_optimize_kernel="yes"
69 )
70 AC_ARG_ENABLE(debug,
71 [  --enable-debug                       enable compilation of the user space code with debugging information (defaults to disabled)],, enable_debug="no"
72 )
73 AC_ARG_ENABLE(strip-binaries,
74 [  --disable-strip-binaries             disable stripping of symbol information from binaries (defaults to enabled)],, enable_strip_binaries="maybe"
75 )
76 AC_ARG_ENABLE(optimize,
77 [  --disable-optimize                   disable optimization for compilation of the user space code (defaults to enabled)],, enable_optimize="yes"
78 )
79 AC_ARG_ENABLE(debug-lwp,
80 [  --enable-debug-lwp                   enable compilation of the LWP code with debugging information (defaults to disabled)],, enable_debug_lwp="no"
81 )
82 AC_ARG_ENABLE(optimize-lwp,
83 [  --disable-optimize-lwp               disable optimization for compilation of the LWP code (defaults to enabled)],, enable_optimize_lwp="yes"
84 )
85 AC_ARG_ENABLE(debug-pam,
86 [  --enable-debug-pam                   enable compilation of the PAM code with debugging information (defaults to disabled)],, enable_debug_pam="no"
87 )
88 AC_ARG_ENABLE(optimize-pam,
89 [  --disable-optimize-pam               disable optimization for compilation of the PAM code (defaults to enabled)],, enable_optimize_pam="yes"
90 )
91
92
93 enable_login="no"
94
95 dnl weird ass systems
96 AC_AIX
97 AC_ISC_POSIX
98 AC_MINIX
99
100 dnl Various compiler setup.
101 AC_TYPE_PID_T
102 AC_TYPE_SIZE_T
103 AC_TYPE_SIGNAL
104 COMPILER_HAS_FUNCTION_MACRO
105
106 dnl Checks for programs.
107 AC_PROG_INSTALL
108 AC_PROG_LN_S
109 AC_PROG_RANLIB
110 AC_PROG_YACC
111 AM_PROG_LEX
112
113 OPENAFS_CHECK_BIGENDIAN
114
115 AC_MSG_CHECKING(your OS)
116 system=$host
117 case $system in
118         *-linux*)
119
120                 MKAFS_OSTYPE=LINUX
121                 if test "x$enable_redhat_buildsys" = "xyes"; then
122                  AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
123                 fi
124                 if test "x$enable_kernel_module" = "xyes"; then
125                  if test "x$with_linux_kernel_headers" != "x"; then
126                    LINUX_KERNEL_PATH="$with_linux_kernel_headers"
127                  else
128                    LINUX_KERNEL_PATH="/lib/modules/`uname -r`/source"
129                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
130                      LINUX_KERNEL_PATH="/lib/modules/`uname -r`/build"
131                    fi
132                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
133                      LINUX_KERNEL_PATH="/usr/src/linux-2.4"
134                    fi
135                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
136                      LINUX_KERNEL_PATH="/usr/src/linux"
137                    fi
138                  fi
139                if test -f "$LINUX_KERNEL_PATH/include/linux/utsrelease.h"; then
140                  linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
141                  LINUX_VERSION="$linux_kvers"
142                else
143                  if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
144                   linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
145                   if test "x$linux_kvers" = "x"; then
146                     if test -f "$LINUX_KERNEL_PATH/include/linux/version-up.h"; then
147                       linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
148                       if test "x$linux_kvers" = "x"; then
149
150                         AC_MSG_ERROR(Linux headers lack version definition [2])
151                         exit 1
152                       else
153                         LINUX_VERSION="$linux_kvers"
154                       fi
155                     else
156                       AC_MSG_ERROR(Linux headers lack version definition)
157                       exit 1
158                     fi
159                   else
160                     LINUX_VERSION="$linux_kvers"
161                   fi
162                  else
163                     enable_kernel_module="no"
164                  fi
165                fi
166                  if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
167                      enable_kernel_module="no"
168                  fi
169                  if test "x$enable_kernel_module" = "xno"; then
170                   if test "x$with_linux_kernel_headers" != "x"; then
171                    AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
172                    exit 1
173                   else
174                    AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
175                   fi
176                  fi
177                  dnl do we need to determine SUBARCH from autoconf.h
178                  SUBARCH=default
179                 fi
180                 AC_MSG_RESULT(linux)
181                 if test "x$enable_kernel_module" = "xyes"; then
182                  AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
183                  if test "x${AFS_SYSKVERS}" = "x"; then
184                   AC_MSG_ERROR(Couldn't guess your Linux version [2])
185                  fi
186                 fi
187                 ;;
188         *-solaris*)
189                 MKAFS_OSTYPE=SOLARIS
190                 AC_MSG_RESULT(sun4)
191                 SOLARIS_UFSVFS_HAS_DQRWLOCK
192                 SOLARIS_PROC_HAS_P_COREFILE
193                 SOLARIS_FS_HAS_FS_ROLLED
194                 ;;
195         *-sunos*)
196                 MKAFS_OSTYPE=SUNOS
197                 enable_kernel_module=no
198                 AC_MSG_RESULT(sun4)
199                 ;;
200         *-hpux*)
201                 MKAFS_OSTYPE=HPUX
202                 AC_MSG_RESULT(hp_ux)
203                 if test -f "/usr/old/usr/include/ndir.h"; then
204                  AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
205                 fi
206                 ;;
207         *-irix*)
208                 if test -d /usr/include/sys/SN/SN1; then
209                  IRIX_BUILD_IP35="IP35"
210                 fi
211                 MKAFS_OSTYPE=IRIX
212                 AC_MSG_RESULT(sgi)
213                 ;;
214         *-aix*)
215                 MKAFS_OSTYPE=AIX
216                 AC_MSG_RESULT(rs_aix)
217                 ;;
218         *-osf*)
219                 MKAFS_OSTYPE=DUX
220                 AC_MSG_RESULT(alpha_dux)
221                 ;;
222         powerpc-*-darwin*)
223                 MKAFS_OSTYPE=DARWIN
224                 AC_MSG_RESULT(ppc_darwin)
225                 ;;
226         i386-*-darwin*)
227                 MKAFS_OSTYPE=DARWIN
228                 AC_MSG_RESULT(x86_darwin)
229                 ;;
230         *-freebsd*)
231                 MKAFS_OSTYPE=FBSD
232                 AC_MSG_RESULT(i386_fbsd)
233                 ;;
234         *-netbsd*)
235                 MKAFS_OSTYPE=NBSD
236                 AC_MSG_RESULT(nbsd)
237                 ;;
238         *-openbsd*)
239                 MKAFS_OSTYPE=OBSD
240                 AC_MSG_RESULT(i386_obsd)
241                 ;;
242         *)
243                 AC_MSG_RESULT($system)
244                 ;;
245 esac
246
247 if test "x$with_afs_sysname" != "x"; then
248         AFS_SYSNAME="$with_afs_sysname"
249 else
250         AC_MSG_CHECKING(your AFS sysname)
251         case $host in
252                 i?86-*-openbsd?.?)
253                         v=${host#*openbsd}
254                         vM=${v%.*}
255                         vm=${v#*.}
256                         AFS_SYSNAME="i386_obsd${vM}${vm}"
257                         ;;
258                 sparc64-*-openbsd?.?)
259                         v=${host#*openbsd}
260                         vM=${v%.*}
261                         vm=${v#*.}
262                         AFS_SYSNAME="sparc64_obsd${vM}${vm}"
263                         ;;
264                 i?86-*-freebsd?.*)
265                         v=${host#*freebsd}
266                         vM=${v%.*}
267                         vm=${v#*.}
268                         AFS_SYSNAME="i386_fbsd_${vM}${vm}"
269                         ;;
270                 i?86-*-netbsd*1.5*)
271                         AFS_SYSNAME="i386_nbsd15"
272                         ;;
273                 alpha-*-netbsd*1.5*)
274                         AFS_SYSNAME="alpha_nbsd15"
275                         ;;
276                 i?86-*-netbsd*1.6[[M-Z]]*)
277                         AFS_SYSNAME="i386_nbsd20"
278                         ;;
279                 powerpc-*-netbsd*1.6[[M-Z]]*)
280                         AFS_SYSNAME="ppc_nbsd20"
281                         ;;
282                 i?86-*-netbsd*2.0*)
283                         AFS_SYSNAME="i386_nbsd20"
284                         ;;
285                 amd64-*-netbsd*2.0*)
286                         AFS_SYSNAME="amd64_nbsd20"
287                         ;;
288                 powerpc-*-netbsd*2.0*)
289                         AFS_SYSNAME="ppc_nbsd20"
290                         ;;
291                 i?86-*-netbsd*1.6*)
292                         AFS_SYSNAME="i386_nbsd16"
293                         ;;
294                 alpha-*-netbsd*1.6*)
295                         AFS_SYSNAME="alpha_nbsd16"
296                         ;;
297                 powerpc-*-netbsd*1.6*)
298                         AFS_SYSNAME="ppc_nbsd16"
299                         ;;
300                 i?86-*-netbsd*2.1*)
301                         AFS_SYSNAME="i386_nbsd21"
302                         ;;
303                 i?86-*-netbsd*2.99*)
304                         AFS_SYSNAME="i386_nbsd30"
305                         ;;
306                 i?86-*-netbsd*3.[[0-8]]*)
307                         AFS_SYSNAME="i386_nbsd30"
308                         ;;
309                 i?86-*-netbsd*3.99*)
310                         AFS_SYSNAME="i386_nbsd30"
311                         ;;
312                 i?86-*-netbsd*4.[[0-8]]*)
313                         AFS_SYSNAME="i386_nbsd40"
314                         ;;
315                 i?86-*-netbsd*4.99*)
316                         AFS_SYSNAME="i386_nbsd40"
317                         ;;
318                 hppa*-hp-hpux11.0*)
319                         AFS_SYSNAME="hp_ux110"
320                         ;;
321                 hppa*-hp-hpux11.11)
322                         AFS_SYSNAME="hp_ux11i"
323                         ;;
324                 ia64-hp-hpux11.22)
325                         AFS_SYSNAME="ia64_hpux1122"
326                         ;;
327                 ia64-hp-hpux*)
328                         AFS_SYSNAME="ia64_hpux1123"
329                         ;;
330                 hppa*-hp-hpux10*)
331                         AFS_SYSNAME="hp_ux102"
332                         ;;
333                 powerpc-apple-darwin1.2*)
334                         AFS_SYSNAME="ppc_darwin_12"
335                         ;;
336                 powerpc-apple-darwin1.3*)
337                         AFS_SYSNAME="ppc_darwin_13"
338                         ;;
339                 powerpc-apple-darwin1.4*)
340                         AFS_SYSNAME="ppc_darwin_14"
341                         ;;
342                 powerpc-apple-darwin5.1*)
343                         AFS_SYSNAME="ppc_darwin_14"
344                         ;;
345                 powerpc-apple-darwin5.2*)
346                         AFS_SYSNAME="ppc_darwin_14"
347                         ;;
348                 powerpc-apple-darwin5.3*)
349                         AFS_SYSNAME="ppc_darwin_14"
350                         ;;
351                 powerpc-apple-darwin5.4*)
352                         AFS_SYSNAME="ppc_darwin_14"
353                         ;;
354                 powerpc-apple-darwin5.5*)
355                         AFS_SYSNAME="ppc_darwin_14"
356                         ;;
357                 powerpc-apple-darwin6.0*)
358                         AFS_SYSNAME="ppc_darwin_60"
359                         ;;
360                 powerpc-apple-darwin6.1*)
361                         AFS_SYSNAME="ppc_darwin_60"
362                         ;;
363                 powerpc-apple-darwin6.2*)
364                         AFS_SYSNAME="ppc_darwin_60"
365                         ;;
366                 powerpc-apple-darwin6.3*)
367                         AFS_SYSNAME="ppc_darwin_60"
368                         ;;
369                 powerpc-apple-darwin6.4*)
370                         AFS_SYSNAME="ppc_darwin_60"
371                         ;;
372                 powerpc-apple-darwin6.5*)
373                         AFS_SYSNAME="ppc_darwin_60"
374                         ;;
375                 powerpc-apple-darwin7.0*)
376                         AFS_SYSNAME="ppc_darwin_70"
377                         ;;
378                 powerpc-apple-darwin7.1*)
379                         AFS_SYSNAME="ppc_darwin_70"
380                         ;;
381                 powerpc-apple-darwin7.2*)
382                         AFS_SYSNAME="ppc_darwin_70"
383                         ;;
384                 powerpc-apple-darwin7.3*)
385                         AFS_SYSNAME="ppc_darwin_70"
386                         ;;
387                 powerpc-apple-darwin7.4*)
388                         AFS_SYSNAME="ppc_darwin_70"
389                         ;;
390                 powerpc-apple-darwin7.5*)
391                         AFS_SYSNAME="ppc_darwin_70"
392                         ;;
393                 powerpc-apple-darwin8.0*)
394                         AFS_SYSNAME="ppc_darwin_80"
395                         ;;
396                 powerpc-apple-darwin8.*)
397                         AFS_SYSNAME="ppc_darwin_80"
398                         ;;
399                 i386-apple-darwin8.*)
400                         AFS_SYSNAME="x86_darwin_80"
401                         ;;
402                 powerpc-apple-darwin9.*)
403                         AFS_SYSNAME="ppc_darwin_90"
404                         ;;
405                 i386-apple-darwin9.*)
406                         AFS_SYSNAME="x86_darwin_90"
407                         ;;
408                 sparc-sun-solaris2.5*)
409                         AFS_SYSNAME="sun4x_55"
410                         enable_login="yes"
411                         ;;
412                 sparc-sun-solaris2.6)
413                         AFS_SYSNAME="sun4x_56"
414                         ;;
415                 sparc-sun-solaris2.7)
416                         AFS_SYSNAME="sun4x_57"
417                         ;;
418                 sparc-sun-solaris2.8)
419                         AFS_SYSNAME="sun4x_58"
420                         ;;
421                 sparc-sun-solaris2.9)
422                         AFS_SYSNAME="sun4x_59"
423                         ;;
424                 sparc-sun-solaris2.10)
425                         AFS_SYSNAME="sun4x_510"
426                         ;;
427                 sparc-sun-solaris2.11)
428                         AFS_SYSNAME="sun4x_511"
429                         ;;
430                 sparc-sun-sunos4*)
431                         AFS_SYSNAME="sun4_413"
432                         enable_login="yes"
433                         ;;
434                 i386-pc-solaris2.7)
435                         AFS_SYSNAME="sunx86_57"
436                         ;;
437                 i386-pc-solaris2.8)
438                         AFS_SYSNAME="sunx86_58"
439                         ;;
440                 i386-pc-solaris2.9)
441                         AFS_SYSNAME="sunx86_59"
442                         ;;
443                 i386-pc-solaris2.10)
444                         AFS_SYSNAME="sunx86_510"
445                         ;;
446                 i386-pc-solaris2.11)
447                         AFS_SYSNAME="sunx86_511"
448                         ;;
449                 alpha*-dec-osf4.0*)
450                         AFS_SYSNAME="alpha_dux40"
451                         ;;
452                 alpha*-dec-osf5.0*)
453                         AFS_SYSNAME="alpha_dux50"
454                         ;;
455                 alpha*-dec-osf5.1*)
456                         AFS_SYSNAME="alpha_dux51"
457                         ;;
458                 mips-sgi-irix6.5)
459                         AFS_SYSNAME="sgi_65"
460                         ;;
461                 ia64-*-linux*)
462                         AFS_SYSNAME="ia64_linuxXX"
463                         ;;
464                 powerpc-*-linux*)
465                         AFS_SYSNAME="`/bin/arch`_linuxXX"
466                         ;;
467                 powerpc64-*-linux*)
468                         AFS_SYSNAME="ppc64_linuxXX"
469                         ;;
470                 alpha*-linux*)
471                         AFS_SYSNAME="alpha_linux_XX"
472                         ;;
473                 s390-*-linux*)
474                         AFS_SYSNAME="s390_linuxXX"
475                         ;;
476                 s390x-*-linux*)
477                         AFS_SYSNAME="s390x_linuxXX"
478                         ;;
479                 sparc-*-linux*)
480                         AFS_SYSNAME="`/bin/arch`_linuxXX"
481                         ;;
482                 sparc64-*-linux*)
483                         AFS_SYSNAME="sparc64_linuxXX"
484                         ;;
485                 i?86-*-linux*)
486                         AFS_SYSNAME="i386_linuxXX"
487                         ;;
488                 parisc-*-linux-gnu|hppa-*-linux-gnu)
489                         AFS_SYSNAME="parisc_linuxXX"
490                         enable_pam="no"
491                         ;;
492                 power*-ibm-aix4.2*)
493                         AFS_SYSNAME="rs_aix42"
494                         enable_pam="no"
495                         ;;
496                 power*-ibm-aix4.3*)
497                         AFS_SYSNAME="rs_aix42"
498                         enable_pam="no"
499                         ;;
500                 power*-ibm-aix5.1*)
501                         AFS_SYSNAME="rs_aix51"
502                         enable_pam="no"
503                         ;;
504                 power*-ibm-aix5.2*)
505                         AFS_SYSNAME="rs_aix52"
506                         enable_pam="no"
507                         ;;
508                 power*-ibm-aix5.3*)
509                         AFS_SYSNAME="rs_aix53"
510                         enable_pam="no"
511                         ;;
512                 x86_64-*-linux-gnu)
513                         AFS_SYSNAME="amd64_linuxXX"
514                         enable_pam="no"
515                         ;;
516                 *)
517                         AC_MSG_ERROR(An AFS sysname is required)
518                         exit 1
519                         ;;
520         esac
521         case $AFS_SYSNAME in
522                 *_linux* | *_umlinux*)
523                         if test "x${AFS_SYSKVERS}" = "x"; then
524                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
525                         fi
526                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
527                         AFS_SYSNAME="$_AFS_SYSNAME"
528                         save_CPPFLAGS="$CPPFLAGS"
529                         CPPFLAGS="-I${LINUX_KERNEL_PATH}/include $CPPFLAGS"
530                         AC_TRY_COMPILE(
531                          [#include <linux/autoconf.h>],
532                          [#ifndef CONFIG_USERMODE
533                           #error not UML
534                           #endif],
535                          ac_cv_linux_is_uml=yes,)
536                         if test "${ac_cv_linux_is_uml}" = yes; then
537                          _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
538                         fi
539                         CPPFLAGS="$save_CPPFLAGS"
540                         AFS_SYSNAME="$_AFS_SYSNAME"
541                         ;;
542         esac
543         AC_MSG_RESULT($AFS_SYSNAME)
544 fi
545
546 dnl Some hosts have a separate common param file they should include.  Figure
547 dnl out if we're on one of them now that we know the sysname.
548 case $AFS_SYSNAME in
549     *_nbsd15)   AFS_PARAM_COMMON=param.nbsd15.h  ;;
550     *_nbsd16)   AFS_PARAM_COMMON=param.nbsd16.h  ;;
551     *_nbsd20)   AFS_PARAM_COMMON=param.nbsd20.h  ;;
552     *_nbsd21)   AFS_PARAM_COMMON=param.nbsd21.h  ;;
553     *_nbsd30)   AFS_PARAM_COMMON=param.nbsd30.h  ;;
554     *_nbsd40)   AFS_PARAM_COMMON=param.nbsd40.h  ;;
555     *_linux22)  AFS_PARAM_COMMON=param.linux22.h ;;
556     *_linux24)  AFS_PARAM_COMMON=param.linux24.h ;;
557     *_linux26)  AFS_PARAM_COMMON=param.linux26.h ;;
558 esac
559
560 case $AFS_SYSNAME in *_linux* | *_umlinux*)
561
562                 # Add (sub-) architecture-specific paths needed by conftests
563                 case $AFS_SYSNAME  in
564                         *_umlinux26)
565                                 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
566                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
567                                 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
568                                 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
569                 esac
570
571                 if test "x$enable_kernel_module" = "xyes"; then
572                  if test "x$enable_debug_kernel" = "xno"; then
573                         LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
574                  fi
575                  OPENAFS_GCC_SUPPORTS_MARCH
576                  AC_SUBST(P5PLUS_KOPTS)
577                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
578                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
579                  OPENAFS_GCC_SUPPORTS_NO_COMMON
580                  OPENAFS_GCC_SUPPORTS_PIPE
581                  AC_SUBST(LINUX_GCC_KOPTS)
582                  ifdef([OPENAFS_CONFIGURE_LIBAFS],
583                    [LINUX_BUILD_VNODE_FROM_INODE(src/config,src/afs)],
584                    [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
585                  )
586
587                  LINUX_KERNEL_COMPILE_WORKS
588                  LINUX_HAVE_KMEM_CACHE_T
589                  LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
590                  LINUX_CONFIG_H_EXISTS
591                  LINUX_COMPLETION_H_EXISTS
592                  LINUX_EXPORTFS_H_EXISTS
593                  LINUX_DEFINES_FOR_EACH_PROCESS
594                  LINUX_DEFINES_PREV_TASK
595                  LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE
596                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
597                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
598                  LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
599                  LINUX_FS_STRUCT_INODE_HAS_I_BLKBITS
600                  LINUX_FS_STRUCT_INODE_HAS_I_BLKSIZE
601                  LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
602                  LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
603                  LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
604                  LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED
605                  LINUX_FS_STRUCT_INODE_HAS_I_MUTEX
606                  LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST
607                  LINUX_FS_STRUCT_INODE_HAS_I_SECURITY
608                  LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK
609                  LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM
610                  LINUX_INODE_SETATTR_RETURN_TYPE
611                  LINUX_WRITE_INODE_RETURN_TYPE
612                  LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
613                  LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
614                  LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
615                  LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
616                  LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
617                  LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
618                  LINUX_AOP_WRITEBACK_CONTROL
619                  LINUX_FS_STRUCT_FOP_HAS_FLOCK
620                  LINUX_FS_STRUCT_FOP_HAS_SENDFILE
621                  LINUX_FS_STRUCT_FOP_HAS_SPLICE
622                  LINUX_KERNEL_LINUX_SYSCALL_H
623                  LINUX_KERNEL_LINUX_SEQ_FILE_H
624                  LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
625                  LINUX_KERNEL_SELINUX
626                  LINUX_KERNEL_SOCK_CREATE
627                  LINUX_KERNEL_PAGE_FOLLOW_LINK
628                  LINUX_NEED_RHCONFIG
629                  LINUX_RECALC_SIGPENDING_ARG_TYPE
630                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT
631                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT
632                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG
633                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND
634                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK
635                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM
636                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
637                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE
638                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TGID
639                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TODO
640                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO
641                  LINUX_EXPORTS_TASKLIST_LOCK
642                  LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
643                  LINUX_STATFS_TAKES_DENTRY
644                  LINUX_FREEZER_H_EXISTS
645                  LINUX_HAVE_SVC_ADDR_IN
646                  if test "x$ac_cv_linux_freezer_h_exists" = "xyes" ; then
647                   AC_DEFINE(FREEZER_H_EXISTS, 1, [define if you have linux/freezer.h])
648                  fi
649                  LINUX_REFRIGERATOR
650                  LINUX_LINUX_KEYRING_SUPPORT
651                  LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
652                  LINUX_DO_SYNC_READ
653                  LINUX_GENERIC_FILE_AIO_READ
654                  LINUX_INIT_WORK_HAS_DATA
655                  LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
656                  LINUX_EXPORTS_SYS_CHDIR
657                  LINUX_EXPORTS_SYS_CLOSE
658                  LINUX_EXPORTS_SYS_OPEN
659                  LINUX_EXPORTS_SYS_WAIT4
660                  LINUX_WHICH_MODULES
661                  if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
662                    AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
663                    ac_cv_linux_exports_sys_call_table=no
664                    if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
665                      ac_cv_linux_exports_ia32_sys_call_table=yes
666                    fi
667                  else
668                    LINUX_EXPORTS_INIT_MM
669                    LINUX_EXPORTS_KALLSYMS_ADDRESS
670                    LINUX_EXPORTS_KALLSYMS_SYMBOL
671                    LINUX_EXPORTS_SYS_CALL_TABLE
672                    LINUX_EXPORTS_IA32_SYS_CALL_TABLE
673                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
674                          linux_syscall_method=none
675                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
676                             linux_syscall_method=scan
677                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
678                                linux_syscall_method=scan_with_kallsyms_address
679                             fi
680                          fi
681                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
682                             linux_syscall_method=kallsyms_symbol
683                          fi
684                          if test "x$linux_syscall_method" = "xnone"; then
685                             AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
686                             linux_syscall_method=scan
687                          fi
688                    fi
689                  fi
690                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
691                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
692                  fi
693                  if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
694                   AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
695                  fi
696                  if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
697                   AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
698                  fi
699                  if test "x$ac_cv_linux_exports_sys_chdir" = "xyes" ; then
700                   AC_DEFINE(EXPORTED_SYS_CHDIR, 1, [define if your linux kernel exports sys_chdir])
701                  fi
702                  if test "x$ac_cv_linux_exports_sys_open" = "xyes" ; then
703                   AC_DEFINE(EXPORTED_SYS_OPEN, 1, [define if your linux kernel exports sys_open])
704                  fi
705                  if test "x$ac_cv_linux_exports_sys_close" = "xyes" ; then
706                   AC_DEFINE(EXPORTED_SYS_CLOSE, 1, [define if your linux kernel exports sys_close])
707                  fi
708                  if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
709                   AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
710                  fi
711                  if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
712                   AC_DEFINE(EXPORTED_SYS_CALL_TABLE)
713                  fi
714                  if test "x$ac_cv_linux_exports_ia32_sys_call_table" = "xyes"; then
715                   AC_DEFINE(EXPORTED_IA32_SYS_CALL_TABLE)
716                  fi
717                  if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
718                   AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL)
719                  fi
720                  if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
721                   AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS)
722                  fi
723                  if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
724                   AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if completion_h exists])
725                  fi
726                  if test "x$ac_cv_linux_config_h_exists" = "xyes" ; then
727                   AC_DEFINE(CONFIG_H_EXISTS, 1, [define if config.h exists])
728                  fi
729                  if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then
730                   AC_DEFINE(EXPORTFS_H_EXISTS, 1, [define if linux/exportfs.h exists])
731                  fi
732                  if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then
733                   AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined])
734                  fi
735                  if test "x$ac_cv_linux_defines_prev_task" = "xyes" ; then
736                   AC_DEFINE(DEFINED_PREV_TASK, 1, [define if prev_task defined])
737                  fi
738                  if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
739                   AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
740                  fi
741                  if test "x$ac_cv_linux_func_write_inode_returns_int" = "xyes" ; then
742                   AC_DEFINE(WRITE_INODE_NOT_VOID, 1, [define if your sops.write_inode returns non-void])
743                  fi
744                  if test "x$ac_cv_linux_fs_struct_super_has_alloc_inode" = "xyes" ; then
745                   AC_DEFINE(STRUCT_SUPER_HAS_ALLOC_INODE, 1, [define if your struct super_operations has alloc_inode])
746                  fi
747                  if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then 
748                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
749                  fi
750                  if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then 
751                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
752                  fi
753                  if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then 
754                   AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
755                  fi
756                  if test "x$ac_cv_linux_fs_struct_inode_has_i_alloc_sem" = "xyes"; then 
757                   AC_DEFINE(STRUCT_INODE_HAS_I_ALLOC_SEM, 1, [define if your struct inode has alloc_sem])
758                  fi
759                  if test "x$ac_cv_linux_fs_struct_inode_has_i_blksize" = "xyes"; then 
760                   AC_DEFINE(STRUCT_INODE_HAS_I_BLKSIZE, 1, [define if your struct inode has i_blksize])
761                  fi
762                  if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then 
763                   AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
764                  fi
765                  if test "x$ac_cv_linux_fs_struct_inode_has_i_security" = "xyes"; then 
766                   AC_DEFINE(STRUCT_INODE_HAS_I_SECURITY, 1, [define if you struct inode has i_security])
767                  fi
768                  if test "x$ac_cv_linux_fs_struct_inode_has_i_mutex" = "xyes"; then 
769                   AC_DEFINE(STRUCT_INODE_HAS_I_MUTEX, 1, [define if you struct inode has i_mutex])
770                  fi
771                  if test "x$ac_cv_linux_fs_struct_inode_has_i_sb_list" = "xyes"; then 
772                   AC_DEFINE(STRUCT_INODE_HAS_I_SB_LIST, 1, [define if you struct inode has i_sb_list])
773                  fi
774                  if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then 
775                   AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if your struct inode has data_buffers])
776                  fi
777                  if test "x$ac_cv_linux_fs_struct_inode_has_inotify_lock" = "xyes"; then 
778                   AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_LOCK, 1, [define if your struct inode has inotify_lock])
779                  fi
780                  if test "x$ac_cv_linux_fs_struct_inode_has_inotify_sem" = "xyes"; then 
781                   AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_SEM, 1, [define if your struct inode has inotify_sem])
782                  fi
783                  if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then 
784                   AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void])
785                  fi
786                  if test "x$ac_cv_linux_kernel_posix_lock_file_wait_arg" = "xyes" ; then
787                   AC_DEFINE(POSIX_LOCK_FILE_WAIT_ARG, 1, [define if your linux kernel uses 3 arguments for posix_lock_file])
788                  fi
789                  if test "x$ac_cv_linux_kernel_is_selinux" = "xyes" ; then
790                   AC_DEFINE(LINUX_KERNEL_IS_SELINUX, 1, [define if your linux kernel uses SELinux features])
791                  fi
792                  if test "x$ac_cv_linux_kernel_sock_create_v" = "xyes" ; then
793                   AC_DEFINE(LINUX_KERNEL_SOCK_CREATE_V, 1, [define if your linux kernel uses 5 arguments for sock_create])
794                  fi
795                  if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" ; then
796                   AC_DEFINE(HAVE_KERNEL_PAGE_FOLLOW_LINK, 1, [define if your linux kernel provides page_follow_link])
797                  fi
798                  if test "x$ac_linux_syscall" = "xyes" ; then
799                   AC_DEFINE(HAVE_KERNEL_LINUX_SYSCALL_H, 1, [define if your linux kernel has linux/syscall.h])
800                  fi
801                  if test "x$ac_linux_seq_file" = "xyes" ; then
802                   AC_DEFINE(HAVE_KERNEL_LINUX_SEQ_FILE_H, 1, [define if your linux kernel has linux/seq_file.h])
803                  fi
804                  if test "x$ac_cv_linux_sched_struct_task_struct_has_parent" = "xyes"; then 
805                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_PARENT, 1, [define if your struct task_struct has parent])
806                  fi
807                  if test "x$ac_cv_linux_sched_struct_task_struct_has_real_parent" = "xyes"; then 
808                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_REAL_PARENT, 1, [define if your struct task_struct has real_parent])
809                  fi
810                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sigmask_lock" = "xyes"; then 
811                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK, 1, [define if your struct task_struct has sigmask_lock])
812                  fi
813                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sighand" = "xyes"; then 
814                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGHAND, 1, [define if your struct task_struct has sighand])
815                  fi
816                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sig" = "xyes"; then 
817                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIG, 1, [define if your struct task_struct has sig])
818                  fi
819                  if test "x$ac_cv_linux_sched_struct_task_struct_has_rlim" = "xyes"; then 
820                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_RLIM, 1, [define if your struct task_struct has rlim])
821                  fi
822                  if test "x$ac_cv_linux_sched_struct_task_struct_has_signal_rlim" = "xyes"; then 
823                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM, 1, [define if your struct task_struct has signal->rlim])
824                  fi
825                  if test "x$ac_cv_linux_sched_struct_task_struct_has_exit_state" = "xyes"; then 
826                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_EXIT_STATE, 1, [define if your struct task_struct has exit_state])
827                  fi
828                  if test "x$ac_cv_linux_sched_struct_task_struct_has_tgid" = "xyes"; then 
829                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TGID, 1, [define if your struct task_struct has tgid])
830                  fi
831                  if test "x$ac_cv_linux_sched_struct_task_struct_has_todo" = "xyes"; then 
832                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TODO, 1, [define if your struct task_struct has todo])
833                  fi
834                  if test "x$ac_cv_linux_sched_struct_task_struct_has_thread_info" = "xyes"; then 
835                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_THREAD_INFO, 1, [define if your struct task_struct has thread_info])
836                  fi
837                  if test "x$ac_cv_linux_get_sb_has_struct_vfsmount" = "xyes"; then
838                   AC_DEFINE(GET_SB_HAS_STRUCT_VFSMOUNT, 1, [define if your get_sb_nodev needs a struct vfsmount argument])
839                  fi
840                  if test "x$ac_cv_linux_statfs_takes_dentry" = "xyes"; then
841                   AC_DEFINE(STATFS_TAKES_DENTRY, 1, [define if your statfs takes a dentry argument])
842                  fi
843                  if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then
844                   AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument])
845                  fi
846                  if test "x$ac_cv_linux_func_refrigerator_takes_pf_freeze" = "xyes" ; then
847                   AC_DEFINE(LINUX_REFRIGERATOR_TAKES_PF_FREEZE, 1, [define if your refrigerator takes PF_FREEZE])
848                  fi
849                  if test "x$ac_cv_linux_func_i_create_takes_nameidata" = "xyes" ; then
850                   AC_DEFINE(IOP_CREATE_TAKES_NAMEIDATA, 1, [define if your iops.create takes a nameidata argument])
851                  fi
852                  if test "x$ac_cv_linux_func_f_flush_takes_fl_owner_t" = "xyes" ; then
853                   AC_DEFINE(FOP_FLUSH_TAKES_FL_OWNER_T, 1, [define if your fops.flush takes an fl_owner_t argument])
854                  fi
855                  if test "x$ac_cv_linux_func_i_lookup_takes_nameidata" = "xyes" ; then
856                   AC_DEFINE(IOP_LOOKUP_TAKES_NAMEIDATA, 1, [define if your iops.lookup takes a nameidata argument])
857                  fi
858                  if test "x$ac_cv_linux_func_i_permission_takes_nameidata" = "xyes" ; then
859                   AC_DEFINE(IOP_PERMISSION_TAKES_NAMEIDATA, 1, [define if your iops.permission takes a nameidata argument])
860                  fi
861                  if test "x$ac_cv_linux_func_d_revalidate_takes_nameidata" = "xyes" ; then
862                   AC_DEFINE(DOP_REVALIDATE_TAKES_NAMEIDATA, 1, [define if your dops.d_revalidate takes a nameidata argument])
863                  fi
864                  if test "x$ac_cv_linux_init_work_has_data" = "xyes" ; then
865                   AC_DEFINE(INIT_WORK_HAS_DATA, 1, [define if INIT_WORK takes a data (3rd) argument])
866                  fi
867                  if test "x$ac_cv_linux_fs_struct_fop_has_flock" = "xyes" ; then
868                   AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_FLOCK, 1, [define if your struct file_operations has flock])
869                  fi
870                  if test "x$ac_cv_linux_fs_struct_fop_has_sendfile" = "xyes" ; then
871                   AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SENDFILE, 1, [define if your struct file_operations has sendfile])
872                  fi
873                  if test "x$ac_cv_linux_fs_struct_fop_has_splice" = "xyes" ; then
874                   AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SPLICE, 1, [define if your struct file_operations has splice_write and splice_read])
875                  fi
876                  if test "x$ac_cv_linux_register_sysctl_table_noflag" = "xyes" ; then
877                   AC_DEFINE(REGISTER_SYSCTL_TABLE_NOFLAG, 1, [define if register_sysctl_table has no insert_at head flag])
878                  fi
879                  if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
880                   AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported])
881                  fi
882                  if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
883                   AC_DEFINE(HAVE_KMEM_CACHE_T, 1, [define if kmem_cache_t exists])
884                  fi
885                  if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
886                   AC_DEFINE(KMEM_CACHE_TAKES_DTOR, 1, [define if kmem_cache_create takes a destructor argument])
887                  fi
888                  if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
889                   AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
890                  else
891                   AC_MSG_WARN([your kernel does not have a usable symlink cache API])
892                  fi
893                  if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then
894                   AC_DEFINE(HAVE_SVC_ADDR_IN, 1, [define if svc_add_in exists])
895                  fi
896                 :
897                 fi
898 esac
899
900 case $AFS_SYSNAME in
901         *_darwin*)
902                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
903                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
904                 dnl the test below fails on darwin, even if the CPPFLAGS below
905                 dnl are added. the headers from Kernel.framework must be used
906                 dnl when KERNEL is defined.
907
908                 dnl really, such a thing isn't guaranteed to work on any 
909                 dnl platform until the kernel cflags from MakefileProto are
910                 dnl known to configure
911                 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
912                 ;;
913         *)
914 AC_MSG_CHECKING(for definition of struct buf)
915 dnl save_CPPFLAGS="$CPPFLAGS"
916 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
917 AC_CACHE_VAL(ac_cv_have_struct_buf, [
918         ac_cv_have_struct_buf=no
919         AC_TRY_COMPILE(
920                 [#include <sys/buf.h>],
921                 [struct buf x;
922                 printf("%d\n", sizeof(x));],
923                 ac_cv_have_struct_buf=yes,)
924         ]
925 )
926 dnl CPPFLAGS="$save_CPPFLAGS"
927 AC_MSG_RESULT($ac_cv_have_struct_buf)
928 if test "$ac_cv_have_struct_buf" = yes; then
929         AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
930 fi
931 ;;
932 esac
933
934
935 AC_CACHE_VAL(ac_cv_sockaddr_len,
936 [
937 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
938 AC_TRY_COMPILE( [#include <sys/types.h>
939 #include <sys/socket.h>],
940 [struct sockaddr *a;
941 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
942 AC_MSG_RESULT($ac_cv_sockaddr_len)])
943 if test "$ac_cv_sockaddr_len" = "yes"; then
944    AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
945 fi
946 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
947         echo Skipping library tests because they confuse Irix.
948 else
949   AC_CHECK_FUNCS(socket)
950
951   if test "$ac_cv_func_socket" = no; then
952     for lib in socket inet; do
953         if test "$HAVE_SOCKET" != 1; then
954                 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
955         fi
956     done
957   fi
958   
959   AC_CHECK_FUNCS(connect)       
960
961   if test "$ac_cv_func_connect" = no; then
962     for lib in nsl; do
963         if test "$HAVE_CONNECT" != 1; then
964                 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
965         fi
966     done
967   fi
968
969   AC_CHECK_FUNCS(gethostbyname)
970   if test "$ac_cv_func_gethostbyname" = no; then
971         for lib in dns nsl resolv; do
972           if test "$HAVE_GETHOSTBYNAME" != 1; then
973             AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
974           fi
975         done    
976   fi    
977
978   dnl darwin wants it, aix hates it
979   AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
980   AC_TRY_COMPILE([
981   #include <stdlib.h>
982   #include <stdio.h>
983   #include <sys/types.h>
984   #include <sys/socket.h>
985   #include <netinet/in.h>
986   #include <arpa/inet.h>
987   #include <arpa/nameser.h>
988   #include <arpa/nameser_compat.h>
989   #include <resolv.h>
990   ], [static int i; i = 0;],
991   [AC_MSG_RESULT(yes)
992    AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H)],
993   [AC_MSG_RESULT(no)
994    ])
995
996   openafs_save_libs="$LIBS"
997   AC_MSG_CHECKING([for res_search])
998   AC_FUNC_RES_SEARCH
999
1000   if test "$ac_cv_func_res_search" = no; then
1001       for lib in dns nsl resolv; do
1002         if test "$ac_cv_func_res_search" != yes; then
1003           LIBS="-l$lib $LIBS"
1004           AC_FUNC_RES_SEARCH
1005           LIBS="$openafs_save_libs"
1006         fi
1007       done    
1008       if test "$ac_cv_func_res_search" = yes; then
1009         LIB_res_search="-l$lib"       
1010         AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1011         AC_MSG_RESULT([yes, in lib$lib])
1012       else
1013         AC_MSG_RESULT(no)
1014       fi
1015   else
1016     AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1017     AC_MSG_RESULT(yes)
1018   fi
1019   
1020 fi
1021
1022 PTHREAD_LIBS=error
1023 if test "x$MKAFS_OSTYPE" = OBSD; then
1024         PTHREAD_LIBS="-pthread"
1025 fi
1026 if test "x$PTHREAD_LIBS" = xerror; then
1027         AC_CHECK_LIB(pthread, pthread_attr_init,
1028                 PTHREAD_LIBS="-lpthread")
1029 fi
1030 if test "x$PTHREAD_LIBS" = xerror; then
1031         AC_CHECK_LIB(pthreads, pthread_attr_init,
1032                 PTHREAD_LIBS="-lpthreads")
1033 fi
1034 if test "x$PTHREAD_LIBS" = xerror; then
1035         AC_CHECK_LIB(c_r, pthread_attr_init,
1036                 PTHREAD_LIBS="-lc_r")
1037 fi
1038 if test "x$PTHREAD_LIBS" = xerror; then
1039         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1040 fi
1041 if test "x$PTHREAD_LIBS" = xerror; then
1042         # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1043         AC_CHECK_LIB(pthread, pthread_attr_destroy,
1044                 PTHREAD_LIBS="-lpthread")
1045 fi
1046 if test "x$PTHREAD_LIBS" = xerror; then
1047         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1048 fi
1049 AC_SUBST(PTHREAD_LIBS)
1050
1051 HOST_CPU="$host_cpu"
1052
1053 if test "x$with_bsd_kernel_headers" != "x"; then
1054         BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1055 else
1056         BSD_KERNEL_PATH="/usr/src/sys"
1057 fi
1058
1059 if test "x$with_bsd_kernel_build" != "x"; then
1060         BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1061 else
1062         case $AFS_SYSNAME in
1063                 *_fbsd_4?)
1064                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC"
1065                         ;;
1066                 *_fbsd_*)
1067                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1068                         ;;
1069         esac
1070 fi
1071
1072 # Fast restart
1073 if test "$enable_supergroups" = "yes"; then
1074         AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1075 fi
1076
1077 if test "$enable_fast_restart" = "yes"; then
1078         AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
1079 fi
1080
1081 if test "$enable_bitmap_later" = "yes"; then
1082         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1083 fi
1084
1085 if test "$enable_demand_attach_fs" = "yes"; then
1086         AC_DEFINE(DEMAND_ATTACH_ENABLE, 1, [define if you want the demand attach fileserver])
1087         DEMAND_ATTACH="yes"
1088 else
1089         DEMAND_ATTACH="no"
1090 fi
1091 AC_SUBST(DEMAND_ATTACH)
1092
1093 if test "$enable_unix_sockets" = "yes"; then
1094         AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1095         USE_UNIX_SOCKETS="yes"
1096 else
1097         USE_UNIX_SOCKETS="no"
1098 fi
1099 AC_SUBST(USE_UNIX_SOCKETS)
1100
1101 if test "$enable_fast_restart" = "yes" &&
1102    test "$enable_demand_attach_fs" = "yes" ; then
1103         AC_MSG_ERROR([The Demand Attach and Fast Restart extensions are mutually exclusive.  Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless.])
1104         exit 1
1105 fi
1106
1107 if test "$enable_full_vos_listvol_switch" = "yes"; then
1108         AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
1109 fi
1110
1111 if test "$enable_bos_restricted_mode" = "yes"; then
1112         AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
1113 fi
1114
1115 if test "$enable_bos_new_config" = "yes"; then
1116         AC_DEFINE(BOS_NEW_CONFIG, 1, [define if you want to enable automatic renaming of BosConfig.new to BosConfig at startup])
1117 fi
1118
1119 if test "$enable_largefile_fileserver" = "yes"; then
1120         AC_DEFINE(AFS_LARGEFILE_ENV, 1, [define if you want large file fileserver])
1121 fi
1122
1123 if test "$enable_namei_fileserver" = "yes"; then
1124         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1125 fi
1126
1127 if test "$enable_afsdb" = "yes"; then
1128         LIB_AFSDB="$LIB_res_search"
1129         AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
1130 fi
1131
1132 dnl check for tivoli
1133 AC_MSG_CHECKING(for tivoli tsm butc support)
1134 XBSA_CFLAGS=""
1135 if test "$enable_tivoli_tsm" = "yes"; then
1136         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1137         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1138
1139         if test -r "$XBSADIR1/xbsa.h"; then
1140                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1141                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1142         elif test -r "$XBSADIR2/xbsa.h"; then
1143                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1144                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1145         else
1146                 AC_MSG_RESULT([no, missing xbsa.h header file])
1147         fi
1148 else
1149         AC_MSG_RESULT([no])
1150 fi
1151 AC_SUBST(XBSA_CFLAGS)
1152
1153 dnl checks for header files.
1154 AC_HEADER_STDC
1155 AC_HEADER_SYS_WAIT
1156 AC_HEADER_DIRENT
1157 AC_CHECK_HEADERS(stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h)
1158 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
1159 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h)
1160 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
1161 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h)
1162 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h)
1163
1164 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1165 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1166         case $AFS_SYSNAME in
1167         sgi_*)
1168                 HAVE_PAM="no"
1169                 ;;
1170         *)
1171                 HAVE_PAM="yes"
1172                 ;;
1173         esac
1174 else
1175         HAVE_PAM="no"
1176 fi
1177 AC_SUBST(HAVE_PAM)
1178
1179 if test "$enable_login" = yes; then
1180         BUILD_LOGIN="yes"
1181 else
1182         BUILD_LOGIN="no"
1183 fi
1184 AC_SUBST(BUILD_LOGIN)
1185
1186 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf strlcat strlcpy re_comp re_exec flock)
1187 AC_CHECK_FUNCS(setprogname getprogname sigaction mkstemp vsnprintf strerror strcasestr)
1188 AC_CHECK_FUNCS(setvbuf)
1189 AC_FUNC_SETVBUF_REVERSED
1190 AC_CHECK_FUNCS(regcomp regexec regerror)
1191 AC_MSG_CHECKING([for POSIX regex library])
1192 if test "$ac_cv_header_regex_h" = "yes" && \
1193         test "$ac_cv_func_regcomp" = "yes" && \
1194         test "$ac_cv_func_regexec" = "yes" && \
1195         test "$ac_cv_func_regerror" = "yes"; then
1196     AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1197     AC_MSG_RESULT(yes)
1198 else
1199     AC_MSG_RESULT(no)
1200 fi
1201
1202 AC_TYPE_SIGNAL
1203 AC_CHECK_TYPE(ssize_t, int)
1204 AC_CHECK_TYPE([sig_atomic_t], ,
1205     [AC_DEFINE([sig_atomic_t], [int],
1206         [Define to int if <signal.h> does not define.])],
1207 [#include <sys/types.h>
1208 #include <signal.h>])
1209 AC_SIZEOF_TYPE(long)
1210
1211 AC_MSG_CHECKING(size of time_t)
1212 AC_CACHE_VAL(ac_cv_sizeof_time_t,
1213 [AC_TRY_RUN([#include <stdio.h>
1214 #include <time.h>
1215 main()
1216 {
1217   FILE *f=fopen("conftestval", "w");
1218   if (!f) exit(1);
1219   fprintf(f, "%d\n", sizeof(time_t));
1220   exit(0);
1221 }], ac_cv_sizeof_time_t=`cat conftestval`, ac_cv_sizeof_time_t=0)
1222 ])
1223 AC_MSG_RESULT($ac_cv_sizeof_time_t)
1224 AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t)
1225
1226 AC_CHECK_FUNCS(timegm)
1227 AC_CHECK_FUNCS(daemon)
1228
1229 dnl Directory PATH handling
1230 if test "x$enable_transarc_paths" = "xyes"  ; then 
1231     afsconfdir=${afsconfdir=/usr/afs/etc}
1232     viceetcdir=${viceetcdir=/usr/vice/etc}
1233     afskerneldir=${afskerneldir=${viceetcdir}}
1234     afssrvbindir=${afssrvbindir=/usr/afs/bin}
1235     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1236     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1237     afsdbdir=${afsdbdir=/usr/afs/db}
1238     afslogsdir=${afslogsdir=/usr/afs/logs}
1239     afslocaldir=${afslocaldir=/usr/afs/local}
1240     afsbackupdir=${afsbackupdir=/usr/afs/backup}
1241     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1242 else 
1243     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1244     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1245     afskerneldir=${afskerneldir='${libdir}/openafs'}
1246     afssrvbindir=${afssrvbindir='${bindir}'}
1247     afssrvsbindir=${afssrvsbindir='${sbindir}'}
1248     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1249     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1250     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1251     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1252     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1253     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1254 fi
1255 AC_SUBST(afsconfdir)
1256 AC_SUBST(viceetcdir)
1257 AC_SUBST(afskerneldir)
1258 AC_SUBST(afssrvbindir)
1259 AC_SUBST(afssrvsbindir)
1260 AC_SUBST(afssrvlibexecdir)
1261 AC_SUBST(afsdbdir)
1262 AC_SUBST(afslogsdir)
1263 AC_SUBST(afslocaldir)
1264 AC_SUBST(afsbackupdir)
1265 AC_SUBST(afsbosconfigdir)
1266
1267 if test "x$enable_kernel_module" = "xyes"; then
1268 ENABLE_KERNEL_MODULE=libafs
1269 fi
1270
1271 AC_SUBST(AFS_SYSNAME)
1272 AC_SUBST(AFS_PARAM_COMMON)
1273 AC_SUBST(ENABLE_KERNEL_MODULE)
1274 AC_SUBST(LIB_AFSDB)
1275 AC_SUBST(LINUX_KERNEL_PATH)
1276 AC_SUBST(HOST_CPU)
1277 AC_SUBST(BSD_KERNEL_PATH)
1278 AC_SUBST(BSD_KERNEL_BUILD)
1279 AC_SUBST(LINUX_VERSION)
1280 AC_SUBST(MKAFS_OSTYPE)
1281 AC_SUBST(TOP_OBJDIR)
1282 AC_SUBST(TOP_SRCDIR)
1283 AC_SUBST(TOP_INCDIR)
1284 AC_SUBST(TOP_LIBDIR)
1285 AC_SUBST(DEST)
1286 AC_SUBST(DARWIN_INFOFILE)
1287 AC_SUBST(IRIX_BUILD_IP35)
1288
1289 OPENAFS_OSCONF
1290 OPENAFS_KRB5CONF
1291
1292 TOP_SRCDIR="${srcdir}/src"
1293 dnl
1294 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1295 dnl
1296 case $TOP_SRCDIR in
1297         /*)
1298                 ;;
1299         *)
1300                 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1301                 ;;
1302 esac
1303
1304 TOP_OBJDIR="${SRCDIR_PARENT}"
1305 TOP_INCDIR="${SRCDIR_PARENT}/include"
1306 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1307 if test "${DEST}x" = "x"; then
1308         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1309 fi
1310
1311 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1312 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1313 AC_SUBST(HELPER_SPLINT)
1314 AC_SUBST(HELPER_SPLINTCFG)
1315
1316 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
1317
1318 ])