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