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