Skip to content
Snippets Groups Projects
Commit 8663ba2d authored by jacob's avatar jacob
Browse files

Split up configure thusly:

 - build/autoconf/configure.ac: main skel
 - build/autoconf/lustre-build.m4: non-arch macros
 - build/autoconf/lustre-build-linux.m4: linux-specific macros
 - build/autoconf/lustre-build-darwin.m4: darwin-specific macros
 - portals/autoconf/lustre-portals.m4: portals checks
 - lustre/autoconf/lustre-core.m4: lustre checks
 - lustre/autoconf/lustre-version.ac: the canonical lustre version
parent 8d6f5ad9
No related branches found
No related tags found
No related merge requests found
sinclude(lustre/autoconf/version.ac)
AC_INIT([Lustre], [LUSTRE_VERSION], [https://bugzilla.lustre.org/], [lustre])
LB_CHECK_VERSION
LC_CONFIG_SRCDIR
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE
# AM_MAINTAINER_MODE
LB_INCLUDE_RULES
LB_PATH_DEFAULTS
LB_PROG_CC
LB_PATH_LIBSYSIO
LB_PATH_CRAY_PORTALS
LB_CONFIG_DOCS
LB_CONFIG_UTILS
LB_CONFIG_TESTS
LB_CONFIG_MODULES
LB_CONFIG_LIBLUSTRE
LB_CONDITIONALS
LB_CONFIG_HEADERS
LB_CONFIG_FILES
AC_OUTPUT([
Makefile
autoMakefile
])
cat <<_ACEOF
CPPFLAGS: $CPPFLAGS
LLCPPFLAGS: $LLCPPFLAGS
CFLAGS: $CFLAGS
EXTRA_KCFLAGS: $EXTRA_KCFLAGS
LLCFLAGS: $LLCFLAGS
Type 'make' to build Lustre.
_ACEOF
#
# LB_PROG_DARWIN
#
# darwin tests
#
AC_DEFUN([LB_PROG_DARWIN],
[
])
#
# LB_LINUX_INKERNEL
#
# in kernel compilation? (2.5 only)
#
AC_DEFUN([LB_LINUX_INKERNEL],
[AC_MSG_CHECKING([if inkernel build support is requested])
AC_ARG_ENABLE([inkernel],
AC_HELP_STRING([--enable-inkernel],
[set up 2.5 kernel makefiles]),
[],[enable_inkernel=no])
AC_MSG_RESULT([$enable_inkernel])
if test x$enable_inkernel = xyes ; then
echo ln -s `pwd` $LINUX/fs/lustre
rm $LINUX/fs/lustre
ln -s `pwd` $LINUX/fs/lustre
find portals lustre -name Makefile.mk | sed 's/.mk$//' | xargs -n 1 \
sh -e -x -c '(cp -f $0.mk $0.in)'
fi
])
#
# LB_LINUX_VERSION
#
# Set things accordingly for a 2.5 kernel
#
AC_DEFUN([LB_LINUX_VERSION],
[AC_CHECK_FILE([$LINUX/include/linux/namei.h],
[
linux25="yes"
KMODEXT=".ko"
],[
KMODEXT=".o"
linux25="no"
])
AC_MSG_CHECKING([if you are using Linux 2.6])
AC_MSG_RESULT([$linux25])
MODULE_TARGET="SUBDIRS"
if test $linux25 = "yes" ; then
LB_CONFIG_INKERNEL
makerule="$PWD/build"
AC_MSG_CHECKING([for external module build support])
rm -f build/conftest.i
LB_LINUX_TRY_MAKE([],[],
[$makerule LUSTRE_KERNEL_TEST=conftest.i],
[test -s build/conftest.i],
[
AC_MSG_RESULT([no])
],[
AC_MSG_RESULT([yes])
makerule="_module_$makerule"
MODULE_TARGET="M"
])
else
makerule="_dir_$PWD/build"
fi
AC_SUBST(MODULE_TARGET)
AC_SUBST(LINUX25)
AC_SUBST(KMODEXT)
])
#
# LB_LINUX_PATH
#
# Find paths for linux, handling kernel-source rpms
#
AC_DEFUN([LB_LINUX_PATH],
[AC_MSG_CHECKING([for Linux sources])
AC_ARG_WITH([linux],
AC_HELP_STRING([--with-linux=path],
[set path to Linux source (default=/usr/src/linux)]),
[LINUX=$with_linux],
[LINUX=/usr/src/linux])
AC_MSG_RESULT([$LINUX])
AC_SUBST(LINUX)
# -------- linux objects (for 2.6) --
AC_MSG_CHECKING([for Linux objects dir])
AC_ARG_WITH([linux-obj],
AC_HELP_STRING([--with-linux-obj=path],
[set path to Linux objects dir (default=$LINUX)]),
[LINUX_OBJ=$with_linux_obj],
[LINUX_OBJ=$LINUX])
AC_MSG_RESULT([$LINUX_OBJ])
AC_SUBST(LINUX_OBJ)
# -------- check for .confg --------
AC_ARG_WITH([linux-config],
[AC_HELP_STRING([--with-linux-config=path],
[set path to Linux .conf (default=$LINUX_OBJ/.config)])],
[LINUX_CONFIG=$with_linux_config],
[LINUX_CONFIG=$LINUX_OBJ/.config])
AC_SUBST(LINUX_CONFIG)
AC_CHECK_FILE([/boot/kernel.h],
[KERNEL_SOURCE_HEADER='/boot/kernel.h'],
[AC_CHECK_FILE([/var/adm/running-kernel.h]),
[KERNEL_SOURCE_HEADER='/var/adm/running-kernel.h']])
AC_ARG_WITH([kernel-source-header],
AC_HELP_STRING([--with-kernel-source-header=path],
[Use a different kernel version header. Consult README.kernel-source for details.]),
[KERNEL_SOURCE_HEADER=$with_kernel_source_header])
# ------------ .config exists ----------------
AC_CHECK_FILE([$LINUX_CONFIG],[],
[AC_MSG_ERROR([Kernel config could not be found. If you are building from a kernel-source rpm consult README.kernel-source])])
# ----------- make dep run? ------------------
AC_CHECK_FILES([$LINUX_OBJ/include/linux/autoconf.h
$LINUX_OBJ/include/linux/version.h
$LINUX/include/linux/config.h],[],
[AC_MSG_ERROR([Run make config in $LINUX.])])
# ------------ rhconfig.h includes runtime-generated bits --
# red hat kernel-source checks
# we know this exists after the check above. if the user
# tarred up the tree and ran make dep etc. in it, then
# version.h gets overwritten with a standard linux one.
if grep rhconfig $LINUX_OBJ/include/linux/version.h >/dev/null ; then
# This is a clean kernel-source tree, we need to
# enable extensive workarounds to get this to build
# modules
AC_CHECK_FILE([$KERNEL_SOURCE_HEADER],
[if test $KERNEL_SOURCE_HEADER = '/boot/kernel.h' ; then
AC_MSG_WARN([Using /boot/kernel.h from RUNNING kernel.])
AC_MSG_WARN([If this is not what you want, use --with-kernel-source-header.])
AC_MSG_WARN([Consult README.kernel-source for details.])
fi],
[AC_MSG_ERROR([$KERNEL_SOURCE_HEADER not found. Consult README.kernel-source for details.])])
EXTRA_KCFLAGS="-include $KERNEL_SOURCE_HEADER $EXTRA_KCFLAGS"
fi
# this is needed before we can build modules
LB_LINUX_VERSION
# --- check that we can build modules at all
AC_MSG_CHECKING([that modules can be built at all])
LB_LINUX_TRY_COMPILE([],[],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_MSG_WARN([Consult config.log for details.])
AC_MSG_WARN([If you are trying to build with a kernel-source rpm, consult README.kernel-source])
AC_MSG_ERROR([Kernel modules could not be built.])
])
])
#
# LB_LINUX_UML
#
# check for a uml kernel
#
AC_DEFUN([LB_LINUX_UML],
[ARCH_UM=
UML_CFLAGS=
AC_MSG_CHECKING([if you are running user mode linux for $target_cpu])
if test -e $LINUX/include/asm-um ; then
if test X`ls -id $LINUX/include/asm/ 2>/dev/null | awk '{print [$]1}'` = X`ls -id $LINUX/include/asm-um 2>/dev/null | awk '{print [$]1}'` ; then
ARCH_UM='ARCH=um'
# see notes in Rules.in
UML_CFLAGS='-O0'
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT([no (asm doesn't point at asm-um)])
fi
else
AC_MSG_RESULT([no (asm-um missing)])
fi
AC_SUBST(ARCH_UM)
AC_SUBST(UML_CFLAGS)
])
# these are like AC_TRY_COMPILE, but try to build modules against the
# kernel, inside the build directory
#
# LB_LINUX_CONFTEST
#
# create a conftest.c file
#
AC_DEFUN([LB_LINUX_CONFTEST],
[cat >conftest.c <<_ACEOF
$1
_ACEOF
])
#
# LB_LINUX_COMPILE_IFELSE
#
# like AC_COMPILE_IFELSE
#
AC_DEFUN([LB_LINUX_COMPILE_IFELSE],
[m4_ifvaln([$1], [LB_LINUX_CONFTEST([$1])])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.ko
AS_IF([AC_TRY_COMMAND(cp conftest.c build && make [$2] CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
[$4],
[_AC_MSG_LOG_CONFTEST
m4_ifvaln([$5],[$5])dnl])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko m4_ifval([$1], [build/conftest.c conftest.c])[]dnl
])
#
# LB_LINUX_TRY_COMPILE
#
# like AC_TRY_COMPILE
#
AC_DEFUN([LB_LINUX_TRY_COMPILE],
[LB_LINUX_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[$1]], [[$2]])],
[modules],
[test -s build/conftest.o],
[$3], [$4])])
#
# LB_LINUX_CONFIG
#
# check if a given config option is defined
#
AC_DEFUN([LB_LINUX_CONFIG],
[AC_MSG_CHECKING([if Linux was built with CONFIG_$1])
LB_LINUX_TRY_COMPILE([#include <linux/config.h>],[
#ifndef CONFIG_$1
#error CONFIG_$1 not #defined
#endif
],[
AC_MSG_RESULT([yes])
$2
],[
AC_MSG_RESULT([no])
$3
])
])
#
# LB_LINUX_TRY_MAKE
#
# like LB_LINUX_TRY_COMPILE, but with different arguments
#
AC_DEFUN([LB_LINUX_TRY_MAKE],
[LB_LINUX_COMPILE_IFELSE([AC_LANG_PROGRAM([[$1]], [[$2]])], [$3], [$4], [$5], [$6])])
#
# LB_PROG_LINUX
#
# linux tests
#
AC_DEFUN([LB_PROG_LINUX],
[LB_LINUX_PATH
LB_LINUX_UML
LB_LINUX_CONFIG([MODULES],[],[
AC_MSG_ERROR([module support is required to build Lustre kernel modules.])
])
LB_LINUX_CONFIG([MODVERSIONS])
LB_LINUX_CONFIG([PREEMPT],[
AC_MSG_ERROR([Lustre does not support kernels with preempt enabled.])
])
LB_LINUX_CONFIG([KALLSYMS],[],[
if test "x$ARCH_UM" = "x" ; then
AC_MSG_ERROR([Lustre requires that CONFIG_KALLSYMS is enabled in your kernel.])
fi
])
# Portals tests
LP_PROG_LINUX
# Lustre tests
LC_PROG_LINUX
])
#
# LB_LINUX_STRUCT_PAGE_LIST
#
# 2.6.4 no longer has page->list
#
AC_DEFUN([LB_LINUX_STRUCT_PAGE_LIST],
[AC_MSG_CHECKING([if struct page has a list field])
LB_LINUX_TRY_COMPILE([
#include <linux/mm.h>
],[
struct page page;
&page.list;
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_PAGE_LIST, 1, [struct page has a list field])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_STRUCT_SIGHAND
#
# red hat 2.4 adds sighand to struct task_struct
#
AC_DEFUN([LB_LINUX_STRUCT_SIGHAND],
[AC_MSG_CHECKING([if task_struct has a sighand field])
LB_LINUX_TRY_COMPILE([
#include <linux/sched.h>
],[
struct task_struct p;
p.sighand = NULL;
],[
AC_DEFINE(CONFIG_RH_2_4_20, 1, [this kernel contains Red Hat 2.4.20 patches])
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_FUNC_CPU_ONLINE
#
# cpu_online is different in rh 2.4, vanilla 2.4, and 2.6
#
AC_DEFUN([LB_LINUX_FUNC_CPU_ONLINE],
[AC_MSG_CHECKING([if kernel defines cpu_online()])
LB_LINUX_TRY_COMPILE([
#include <linux/sched.h>
],[
cpu_online(0);
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_CPU_ONLINE, 1, [cpu_online found])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_TYPE_CPUMASK_T
#
# same goes for cpumask_t
#
AC_DEFUN([LB_LINUX_TYPE_CPUMASK_T],
[AC_MSG_CHECKING([if kernel defines cpumask_t])
LB_LINUX_TRY_COMPILE([
#include <linux/sched.h>
],[
return sizeof (cpumask_t);
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_CPUMASK_T, 1, [cpumask_t found])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_FUNC_SHOW_TASK
#
# we export show_task(), but not all kernels have it (yet)
#
AC_DEFUN([LB_LINUX_FUNC_SHOW_TASK],
[AC_MSG_CHECKING([if kernel exports show_task])
have_show_task=0
for file in ksyms sched ; do
if grep -q "EXPORT_SYMBOL(show_task)" \
"$LINUX/kernel/$file.c" 2>/dev/null ; then
have_show_task=1
break
fi
done
if test x$have_show_task = x1 ; then
AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
])
#
# LB_LINUX_CONFIG_EXT3
#
# that ext3 is enabled in the kernel
#
AC_DEFUN([LB_LINUX_CONFIG_EXT3],
[LB_LINUX_CONFIG([EXT3_FS],[],[
LB_LINUX_CONFIG([EXT3_FS_MODULE],[],[$2])
])
LB_LINUX_CONFIG([EXT3_FS_XATTR],[$1],[$3])
])
#
# LB_LINUX_FSHOOKS
#
# If we have (and can build) fshooks.h
#
AC_DEFUN([LB_LINUX_FSHOOKS],
[AC_MSG_CHECKING([if this compiler can build a SuSE 2.6 kernel])
# an excerpt from fshooks.h, which doesn't build with fedora's gcc 3.4
LB_LINUX_TRY_COMPILE([
/* for the lack of a kernel-wide definition */
typedef enum {
false,
true
} boolean_t __attribute__((__mode__(__QI__)));
],[],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_MSG_WARN([We suggest trying gcc 3.3.x.])
AC_MSG_WARN([You can set CC=gcc33 before running configure.])
AC_MSG_ERROR([Your compiler cannot build a SuSE 2.6 kernel.])
])
AC_MSG_CHECKING([if fshooks are present])
LB_LINUX_TRY_COMPILE([
#include <linux/fshooks.h>
],[],[
AC_MSG_RESULT([yes])
$1
],[
AC_MSG_RESULT([no])
$2
])
])
#
# LB_LINUX_STRUCT_KIOBUF
#
# rh 2.4.18 has iobuf->dovary, but other kernels do not
#
AC_DEFUN([LB_LINUX_STRUCT_KIOBUF],
[AC_MSG_CHECKING([if struct kiobuf has a dovary field])
LB_LINUX_TRY_COMPILE([
#include <linux/iobuf.h>
],[
struct kiobuf iobuf;
iobuf.dovary = 1;
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_KIOBUF_DOVARY, 1, [struct kiobuf has a dovary field])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_FUNC_COND_RESCHED
#
# cond_resched() was introduced in 2.4.20
#
AC_DEFUN([LB_LINUX_FUNC_COND_RESCHED],
[AC_MSG_CHECKING([if kernel offers cond_resched])
LB_LINUX_TRY_COMPILE([
#include <linux/sched.h>
],[
cond_resched();
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_COND_RESCHED, 1, [cond_resched found])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_FUNC_ZAP_PAGE_RANGE
#
# if zap_page_range() taks a vma arg
#
AC_DEFUN([LB_LINUX_FUNC_ZAP_PAGE_RANGE],
[AC_MSG_CHECKING([if zap_pag_range with vma parameter])
ZAP_PAGE_RANGE_VMA="`grep -c 'zap_page_range.*struct vm_area_struct' $LINUX/include/linux/mm.h`"
if test "$ZAP_PAGE_RANGE_VMA" != 0 ; then
AC_DEFINE(ZAP_PAGE_RANGE_VMA, 1, [zap_page_range with vma parameter])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
])
#
# LB_LINUX_FUNC_PDE
#
# if proc_fs.h defines PDE()
#
AC_DEFUN([LB_LINUX_FUNC_PDE],
[AC_MSG_CHECKING([if kernel defines PDE])
HAVE_PDE="`grep -c 'proc_dir_entry..PDE' $LINUX/include/linux/proc_fs.h`"
if test "$HAVE_PDE" != 0 ; then
AC_DEFINE(HAVE_PDE, 1, [the kernel defines PDE])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
])
#
# LB_LINUX_FUNC_DIRECT_IO
#
# if direct_IO takes a struct file argument
#
AC_DEFUN([LB_LINUX_FUNC_DIRECT_IO],
[AC_MSG_CHECKING([if kernel passes struct file to direct_IO])
HAVE_DIO_FILE="`grep -c 'direct_IO.*struct file' $LINUX/include/linux/fs.h`"
if test "$HAVE_DIO_FILE" != 0 ; then
AC_DEFINE(HAVE_DIO_FILE, 1, [the kernel passes struct file to direct_IO])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
])
#
# LB_LINUX_HEADER_MM_INLINE
#
# RHEL kernels define page_count in mm_inline.h
#
AC_DEFUN([LB_LINUX_HEADER_MM_INLINE],
[AC_MSG_CHECKING([if kernel has mm_inline.h header])
LB_LINUX_TRY_COMPILE([
#include <linux/mm_inline.h>
],[
#ifndef page_count
#error mm_inline.h does not define page_count
#endif
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_MM_INLINE, 1, [mm_inline found])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_LINUX_STRUCT_INODE
#
# if inode->i_alloc_sem exists
#
AC_DEFUN([LB_LINUX_STRUCT_INODE],
[AC_MSG_CHECKING([if struct inode has i_alloc_sem])
LB_LINUX_TRY_COMPILE([
#include <linux/fs.h>
#include <linux/version.h>
],[
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,24))
#error "down_read_trylock broken before 2.4.24"
#endif
struct inode i;
return (char *)&i.i_alloc_sem - (char *)&i;
],[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_I_ALLOC_SEM, 1, [struct inode has i_alloc_sem])
],[
AC_MSG_RESULT([no])
])
])
#
# LB_CHECK_VERSION
#
# Verify that LUSTRE_VERSION was defined properly
#
AC_DEFUN([LB_CHECK_VERSION],
[if test "LUSTRE_VERSION" = "LUSTRE""_VERSION" ; then
AC_MSG_ERROR([This script was not built with a version number.])
fi
])
#
# LB_PATH_LIBSYSIO
#
# Handle internal/external libsysio
#
AC_DEFUN([LB_PATH_LIBSYSIO],
[AC_ARG_WITH([sysio],
AC_HELP_STRING([--with-sysio=path],
[set path to libsysio source (default is included libsysio)]),
[],[with_sysio='yes'])
AC_MSG_CHECKING([location of libsysio])
case x$with_sysio in
xyes)
AC_MSG_RESULT([internal])
AC_CHECK_FILE([$srcdir/libsysio/src/rmdir.c],[],[
AC_MSG_ERROR([A complete internal libsysio was not found.])
])
AC_CONFIG_SUBDIRS(libsysio)
LIBSYSIO_SUBDIR="libsysio"
SYSIO='$(top_srcdir)/libsysio'
;;
xno)
AC_MSG_RESULT([disabled])
;;
*)
AC_MSG_RESULT([$with_sysio])
AC_CHECK_FILE([$with_sysio/src/libsysio.a],[],[
AC_MSG_ERROR([A complete (built) external libsysio was not found.])
])
SYSIO=$with_sysio
;;
esac
AC_SUBST(LIBSYSIO_SUBDIR)
AC_SUBST(SYSIO)
])
#
# LB_PATH_CRAY_PORTALS
#
# Support for external Cray portals
#
AC_DEFUN([LB_PATH_CRAY_PORTALS],
[AC_MSG_CHECKING([for Cray portals])
AC_ARG_WITH([cray-portals],
AC_HELP_STRING([--with-cray-portals=path],
[path to cray portals]),
[
if test "$with_cray_portals" != no; then
CRAY_PORTALS_PATH=$with_cray_portals
CRAY_PORTALS_INCLUDES="$with_cray_portals/include"
CRAY_PORTALS_LIBS="$with_cray_portals"
fi
],[with_cray_portals=no])
AC_SUBST(CRAY_PORTALS_PATH)
AC_MSG_RESULT([$CRAY_PORTALS_PATH])
AC_MSG_CHECKING([for Cray portals includes])
AC_ARG_WITH([cray-portals-includes],
AC_HELP_STRING([--with-cray-portals-includes=path],
[path to cray portals includes]),
[
if test "$with_cray_portals_includes" != no; then
CRAY_PORTALS_INCLUDES="$with_cray_portals_includes"
fi
])
AC_SUBST(CRAY_PORTALS_INCLUDES)
AC_MSG_RESULT([$CRAY_PORTALS_INCLUDES])
AC_MSG_CHECKING([for Cray portals libs])
AC_ARG_WITH([cray-portals-libs],
AC_HELP_STRING([--with-cray-portals-libs=path],
[path to cray portals libs]),
[
if test "$with_cray_portals_libs" != no; then
CRAY_PORTALS_LIBS="$with_cray_portals_libs"
fi
])
AC_SUBST(CRAY_PORTALS_LIBS)
AC_MSG_RESULT([$CRAY_PORTALS_LIBS])
if test x$CRAY_PORTALS_INCLUDES != x ; then
if test ! -r $CRAY_PORTALS_INCLUDES/portals/api.h ; then
AC_MSG_ERROR([Cray portals headers were not found in $CRAY_PORTALS_INCLUDES. Please check the paths passed to --with-cray-portals or --with-cray-portals-includes.])
fi
fi
if test x$CRAY_PORTALS_LIBS != x ; then
if test ! -r $CRAY_PORTALS_LIBS/libportals.a ; then
AC_MSG_ERROR([Cray portals libraries were not found in $CRAY_PORTALS_LIBS. Please check the paths passed to --with-cray-portals or --with-cray-portals-libs.])
fi
fi
AC_MSG_CHECKING([whether to use Cray portals])
if test x$CRAY_PORTALS_INCLUDES != x -a x$CRAY_PORTALS_LIBS != x ; then
with_cray_portals=yes
AC_DEFINE(CRAY_PORTALS, 1, [Building with Cray Portals])
CPPFLAGS="-I$CRAY_PORTALS_INCLUDES $CPPFLAGS"
EXTRA_KCFLAGS="-I-I$CRAY_PORTALS_INCLUDES $EXTRA_KCFLAGS"
else
with_cray_portals=no
fi
AC_MSG_RESULT([$with_cray_portals])
])
#
# LB_CONFIG_MODULES
#
# Build kernel modules?
#
AC_DEFUN([LB_CONFIG_MODULES],
[AC_MSG_CHECKING([whether to build kernel modules])
AC_ARG_ENABLE([modules],
AC_HELP_STRING([--disable-modules],
[disable building of Lustre kernel modules]),
[],[
case $target_os in
linux* | darwin)
enable_modules='yes'
;;
*)
enable_modules='no'
;;
esac
])
AC_MSG_RESULT([$enable_modules ($target_os)])
if test x$enable_modules = xyes ; then
case $target_os in
linux*)
LB_PROG_LINUX
;;
darwin)
LB_PROG_DARWIN
;;
*)
AC_MSG_ERROR([Modules are not supported on $target_os])
;;
esac
fi
])
#
# LB_CONFIG_UTILS
#
# Build utils?
#
AC_DEFUN([LB_CONFIG_UTILS],
[AC_MSG_CHECKING([whether to build utilities])
AC_ARG_ENABLE([utils],
AC_HELP_STRING([--disable-utils],
[disable building of Lustre utility programs])
[],[enable_utils='yes'])
if test x$with_cray_portals = xyes ; then
enable_utils='no'
fi
AC_MSG_RESULT([$enable_utils])
])
#
# LB_CONFIG_TESTS
#
# Build tests?
#
AC_DEFUN([LB_CONFIG_TESTS],
[AC_MSG_CHECKING([whether to build Lustre tests])
AC_ARG_ENABLE([tests],
AC_HELP_STRING([--disable-tests],
[disable building of Lustre tests]),
[],[enable_tests='yes'])
if test x$with_cray_portals = xyes ; then
enable_tests='no'
fi
AC_MSG_RESULT([$enable_tests])
])
#
# LB_CONFIG_DOCS
#
# Build docs?
#
AC_DEFUN([LB_CONFIG_DOCS],
[AC_MSG_CHECKING([whether to build docs])
AC_ARG_ENABLE(doc,
AC_HELP_STRING([--disable-doc],
[skip creation of pdf documentation]),
[
if test x$enable_doc = xyes ; then
ENABLE_DOC=1
else
ENABLE_DOC=0
fi
],[
ENABLE_DOC=0
enable_doc='no'
])
AC_MSG_RESULT([$enable_doc])
AC_SUBST(ENABLE_DOC)
])
#
# LB_CONFIG_INIT_SCRIPTS
#
# our init scripts only work on red hat linux
#
AC_DEFUN([LB_CONFIG_INIT_SCRIPTS],
[ENABLE_INIT_SCRIPTS=0
if test x$enable_utils = xyes ; then
AC_MSG_CHECKING([whether to install init scripts])
# our scripts only work on red hat systems
if test -f /etc/init.d/functions -a -f /etc/sysconfig/network ; then
ENABLE_INIT_SCRIPTS=1
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
AC_SUBST(ENABLE_INIT_SCRIPTS)
])
#
# LB_CONFIG_HEADERS
#
# add -include config.h
#
AC_DEFUN([LB_CONFIG_HEADERS],
[AC_CONFIG_HEADERS([config.h])
CPPFLAGS="-include \$(top_builddir)/config.h $CPPFLAGS"
EXTRA_KCFLAGS="-include $PWD/config.h $EXTRA_KCFLAGS"
AC_SUBST(EXTRA_KCFLAGS)
])
#
# LB_INCLUDE_RULES
#
# defines for including the toplevel Rules
#
AC_DEFUN([LB_INCLUDE_RULES],
[INCLUDE_RULES="include $PWD/build/Rules"
AC_SUBST(INCLUDE_RULES)
])
#
# LB_PATH_DEFAULTS
#
# 'fixup' default paths
#
AC_DEFUN([LB_PATH_DEFAULTS],
[# directories for binaries
AC_PREFIX_DEFAULT([/usr])
sysconfdir='/etc'
AC_SUBST(sysconfdir)
# Directories for documentation and demos.
docdir='${datadir}/doc/$(PACKAGE)'
AC_SUBST(docdir)
])
#
# LB_PROG_CC
#
# checks on the C compiler
#
AC_DEFUN([LB_PROG_CC],
[AC_PROG_RANLIB
AC_PROG_CC
AC_MSG_CHECKING([for buggy compiler])
CC_VERSION=`$CC -v 2>&1 | grep "^gcc version"`
bad_cc() {
AC_MSG_RESULT([buggy compiler found!])
echo
echo " '$CC_VERSION'"
echo " has been known to generate bad code, "
echo " please get an updated compiler."
AC_MSG_ERROR([sorry])
}
case "$CC_VERSION" in
"gcc version 2.95"*)
bad_cc
;;
# ost_pack_niobuf putting 64bit NTOH temporaries on the stack
# without "sub $0xc,%esp" to protect the stack from being
# stomped on by interrupts (bug 606)
"gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)")
bad_cc
;;
# mandrake's similar sub 0xc compiler bug
# http://marc.theaimsgroup.com/?l=linux-kernel&m=104748366226348&w=2
"gcc version 2.96 20000731 (Mandrake Linux 8.1 2.96-0.62mdk)")
bad_cc
;;
*)
AC_MSG_RESULT([no known problems])
;;
esac
# --------- unsigned long long sane? -------
AC_CHECK_SIZEOF(unsigned long long, 0)
echo "---> size SIZEOF $SIZEOF_unsigned_long_long"
echo "---> size SIZEOF $ac_cv_sizeof_unsigned_long_long"
if test $ac_cv_sizeof_unsigned_long_long != 8 ; then
AC_MSG_ERROR([** we assume that sizeof(long long) == 8. Tell phil@clusterfs.com])
fi
CPPFLAGS="-I\$(top_srcdir)/lustre/include -I\$(top_srcdir)/portals/include $CPPFLAGS"
LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1"
AC_SUBST(LLCPPFLAGS)
LLCFLAGS="-g -Wall -fPIC"
AC_SUBST(LLCFLAGS)
# everyone builds against portals and lustre
EXTRA_KCFLAGS="-g -I$PWD/portals/include -I$PWD/lustre/include"
AC_SUBST(EXTRA_KCFLAGS)
])
#
# LB_CONTITIONALS
#
# AM_CONDITIONAL instances for everything
# (so that portals/lustre can disable some if needed)
AC_DEFUN([LB_CONDITIONALS],
[AM_CONDITIONAL(MODULES, test x$enable_modules = xyes)
AM_CONDITIONAL(UTILS, test x$enable_utils = xyes)
AM_CONDITIONAL(TESTS, test x$enable_tests = xyes)
AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1)
AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes)
AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno)
AM_CONDITIONAL(INIT_SCRIPTS, test x$ENABLE_INIT_SCRIPTS = "x1")
LP_CONDITIONALS
LC_CONDITIONALS
])
#
# LB_CONFIG_FILES
#
# files that should be generated with AC_OUTPUT
#
AC_DEFUN([LB_CONFIG_FILES],
[AC_CONFIG_FILES([
build/autoMakefile
build/Rules
build/lustre.spec
])
LP_CONFIG_FILES
LC_CONFIG_FILES
])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment