mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 23:10:58 +00:00
33ae575a6a
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.
360 lines
9.8 KiB
Plaintext
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} \
|
|
)
|