X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=build%2Fautoconf%2Flustre-build.m4;h=754099e5dfa5a4b88a8149e5bcdc36fb6867371a;hb=3b387ce96e04963b4f98f0478e137114c6bb4633;hp=d05141fb7d532452ccae07c97d3b862f62c064cf;hpb=f034caa8f290cea0858a361cab78eb932e52c829;p=fs%2Flustre-release.git diff --git a/build/autoconf/lustre-build.m4 b/build/autoconf/lustre-build.m4 index d05141f..754099e 100644 --- a/build/autoconf/lustre-build.m4 +++ b/build/autoconf/lustre-build.m4 @@ -22,11 +22,96 @@ AC_DEFUN([LB_CANONICAL_SYSTEM], darwin*) lb_target_os="darwin" ;; -esac + solaris*) + lb_target_os="SunOS" + ;;esac AC_SUBST(lb_target_os) ]) # +# LB_DOWNSTREAM_RELEASE +# +AC_DEFUN([LB_DOWNSTREAM_RELEASE], +[AC_ARG_WITH([downstream-release], + AC_HELP_STRING([--with-downstream-release=string], + [set a string in the BUILD_VERSION and RPM Release: (default is nothing)]), + [DOWNSTREAM_RELEASE=$with_downstream_release], + [ + # if not specified, see if it's in the META file + if test -f META; then + DOWNSTREAM_RELEASE=$(sed -ne '/^LOCAL_VERSION =/s/.*= *//p' META) + fi + ]) +AC_SUBST(DOWNSTREAM_RELEASE) +]) + +# +# LB_BUILDID +# +# Check if the source is a GA release and if not, set a "BUILDID" +# +# Currently there are at least two ways/modes of/for doing this. One +# is if we are in a valid git repository, the other is if we are in a +# non-git source tree of some form. Building the latter from the former +# will be handled here. +AC_DEFUN([LB_BUILDID], +[ +AC_MSG_CHECKING([for buildid]) +BUILDID="" +if git branch >/dev/null 2>&1; then + ffw=0 + hash="" + ver=$(git describe --match v[[0-9]]_*_[[0-9]]* --tags) + if [[[ $ver = *-*-* ]]]; then + hash=${ver##*-} + ffw=${ver#*-} + ffw=${ffw%-*} + ver=${ver%%-*} + fi + # it's tempting to use [[ $ver =~ ^v([0-9]+_)+([0-9]+|RC[0-9]+)$ ]] + # here but the portability of the regex on the right is dismal + # (thanx suse) + if echo "$ver" | egrep -q "^v([[0-9]]+_)+([[0-9]]+|RC[[0-9]]+)$"; then + ver=$(echo $ver | sed -e 's/^v\(.*\)/\1/' \ + -e 's/_RC[[0-9]].*$//' -e 's/_/./g') + fi + + # a "lustre fix" value of .0 should be truncated + if [[[ $ver = *.*.*.0 ]]]; then + ver=${ver%.0} + fi + # ditto for a "lustre fix" value of _0 + if [[[ $ver = v*_*_*_0 ]]]; then + ver=${ver%_0} + fi + if [[[ $ver = v*_*_* ]]]; then + ver=${ver#v} + ver=${ver//_/.} + fi + + # only do this test for lustre (not ldiskfs) + if test "$PACKAGE" = "lustre" -a "$ver" != "$VERSION"; then + AC_MSG_WARN([most recent tag found: $ver does not match current version $VERSION.]) + fi + + if test "$ffw" != "0"; then + BUILDID="$hash" + msg="$BUILDID (ahead by $ffw commits)" + AC_MSG_RESULT([$msg]) + else + AC_MSG_RESULT([none... congratulations, you must be on a tag]) + fi +elif test -f META; then + BUILDID=$(sed -ne '/^BUILDID =/s/.*= *//p' META) + msg="$BUILDID (from META file)" + AC_MSG_RESULT([$msg]) +else + AC_MSG_WARN([FIXME: I don't know how to deal with source trees outside of git that don't have a META file. Not setting a buildid.]) +fi +AC_SUBST(BUILDID) +]) + +# # LB_CHECK_FILE # # Check for file existance even when cross compiling @@ -35,27 +120,14 @@ AC_DEFUN([LB_CHECK_FILE], [AS_VAR_PUSHDEF([lb_File], [lb_cv_file_$1])dnl AC_CACHE_CHECK([for $1], lb_File, [if test -r "$1"; then - AS_VAR_SET(lb_File, yes) + AS_VAR_SET(lb_File, yes) else - AS_VAR_SET(lb_File, no) + AS_VAR_SET(lb_File, no) fi]) AS_IF([test AS_VAR_GET(lb_File) = yes], [$2], [$3])[]dnl AS_VAR_POPDEF([lb_File])dnl ])# LB_CHECK_FILE -# -# LB_CHECK_FILES -# -# LB_CHECK_FILE over multiple files -# -AC_DEFUN([LB_CHECK_FILES], -[AC_FOREACH([AC_FILE_NAME], [$1], - [LB_CHECK_FILE(AC_FILE_NAME, - [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_[]AC_FILE_NAME), 1, - [Define to 1 if you have the - file `]AC_File['.]) -$2], - [$3])])]) # # LB_ARG_LIBS_INCLUDES @@ -153,26 +225,64 @@ case x$with_sysio in ;; esac -# We have to configure even if we don't build here for make dist to -# work +# We have to configure even if we don't build here for make dist to work AC_CONFIG_SUBDIRS(libsysio) ]) # -# LB_CONFIG_CRAY_XT3 +# LB_PATH_LUSTREIOKIT # -# Enable Cray XT3 features +# Handle internal/external lustre-iokit # -AC_DEFUN([LB_CONFIG_CRAY_XT3], -[AC_MSG_CHECKING([whether to build Cray XT3 features]) -AC_ARG_ENABLE([cray_xt3], - AC_HELP_STRING([--enable-cray-xt3], - [enable building of Cray XT3 features]), - [enable_cray_xt3='yes'],[enable_cray_xt3='no']) -AC_MSG_RESULT([$enable_cray_xt3]) -if test x$enable_cray_xt3 != xno; then - AC_DEFINE(CRAY_XT3, 1, Enable Cray XT3 Features) -fi +AC_DEFUN([LB_PATH_LUSTREIOKIT], +[AC_ARG_WITH([lustre-iokit], + AC_HELP_STRING([--with-lustre-iokit=path], + [set path to lustre-iokit source (default is included lustre-iokit)]), + [],[ + with_lustre_iokit='yes' + ]) +AC_MSG_CHECKING([location of lustre-iokit]) +enable_lustre_iokit="$with_lustre_iokit" +case x$with_lustre_iokit in + xyes) + AC_MSG_RESULT([internal]) + LB_CHECK_FILE([$srcdir/lustre-iokit/ior-survey/ior-survey],[],[ + AC_MSG_ERROR([A complete internal lustre-iokit was not found.]) + ]) + LUSTREIOKIT_SUBDIR="lustre-iokit" + LUSTREIOKIT="$PWD/lustre-iokit" + ;; + xno) + AC_MSG_RESULT([disabled]) + ;; + *) + AC_MSG_RESULT([$with_lustre_iokit]) + LB_CHECK_FILE([$with_lustre_iokit/ior-survey/ior_survey],[],[ + AC_MSG_ERROR([A complete (built) external lustre-iokit was not found.]) + ]) + LUSTREIOKIT="$with_lustre_iokit" + ;; +esac +AC_SUBST(LUSTREIOKIT_SUBDIR) +# We have to configure even if we don't build here for make dist to work +AC_CONFIG_SUBDIRS(lustre-iokit) +]) + +# Define no libcfs by default. +AC_DEFUN([LB_LIBCFS_DIR], +[ +case x$libcfs_is_module in + xyes) + LIBCFS_INCLUDE_DIR="libcfs/include" + LIBCFS_SUBDIR="libcfs" + ;; + x*) + LIBCFS_INCLUDE_DIR="lnet/include" + LIBCFS_SUBDIR="" + ;; +esac +AC_SUBST(LIBCFS_SUBDIR) +AC_SUBST(LIBCFS_INCLUDE_DIR) ]) # @@ -188,7 +298,7 @@ AC_ARG_ENABLE([bgl], [enable_bgl='yes'],[enable_bgl='no']) AC_MSG_RESULT([$enable_bgl]) if test x$enable_bgl != xno; then - AC_DEFINE(BGL_SUPPORT, 1, Enable BGL Features) + AC_DEFINE(HAVE_BGL_SUPPORT, 1, Enable BGL Features) enable_doc='no' enable_tests='no' enable_server='no' @@ -231,9 +341,13 @@ if test x$enable_modules = xyes ; then case $target_os in linux*) LB_PROG_LINUX + LIBCFS_PROG_LINUX + LN_PROG_LINUX + LC_PROG_LINUX ;; darwin*) LB_PROG_DARWIN + LIBCFS_PROG_DARWIN ;; *) # This is strange - Lustre supports a target we don't @@ -278,6 +392,30 @@ AC_MSG_RESULT([$enable_tests]) ]) # +# LB_CONFIG_DIST +# +# Just enough configure so that "make dist" is useful +# +# this simply re-adjusts some defaults, which of course can be overridden +# on the configure line after the --for-dist option +# +AC_DEFUN([LB_CONFIG_DIST], +[AC_MSG_CHECKING([whether to configure just enough for make dist]) +AC_ARG_ENABLE([dist], + AC_HELP_STRING([--enable-dist], + [only configure enough for make dist]), + [enable_dist='yes'],[enable_dist='no']) +AC_MSG_RESULT([$enable_dist]) +if test x$enable_dist != xno; then + enable_modules='no' + enable_utils='no' + enable_liblustre='no' + enable_doc='no' + enable_tests='no' +fi +]) + +# # LB_CONFIG_DOCS # # Build docs? @@ -289,7 +427,7 @@ AC_ARG_ENABLE(doc, [skip creation of pdf documentation]), [ if test x$enable_doc = xyes ; then - ENABLE_DOC=1 + ENABLE_DOC=1 else ENABLE_DOC=0 fi @@ -326,11 +464,11 @@ AC_SUBST(ENABLE_INIT_SCRIPTS) # # 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) +AC_DEFUN([LB_CONFIG_HEADERS],[ + AC_CONFIG_HEADERS([config.h]) + CPPFLAGS="-include $PWD/config.h $CPPFLAGS" + EXTRA_KCFLAGS="-include $PWD/config.h $EXTRA_KCFLAGS" + AC_SUBST(EXTRA_KCFLAGS) ]) # @@ -338,9 +476,9 @@ AC_SUBST(EXTRA_KCFLAGS) # # defines for including the toplevel Rules # -AC_DEFUN([LB_INCLUDE_RULES], -[INCLUDE_RULES="include $PWD/build/Rules" -AC_SUBST(INCLUDE_RULES) +AC_DEFUN([LB_INCLUDE_RULES],[ + INCLUDE_RULES="include $PWD/Rules" + AC_SUBST(INCLUDE_RULES) ]) # @@ -359,6 +497,7 @@ AC_SUBST(sysconfdir) docdir='${datadir}/doc/$(PACKAGE)' AC_SUBST(docdir) +LIBCFS_PATH_DEFAULTS LN_PATH_DEFAULTS LC_PATH_DEFAULTS @@ -371,71 +510,35 @@ LC_PATH_DEFAULTS # AC_DEFUN([LB_PROG_CC], [AC_PROG_RANLIB -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]) + AC_MSG_ERROR([** we assume that sizeof(long long) == 8.]) fi -# FIXME -AC_CHECK_DECL([__i386__], [], [ - -if test x$enable_bgl != xyes; then -AC_MSG_CHECKING([if $CC accepts -m64]) -CC_save="$CC" -CC="$CC -m64" -AC_TRY_COMPILE([],[],[ - AC_MSG_RESULT([yes]) -],[ - AC_MSG_RESULT([no]) - CC="$CC_save" -]) +if test $target_cpu == "powerpc64"; then + AC_MSG_WARN([set compiler with -m64]) + CFLAGS="$CFLAGS -m64" + CC="$CC -m64" fi -]) - -CPPFLAGS="-I\$(top_builddir)/lnet/include -I\$(top_srcdir)/lnet/include -I\$(top_builddir)/lustre/include -I\$(top_srcdir)/lustre/include $CPPFLAGS" +CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS" LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1" AC_SUBST(LLCPPFLAGS) -LLCFLAGS="-g -Wall -fPIC" +# Add _GNU_SOURCE for strnlen on linux +LLCFLAGS="-g -Wall -fPIC -D_GNU_SOURCE" AC_SUBST(LLCFLAGS) +CCASFLAGS="-Wall -fPIC -D_GNU_SOURCE" +AC_SUBST(CCASFLAGS) + # everyone builds against lnet and lustre -EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/lnet/include -I$PWD/lustre/include" +EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include" AC_SUBST(EXTRA_KCFLAGS) ]) @@ -452,6 +555,9 @@ AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1) AM_CONDITIONAL(INIT_SCRIPTS, test x$ENABLE_INIT_SCRIPTS = "x1") AM_CONDITIONAL(LINUX, test x$lb_target_os = "xlinux") AM_CONDITIONAL(DARWIN, test x$lb_target_os = "xdarwin") +AM_CONDITIONAL(SUNOS, test x$lb_target_os = "xSunOS") +AM_CONDITIONAL(USES_DPKG, test x$uses_dpkg = "xyes") +AM_CONDITIONAL(ARCH_x86, test x$target_cpu = "xx86_64" -o x$target_cpu = "xi686") # this lets lustre cancel libsysio, per-branch or if liblustre is # disabled @@ -464,14 +570,29 @@ fi AC_SUBST(LIBSYSIO_SUBDIR) AC_SUBST(SYSIO) -LB_LINUX_CONDITIONALS LB_DARWIN_CONDITIONALS +LIBCFS_CONDITIONALS LN_CONDITIONALS LC_CONDITIONALS ]) # +# LB_CONFIG_FILES +# +# build-specific config files +# +AC_DEFUN([LB_CONFIG_FILES], +[ + AC_CONFIG_FILES([ + Makefile + autoMakefile] + [Rules:build/Rules.in] + AC_PACKAGE_TARNAME[.spec] + ) +]) + +# # LB_CONFIGURE # # main configure steps @@ -479,28 +600,46 @@ LC_CONDITIONALS AC_DEFUN([LB_CONFIGURE], [LB_CANONICAL_SYSTEM +LB_CONFIG_DIST + +LB_DOWNSTREAM_RELEASE +LB_USES_DPKG +LB_BUILDID + +LB_LIBCFS_DIR + LB_INCLUDE_RULES -LB_CONFIG_CRAY_XT3 LB_CONFIG_BGL LB_PATH_DEFAULTS LB_PROG_CC -LB_PATH_LIBSYSIO -LB_PATH_SNMP +LC_OSD_ADDON LB_CONFIG_DOCS LB_CONFIG_UTILS LB_CONFIG_TESTS LC_CONFIG_CLIENT_SERVER -LC_CONFIG_SPLIT + +# two macros for cmd3 +m4_ifdef([LC_CONFIG_SPLIT], [LC_CONFIG_SPLIT]) +LN_CONFIG_CDEBUG +LC_QUOTA LB_CONFIG_MODULES -LC_CONFIG_GSS -LC_CONFIG_CRYPTO +LN_CONFIG_USERSPACE + +LB_PATH_LIBSYSIO +LB_PATH_SNMP +LB_PATH_LDISKFS +LB_PATH_ZFS +LB_PATH_LUSTREIOKIT + +LB_DEFINE_E2FSPROGS_NAMES LC_CONFIG_LIBLUSTRE +LIBCFS_CONFIGURE LN_CONFIGURE LC_CONFIGURE @@ -509,18 +648,12 @@ if test "$SNMP_DIST_SUBDIR" ; then LS_CONFIGURE fi + LB_CONDITIONALS LB_CONFIG_HEADERS -AC_CONFIG_FILES( -[Makefile:build/Makefile.in.toplevel] -[autoMakefile -build/autoMakefile -build/autoconf/Makefile -build/Rules -build/lustre.spec -]) - +LIBCFS_CONFIG_FILES +LB_CONFIG_FILES LN_CONFIG_FILES LC_CONFIG_FILES if test "$SNMP_DIST_SUBDIR" ; then @@ -529,7 +662,7 @@ fi AC_SUBST(ac_configure_args) -MOSTLYCLEANFILES='.*.cmd .*.flags *.o *.ko *.mod.c .depend .*.1.*' +MOSTLYCLEANFILES='.*.cmd .*.flags *.o *.ko *.mod.c .depend .*.1.* Modules.symvers Module.symvers' AC_SUBST(MOSTLYCLEANFILES) AC_OUTPUT