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 sparc-sun-solaris2.5*)
310 AFS_SYSNAME="sun4x_55"
312 sparc-sun-solaris2.6)
313 AFS_SYSNAME="sun4x_56"
315 sparc-sun-solaris2.7)
316 AFS_SYSNAME="sun4x_57"
318 sparc-sun-solaris2.8)
319 AFS_SYSNAME="sun4x_58"
321 sparc-sun-solaris2.9)
322 AFS_SYSNAME="sun4x_59"
325 AFS_SYSNAME="sun4_413"
328 AFS_SYSNAME="sunx86_57"
331 AFS_SYSNAME="sunx86_58"
334 AFS_SYSNAME="sunx86_59"
337 AFS_SYSNAME="alpha_dux40"
340 AFS_SYSNAME="alpha_dux50"
346 AFS_SYSNAME="ia64_linuxXX"
349 AFS_SYSNAME="ppc_linuxXX"
352 AFS_SYSNAME="alpha_linux_XX"
355 AFS_SYSNAME="s390_linuxXX"
358 AFS_SYSNAME="sparc_linuxXX"
361 AFS_SYSNAME="sparc64_linuxXX"
364 AFS_SYSNAME="i386_linuxXX"
367 AFS_SYSNAME="parisc_linuxXX"
370 AFS_SYSNAME="rs_aix42"
373 AFS_SYSNAME="rs_aix42"
376 AC_MSG_ERROR(An AFS sysname is required)
382 AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
383 if test "x${AFS_SYSKVERS}" = "x"; then
384 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
386 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
387 AFS_SYSNAME="$_AFS_SYSNAME"
390 AC_MSG_RESULT($AFS_SYSNAME)
395 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
396 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
397 dnl the test below fails on darwin, even if the CPPFLAGS below
398 dnl are added. the headers from Kernel.Framework must be used
399 dnl when KERNEL is defined.
401 dnl really, such a thing isn't guaranteed to work on any
402 dnl platform until the kernel cflags from MakefileProto are
403 dnl known to configure
404 AC_DEFINE(HAVE_STRUCT_BUF)
407 AC_MSG_CHECKING(for definition of struct buf)
408 dnl save_CPPFLAGS="$CPPFLAGS"
409 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
410 AC_CACHE_VAL(ac_cv_have_struct_buf, [
411 ac_cv_have_struct_buf=no
413 [#include <sys/buf.h>],
415 printf("%d\n", sizeof(x));],
416 ac_cv_have_struct_buf=yes,)
419 dnl CPPFLAGS="$save_CPPFLAGS"
420 AC_MSG_RESULT($ac_cv_have_struct_buf)
421 if test "$ac_cv_have_struct_buf" = yes; then
422 AC_DEFINE(HAVE_STRUCT_BUF)
428 AC_CACHE_VAL(ac_cv_sockaddr_len,
430 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
431 AC_TRY_COMPILE( [#include <sys/types.h>
432 #include <sys/socket.h>],
434 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
435 AC_MSG_RESULT($ac_cv_sockaddr_len)])
436 if test "$ac_cv_sockaddr_len" = "yes"; then
437 AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN)
439 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
440 echo Skipping library tests because they confuse Irix.
442 AC_CHECK_FUNCS(socket)
444 if test "$ac_cv_func_socket" = no; then
445 for lib in socket inet; do
446 if test "$HAVE_SOCKET" != 1; then
447 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
452 AC_CHECK_FUNCS(connect)
454 if test "$ac_cv_func_connect" = no; then
456 if test "$HAVE_CONNECT" != 1; then
457 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
462 AC_CHECK_FUNCS(gethostbyname)
463 if test "$ac_cv_func_gethostbyname" = no; then
464 for lib in dns nsl resolv; do
465 if test "$HAVE_GETHOSTBYNAME" != 1; then
466 AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
471 AC_CHECK_FUNCS(res_search)
472 if test "$ac_cv_func_res_search" = no; then
473 for lib in dns nsl resolv; do
474 if test "$HAVE_RES_SEARCH" != 1; then
475 AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
478 if test "$HAVE_RES_SEARCH" = 1; then
479 LIB_res_search="-l$lib"
485 AC_CHECK_LIB(pthread, pthread_attr_init,
486 PTHREAD_LIBS="-lpthread")
487 if test "x$PTHREAD_LIBS" = xerror; then
488 AC_CHECK_LIB(pthreads, pthread_attr_init,
489 PTHREAD_LIBS="-lpthreads")
491 if test "x$PTHREAD_LIBS" = xerror; then
492 AC_CHECK_LIB(c_r, pthread_attr_init,
493 PTHREAD_LIBS="-lc_r")
495 if test "x$PTHREAD_LIBS" = xerror; then
496 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
498 if test "x$PTHREAD_LIBS" = xerror; then
499 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
501 AC_SUBST(PTHREAD_LIBS)
504 if test "$enable_obsolete" = "yes"; then
509 if test "$enable_insecure" = "yes"; then
514 if test "$enable_fast_restart" = "yes"; then
515 AC_DEFINE(FAST_RESTART)
518 if test "$enable_bitmap_later" = "yes"; then
519 AC_DEFINE(BITMAP_LATER)
522 if test "$enable_full_vos_listvol_switch" = "yes"; then
523 AC_DEFINE(FULL_LISTVOL_SWITCH)
526 if test "$enable_bos_restricted_mode" = "yes"; then
527 AC_DEFINE(BOS_RESTRICTED_MODE)
530 if test "$enable_namei_fileserver" = "yes"; then
531 AC_DEFINE(AFS_NAMEI_ENV)
534 if test "$enable_afsdb" = "yes"; then
535 LIB_AFSDB="$LIB_res_search"
536 AC_DEFINE(AFS_AFSDB_ENV)
540 AC_MSG_CHECKING(for tivoli tsm butc support)
542 if test "$enable_tivoli_tsm" = "yes"; then
543 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
544 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
546 if test -e "$XBSADIR1/xbsa.h"; then
547 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
548 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
549 elif test -e "$XBSADIR2/xbsa.h"; then
550 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
551 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
553 AC_MSG_RESULT([no, missing xbsa.h header file])
558 AC_SUBST(XBSA_CFLAGS)
560 dnl checks for header files.
564 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
565 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
566 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
567 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
568 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
569 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h)
571 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
572 AC_CHECK_FUNCS(setprogname getprogname sigaction)
573 AC_CHECK_TYPE(ssize_t, int)
575 dnl Directory PATH handling
576 if test "x$enable_transarc_paths" = "xyes" ; then
577 afsconfdir=${afsconfdir=/usr/afs/etc}
578 viceetcdir=${viceetcdir=/usr/vice/etc}
579 afskerneldir=${afskerneldir=${viceetcdir}}
580 afssrvbindir=${afssrvbindir=/usr/afs/bin}
581 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
582 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
583 afsdbdir=${afsdbdir=/usr/afs/db}
584 afslogsdir=${afslogsdir=/usr/afs/logs}
585 afslocaldir=${afslocaldir=/usr/afs/local}
586 afsbackupdir=${afsbackupdir=/usr/afs/backup}
587 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
589 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
590 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
591 afskerneldir=${afskerneldir='${libdir}/openafs'}
592 afssrvbindir=${afssrvbindir='${bindir}'}
593 afssrvsbindir=${afssrvsbindir='${sbindir}'}
594 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
595 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
596 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
597 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
598 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
599 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
603 AC_SUBST(afskerneldir)
604 AC_SUBST(afssrvbindir)
605 AC_SUBST(afssrvsbindir)
606 AC_SUBST(afssrvlibexecdir)
609 AC_SUBST(afslocaldir)
610 AC_SUBST(afsbackupdir)
611 AC_SUBST(afsbosconfigdir)
613 if test "x$enable_kernel_module" = "xyes"; then
614 ENABLE_KERNEL_MODULE=libafs
617 AC_SUBST(AFS_SYSNAME)
618 AC_SUBST(AFS_PARAM_COMMON)
619 AC_SUBST(ENABLE_KERNEL_MODULE)
621 AC_SUBST(LINUX_KERNEL_PATH)
622 AC_SUBST(LINUX_VERSION)
623 AC_SUBST(MKAFS_OSTYPE)
629 AC_SUBST(WITH_OBSOLETE)
630 AC_SUBST(WITH_INSECURE)
631 AC_SUBST(DARWIN_INFOFILE)
632 AC_SUBST(IRIX_BUILD_IP35)