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