freebsd-20040310
[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 AC_ARG_WITH(afs-sysname,
14 [  --with-afs-sysname=sys    use sys for the afs sysname]
15 )
16 AC_ARG_ENABLE( obsolete,
17 [  --enable-obsolete                    enable obsolete portions of AFS (mpp, ntp and package)],, enable_obsolete="no")
18 AC_ARG_ENABLE( insecure,
19 [  --enable-insecure                    enable insecure portions of AFS (ftpd, inetd, rcp, rlogind and rsh)],, enable_insecure="no")
20 AC_ARG_ENABLE( afsdb,
21 [  --disable-afsdb                      disable AFSDB RR support],, enable_afsdb="yes")
22 AC_ARG_ENABLE( bos-restricted-mode,
23 [  --enable-bos-restricted-mode         enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no")
24 AC_ARG_ENABLE( bos-new-config,
25 [  --enable-bos-new-config              enable bosserver pickup of BosConfig.new on restarts],, enable_bos_new_config="no")
26 AC_ARG_ENABLE( largefile-fileserver,
27 [  --enable-largefile-fileserver        enable large file support in fileserver],, enable_largefile_fileserver="no")
28 AC_ARG_ENABLE( namei-fileserver,
29 [  --enable-namei-fileserver            force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
30 AC_ARG_ENABLE( supergroups,
31 [  --enable-supergroups                 enable support for nested pts groups],, enable_supergroups="no")
32 AC_ARG_ENABLE( fast-restart,
33 [  --enable-fast-restart                enable fast startup of file server without salvaging],, enable_fast_restart="no")
34 AC_ARG_ENABLE( bitmap-later,
35 [  --enable-bitmap-later                enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
36 AC_ARG_ENABLE( full-vos-listvol-switch,
37 [  --disable-full-vos-listvol-switch    disable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="yes")
38 AC_ARG_WITH(dux-kernel-headers,
39 [  --with-dux-kernel-headers=path       use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
40 )
41 AC_ARG_WITH(linux-kernel-headers,
42 [  --with-linux-kernel-headers=path     use the kernel headers found at path(optional, defaults to /usr/src/linux)]
43 )
44 AC_ARG_WITH(bsd-kernel-headers,
45 [  --with-bsd-kernel-headers=path       use the kernel headers found at path(optional, defaults to /usr/src/sys)]
46 )
47 AC_ARG_WITH(bsd-kernel-build,
48 [  --with-bsd-kernel-build=path         use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC)]
49 )
50 AC_ARG_ENABLE(kernel-module,
51 [  --disable-kernel-module              disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
52 )
53 AC_ARG_ENABLE(redhat-buildsys,
54 [  --enable-redhat-buildsys             enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no"
55 )
56 AC_ARG_ENABLE(transarc-paths,
57 [  --enable-transarc-paths                      Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no"
58 )
59 AC_ARG_ENABLE(tivoli-tsm,
60 [  --enable-tivoli-tsm                  Enable use of the Tivoli TSM API libraries for butc support],, enable_tivoli_tsm="no"
61 )
62 AC_ARG_ENABLE(debug-kernel,
63 [  --enable-debug-kernel                enable compilation of the kernel module with debugging information (defaults to disabled)],, enable_debug_kernel="no"
64 )
65 AC_ARG_ENABLE(optimize-kernel,
66 [  --disable-optimize-kernel            disable compilation of the kernel module with optimization (defaults based on platform)],, enable_optimize_kernel="yes"
67 )
68 AC_ARG_ENABLE(debug,
69 [  --enable-debug                       enable compilation of the user space code with debugging information (defaults to disabled)],, enable_debug="no"
70 )
71 AC_ARG_ENABLE(optimize,
72 [  --disable-optimize                   disable optimization for compilation of the user space code (defaults to enabled)],, enable_optimize="yes"
73 )
74 AC_ARG_ENABLE(debug-lwp,
75 [  --enable-debug-lwp                   enable compilation of the LWP code with debugging information (defaults to disabled)],, enable_debug_lwp="no"
76 )
77 AC_ARG_ENABLE(optimize-lwp,
78 [  --disable-optimize-lwp               disable optimization for compilation of the LWP code (defaults to enabled)],, enable_optimize_lwp="yes"
79 )
80
81 dnl weird ass systems
82 AC_AIX
83 AC_ISC_POSIX
84 AC_MINIX
85
86 dnl Various compiler setup.
87 AC_TYPE_PID_T
88 AC_TYPE_SIZE_T
89 AC_TYPE_SIGNAL
90
91 dnl Checks for programs.
92 AC_PROG_INSTALL
93 AC_PROG_LN_S
94 AC_PROG_RANLIB
95 AC_PROG_YACC
96 AM_PROG_LEX
97
98 OPENAFS_CHECK_BIGENDIAN
99
100 AC_MSG_CHECKING(your OS)
101 system=$host
102 case $system in
103         *-linux*)
104                 MKAFS_OSTYPE=LINUX
105                 if test "x$enable_redhat_buildsys" = "xyes"; then
106                  AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
107                 fi
108                 if test "x$enable_kernel_module" = "xyes"; then
109                  if test "x$with_linux_kernel_headers" != "x"; then
110                    LINUX_KERNEL_PATH="$with_linux_kernel_headers"
111                  else
112                    LINUX_KERNEL_PATH="/usr/src/linux-2.4"
113                    if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
114                      LINUX_KERNEL_PATH="/usr/src/linux"
115                    fi
116                  fi
117                  if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
118                   linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
119                   if test "x$linux_kvers" = "x"; then
120                     if test -f "$LINUX_KERNEL_PATH/include/linux/version-up.h"; then
121                       linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
122                       if test "x$linux_kvers" = "x"; then
123
124                         AC_MSG_ERROR(Linux headers lack version definition [2])
125                         exit 1
126                       else
127                         LINUX_VERSION="$linux_kvers"
128                       fi
129                     else
130                       AC_MSG_ERROR(Linux headers lack version definition)
131                       exit 1
132                     fi
133                   else
134                     LINUX_VERSION="$linux_kvers"
135                   fi
136                  else
137                     enable_kernel_module="no"
138                  fi
139                  if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
140                      enable_kernel_module="no"
141                  fi
142                  if test "x$enable_kernel_module" = "xno"; then
143                   if test "x$with_linux_kernel_headers" != "x"; then
144                    AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
145                    exit 1
146                   else
147                    AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
148                   fi
149                  fi
150                 fi
151                 AC_MSG_RESULT(linux)
152                 if test "x$enable_kernel_module" = "xyes"; then
153                  if test "x$enable_debug_kernel" = "xno"; then
154                         LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
155                  fi
156                  OPENAFS_GCC_SUPPORTS_MARCH
157                  AC_SUBST(P5PLUS_KOPTS)
158                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
159                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
160                  OPENAFS_GCC_SUPPORTS_NO_COMMON
161                  OPENAFS_GCC_SUPPORTS_PIPE
162                  AC_SUBST(LINUX_GCC_KOPTS)
163                  ifdef([OPENAFS_CONFIGURE_LIBAFS],
164                    [LINUX_BUILD_VNODE_FROM_INODE(src/config,afs)],
165                    [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
166                  )
167                  LINUX_COMPLETION_H_EXISTS
168                  LINUX_DEFINES_FOR_EACH_PROCESS
169                  LINUX_DEFINES_PREV_TASK
170                  LINUX_EXPORTS_TASKLIST_LOCK
171                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
172                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
173                  LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
174                  LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
175                  LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
176                  LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
177                  LINUX_INODE_SETATTR_RETURN_TYPE
178                  LINUX_KERNEL_LINUX_SYSCALL_H
179                  LINUX_NEED_RHCONFIG
180                  LINUX_RECALC_SIGPENDING_ARG_TYPE
181                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT
182                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT
183                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG
184                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND
185                  LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK
186                  LINUX_WHICH_MODULES
187                  if test "x$ac_cv_linux_config_modversions" = "xno"; then
188                    AC_MSG_WARN([Cannot determine sys_call_table status. assuming it's exported])
189                    ac_cv_linux_exports_sys_call_table=yes
190                    if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
191                      ac_cv_linux_exports_ia32_sys_call_table=yes
192                    fi
193                  else
194                    LINUX_EXPORTS_INIT_MM
195                    LINUX_EXPORTS_KALLSYMS_ADDRESS
196                    LINUX_EXPORTS_KALLSYMS_SYMBOL
197                    LINUX_EXPORTS_SYS_CALL_TABLE
198                    LINUX_EXPORTS_IA32_SYS_CALL_TABLE
199                    LINUX_EXPORTS_SYS_CHDIR
200                    LINUX_EXPORTS_SYS_CLOSE
201                    LINUX_EXPORTS_SYS_WAIT4
202                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
203                          linux_syscall_method=none
204                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
205                             linux_syscall_method=scan
206                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
207                                linux_syscall_method=scan_with_kallsyms_address
208                             fi
209                          fi
210                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
211                             linux_syscall_method=kallsyms_symbol
212                          fi
213                          if test "x$linux_syscall_method" = "xnone"; then
214                         AC_MSG_ERROR([no available sys_call_table access method])
215                          fi
216                    fi
217                  fi
218                  if test "x$ac_cv_linux_exports_sys_chdir" = "xyes" ; then
219                   AC_DEFINE(EXPORTED_SYS_CHDIR, 1, [define if your linux kernel exports sys_chdir])
220                  fi
221                  if test "x$ac_cv_linux_exports_sys_close" = "xyes" ; then
222                   AC_DEFINE(EXPORTED_SYS_CLOSE, 1, [define if your linux kernel exports sys_close])
223                  fi
224                  if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
225                   AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
226                  fi
227                  if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
228                   AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if your linux kernel exports tasklist_lock])
229                  fi
230                  if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
231                   AC_DEFINE(EXPORTED_SYS_CALL_TABLE)
232                  fi
233                  if test "x$ac_cv_linux_exports_ia32_sys_call_table" = "xyes"; then
234                   AC_DEFINE(EXPORTED_IA32_SYS_CALL_TABLE)
235                  fi
236                  if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
237                   AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL)
238                  fi
239                  if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
240                   AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS)
241                  fi
242                  if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
243                   AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if completion_h exists])
244                  fi
245                  if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then
246                   AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined])
247                  fi
248                  if test "x$ac_cv_linux_defines_prev_task" = "xyes" ; then
249                   AC_DEFINE(DEFINED_PREV_TASK, 1, [define if prev_task defined])
250                  fi
251                  if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
252                   AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
253                  fi
254                  if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then 
255                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
256                  fi
257                  if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then 
258                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
259                  fi
260                  if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then 
261                   AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
262                  fi
263                  if test "x$ac_cv_linux_fs_struct_inode_has_i_alloc_sem" = "xyes"; then 
264                   AC_DEFINE(STRUCT_INODE_HAS_I_ALLOC_SEM, 1, [define if your struct inode has alloc_sem])
265                  fi
266                  if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then 
267                   AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
268                  fi
269                  if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then 
270                   AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if your struct inode has data_buffers])
271                  fi
272                  if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then 
273                   AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void])
274                  fi
275                  if test "x$ac_linux_syscall" = "xyes" ; then
276                   AC_DEFINE(HAVE_KERNEL_LINUX_SYSCALL_H, 1, [define if your linux kernel has linux/syscall.h])
277                  fi
278                  if test "x$ac_cv_linux_sched_struct_task_struct_has_parent" = "xyes"; then 
279                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_PARENT, 1, [define if your struct task_struct has parent])
280                  fi
281                  if test "x$ac_cv_linux_sched_struct_task_struct_has_real_parent" = "xyes"; then 
282                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_REAL_PARENT, 1, [define if your struct task_struct has real_parent])
283                  fi
284                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sigmask_lock" = "xyes"; then 
285                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK, 1, [define if your struct task_struct has sigmask_lock])
286                  fi
287                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sighand" = "xyes"; then 
288                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGHAND, 1, [define if your struct task_struct has sighand])
289                  fi
290                  if test "x$ac_cv_linux_sched_struct_task_struct_has_sig" = "xyes"; then 
291                   AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIG, 1, [define if your struct task_struct has sig])
292                  fi
293                 :
294                 fi
295                 ;;
296         *-solaris*)
297                 MKAFS_OSTYPE=SOLARIS
298                 AC_MSG_RESULT(sun4)
299                 SOLARIS_UFSVFS_HAS_DQRWLOCK
300                 SOLARIS_PROC_HAS_P_COREFILE
301                 SOLARIS_FS_HAS_FS_ROLLED
302                 ;;
303         *-sunos*)
304                 MKAFS_OSTYPE=SUNOS
305                 enable_kernel_module=no
306                 AC_MSG_RESULT(sun4)
307                 ;;
308         *-hpux*)
309                 MKAFS_OSTYPE=HPUX
310                 AC_MSG_RESULT(hp_ux)
311                 ;;
312         *-irix*)
313                 if test -d /usr/include/sys/SN/SN1; then
314                  IRIX_BUILD_IP35="IP35"
315                 fi
316                 MKAFS_OSTYPE=IRIX
317                 AC_MSG_RESULT(sgi)
318                 ;;
319         *-aix*)
320                 MKAFS_OSTYPE=AIX
321                 AC_MSG_RESULT(rs_aix)
322                 ;;
323         *-osf*)
324                 MKAFS_OSTYPE=DUX
325                 AC_MSG_RESULT(alpha_dux)
326                 if test "x$enable_kernel_module" = "xyes"; then
327                  if test "x$with_dux_kernel_headers" != "x"; then
328                    HEADER_RT=`ls ${with_dux_kernel_headers}/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
329                  else
330                    HEADER_RT=`ls /usr/sys/*/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
331                  fi
332                 fi
333                 if test "$HEADER_RT" = "*" ; then
334                         AC_MSG_ERROR([Need a configured kernel directory])
335                 fi
336                 AC_SUBST([HEADER_RT])
337                 ;;
338         *-darwin*)
339                 MKAFS_OSTYPE=DARWIN
340                 AC_MSG_RESULT(ppc_darwin)
341                 ;;
342         *-freebsd*)
343                 MKAFS_OSTYPE=FBSD
344                 AC_MSG_RESULT(i386_fbsd)
345                 ;;
346         *-netbsd*)
347                 MKAFS_OSTYPE=NBSD
348                 AC_MSG_RESULT(nbsd)
349                 ;;
350         *-openbsd*)
351                 MKAFS_OSTYPE=OBSD
352                 AC_MSG_RESULT(i386_obsd)
353                 ;;
354         *)
355                 AC_MSG_RESULT($system)
356                 ;;
357 esac
358
359 if test "x$with_afs_sysname" != "x"; then
360         AFS_SYSNAME="$with_afs_sysname"
361 else
362         AC_MSG_CHECKING(your AFS sysname)
363         case $host in
364                 i386-unknown-openbsd3.1)
365                         AFS_SYSNAME="i386_obsd31"
366                         ;;
367                 i386-unknown-openbsd3.2)
368                         AFS_SYSNAME="i386_obsd32"
369                         ;;
370                 i386-unknown-openbsd3.3)
371                         AFS_SYSNAME="i386_obsd33"
372                         ;;
373                 i386-unknown-openbsd3.4)
374                         AFS_SYSNAME="i386_obsd34"
375                         ;;
376                 i?86-*-freebsd4.2*)
377                         AFS_SYSNAME="i386_fbsd_42"
378                         ;;
379                 i?86-*-freebsd4.3*)
380                         AFS_SYSNAME="i386_fbsd_43"
381                         ;;
382                 i?86-*-freebsd4.4*)
383                         AFS_SYSNAME="i386_fbsd_44"
384                         ;;
385                 i?86-*-freebsd4.5*)
386                         AFS_SYSNAME="i386_fbsd_45"
387                         ;;
388                 i?86-*-freebsd4.6*)
389                         AFS_SYSNAME="i386_fbsd_46"
390                         ;;
391                 i?86-*-freebsd4.7*)
392                         AFS_SYSNAME="i386_fbsd_47"
393                         ;;
394                 i?86-*-freebsd5.0*)
395                         AFS_SYSNAME="i386_fbsd_50"
396                         ;;
397                 i?86-*-freebsd5.1*)
398                         AFS_SYSNAME="i386_fbsd_51"
399                         ;;
400                 i?86-*-freebsd5.2*)
401                         AFS_SYSNAME="i386_fbsd_52"
402                         ;;
403                 i?86-*-netbsd*1.5*)
404                         AFS_PARAM_COMMON=param.nbsd15.h
405                         AFS_SYSNAME="i386_nbsd15"
406                         ;;
407                 alpha-*-netbsd*1.5*)
408                         AFS_PARAM_COMMON=param.nbsd15.h
409                         AFS_SYSNAME="alpha_nbsd15"
410                         ;;
411                 i?86-*-netbsd*1.6[[M-Z]]*)
412                         AFS_PARAM_COMMON=param.nbsd20.h
413                         AFS_SYSNAME="i386_nbsd20"
414                         ;;
415                 powerpc-*-netbsd*1.6[[M-Z]]*)
416                         AFS_PARAM_COMMON=param.nbsd20.h
417                         AFS_SYSNAME="ppc_nbsd20"
418                         ;;
419                 i?86-*-netbsd*2.0*)
420                         AFS_PARAM_COMMON=param.nbsd20.h
421                         AFS_SYSNAME="i386_nbsd20"
422                         ;;
423                 powerpc-*-netbsd*2.0*)
424                         AFS_PARAM_COMMON=param.nbsd20.h
425                         AFS_SYSNAME="ppc_nbsd20"
426                         ;;
427                 i?86-*-netbsd*1.6*)
428                         AFS_PARAM_COMMON=param.nbsd16.h
429                         AFS_SYSNAME="i386_nbsd16"
430                         ;;
431                 alpha-*-netbsd*1.6*)
432                         AFS_PARAM_COMMON=param.nbsd16.h
433                         AFS_SYSNAME="alpha_nbsd16"
434                         ;;
435                 powerpc-*-netbsd*1.6*)
436                         AFS_PARAM_COMMON=param.nbsd16.h
437                         AFS_SYSNAME="ppc_nbsd16"
438                         ;;
439                 hppa*-hp-hpux11.0*)
440                         AFS_SYSNAME="hp_ux110"
441                         ;;
442                 hppa*-hp-hpux11.11)
443                         AFS_SYSNAME="hp_ux11i"
444                         ;;
445                 ia64-hp-hpux11.22)
446                         AFS_SYSNAME="ia64_hpux1122"
447                         ;;
448                 ia64-hp-hpux*)
449                         AFS_SYSNAME="ia64_hpux1123"
450                         ;;
451                 hppa*-hp-hpux10*)
452                         AFS_SYSNAME="hp_ux102"
453                         ;;
454                 powerpc-apple-darwin1.2*)
455                         AFS_SYSNAME="ppc_darwin_12"
456                         ;;
457                 powerpc-apple-darwin1.3*)
458                         AFS_SYSNAME="ppc_darwin_13"
459                         ;;
460                 powerpc-apple-darwin1.4*)
461                         AFS_SYSNAME="ppc_darwin_14"
462                         ;;
463                 powerpc-apple-darwin5.1*)
464                         AFS_SYSNAME="ppc_darwin_14"
465                         ;;
466                 powerpc-apple-darwin5.2*)
467                         AFS_SYSNAME="ppc_darwin_14"
468                         ;;
469                 powerpc-apple-darwin5.3*)
470                         AFS_SYSNAME="ppc_darwin_14"
471                         ;;
472                 powerpc-apple-darwin5.4*)
473                         AFS_SYSNAME="ppc_darwin_14"
474                         ;;
475                 powerpc-apple-darwin5.5*)
476                         AFS_SYSNAME="ppc_darwin_14"
477                         ;;
478                 powerpc-apple-darwin6.0*)
479                         AFS_SYSNAME="ppc_darwin_60"
480                         ;;
481                 powerpc-apple-darwin6.1*)
482                         AFS_SYSNAME="ppc_darwin_60"
483                         ;;
484                 powerpc-apple-darwin6.2*)
485                         AFS_SYSNAME="ppc_darwin_60"
486                         ;;
487                 powerpc-apple-darwin6.3*)
488                         AFS_SYSNAME="ppc_darwin_60"
489                         ;;
490                 powerpc-apple-darwin6.4*)
491                         AFS_SYSNAME="ppc_darwin_60"
492                         ;;
493                 powerpc-apple-darwin6.5*)
494                         AFS_SYSNAME="ppc_darwin_60"
495                         ;;
496                 sparc-sun-solaris2.5*)
497                         AFS_SYSNAME="sun4x_55"
498                         ;;
499                 sparc-sun-solaris2.6)
500                         AFS_SYSNAME="sun4x_56"
501                         ;;
502                 sparc-sun-solaris2.7)
503                         AFS_SYSNAME="sun4x_57"
504                         ;;
505                 sparc-sun-solaris2.8)
506                         AFS_SYSNAME="sun4x_58"
507                         ;;
508                 sparc-sun-solaris2.9)
509                         AFS_SYSNAME="sun4x_59"
510                         ;;
511                 sparc-sun-sunos4*)
512                         AFS_SYSNAME="sun4_413"
513                         ;;
514                 i386-pc-solaris2.7)
515                         AFS_SYSNAME="sunx86_57"
516                         ;;
517                 i386-pc-solaris2.8)
518                         AFS_SYSNAME="sunx86_58"
519                         ;;
520                 i386-pc-solaris2.9)
521                         AFS_SYSNAME="sunx86_59"
522                         ;;
523                 alpha*-dec-osf4.0*)
524                         AFS_SYSNAME="alpha_dux40"
525                         ;;
526                 alpha*-dec-osf5.0*)
527                         AFS_SYSNAME="alpha_dux50"
528                         ;;
529                 alpha*-dec-osf5.1*)
530                         AFS_SYSNAME="alpha_dux51"
531                         ;;
532                 mips-sgi-irix6.5)
533                         AFS_SYSNAME="sgi_65"
534                         ;;
535                 ia64-*-linux*)
536                         AFS_SYSNAME="ia64_linuxXX"
537                         ;;
538                 powerpc-*-linux*)
539                         AFS_SYSNAME="ppc_linuxXX"
540                         ;;
541                 powerpc64-*-linux*)
542                         AFS_SYSNAME="ppc64_linuxXX"
543                         ;;
544                 alpha*-linux*)
545                         AFS_SYSNAME="alpha_linux_XX"
546                         ;;
547                 s390-*-linux*)
548                         AFS_SYSNAME="s390_linuxXX"
549                         ;;
550                 sparc-*-linux*)
551                         AFS_SYSNAME="sparc_linuxXX"
552                         ;;
553                 sparc64-*-linux*)
554                         AFS_SYSNAME="sparc64_linuxXX"
555                         ;;
556                 i?86-*-linux*)
557                         AFS_SYSNAME="i386_linuxXX"
558                         ;;
559                 parisc-*-linux-gnu)
560                         AFS_SYSNAME="parisc_linuxXX"
561                         ;;
562                 power*-ibm-aix4.2*)
563                         AFS_SYSNAME="rs_aix42"
564                         ;;
565                 power*-ibm-aix4.3*)
566                         AFS_SYSNAME="rs_aix42"
567                         ;;
568                 power*-ibm-aix5.1*)
569                         AFS_SYSNAME="rs_aix51"
570                         ;;
571                 power*-ibm-aix5.2*)
572                         AFS_SYSNAME="rs_aix52"
573                         ;;
574                 x86_64-*-linux-gnu)
575                         AFS_SYSNAME="amd64_linuxXX"
576                         ;;
577                 *)
578                         AC_MSG_ERROR(An AFS sysname is required)
579                         exit 1
580                         ;;
581         esac
582         case $AFS_SYSNAME in
583                 *_linux*)
584                         AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
585                         if test "x${AFS_SYSKVERS}" = "x"; then
586                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
587                         fi
588                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
589                         AFS_SYSNAME="$_AFS_SYSNAME"
590                         save_CPPFLAGS="$CPPFLAGS"
591                         CPPFLAGS="-I${LINUX_KERNEL_PATH}/include $CPPFLAGS"
592                         AC_TRY_COMPILE(
593                          [#include <linux/autoconf.h>],
594                          [#ifndef CONFIG_USERMODE
595                           #error not UML
596                           #endif],
597                          ac_cv_linux_is_uml=yes,)
598                         if test "${ac_cv_linux_is_uml}" = yes; then
599                          _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
600                         fi
601                         CPPFLAGS="$save_CPPFLAGS"
602                         AFS_SYSNAME="$_AFS_SYSNAME"
603                         ;;
604         esac
605         AC_MSG_RESULT($AFS_SYSNAME)
606 fi
607
608 # KDUMP64 defaults to KDUMP for systems without a separate kdump64
609 KDUMP64='${KDUMP}'
610 KDUMP=kdump
611 case $AFS_SYSNAME in
612         sgi_6?)
613                 KDUMP=kdump.IP20;;
614         sun4x_5[[789]] | hp_ux11*)
615                 KDUMP=kdump32
616                 KDUMP64=kdump64;;
617         *linux*)
618                 KDUMP='kdump-${LINUX_VERSION}';;
619 esac
620 AC_SUBST(KDUMP)
621 AC_SUBST(KDUMP64)
622
623 case $AFS_SYSNAME in
624         *_darwin*)
625                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
626                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
627                 dnl the test below fails on darwin, even if the CPPFLAGS below
628                 dnl are added. the headers from Kernel.Framework must be used
629                 dnl when KERNEL is defined.
630
631                 dnl really, such a thing isn't guaranteed to work on any 
632                 dnl platform until the kernel cflags from MakefileProto are
633                 dnl known to configure
634                 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
635                 ;;
636         *)
637 AC_MSG_CHECKING(for definition of struct buf)
638 dnl save_CPPFLAGS="$CPPFLAGS"
639 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
640 AC_CACHE_VAL(ac_cv_have_struct_buf, [
641         ac_cv_have_struct_buf=no
642         AC_TRY_COMPILE(
643                 [#include <sys/buf.h>],
644                 [struct buf x;
645                 printf("%d\n", sizeof(x));],
646                 ac_cv_have_struct_buf=yes,)
647         ]
648 )
649 dnl CPPFLAGS="$save_CPPFLAGS"
650 AC_MSG_RESULT($ac_cv_have_struct_buf)
651 if test "$ac_cv_have_struct_buf" = yes; then
652         AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
653 fi
654 ;;
655 esac
656
657
658 AC_CACHE_VAL(ac_cv_sockaddr_len,
659 [
660 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
661 AC_TRY_COMPILE( [#include <sys/types.h>
662 #include <sys/socket.h>],
663 [struct sockaddr *a;
664 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
665 AC_MSG_RESULT($ac_cv_sockaddr_len)])
666 if test "$ac_cv_sockaddr_len" = "yes"; then
667    AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
668 fi
669 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
670         echo Skipping library tests because they confuse Irix.
671 else
672   AC_CHECK_FUNCS(socket)
673
674   if test "$ac_cv_func_socket" = no; then
675     for lib in socket inet; do
676         if test "$HAVE_SOCKET" != 1; then
677                 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
678         fi
679     done
680   fi
681   
682   AC_CHECK_FUNCS(connect)       
683
684   if test "$ac_cv_func_connect" = no; then
685     for lib in nsl; do
686         if test "$HAVE_CONNECT" != 1; then
687                 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
688         fi
689     done
690   fi
691
692   AC_CHECK_FUNCS(gethostbyname)
693   if test "$ac_cv_func_gethostbyname" = no; then
694         for lib in dns nsl resolv; do
695           if test "$HAVE_GETHOSTBYNAME" != 1; then
696             AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
697           fi
698         done    
699   fi    
700
701   dnl darwin wants it, aix hates it
702   AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
703   AC_TRY_COMPILE([
704   #include <stdlib.h>
705   #include <stdio.h>
706   #include <sys/types.h>
707   #include <sys/socket.h>
708   #include <netinet/in.h>
709   #include <arpa/inet.h>
710   #include <arpa/nameser.h>
711   #include <arpa/nameser_compat.h>
712   #include <resolv.h>
713   ], [static int i; i = 0;],
714   [AC_MSG_RESULT(yes)
715    AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H)],
716   [AC_MSG_RESULT(no)
717    ])
718
719   openafs_save_libs="$LIBS"
720   AC_MSG_CHECKING([for res_search])
721   AC_FUNC_RES_SEARCH
722
723   if test "$ac_cv_func_res_search" = no; then
724       for lib in dns nsl resolv; do
725         if test "$ac_cv_func_res_search" != yes; then
726           LIBS="-l$lib $LIBS"
727           AC_FUNC_RES_SEARCH
728           LIBS="$openafs_save_libs"
729         fi
730       done    
731       if test "$ac_cv_func_res_search" = yes; then
732         LIB_res_search="-l$lib"       
733         AC_DEFINE(HAVE_RES_SEARCH, 1, [])
734         AC_MSG_RESULT([yes, in lib$lib])
735       else
736         AC_MSG_RESULT(no)
737       fi
738   else
739     AC_DEFINE(HAVE_RES_SEARCH, 1, [])
740     AC_MSG_RESULT(yes)
741   fi
742   
743 fi
744
745 PTHREAD_LIBS=error
746 AC_CHECK_LIB(pthread, pthread_attr_init,
747              PTHREAD_LIBS="-lpthread")
748 if test "x$PTHREAD_LIBS" = xerror; then
749         AC_CHECK_LIB(pthreads, pthread_attr_init,
750                 PTHREAD_LIBS="-lpthreads")
751 fi
752 if test "x$PTHREAD_LIBS" = xerror; then
753         AC_CHECK_LIB(c_r, pthread_attr_init,
754                 PTHREAD_LIBS="-lc_r")
755 fi
756 if test "x$PTHREAD_LIBS" = xerror; then
757         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
758 fi
759 if test "x$PTHREAD_LIBS" = xerror; then
760         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
761 fi
762 AC_SUBST(PTHREAD_LIBS)
763
764 WITH_OBSOLETE=NO
765 if test "$enable_obsolete" = "yes"; then
766         WITH_OBSOLETE=YES
767 fi
768
769 WITH_INSECURE=NO
770 if test "$enable_insecure" = "yes"; then
771         WITH_INSECURE=YES
772 fi
773
774 if test "x$with_bsd_kernel_headers" != "x"; then
775         BSD_KERNEL_PATH="$with_bsd_kernel_headers"
776 else
777         BSD_KERNEL_PATH="/usr/src/sys"
778 fi
779
780 if test "x$with_bsd_kernel_build" != "x"; then
781         BSD_KERNEL_BUILD="$with_bsd_kernel_build"
782 else
783         case $AFS_SYSNAME in
784                 i386_fbsd_4?)
785                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC"
786                         ;;
787                 i386_fbsd_5?)
788                         BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/i386/compile/GENERIC"
789                         ;;
790         esac
791 fi
792
793 # Fast restart
794 if test "$enable_supergroups" = "yes"; then
795         AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
796 fi
797
798 if test "$enable_fast_restart" = "yes"; then
799         AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
800 fi
801
802 if test "$enable_bitmap_later" = "yes"; then
803         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
804 fi
805
806 if test "$enable_full_vos_listvol_switch" = "yes"; then
807         AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
808 fi
809
810 if test "$enable_bos_restricted_mode" = "yes"; then
811         AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
812 fi
813
814 if test "$enable_bos_new_config" = "yes"; then
815         AC_DEFINE(BOS_NEW_CONFIG, 1, [define if you want to enable automatic renaming of BosConfig.new to BosConfig at startup])
816 fi
817
818 if test "$enable_largefile_fileserver" = "yes"; then
819         AC_DEFINE(AFS_LARGEFILE_ENV, 1, [define if you want large file fileserver])
820 fi
821
822 if test "$enable_namei_fileserver" = "yes"; then
823         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
824 fi
825
826 if test "$enable_afsdb" = "yes"; then
827         LIB_AFSDB="$LIB_res_search"
828         AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
829 fi
830
831 dnl check for tivoli
832 AC_MSG_CHECKING(for tivoli tsm butc support)
833 XBSA_CFLAGS=""
834 if test "$enable_tivoli_tsm" = "yes"; then
835         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
836         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
837
838         if test -e "$XBSADIR1/xbsa.h"; then
839                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
840                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
841         elif test -e "$XBSADIR2/xbsa.h"; then
842                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
843                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
844         else
845                 AC_MSG_RESULT([no, missing xbsa.h header file])
846         fi
847 else
848         AC_MSG_RESULT([no])
849 fi
850 AC_SUBST(XBSA_CFLAGS)
851
852 dnl checks for header files.
853 AC_HEADER_STDC
854 AC_HEADER_SYS_WAIT
855 AC_HEADER_DIRENT
856 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
857 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
858 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h)
859 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
860 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h)
861 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h)
862
863 if test "$ac_cv_header_security_pam_modules_h" = "yes"; then
864         HAVE_PAM="yes"
865 else
866         HAVE_PAM="no"
867 fi
868 AC_SUBST(HAVE_PAM)
869
870 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf strlcat strlcpy re_comp re_exec)
871 AC_CHECK_FUNCS(setprogname getprogname sigaction mkstemp vsnprintf strerror)
872
873 AC_CHECK_FUNCS(regcomp regexec regerror)
874 AC_MSG_CHECKING([for POSIX regex library])
875 if test "$ac_cv_header_regex_h" = "yes" && \
876         test "$ac_cv_func_regcomp" = "yes" && \
877         test "$ac_cv_func_regexec" = "yes" && \
878         test "$ac_cv_func_regerror" = "yes"; then
879     AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
880     AC_MSG_RESULT(yes)
881 else
882     AC_MSG_RESULT(no)
883 fi
884         
885 AC_CHECK_TYPE(ssize_t, int)
886 AC_SIZEOF_TYPE(long)
887
888 AC_CHECK_FUNCS(timegm)
889
890 dnl Directory PATH handling
891 if test "x$enable_transarc_paths" = "xyes"  ; then 
892     afsconfdir=${afsconfdir=/usr/afs/etc}
893     viceetcdir=${viceetcdir=/usr/vice/etc}
894     afskerneldir=${afskerneldir=${viceetcdir}}
895     afssrvbindir=${afssrvbindir=/usr/afs/bin}
896     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
897     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
898     afsdbdir=${afsdbdir=/usr/afs/db}
899     afslogsdir=${afslogsdir=/usr/afs/logs}
900     afslocaldir=${afslocaldir=/usr/afs/local}
901     afsbackupdir=${afsbackupdir=/usr/afs/backup}
902     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
903 else 
904     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
905     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
906     afskerneldir=${afskerneldir='${libdir}/openafs'}
907     afssrvbindir=${afssrvbindir='${bindir}'}
908     afssrvsbindir=${afssrvsbindir='${sbindir}'}
909     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
910     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
911     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
912     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
913     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
914     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
915 fi
916 AC_SUBST(afsconfdir)
917 AC_SUBST(viceetcdir)
918 AC_SUBST(afskerneldir)
919 AC_SUBST(afssrvbindir)
920 AC_SUBST(afssrvsbindir)
921 AC_SUBST(afssrvlibexecdir)
922 AC_SUBST(afsdbdir)
923 AC_SUBST(afslogsdir)
924 AC_SUBST(afslocaldir)
925 AC_SUBST(afsbackupdir)
926 AC_SUBST(afsbosconfigdir)
927
928 if test "x$enable_kernel_module" = "xyes"; then
929 ENABLE_KERNEL_MODULE=libafs
930 fi
931
932 AC_SUBST(AFS_SYSNAME)
933 AC_SUBST(AFS_PARAM_COMMON)
934 AC_SUBST(ENABLE_KERNEL_MODULE)
935 AC_SUBST(LIB_AFSDB)
936 AC_SUBST(LINUX_KERNEL_PATH)
937 AC_SUBST(BSD_KERNEL_PATH)
938 AC_SUBST(BSD_KERNEL_BUILD)
939 AC_SUBST(LINUX_VERSION)
940 AC_SUBST(MKAFS_OSTYPE)
941 AC_SUBST(TOP_OBJDIR)
942 AC_SUBST(TOP_SRCDIR)
943 AC_SUBST(TOP_INCDIR)
944 AC_SUBST(TOP_LIBDIR)
945 AC_SUBST(DEST)
946 AC_SUBST(WITH_OBSOLETE)
947 AC_SUBST(WITH_INSECURE)
948 AC_SUBST(DARWIN_INFOFILE)
949 AC_SUBST(IRIX_BUILD_IP35)
950
951 OPENAFS_OSCONF
952
953 TOP_SRCDIR="${srcdir}/src"
954 dnl
955 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
956 dnl
957 case $TOP_SRCDIR in
958         /*)
959                 ;;
960         *)
961                 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
962                 ;;
963 esac
964
965 TOP_OBJDIR="${SRCDIR_PARENT}"
966 TOP_INCDIR="${SRCDIR_PARENT}/include"
967 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
968 if test "${DEST}x" = "x"; then
969         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
970 fi
971
972 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
973 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
974 AC_SUBST(HELPER_SPLINT)
975 AC_SUBST(HELPER_SPLINTCFG)
976
977
978 ])