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