Whamcloud - gitweb
LU-11838 scrub: handle s_uuid change to uuid_t
[fs/lustre-release.git] / config / lustre-build.m4
index da197ba..b0bc8b3 100644 (file)
@@ -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'
@@ -199,6 +117,30 @@ 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
 #
 # check for in-tree snmp support
@@ -252,7 +194,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 +251,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 +271,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 +295,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,14 +329,7 @@ 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)
+CPPFLAGS="-I$PWD/$LIBCFS_INCLUDE_DIR -I$PWD/lnet/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)
@@ -412,20 +340,89 @@ 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 x$RHEL_KERNEL = xyes])
+AM_CONDITIONAL([SUSE], [test x$SUSE_KERNEL = xyes])
+AM_CONDITIONAL([UBUNTU], [test x$UBUNTU_KERNEL = xyes])
 
 # Sanity check for PCLMULQDQ instruction availability
 # PCLMULQDQ instruction is a new instruction available beginning with
@@ -439,7 +436,7 @@ AS_IF([test x$target_cpu = "xx86_64" -a x$target_vendor != "xk1om"],
 LIBCFS_CONDITIONALS
 LN_CONDITIONALS
 LC_CONDITIONALS
-]) # LB_CONTITIONALS
+]) # LB_CONDITIONALS
 
 #
 # LB_CONFIG_FILES
@@ -454,9 +451,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 +504,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 +517,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 +555,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 +566,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 +573,35 @@ 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
 
 RPMBUILD_BINARY_ARGS=$RPMBINARGS
-RPMBUILD_SOURCE_ARGS=$RPMSRCARGS
 
 AC_SUBST(RPMBUILD_BINARY_ARGS)
-AC_SUBST(RPMBUILD_SOURCE_ARGS)
 ]) # LB_CONFIG_RPMBUILD_OPTIONS
 
 #
@@ -625,7 +618,6 @@ LB_CONFIG_DIST
 
 LB_DOWNSTREAM_RELEASE
 LB_USES_DPKG
-LB_BUILDID
 
 LB_LIBCFS_DIR
 
@@ -634,10 +626,14 @@ 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,12 +643,10 @@ LB_CONFIG_SERVERS
 # Tests depends from utils (multiop from liblustreapi)
 AS_IF([test "x$enable_utils" = xno], [enable_tests="no"])
 
-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
 
@@ -686,10 +680,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