X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=config%2Flustre-build.m4;h=ed23616fddcc3c709698b985f92a82b4213caf66;hp=39f8435b1dd43b03ecec7daf6483abda25aee555;hb=9a085781b34d3dbe46c61db21c2681a0d31136de;hpb=35b968d916d8bf0f596562721423397b7fae7b36 diff --git a/config/lustre-build.m4 b/config/lustre-build.m4 index 39f8435..ed23616 100644 --- a/config/lustre-build.m4 +++ b/config/lustre-build.m4 @@ -1,14 +1,4 @@ # -# LB_CHECK_VERSION -# -# Verify that LUSTRE_VERSION was defined properly -# -AC_DEFUN([LB_CHECK_VERSION], [ -AS_IF([test "LUSTRE_VERSION" = "LUSTRE""_VERSION"], - [AC_MSG_ERROR([This script was not built with a version number.])]) -]) # LB_CHECK_VERSION - -# # LB_CANONICAL_SYSTEM # # fixup $target_os for use in other places @@ -23,89 +13,17 @@ AC_SUBST(lb_target_os) ]) # LB_CANONICAL_SYSTEM # -# LB_DOWNSTREAM_RELEASE +# LB_DOWNSTREAM_RELEASE (DEPRECATED) # 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 - AS_IF([test -f META], - [DOWNSTREAM_RELEASE=$(sed -ne '/^LOCAL_VERSION =/s/.*= *//p' META)]) - ]) -AC_SUBST(DOWNSTREAM_RELEASE) -]) # LB_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_CACHE_CHECK([for buildid], [lb_cv_buildid], [ -lb_cv_buildid="" -AS_IF([git branch >/dev/null 2>&1], [ - 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 - - if test "$ver" != "$VERSION"; then - AC_MSG_WARN([most recent tag found: $ver does not match current version $VERSION.]) - fi - - if test "$ffw" != "0"; then - lb_cv_buildid="$hash" - fi -], [test -f META], [ - lb_cv_buildid=$(sed -ne '/^BUILDID =/s/.*= *//p' META) -]) -]) -AS_IF([test -z "$lb_cv_buildid"], [ - 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. -]) -]) -BUILDID=$lb_cv_buildid -AC_SUBST(BUILDID) -]) # LB_BUILDID +[AC_ARG_WITH([downstream-release],, + AC_MSG_ERROR([--downstream-release was deprecated. Please read Documentation/versioning.txt.]) +)]) # LB_DOWNSTREAM_RELEASE # # LB_CHECK_FILE # -# Check for file existance even when cross compiling +# Check for file existence even when cross compiling # $1 - file to check # $2 - do 'yes' # $3 - do 'no' @@ -185,18 +103,29 @@ AC_SUBST(LUSTREIOKIT_SUBDIR) AM_CONDITIONAL([BUILD_LUSTREIOKIT], [test "x$enable_iokit" = xyes]) ]) # LB_PATH_LUSTREIOKIT -# Define no libcfs by default. -AC_DEFUN([LB_LIBCFS_DIR], [ -AS_IF([test "x$libcfs_is_module" = xyes], [ - LIBCFS_INCLUDE_DIR="libcfs/include" - LIBCFS_SUBDIR="libcfs" - ], [ - LIBCFS_INCLUDE_DIR="lnet/include" - LIBCFS_SUBDIR="" - ]) -AC_SUBST(LIBCFS_INCLUDE_DIR) -AC_SUBST(LIBCFS_SUBDIR) -]) # LB_LIBCFS_DIR +# +# LB_LIBMOUNT +# +# Check whether build with libmount for mount.lustre. +# libmount is part of the util-linux since v2.18. +# We need it to manipulate utab file. +# +AC_DEFUN([LB_LIBMOUNT], [ +AC_CHECK_HEADER([libmount/libmount.h], [ + AC_CHECK_LIB([mount], [mnt_update_set_fs], [ + LDLIBMOUNT="-lmount" + AC_SUBST(LDLIBMOUNT) + AC_DEFINE(HAVE_LIBMOUNT, 1, [build with libmount]) + with_libmount="yes" + ],[with_libmount="no"]) +], [with_libmount="no"]) +AC_MSG_CHECKING([whether to build with libmount]) +AS_IF([test "x$with_libmount" = xyes], [ + AC_MSG_RESULT([yes]) +], [ + AC_MSG_RESULT([no]) +]) +]) # LB_LIBMOUNT # # LB_PATH_SNMP @@ -252,7 +181,6 @@ AC_ARG_ENABLE([utils], [disable building of Lustre utility programs]), [], [enable_utils="yes"]) AC_MSG_RESULT([$enable_utils]) -AS_IF([test "x$enable_utils" = xyes], [LB_CONFIG_INIT_SCRIPTS]) ]) # LB_CONFIG_UTILS # @@ -310,24 +238,18 @@ AC_SUBST(ENABLE_DOC) ]) # LB_CONFIG_DOCS # -# LB_CONFIG_INIT_SCRIPTS +# LB_CONFIG_MANPAGES # -# our init scripts only work on red hat linux +# Build manpages? # -AC_DEFUN([LB_CONFIG_INIT_SCRIPTS], [ -ENABLE_INIT_SCRIPTS=0 -AS_IF([test x$enable_utils = xyes], [ - AC_CACHE_CHECK([whether to install init scripts], [lb_cv_enable_init_scripts], [ - # our scripts only work on red hat systems - AS_IF([test -f /etc/init.d/functions -a -f /etc/sysconfig/network], - [lb_cv_enable_init_scripts="yes"], - [lb_cv_enable_init_scripts="no"]) - ]) - AS_IF([test "x$lb_cv_enable_init_scripts" = xyes], - [ENABLE_INIT_SCRIPTS=1]) -]) -AC_SUBST(ENABLE_INIT_SCRIPTS) -]) +AC_DEFUN([LB_CONFIG_MANPAGES], [ +AC_MSG_CHECKING([whether to build Lustre manpages]) +AC_ARG_ENABLE([manpages], + AC_HELP_STRING([--disable-manpages], + [skip creation and inclusion of man pages (default is enable)]), + [], [enable_manpages="yes"]) +AC_MSG_RESULT([$enable_manpages]) +]) # LB_CONFIG_MANPAGES # # LB_CONFIG_HEADERS @@ -336,8 +258,8 @@ AC_SUBST(ENABLE_INIT_SCRIPTS) # AC_DEFUN([LB_CONFIG_HEADERS], [ AC_CONFIG_HEADERS([config.h]) -CPPFLAGS="-include $PWD/config.h $CPPFLAGS" -EXTRA_KCFLAGS="-include $PWD/config.h $EXTRA_KCFLAGS" +CPPFLAGS="-include $PWD/undef.h -include $PWD/config.h $CPPFLAGS" +EXTRA_KCFLAGS="-include $PWD/undef.h -include $PWD/config.h $EXTRA_KCFLAGS" AC_SUBST(EXTRA_KCFLAGS) ]) # LB_CONFIG_HEADERS @@ -360,11 +282,11 @@ AC_DEFUN([LB_PATH_DEFAULTS], [ # directories for binaries AC_PREFIX_DEFAULT([/usr]) -sysconfdir='$(CROSS_PATH)/etc' +sysconfdir='/etc' AC_SUBST(sysconfdir) # Directories for documentation and demos. -docdir='$(datadir)/doc/$(PACKAGE)' +docdir='${datadir}/doc/$(PACKAGE)' AC_SUBST(docdir) LIBCFS_PATH_DEFAULTS @@ -394,52 +316,105 @@ AS_IF([test $target_cpu = powerpc64], [ CC="$CC -m64" ]) -CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include $CPPFLAGS" - -LLCPPFLAGS="-D_LARGEFILE64_SOURCE=1" -AC_SUBST(LLCPPFLAGS) - -# Add _GNU_SOURCE for strnlen on linux -LLCFLAGS="-g -Wall -fPIC -D_GNU_SOURCE" -AC_SUBST(LLCFLAGS) +# UAPI headers, libcfs/include for util headers, lustre/include for liblustreapi and friends +CPPFLAGS="-I$PWD/libcfs/include -I$PWD/lnet/include/uapi -I$PWD/lustre/include -I$PWD/lustre/include/uapi $CPPFLAGS" CCASFLAGS="-Wall -fPIC -D_GNU_SOURCE" AC_SUBST(CCASFLAGS) -# everyone builds against lnet and lustre -EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/include -I$PWD/lustre/include" +# everyone builds against lnet and lustre kernel headers +EXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/libcfs/include -I$PWD/libcfs/include/libcfs -I$PWD/lnet/include/uapi -I$PWD/lnet/include -I$PWD/lustre/include/uapi -I$PWD/lustre/include" AC_SUBST(EXTRA_KCFLAGS) ]) # LB_PROG_CC # +# Check if gcc supports -Wno-format-truncation +# +# To supress many warnings with gcc7 +# +AC_DEFUN([LB_CC_NO_FORMAT_TRUNCATION], [ + AC_MSG_CHECKING([for -Wno-format-truncation support]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wno-format-truncation" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Wno-format-truncation" + AC_SUBST(EXTRA_KCFLAGS) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" +]) + +# +# Check if gcc supports -Wno-stringop-truncation +# +# To supress many warnings with gcc8 +# +AC_DEFUN([LB_CC_NO_STRINGOP_TRUNCATION], [ + AC_MSG_CHECKING([for -Wno-stringop-truncation support]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wno-stringop-truncation" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Wno-stringop-truncation" + AC_SUBST(EXTRA_KCFLAGS) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" +]) + +# +# Check if gcc supports -Wno-stringop-overflow +# +# To supress many warnings with gcc8 +# +AC_DEFUN([LB_CC_NO_STRINGOP_OVERFLOW], [ + AC_MSG_CHECKING([for -Wno-stringop-overflow support]) + + saved_flags="$CFLAGS" + CFLAGS="$CFLAGS -Wno-stringop-overflow" + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ + EXTRA_KCFLAGS="$EXTRA_KCFLAGS -Wno-stringop-overflow" + AC_SUBST(EXTRA_KCFLAGS) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + + CFLAGS="$saved_flags" +]) + +# # LB_CONDITIONALS # # AM_CONDITIONAL instances for everything # (so that portals/lustre can disable some if needed) # AC_DEFUN([LB_CONDITIONALS], [ +AM_CONDITIONAL([PLUGINS], [test x$enable_shared = xyes]) 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([INIT_SCRIPTS], [test x$ENABLE_INIT_SCRIPTS = x1]) +AM_CONDITIONAL([MANPAGES], [test x$enable_manpages = xyes]) AM_CONDITIONAL([LINUX], [test x$lb_target_os = xlinux]) -AM_CONDITIONAL([USES_DPKG], [test x$uses_dpkg = xyes]) AM_CONDITIONAL([USE_QUILT], [test x$use_quilt = xyes]) +AM_CONDITIONAL([RHEL], [test -f /etc/redhat-release]) +AM_CONDITIONAL([SUSE], [test -f /etc/SUSE-brand -o -f /etc/SuSE-release]) +AM_CONDITIONAL([UBUNTU], [test x$UBUNTU_KERNEL = xyes]) -# Sanity check for PCLMULQDQ instruction availability -# PCLMULQDQ instruction is a new instruction available beginning with -# the all new Core processor family based on the 32nm microarchitecture -# codename Westmere. So, $target_cpu = x86_64 should have this instruction -# except MIC microarchitecture (k1om). -AM_CONDITIONAL(HAVE_PCLMULQDQ, test x$target_cpu = "xx86_64" -a x$target_vendor != "xk1om") -AS_IF([test x$target_cpu = "xx86_64" -a x$target_vendor != "xk1om"], - [AC_DEFINE(HAVE_PCLMULQDQ, 1, [have PCLMULQDQ instruction])]) - -LIBCFS_CONDITIONALS LN_CONDITIONALS LC_CONDITIONALS -]) # LB_CONTITIONALS +]) # LB_CONDITIONALS # # LB_CONFIG_FILES @@ -454,9 +429,6 @@ AC_DEFUN([LB_CONFIG_FILES], [ [Rules:build/Rules.in] AC_PACKAGE_TARNAME[.spec] AC_PACKAGE_TARNAME[-dkms.spec] - contrib/Makefile - contrib/lbuild/Makefile - contrib/scripts/Makefile ldiskfs/Makefile ldiskfs/autoMakefile lustre-iokit/Makefile @@ -510,8 +482,12 @@ AS_IF([test x$enable_ldiskfs = xno -a x$enable_zfs = xno], [ AC_MSG_CHECKING([whether to build Lustre server support]) AC_MSG_RESULT([$enable_server]) -AS_IF([test x$enable_server = xyes], - [AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server])]) +AS_IF([test x$enable_server = xyes], [ + AC_DEFINE(HAVE_SERVER_SUPPORT, 1, [support server]) + AC_SUBST(ENABLE_SERVER, yes) +], [ + AC_SUBST(ENABLE_SERVER, no) +]) ]) # LB_CONFIG_SERVERS # @@ -519,28 +495,32 @@ AS_IF([test x$enable_server = xyes], # # The purpose of this function is to assemble command line options # for the rpmbuild command based on the options passed to the configure -# script, and also upon the descisions that configure makes based on +# script, and also upon the decisions that configure makes based on # the tests that it runs. # These strings can be passed to rpmbuild on the command line # in the Make targets named "rpms" and "srpm". # AC_DEFUN([LB_CONFIG_RPMBUILD_OPTIONS], [ RPMBINARGS= -RPMSRCARGS= CONFIGURE_ARGS= eval set -- $ac_configure_args for arg; do case $arg in + --*dir=* ) ;; + -C | --cache-file=* ) ;; + --prefix=* | --*-prefix=* ) ;; --enable-dist ) ;; - --with-release=* ) ;; --with-kmp-moddir=* ) ;; --with-linux=* | --with-linux-obj=* ) ;; + --enable-shared | --disable-shared ) ;; + --enable-static | --disable-static ) ;; --enable-ldiskfs | --disable-ldiskfs ) ;; --enable-modules | --disable-modules ) ;; --enable-server | --disable-server ) ;; --enable-tests | --disable-tests ) ;; --enable-utils | --disable-utils ) ;; --enable-iokit | --disable-iokit ) ;; + --enable-manpages | --disable-manpages ) ;; * ) CONFIGURE_ARGS="$CONFIGURE_ARGS '$arg'" ;; esac done @@ -553,27 +533,6 @@ if test -n "$LINUX" ; then RPMBINARGS="$RPMBINARGS --define \"kobjdir $LINUX_OBJ\"" fi fi -if test -n "$KMP_MODDIR" ; then - RPMBINARGS="$RPMBINARGS --define \"kmoddir $KMP_MODDIR\"" -fi -if test -n "$CROSS_PATH" ; then - if test x$enable_server = xyes ; then - echo -e "\n" - "*** Don't support cross compilation for the Intel(R) Xeon Phi(TM) card.\n" - exit 1 - fi - CROSS_SUFFIX="-mic" - RPMBINARGS="$RPMBINARGS --define \"post_script build/gen_filelist.sh\"" - RPMBINARGS="$RPMBINARGS --define \"cross_path $CROSS_PATH\"" - RPMBINARGS="$RPMBINARGS --define \"rootdir %{cross_path}\"" - RPMBINARGS="$RPMBINARGS --define \"_prefix %{cross_path}/usr\"" - RPMBINARGS="$RPMBINARGS --define \"_mandir %{_prefix}/share/man\"" - RPMBINARGS="$RPMBINARGS --define \"_sysconfdir %{cross_path}/etc\"" - RPMBINARGS="$RPMBINARGS --define \"make_args $CROSS_VARS\"" - if test x$CC_TARGET_ARCH = x"x86_64-k1om-linux" ; then - RPMBINARGS="$RPMBINARGS --define \"cross_requires intel-mic-gpl\"" - fi -fi if test x$enable_modules != xyes ; then RPMBINARGS="$RPMBINARGS --without lustre_modules" fi @@ -585,9 +544,6 @@ if test x$enable_utils != xyes ; then fi if test x$enable_server != xyes ; then RPMBINARGS="$RPMBINARGS --without servers" - if test -n "$CROSS_SUFFIX" ; then - RPMBINARGS="$RPMBINARGS --define \"lustre_name lustre-client$CROSS_SUFFIX\"" - fi fi if test x$enable_ldiskfs != xyes ; then RPMBINARGS="$RPMBINARGS --without ldiskfs" @@ -595,20 +551,38 @@ fi if test x$enable_zfs = xyes ; then RPMBINARGS="$RPMBINARGS --with zfs" fi +if test x$enable_gss_keyring = xyes ; then + RPMBINARGS="$RPMBINARGS --with gss_keyring --with gss" +fi +if test x$enable_gss = xyes ; then + RPMBINARGS="$RPMBINARGS --with gss" + AC_SUBST(ENABLE_GSS, yes) +elif test x$enable_gss = xno ; then + RPMBINARGS="$RPMBINARGS --without gss" + AC_SUBST(ENABLE_GSS, no) +fi if test x$enable_iokit != xyes ; then RPMBINARGS="$RPMBINARGS --without lustre_iokit" - RPMSRCARGS="$RPMSRCARGS --without lustre_iokit" fi -if test x$BUILD_DLC != xyes ; then - RPMBINARGS="$RPMBINARGS --without lnet_dlc" - RPMSRCARGS="$RPMSRCARGS --without lnet_dlc" +if test x$enable_snmp != xyes ; then + RPMBINARGS="$RPMBINARGS --without snmp" +fi +if test x$enable_manpages != xyes ; then + RPMBINARGS="$RPMBINARGS --without manpages" +fi +if test x$enable_shared != xyes ; then + RPMBINARGS="$RPMBINARGS --without shared" +fi +if test x$enable_static != xyes ; then + RPMBINARGS="$RPMBINARGS --without static" +fi +if test x$enable_mpitests != xyes ; then + RPMBINARGS="$RPMBINARGS --without mpi" fi RPMBUILD_BINARY_ARGS=$RPMBINARGS -RPMBUILD_SOURCE_ARGS=$RPMSRCARGS AC_SUBST(RPMBUILD_BINARY_ARGS) -AC_SUBST(RPMBUILD_SOURCE_ARGS) ]) # LB_CONFIG_RPMBUILD_OPTIONS # @@ -625,19 +599,20 @@ LB_CONFIG_DIST LB_DOWNSTREAM_RELEASE LB_USES_DPKG -LB_BUILDID - -LB_LIBCFS_DIR LB_INCLUDE_RULES LB_PATH_DEFAULTS LB_PROG_CC +LB_CC_NO_FORMAT_TRUNCATION +LB_CC_NO_STRINGOP_TRUNCATION +LB_CC_NO_STRINGOP_OVERFLOW LC_OSD_ADDON LB_CONFIG_DOCS +LB_CONFIG_MANPAGES LB_CONFIG_UTILS LB_CONFIG_TESTS LC_CONFIG_CLIENT @@ -647,14 +622,10 @@ LB_CONFIG_SERVERS # Tests depends from utils (multiop from liblustreapi) AS_IF([test "x$enable_utils" = xno], [enable_tests="no"]) -# two macros for cmd3 -m4_ifdef([LC_CONFIG_SPLIT], [LC_CONFIG_SPLIT]) -m4_ifdef([LC_NODEMAP_PROC_DEBUG], [LC_NODEMAP_PROC_DEBUG]) -LN_CONFIG_CDEBUG +LIBCFS_CONFIG_CDEBUG LC_QUOTA -LN_CONFIG_USERSPACE - +LB_LIBMOUNT LB_PATH_SNMP LB_PATH_LUSTREIOKIT @@ -688,10 +659,8 @@ cat <<_ACEOF CC: $CC LD: $LD CPPFLAGS: $CPPFLAGS -LLCPPFLAGS: $LLCPPFLAGS CFLAGS: $CFLAGS EXTRA_KCFLAGS: $EXTRA_KCFLAGS -LLCFLAGS: $LLCFLAGS Type 'make' to build Lustre. _ACEOF