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