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"
346 AFS_SYSNAME="alpha_dux51"
352 AFS_SYSNAME="ia64_linuxXX"
355 AFS_SYSNAME="ppc_linuxXX"
358 AFS_SYSNAME="alpha_linux_XX"
361 AFS_SYSNAME="s390_linuxXX"
364 AFS_SYSNAME="sparc_linuxXX"
367 AFS_SYSNAME="sparc64_linuxXX"
370 AFS_SYSNAME="i386_linuxXX"
373 AFS_SYSNAME="parisc_linuxXX"
376 AFS_SYSNAME="rs_aix42"
379 AFS_SYSNAME="rs_aix42"
382 AC_MSG_ERROR(An AFS sysname is required)
388 AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
389 if test "x${AFS_SYSKVERS}" = "x"; then
390 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
392 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
393 AFS_SYSNAME="$_AFS_SYSNAME"
396 AC_MSG_RESULT($AFS_SYSNAME)
401 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
402 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
403 dnl the test below fails on darwin, even if the CPPFLAGS below
404 dnl are added. the headers from Kernel.Framework must be used
405 dnl when KERNEL is defined.
407 dnl really, such a thing isn't guaranteed to work on any
408 dnl platform until the kernel cflags from MakefileProto are
409 dnl known to configure
410 AC_DEFINE(HAVE_STRUCT_BUF)
413 AC_MSG_CHECKING(for definition of struct buf)
414 dnl save_CPPFLAGS="$CPPFLAGS"
415 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
416 AC_CACHE_VAL(ac_cv_have_struct_buf, [
417 ac_cv_have_struct_buf=no
419 [#include <sys/buf.h>],
421 printf("%d\n", sizeof(x));],
422 ac_cv_have_struct_buf=yes,)
425 dnl CPPFLAGS="$save_CPPFLAGS"
426 AC_MSG_RESULT($ac_cv_have_struct_buf)
427 if test "$ac_cv_have_struct_buf" = yes; then
428 AC_DEFINE(HAVE_STRUCT_BUF)
434 AC_CACHE_VAL(ac_cv_sockaddr_len,
436 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
437 AC_TRY_COMPILE( [#include <sys/types.h>
438 #include <sys/socket.h>],
440 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
441 AC_MSG_RESULT($ac_cv_sockaddr_len)])
442 if test "$ac_cv_sockaddr_len" = "yes"; then
443 AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN)
445 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
446 echo Skipping library tests because they confuse Irix.
448 AC_CHECK_FUNCS(socket)
450 if test "$ac_cv_func_socket" = no; then
451 for lib in socket inet; do
452 if test "$HAVE_SOCKET" != 1; then
453 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
458 AC_CHECK_FUNCS(connect)
460 if test "$ac_cv_func_connect" = no; then
462 if test "$HAVE_CONNECT" != 1; then
463 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
468 AC_CHECK_FUNCS(gethostbyname)
469 if test "$ac_cv_func_gethostbyname" = no; then
470 for lib in dns nsl resolv; do
471 if test "$HAVE_GETHOSTBYNAME" != 1; then
472 AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
477 AC_CHECK_FUNCS(res_search)
478 if test "$ac_cv_func_res_search" = no; then
479 for lib in dns nsl resolv; do
480 if test "$HAVE_RES_SEARCH" != 1; then
481 AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
484 if test "$HAVE_RES_SEARCH" = 1; then
485 LIB_res_search="-l$lib"
491 AC_CHECK_LIB(pthread, pthread_attr_init,
492 PTHREAD_LIBS="-lpthread")
493 if test "x$PTHREAD_LIBS" = xerror; then
494 AC_CHECK_LIB(pthreads, pthread_attr_init,
495 PTHREAD_LIBS="-lpthreads")
497 if test "x$PTHREAD_LIBS" = xerror; then
498 AC_CHECK_LIB(c_r, pthread_attr_init,
499 PTHREAD_LIBS="-lc_r")
501 if test "x$PTHREAD_LIBS" = xerror; then
502 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
504 if test "x$PTHREAD_LIBS" = xerror; then
505 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
507 AC_SUBST(PTHREAD_LIBS)
510 if test "$enable_obsolete" = "yes"; then
515 if test "$enable_insecure" = "yes"; then
520 if test "$enable_fast_restart" = "yes"; then
521 AC_DEFINE(FAST_RESTART)
524 if test "$enable_bitmap_later" = "yes"; then
525 AC_DEFINE(BITMAP_LATER)
528 if test "$enable_full_vos_listvol_switch" = "yes"; then
529 AC_DEFINE(FULL_LISTVOL_SWITCH)
532 if test "$enable_bos_restricted_mode" = "yes"; then
533 AC_DEFINE(BOS_RESTRICTED_MODE)
536 if test "$enable_namei_fileserver" = "yes"; then
537 AC_DEFINE(AFS_NAMEI_ENV)
540 if test "$enable_afsdb" = "yes"; then
541 LIB_AFSDB="$LIB_res_search"
542 AC_DEFINE(AFS_AFSDB_ENV)
546 AC_MSG_CHECKING(for tivoli tsm butc support)
548 if test "$enable_tivoli_tsm" = "yes"; then
549 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
550 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
552 if test -e "$XBSADIR1/xbsa.h"; then
553 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
554 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
555 elif test -e "$XBSADIR2/xbsa.h"; then
556 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
557 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
559 AC_MSG_RESULT([no, missing xbsa.h header file])
564 AC_SUBST(XBSA_CFLAGS)
566 dnl checks for header files.
570 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
571 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
572 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
573 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
574 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
575 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h)
577 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
578 AC_CHECK_FUNCS(setprogname getprogname sigaction)
579 AC_CHECK_TYPE(ssize_t, int)
581 dnl Directory PATH handling
582 if test "x$enable_transarc_paths" = "xyes" ; then
583 afsconfdir=${afsconfdir=/usr/afs/etc}
584 viceetcdir=${viceetcdir=/usr/vice/etc}
585 afskerneldir=${afskerneldir=${viceetcdir}}
586 afssrvbindir=${afssrvbindir=/usr/afs/bin}
587 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
588 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
589 afsdbdir=${afsdbdir=/usr/afs/db}
590 afslogsdir=${afslogsdir=/usr/afs/logs}
591 afslocaldir=${afslocaldir=/usr/afs/local}
592 afsbackupdir=${afsbackupdir=/usr/afs/backup}
593 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
595 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
596 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
597 afskerneldir=${afskerneldir='${libdir}/openafs'}
598 afssrvbindir=${afssrvbindir='${bindir}'}
599 afssrvsbindir=${afssrvsbindir='${sbindir}'}
600 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
601 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
602 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
603 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
604 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
605 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
609 AC_SUBST(afskerneldir)
610 AC_SUBST(afssrvbindir)
611 AC_SUBST(afssrvsbindir)
612 AC_SUBST(afssrvlibexecdir)
615 AC_SUBST(afslocaldir)
616 AC_SUBST(afsbackupdir)
617 AC_SUBST(afsbosconfigdir)
619 if test "x$enable_kernel_module" = "xyes"; then
620 ENABLE_KERNEL_MODULE=libafs
623 AC_SUBST(AFS_SYSNAME)
624 AC_SUBST(AFS_PARAM_COMMON)
625 AC_SUBST(ENABLE_KERNEL_MODULE)
627 AC_SUBST(LINUX_KERNEL_PATH)
628 AC_SUBST(LINUX_VERSION)
629 AC_SUBST(MKAFS_OSTYPE)
635 AC_SUBST(WITH_OBSOLETE)
636 AC_SUBST(WITH_INSECURE)
637 AC_SUBST(DARWIN_INFOFILE)
638 AC_SUBST(IRIX_BUILD_IP35)