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