1 dnl This file contains the common configuration code which would
2 dnl otherwise be duplicated between configure and configure-libafs.
4 dnl NB: Because this code is a macro, references to positional shell
5 dnl parameters must be done like $[]1 instead of $1
7 AC_DEFUN(OPENAFS_CONFIGURE_COMMON,[
12 #BOZO_SAVE_CORES BOS_RESTRICTED_MODE BOS_NEW_CONFIG pam sia
13 AC_ARG_WITH(afs-sysname,
14 [ --with-afs-sysname=sys use sys for the afs sysname]
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")
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( namei-fileserver,
25 [ --enable-namei-fileserver force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
26 AC_ARG_ENABLE( fast-restart,
27 [ --enable-fast-restart enable fast startup of file server without salvaging],, enable_fast_restart="no")
28 AC_ARG_ENABLE( bitmap-later,
29 [ --enable-bitmap-later enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
30 AC_ARG_ENABLE( full-vos-listvol-switch,
31 [ --enable-full-vos-listvol-switch enable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="no")
32 AC_ARG_WITH(dux-kernel-headers,
33 [ --with-dux-kernel-headers=path use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
35 AC_ARG_WITH(linux-kernel-headers,
36 [ --with-linux-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/linux)]
38 AC_ARG_ENABLE(kernel-module,
39 [ --disable-kernel-module disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
41 AC_ARG_ENABLE(redhat-buildsys,
42 [ --enable-redhat-buildsys enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no"
44 AC_ARG_ENABLE(transarc-paths,
45 [ --enable-transarc-paths Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no"
47 AC_ARG_ENABLE(tivoli-tsm,
48 [ --enable-tivoli-tsm Enable use of the Tivoli TSM API libraries for butc support],, enable_tivoli_tsm="no"
50 AC_ARG_ENABLE(debug-kernel,
51 [ --enable-debug-kernel enable compilation of the kernel module with debugging information (defaults to disabled)],, enable_debug_kernel="no"
59 dnl Various compiler setup.
64 dnl Checks for programs.
71 OPENAFS_CHECK_BIGENDIAN
74 if test "x$enable_debug_kernel" = "xyes"; then
78 AC_MSG_CHECKING(your OS)
83 if test "x$enable_redhat_buildsys" = "xyes"; then
84 AC_DEFINE(ENABLE_REDHAT_BUILDSYS)
86 if test "x$enable_kernel_module" = "xyes"; then
87 if test "x$with_linux_kernel_headers" != "x"; then
88 LINUX_KERNEL_PATH="$with_linux_kernel_headers"
90 LINUX_KERNEL_PATH="/usr/src/linux"
92 if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
93 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -1`
94 if test "x$linux_kvers" = "x"; then
95 if test -f "$LINUX_KERNEL_PATH/include/linux/version-up.h"; then
96 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -1`
97 if test "x$linux_kvers" = "x"; then
99 AC_MSG_ERROR(Linux headers lack version definition [2])
102 LINUX_VERSION="$linux_kvers"
105 AC_MSG_ERROR(Linux headers lack version definition)
109 LINUX_VERSION="$linux_kvers"
112 enable_kernel_module="no"
114 if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
115 enable_kernel_module="no"
117 if test "x$enable_kernel_module" = "xno"; then
118 if test "x$with_linux_kernel_headers" != "x"; then
119 AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
122 AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
127 if test "x$enable_kernel_module" = "xyes"; then
129 if test "x$enable_debug_kernel" = "xno"; then
130 OMIT_FRAME_POINTER=-fomit-frame-pointer
132 AC_SUBST(OMIT_FRAME_POINTER)
133 ifdef([OPENAFS_CONFIGURE_LIBAFS],
134 [LINUX_BUILD_VNODE_FROM_INODE(src/config,afs)],
135 [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
137 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
138 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
139 LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
140 LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
141 LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
142 LINUX_INODE_SETATTR_RETURN_TYPE
143 LINUX_COMPLETION_H_EXISTS
144 LINUX_EXPORTS_TASKLIST_LOCK
147 if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
148 AC_DEFINE(EXPORTED_TASKLIST_LOCK)
150 if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
151 AC_DEFINE(COMPLETION_H_EXISTS)
153 if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
154 AC_DEFINE(INODE_SETATTR_NOT_VOID)
156 if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then
157 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK)
159 if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then
160 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK)
162 if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then
163 AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM)
165 if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then
166 AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES)
168 if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then
169 AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS)
177 SOLARIS_UFSVFS_HAS_DQRWLOCK
178 SOLARIS_PROC_HAS_P_COREFILE
182 enable_kernel_module=no
190 if test -d /usr/include/sys/SN/SN1; then
191 IRIX_BUILD_IP35="IP35"
198 AC_MSG_RESULT(rs_aix)
202 AC_MSG_RESULT(alpha_dux)
203 if test "x$enable_kernel_module" = "xyes"; then
204 if test "x$with_dux_kernel_headers" != "x"; then
205 HEADER_RT=`ls ${with_dux_kernel_headers}/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
207 HEADER_RT=`ls /usr/sys/*/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
210 if test "$HEADER_RT" = "*" ; then
211 AC_MSG_ERROR([Need a configured kernel directory])
213 AC_SUBST([HEADER_RT])
217 AC_MSG_RESULT(ppc_darwin)
221 AC_MSG_RESULT(i386_fbsd)
229 AC_MSG_RESULT(i386_obsd)
232 AC_MSG_RESULT($system)
235 AC_SUBST(KERN_DEBUG_OPT)
237 if test "x$with_afs_sysname" != "x"; then
238 AFS_SYSNAME="$with_afs_sysname"
240 AC_MSG_CHECKING(your AFS sysname)
242 i386-unknown-openbsd3.1)
243 AFS_SYSNAME="i386_obsd31"
246 AFS_SYSNAME="i386_fbsd_42"
249 AFS_SYSNAME="i386_fbsd_43"
252 AFS_SYSNAME="i386_fbsd_44"
255 AFS_SYSNAME="i386_fbsd_45"
258 AFS_SYSNAME="i386_fbsd_46"
261 AFS_PARAM_COMMON=param.nbsd15.h
262 AFS_SYSNAME="i386_nbsd15"
265 AFS_PARAM_COMMON=param.nbsd15.h
266 AFS_SYSNAME="alpha_nbsd15"
269 AFS_PARAM_COMMON=param.nbsd16.h
270 AFS_SYSNAME="i386_nbsd16"
273 AFS_PARAM_COMMON=param.nbsd16.h
274 AFS_SYSNAME="alpha_nbsd16"
277 AFS_SYSNAME="hp_ux110"
280 AFS_SYSNAME="hp_ux102"
282 powerpc-apple-darwin1.2*)
283 AFS_SYSNAME="ppc_darwin_12"
285 powerpc-apple-darwin1.3*)
286 AFS_SYSNAME="ppc_darwin_13"
288 powerpc-apple-darwin1.4*)
289 AFS_SYSNAME="ppc_darwin_14"
291 powerpc-apple-darwin5.1*)
292 AFS_SYSNAME="ppc_darwin_14"
294 powerpc-apple-darwin5.2*)
295 AFS_SYSNAME="ppc_darwin_14"
297 powerpc-apple-darwin5.3*)
298 AFS_SYSNAME="ppc_darwin_14"
300 powerpc-apple-darwin5.4*)
301 AFS_SYSNAME="ppc_darwin_14"
303 powerpc-apple-darwin5.5*)
304 AFS_SYSNAME="ppc_darwin_14"
306 powerpc-apple-darwin6.0*)
307 AFS_SYSNAME="ppc_darwin_60"
309 powerpc-apple-darwin6.1*)
310 AFS_SYSNAME="ppc_darwin_60"
312 sparc-sun-solaris2.5*)
313 AFS_SYSNAME="sun4x_55"
315 sparc-sun-solaris2.6)
316 AFS_SYSNAME="sun4x_56"
318 sparc-sun-solaris2.7)
319 AFS_SYSNAME="sun4x_57"
321 sparc-sun-solaris2.8)
322 AFS_SYSNAME="sun4x_58"
324 sparc-sun-solaris2.9)
325 AFS_SYSNAME="sun4x_59"
328 AFS_SYSNAME="sun4_413"
331 AFS_SYSNAME="sunx86_57"
334 AFS_SYSNAME="sunx86_58"
337 AFS_SYSNAME="sunx86_59"
340 AFS_SYSNAME="alpha_dux40"
343 AFS_SYSNAME="alpha_dux50"
349 AFS_SYSNAME="ia64_linuxXX"
352 AFS_SYSNAME="ppc_linuxXX"
355 AFS_SYSNAME="alpha_linux_XX"
358 AFS_SYSNAME="s390_linuxXX"
361 AFS_SYSNAME="sparc_linuxXX"
364 AFS_SYSNAME="sparc64_linuxXX"
367 AFS_SYSNAME="i386_linuxXX"
370 AFS_SYSNAME="parisc_linuxXX"
373 AFS_SYSNAME="rs_aix42"
376 AFS_SYSNAME="rs_aix42"
379 AC_MSG_ERROR(An AFS sysname is required)
385 AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
386 if test "x${AFS_SYSKVERS}" = "x"; then
387 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
389 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
390 AFS_SYSNAME="$_AFS_SYSNAME"
393 AC_MSG_RESULT($AFS_SYSNAME)
398 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
399 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
400 dnl the test below fails on darwin, even if the CPPFLAGS below
401 dnl are added. the headers from Kernel.Framework must be used
402 dnl when KERNEL is defined.
404 dnl really, such a thing isn't guaranteed to work on any
405 dnl platform until the kernel cflags from MakefileProto are
406 dnl known to configure
407 AC_DEFINE(HAVE_STRUCT_BUF)
410 AC_MSG_CHECKING(for definition of struct buf)
411 dnl save_CPPFLAGS="$CPPFLAGS"
412 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
413 AC_CACHE_VAL(ac_cv_have_struct_buf, [
414 ac_cv_have_struct_buf=no
416 [#include <sys/buf.h>],
418 printf("%d\n", sizeof(x));],
419 ac_cv_have_struct_buf=yes,)
422 dnl CPPFLAGS="$save_CPPFLAGS"
423 AC_MSG_RESULT($ac_cv_have_struct_buf)
424 if test "$ac_cv_have_struct_buf" = yes; then
425 AC_DEFINE(HAVE_STRUCT_BUF)
431 AC_CACHE_VAL(ac_cv_sockaddr_len,
433 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
434 AC_TRY_COMPILE( [#include <sys/types.h>
435 #include <sys/socket.h>],
437 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
438 AC_MSG_RESULT($ac_cv_sockaddr_len)])
439 if test "$ac_cv_sockaddr_len" = "yes"; then
440 AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN)
442 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
443 echo Skipping library tests because they confuse Irix.
445 AC_CHECK_FUNCS(socket)
447 if test "$ac_cv_func_socket" = no; then
448 for lib in socket inet; do
449 if test "$HAVE_SOCKET" != 1; then
450 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
455 AC_CHECK_FUNCS(connect)
457 if test "$ac_cv_func_connect" = no; then
459 if test "$HAVE_CONNECT" != 1; then
460 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
465 AC_CHECK_FUNCS(gethostbyname)
466 if test "$ac_cv_func_gethostbyname" = no; then
467 for lib in dns nsl resolv; do
468 if test "$HAVE_GETHOSTBYNAME" != 1; then
469 AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
474 AC_CHECK_FUNCS(res_search)
475 if test "$ac_cv_func_res_search" = no; then
476 for lib in dns nsl resolv; do
477 if test "$HAVE_RES_SEARCH" != 1; then
478 AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
481 if test "$HAVE_RES_SEARCH" = 1; then
482 LIB_res_search="-l$lib"
488 AC_CHECK_LIB(pthread, pthread_attr_init,
489 PTHREAD_LIBS="-lpthread")
490 if test "x$PTHREAD_LIBS" = xerror; then
491 AC_CHECK_LIB(pthreads, pthread_attr_init,
492 PTHREAD_LIBS="-lpthreads")
494 if test "x$PTHREAD_LIBS" = xerror; then
495 AC_CHECK_LIB(c_r, pthread_attr_init,
496 PTHREAD_LIBS="-lc_r")
498 if test "x$PTHREAD_LIBS" = xerror; then
499 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
501 if test "x$PTHREAD_LIBS" = xerror; then
502 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
504 AC_SUBST(PTHREAD_LIBS)
507 if test "$enable_obsolete" = "yes"; then
512 if test "$enable_insecure" = "yes"; then
517 if test "$enable_fast_restart" = "yes"; then
518 AC_DEFINE(FAST_RESTART)
521 if test "$enable_bitmap_later" = "yes"; then
522 AC_DEFINE(BITMAP_LATER)
525 if test "$enable_full_vos_listvol_switch" = "yes"; then
526 AC_DEFINE(FULL_LISTVOL_SWITCH)
529 if test "$enable_bos_restricted_mode" = "yes"; then
530 AC_DEFINE(BOS_RESTRICTED_MODE)
533 if test "$enable_namei_fileserver" = "yes"; then
534 AC_DEFINE(AFS_NAMEI_ENV)
537 if test "$enable_afsdb" = "yes"; then
538 LIB_AFSDB="$LIB_res_search"
539 AC_DEFINE(AFS_AFSDB_ENV)
543 AC_MSG_CHECKING(for tivoli tsm butc support)
545 if test "$enable_tivoli_tsm" = "yes"; then
546 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
547 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
549 if test -e "$XBSADIR1/xbsa.h"; then
550 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
551 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
552 elif test -e "$XBSADIR2/xbsa.h"; then
553 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
554 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
556 AC_MSG_RESULT([no, missing xbsa.h header file])
561 AC_SUBST(XBSA_CFLAGS)
563 dnl checks for header files.
567 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
568 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
569 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
570 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
571 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
572 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h)
574 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
575 AC_CHECK_FUNCS(setprogname getprogname sigaction)
576 AC_CHECK_TYPE(ssize_t, int)
578 dnl Directory PATH handling
579 if test "x$enable_transarc_paths" = "xyes" ; then
580 afsconfdir=${afsconfdir=/usr/afs/etc}
581 viceetcdir=${viceetcdir=/usr/vice/etc}
582 afskerneldir=${afskerneldir=${viceetcdir}}
583 afssrvbindir=${afssrvbindir=/usr/afs/bin}
584 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
585 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
586 afsdbdir=${afsdbdir=/usr/afs/db}
587 afslogsdir=${afslogsdir=/usr/afs/logs}
588 afslocaldir=${afslocaldir=/usr/afs/local}
589 afsbackupdir=${afsbackupdir=/usr/afs/backup}
590 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
592 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
593 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
594 afskerneldir=${afskerneldir='${libdir}/openafs'}
595 afssrvbindir=${afssrvbindir='${bindir}'}
596 afssrvsbindir=${afssrvsbindir='${sbindir}'}
597 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
598 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
599 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
600 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
601 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
602 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
606 AC_SUBST(afskerneldir)
607 AC_SUBST(afssrvbindir)
608 AC_SUBST(afssrvsbindir)
609 AC_SUBST(afssrvlibexecdir)
612 AC_SUBST(afslocaldir)
613 AC_SUBST(afsbackupdir)
614 AC_SUBST(afsbosconfigdir)
616 if test "x$enable_kernel_module" = "xyes"; then
617 ENABLE_KERNEL_MODULE=libafs
620 AC_SUBST(AFS_SYSNAME)
621 AC_SUBST(AFS_PARAM_COMMON)
622 AC_SUBST(ENABLE_KERNEL_MODULE)
624 AC_SUBST(LINUX_KERNEL_PATH)
625 AC_SUBST(LINUX_VERSION)
626 AC_SUBST(MKAFS_OSTYPE)
632 AC_SUBST(WITH_OBSOLETE)
633 AC_SUBST(WITH_INSECURE)
634 AC_SUBST(DARWIN_INFOFILE)
635 AC_SUBST(IRIX_BUILD_IP35)