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