openafs/configure.in
Derrick Brashear 33ae575a6a linux24-handle-inode-address-space-page-lock-spinlock-20010712
One line patch to initialize spin lock added in a RedHat kernel patch.
This should fix the RedHat 7.1 SMP problem. Also includes configure
glue to turn it on. Thanks to Chaskiel Grundman for suggesting the fix,
Garry Zacheiss for suggesting it affected the SMP kernel generally and not
just SMP hardware, and Andrei Maslennikov for noting the problem did not
affect vanilla 2.4.3 with only the Alan Cox (AC14 in this case) patch.
2001-07-12 16:37:31 +00:00

360 lines
9.8 KiB
Plaintext

AC_INIT(src/config/stds.h)
AM_INIT_AUTOMAKE(openafs,devel)
AC_CANONICAL_HOST
AC_CONFIG_HEADER(src/config/afsconfig.h)
#BOZO_SAVE_CORES BOS_RESTRICTED_MODE BOS_NEW_CONFIG pam sia
AC_ARG_WITH(afs-sysname,
[ --with-afs-sysname=sys use sys for the afs sysname]
)
AC_ARG_ENABLE( obsolete,
[ --enable-obsolete enable obsolete portions of AFS (mpp, ntp and package)],, enable_obsolete="no")
AC_ARG_ENABLE( insecure,
[ --enable-insecure enable insecure portions of AFS (ftpd, inetd, rcp, rlogind and rsh)],, enable_insecure="no")
AC_ARG_ENABLE( afsdb,
[ --disable-afsdb disable AFSDB RR support],, enable_afsdb="yes")
AC_ARG_ENABLE( bos-restricted-mode,
[ --enable-bos-restricted-mode enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no")
AC_ARG_ENABLE( namei-fileserver,
[ --enable-namei-fileserver force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
AC_ARG_ENABLE( fast-restart,
[ --enable-fast-restart enable fast startup of file server without salvaging],, enable_fast_restart="no")
AC_ARG_ENABLE( bitmap-later,
[ --enable-bitmap-later enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
AC_ARG_WITH(dux-kernel-headers,
[ --with-dux-kernel-headers=path use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
)
AC_ARG_WITH(linux-kernel-headers,
[ --with-linux-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/linux)]
)
AC_ARG_ENABLE(kernel-module,
[ --disable-kernel-module disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
)
AC_PROG_CC
dnl weird ass systems
AC_AIX
AC_ISC_POSIX
AC_MINIX
dnl Various compiler setup.
AC_C_INLINE
AC_C_CONST
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SIGNAL
dnl Checks for programs.
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_RANLIB
AC_PROG_YACC
AM_PROG_LEX
OPENAFS_CHECK_BIGENDIAN
AC_MSG_CHECKING(your OS)
system=$host
case $system in
*-linux*)
MKAFS_OSTYPE=LINUX
if test "x$enable_kernel_module" = "xyes"; then
if test "x$with_linux_kernel_headers" != "x"; then
LINUX_KERNEL_PATH="$with_linux_kernel_headers"
else
LINUX_KERNEL_PATH="/usr/src/linux"
fi
if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $2 }'|tail -1`
if test "x$linux_kvers" = "x"; then
AC_MSG_ERROR(Linux headers lack version definition)
exit 1
else
LINUX_VERSION="$linux_kvers"
fi
else
enable_kernel_module="no"
fi
if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
enable_kernel_module="no"
fi
if test "x$enable_kernel_module" = "xno"; then
if test "x$with_linux_kernel_headers" != "x"; then
AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
exit 1
else
AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
fi
fi
fi
AC_MSG_RESULT(linux)
if test "x$enable_kernel_module" = "xyes"; then
LINUX_FS_STRUCT_INODE_HAS_I_BYTES
LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
LINUX_INODE_SETATTR_RETURN_TYPE
LINUX_NEED_RHCONFIG
LINUX_WHICH_MODULES
if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
AC_DEFINE(INODE_SETATTR_NOT_VOID)
fi
if test "x$ac_cv_linux_fs_struct_inode_has_i_bytes" = "xyes"; then
AC_DEFINE(STRUCT_INODE_HAS_I_BYTES)
fi
if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then
AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK)
fi
:
fi
;;
*-solaris*)
MKAFS_OSTYPE=SOLARIS
AC_MSG_RESULT(sun4)
;;
*-hpux*)
MKAFS_OSTYPE=HPUX
AC_MSG_RESULT(hp_ux)
;;
*-irix*)
MKAFS_OSTYPE=IRIX
AC_MSG_RESULT(sgi)
;;
*-aix*)
MKAFS_OSTYPE=AIX
AC_MSG_RESULT(rs_aix)
;;
*-osf*)
MKAFS_OSTYPE=DUX
AC_MSG_RESULT(alpha_dux)
if test "x$enable_kernel_module" = "xyes"; then
if test "x$with_dux_kernel_headers" != "x"; then
HEADER_RT=`ls ${with_dux_kernel_headers}/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
else
HEADER_RT=`ls /usr/sys/*/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
fi
fi
if test "$HEADER_RT" = "*" ; then
AC_MSG_ERROR([Need a configured kernel directory])
fi
AC_SUBST([HEADER_RT])
;;
*-darwin*)
MKAFS_OSTYPE=DARWIN
AC_MSG_RESULT(ppc_darwin)
;;
*-freebsd*)
MKAFS_OSTYPE=FBSD
AC_MSG_RESULT(i386_fbsd)
;;
*)
AC_MSG_RESULT($system)
;;
esac
if test "x$with_afs_sysname" != "x"; then
AFS_SYSNAME="$with_afs_sysname"
else
AC_MSG_CHECKING(your AFS sysname)
case $host in
i?86-*-freebsd4.2*)
AFS_SYSNAME="i386_fbsd_42"
;;
hppa-hp-hpux11*)
AFS_SYSNAME="hp_ux110"
;;
hppa-hp-hpux10*)
AFS_SYSNAME="hp_ux102"
;;
ppc-apple-darwin*)
AFS_SYSNAME="ppc_darwin13"
;;
sparc-sun-solaris2.5*)
AFS_SYSNAME="sun4x_55"
;;
sparc-sun-solaris2.6)
AFS_SYSNAME="sun4x_56"
;;
sparc-sun-solaris2.7)
AFS_SYSNAME="sun4x_57"
;;
sparc-sun-solaris2.8)
AFS_SYSNAME="sun4x_58"
;;
alpha*-dec-osf4.0*)
AFS_SYSNAME="alpha_dux40"
;;
alpha*-dec-osf5.0*)
AFS_SYSNAME="alpha_dux50"
;;
mips-sgi-irix6.5)
AFS_SYSNAME="sgi_65"
;;
powerpc-*-linux*)
AFS_SYSNAME="ppc_linuxXX"
;;
alpha*-linux*)
AFS_SYSNAME="alpha_linux_XX"
;;
sparc-*-linux*)
AFS_SYSNAME="sparc_linuxXX"
;;
sparc64-*-linux*)
AFS_SYSNAME="sparc64_linuxXX"
;;
i?86-*-linux*)
AFS_SYSNAME="i386_linuxXX"
;;
power*-ibm-aix4.2*)
AFS_SYSNAME="rs_aix42"
;;
power*-ibm-aix4.3*)
AFS_SYSNAME="rs_aix42"
;;
default)
AC_MSG_ERROR(An AFS sysname is required)
exit 1
;;
esac
case $AFS_SYSNAME in
*_linux*)
AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $1 $2}'`
_AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
AFS_SYSNAME="$_AFS_SYSNAME"
;;
esac
AC_MSG_RESULT($AFS_SYSNAME)
fi
if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
echo Skipping library tests because they confuse Irix.
else
AC_CHECK_FUNCS(socket)
if test "$ac_cv_func_socket" = no; then
for lib in socket inet; do
if test "$HAVE_SOCKET" != 1; then
AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
fi
done
fi
AC_CHECK_FUNCS(connect)
if test "$ac_cv_func_connect" = no; then
for lib in nsl; do
if test "$HAVE_CONNECT" != 1; then
AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
fi
done
fi
AC_CHECK_FUNCS(gethostbyname)
if test "$ac_cv_func_gethostbyname" = no; then
for lib in dns nsl resolv; do
if test "$HAVE_GETHOSTBYNAME" != 1; then
AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
fi
done
fi
AC_CHECK_FUNCS(res_search)
if test "$ac_cv_func_res_search" = no; then
for lib in dns nsl resolv; do
if test "$HAVE_RES_SEARCH" != 1; then
AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
fi
done
if test "$HAVE_RES_SEARCH" = 1; then
LIB_res_search="-l$lib"
fi
fi
fi
PTHREAD_LIBS=error
AC_CHECK_LIB(pthread, pthread_attr_init,
PTHREAD_LIBS="-lpthread")
if test "x$PTHREAD_LIBS" = xerror; then
AC_CHECK_LIB(pthreads, pthread_attr_init,
PTHREAD_LIBS="-lpthreads")
fi
if test "x$PTHREAD_LIBS" = xerror; then
AC_CHECK_LIB(c_r, pthread_attr_init,
PTHREAD_LIBS="-lc_r")
fi
if test "x$PTHREAD_LIBS" = xerror; then
AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
fi
if test "x$PTHREAD_LIBS" = xerror; then
AC_MSG_WARN(*** Unable to locate working posix thread library ***)
fi
AC_SUBST(PTHREAD_LIBS)
WITH_OBSOLETE=NO
if test "$enable_obsolete" = "yes"; then
WITH_OBSOLETE=YES
fi
WITH_INSECURE=NO
if test "$enable_insecure" = "yes"; then
WITH_INSECURE=YES
fi
# Fast restart
if test "$enable_fast_restart" = "yes"; then
AC_DEFINE(FAST_RESTART)
fi
if test "$enable_bitmap_later" = "yes"; then
AC_DEFINE(BITMAP_LATER)
fi
if test "$enable_bos_restricted_mode" = "yes"; then
AC_DEFINE(BOS_RESTRICTED_MODE)
fi
if test "$enable_namei_fileserver" = "yes"; then
AC_DEFINE(AFS_NAMEI_ENV)
fi
if test "$enable_afsdb" = "yes"; then
LIB_AFSDB="$LIB_res_search"
AC_DEFINE(AFS_AFSDB_ENV)
fi
SRCDIR_PARENT=`pwd`
TOP_SRCDIR="${SRCDIR_PARENT}/src"
dnl checks for header files.
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_DIRENT
AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h)
AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
if test "x$enable_kernel_module" = "xyes"; then
ENABLE_KERNEL_MODULE=libafs
fi
AC_SUBST(AFS_SYSNAME)
AC_SUBST(ENABLE_KERNEL_MODULE)
AC_SUBST(LIB_AFSDB)
AC_SUBST(LINUX_KERNEL_PATH)
AC_SUBST(LINUX_VERSION)
AC_SUBST(MKAFS_OSTYPE)
AC_SUBST(TOP_SRCDIR)
AC_SUBST(WITH_OBSOLETE)
AC_SUBST(WITH_INSECURE)
AC_OUTPUT( \
Makefile \
src/config/Makefile.${AFS_SYSNAME} \
src/libafs/MakefileProto.${MKAFS_OSTYPE} \
)