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