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