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