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