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
145 if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
146 AC_DEFINE(INODE_SETATTR_NOT_VOID)
148 if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then
149 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK)
151 if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then
152 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK)
154 if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then
155 AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM)
157 if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then
158 AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES)
160 if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then
161 AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS)
169 SOLARIS_UFSVFS_HAS_DQRWLOCK
170 SOLARIS_PROC_HAS_P_COREFILE
174 enable_kernel_module=no
182 if test -d /usr/include/sys/SN/SN1; then
183 IRIX_BUILD_IP35="IP35"
190 AC_MSG_RESULT(rs_aix)
194 AC_MSG_RESULT(alpha_dux)
195 if test "x$enable_kernel_module" = "xyes"; then
196 if test "x$with_dux_kernel_headers" != "x"; then
197 HEADER_RT=`ls ${with_dux_kernel_headers}/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
199 HEADER_RT=`ls /usr/sys/*/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
202 if test "$HEADER_RT" = "*" ; then
203 AC_MSG_ERROR([Need a configured kernel directory])
205 AC_SUBST([HEADER_RT])
209 AC_MSG_RESULT(ppc_darwin)
213 AC_MSG_RESULT(i386_fbsd)
221 AC_MSG_RESULT(i386_obsd)
224 AC_MSG_RESULT($system)
227 AC_SUBST(KERN_DEBUG_OPT)
229 if test "x$with_afs_sysname" != "x"; then
230 AFS_SYSNAME="$with_afs_sysname"
232 AC_MSG_CHECKING(your AFS sysname)
235 AFS_SYSNAME="i386_fbsd_42"
238 AFS_SYSNAME="i386_fbsd_43"
241 AFS_SYSNAME="i386_fbsd_44"
244 AFS_SYSNAME="i386_fbsd_45"
247 AFS_SYSNAME="i386_fbsd_46"
250 AFS_PARAM_COMMON=param.nbsd15.h
251 AFS_SYSNAME="i386_nbsd15"
254 AFS_PARAM_COMMON=param.nbsd15.h
255 AFS_SYSNAME="alpha_nbsd15"
258 AFS_PARAM_COMMON=param.nbsd16.h
259 AFS_SYSNAME="i386_nbsd16"
262 AFS_PARAM_COMMON=param.nbsd16.h
263 AFS_SYSNAME="alpha_nbsd16"
266 AFS_SYSNAME="hp_ux110"
269 AFS_SYSNAME="hp_ux102"
271 powerpc-apple-darwin1.2*)
272 AFS_SYSNAME="ppc_darwin_12"
274 powerpc-apple-darwin1.3*)
275 AFS_SYSNAME="ppc_darwin_13"
277 powerpc-apple-darwin1.4*)
278 AFS_SYSNAME="ppc_darwin_14"
280 powerpc-apple-darwin5.1*)
281 AFS_SYSNAME="ppc_darwin_14"
283 powerpc-apple-darwin5.2*)
284 AFS_SYSNAME="ppc_darwin_14"
286 powerpc-apple-darwin5.3*)
287 AFS_SYSNAME="ppc_darwin_14"
289 powerpc-apple-darwin5.4*)
290 AFS_SYSNAME="ppc_darwin_14"
292 powerpc-apple-darwin5.5*)
293 AFS_SYSNAME="ppc_darwin_14"
295 powerpc-apple-darwin6.0*)
296 AFS_SYSNAME="ppc_darwin_60"
298 sparc-sun-solaris2.5*)
299 AFS_SYSNAME="sun4x_55"
301 sparc-sun-solaris2.6)
302 AFS_SYSNAME="sun4x_56"
304 sparc-sun-solaris2.7)
305 AFS_SYSNAME="sun4x_57"
307 sparc-sun-solaris2.8)
308 AFS_SYSNAME="sun4x_58"
310 sparc-sun-solaris2.9)
311 AFS_SYSNAME="sun4x_59"
314 AFS_SYSNAME="sun4_413"
317 AFS_SYSNAME="sunx86_57"
320 AFS_SYSNAME="sunx86_58"
323 AFS_SYSNAME="sunx86_59"
326 AFS_SYSNAME="alpha_dux40"
329 AFS_SYSNAME="alpha_dux50"
335 AFS_SYSNAME="ia64_linuxXX"
338 AFS_SYSNAME="ppc_linuxXX"
341 AFS_SYSNAME="alpha_linux_XX"
344 AFS_SYSNAME="s390_linuxXX"
347 AFS_SYSNAME="sparc_linuxXX"
350 AFS_SYSNAME="sparc64_linuxXX"
353 AFS_SYSNAME="i386_linuxXX"
356 AFS_SYSNAME="parisc_linuxXX"
359 AFS_SYSNAME="rs_aix42"
362 AFS_SYSNAME="rs_aix42"
365 AC_MSG_ERROR(An AFS sysname is required)
371 AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
372 if test "x${AFS_SYSKVERS}" = "x"; then
373 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
375 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
376 AFS_SYSNAME="$_AFS_SYSNAME"
379 AC_MSG_RESULT($AFS_SYSNAME)
384 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
385 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
386 dnl the test below fails on darwin, even if the CPPFLAGS below
387 dnl are added. the headers from Kernel.Framework must be used
388 dnl when KERNEL is defined.
390 dnl really, such a thing isn't guaranteed to work on any
391 dnl platform until the kernel cflags from MakefileProto are
392 dnl known to configure
393 AC_DEFINE(HAVE_STRUCT_BUF)
396 AC_MSG_CHECKING(for definition of struct buf)
397 dnl save_CPPFLAGS="$CPPFLAGS"
398 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
399 AC_CACHE_VAL(ac_cv_have_struct_buf, [
400 ac_cv_have_struct_buf=no
402 [#include <sys/buf.h>],
404 printf("%d\n", sizeof(x));],
405 ac_cv_have_struct_buf=yes,)
408 dnl CPPFLAGS="$save_CPPFLAGS"
409 AC_MSG_RESULT($ac_cv_have_struct_buf)
410 if test "$ac_cv_have_struct_buf" = yes; then
411 AC_DEFINE(HAVE_STRUCT_BUF)
417 AC_CACHE_VAL(ac_cv_sockaddr_len,
419 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
420 AC_TRY_COMPILE( [#include <sys/types.h>
421 #include <sys/socket.h>],
423 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
424 AC_MSG_RESULT($ac_cv_sockaddr_len)])
425 if test "$ac_cv_sockaddr_len" = "yes"; then
426 AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN)
428 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
429 echo Skipping library tests because they confuse Irix.
431 AC_CHECK_FUNCS(socket)
433 if test "$ac_cv_func_socket" = no; then
434 for lib in socket inet; do
435 if test "$HAVE_SOCKET" != 1; then
436 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
441 AC_CHECK_FUNCS(connect)
443 if test "$ac_cv_func_connect" = no; then
445 if test "$HAVE_CONNECT" != 1; then
446 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
451 AC_CHECK_FUNCS(gethostbyname)
452 if test "$ac_cv_func_gethostbyname" = no; then
453 for lib in dns nsl resolv; do
454 if test "$HAVE_GETHOSTBYNAME" != 1; then
455 AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
460 AC_CHECK_FUNCS(res_search)
461 if test "$ac_cv_func_res_search" = no; then
462 for lib in dns nsl resolv; do
463 if test "$HAVE_RES_SEARCH" != 1; then
464 AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
467 if test "$HAVE_RES_SEARCH" = 1; then
468 LIB_res_search="-l$lib"
474 AC_CHECK_LIB(pthread, pthread_attr_init,
475 PTHREAD_LIBS="-lpthread")
476 if test "x$PTHREAD_LIBS" = xerror; then
477 AC_CHECK_LIB(pthreads, pthread_attr_init,
478 PTHREAD_LIBS="-lpthreads")
480 if test "x$PTHREAD_LIBS" = xerror; then
481 AC_CHECK_LIB(c_r, pthread_attr_init,
482 PTHREAD_LIBS="-lc_r")
484 if test "x$PTHREAD_LIBS" = xerror; then
485 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
487 if test "x$PTHREAD_LIBS" = xerror; then
488 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
490 AC_SUBST(PTHREAD_LIBS)
493 if test "$enable_obsolete" = "yes"; then
498 if test "$enable_insecure" = "yes"; then
503 if test "$enable_fast_restart" = "yes"; then
504 AC_DEFINE(FAST_RESTART)
507 if test "$enable_bitmap_later" = "yes"; then
508 AC_DEFINE(BITMAP_LATER)
511 if test "$enable_full_vos_listvol_switch" = "yes"; then
512 AC_DEFINE(FULL_LISTVOL_SWITCH)
515 if test "$enable_bos_restricted_mode" = "yes"; then
516 AC_DEFINE(BOS_RESTRICTED_MODE)
519 if test "$enable_namei_fileserver" = "yes"; then
520 AC_DEFINE(AFS_NAMEI_ENV)
523 if test "$enable_afsdb" = "yes"; then
524 LIB_AFSDB="$LIB_res_search"
525 AC_DEFINE(AFS_AFSDB_ENV)
529 AC_MSG_CHECKING(for tivoli tsm butc support)
531 if test "$enable_tivoli_tsm" = "yes"; then
532 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
533 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
535 if test -e "$XBSADIR1/xbsa.h"; then
536 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
537 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
538 elif test -e "$XBSADIR2/xbsa.h"; then
539 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
540 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
542 AC_MSG_RESULT([no, missing xbsa.h header file])
547 AC_SUBST(XBSA_CFLAGS)
549 dnl checks for header files.
553 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
554 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
555 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
556 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
557 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
558 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h)
560 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
561 AC_CHECK_FUNCS(setprogname getprogname sigaction)
562 AC_CHECK_TYPE(ssize_t, int)
564 dnl Directory PATH handling
565 if test "x$enable_transarc_paths" = "xyes" ; then
566 afsconfdir=${afsconfdir=/usr/afs/etc}
567 viceetcdir=${viceetcdir=/usr/vice/etc}
568 afskerneldir=${afskerneldir=${viceetcdir}}
569 afssrvbindir=${afssrvbindir=/usr/afs/bin}
570 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
571 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
572 afsdbdir=${afsdbdir=/usr/afs/db}
573 afslogsdir=${afslogsdir=/usr/afs/logs}
574 afslocaldir=${afslocaldir=/usr/afs/local}
575 afsbackupdir=${afsbackupdir=/usr/afs/backup}
576 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
578 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
579 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
580 afskerneldir=${afskerneldir='${libdir}/openafs'}
581 afssrvbindir=${afssrvbindir='${bindir}'}
582 afssrvsbindir=${afssrvsbindir='${sbindir}'}
583 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
584 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
585 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
586 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
587 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
588 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
592 AC_SUBST(afskerneldir)
593 AC_SUBST(afssrvbindir)
594 AC_SUBST(afssrvsbindir)
595 AC_SUBST(afssrvlibexecdir)
598 AC_SUBST(afslocaldir)
599 AC_SUBST(afsbackupdir)
600 AC_SUBST(afsbosconfigdir)
602 if test "x$enable_kernel_module" = "xyes"; then
603 ENABLE_KERNEL_MODULE=libafs
606 AC_SUBST(AFS_SYSNAME)
607 AC_SUBST(AFS_PARAM_COMMON)
608 AC_SUBST(ENABLE_KERNEL_MODULE)
610 AC_SUBST(LINUX_KERNEL_PATH)
611 AC_SUBST(LINUX_VERSION)
612 AC_SUBST(MKAFS_OSTYPE)
618 AC_SUBST(WITH_OBSOLETE)
619 AC_SUBST(WITH_INSECURE)
620 AC_SUBST(DARWIN_INFOFILE)
621 AC_SUBST(IRIX_BUILD_IP35)