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