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