📄 lustre-build.m4
字号:
## 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_CANONICAL_SYSTEM## fixup $target_os for use in other places#AC_DEFUN([LB_CANONICAL_SYSTEM],[case $target_os in linux*) lb_target_os="linux" ;; darwin*) lb_target_os="darwin" ;; solaris*) lb_target_os="SunOS" ;;esacAC_SUBST(lb_target_os)])## LB_CHECK_FILE## Check for file existance even when cross compiling#AC_DEFUN([LB_CHECK_FILE],[AS_VAR_PUSHDEF([lb_File], [lb_cv_file_$1])dnlAC_CACHE_CHECK([for $1], lb_File,[if test -r "$1"; then AS_VAR_SET(lb_File, yes)else AS_VAR_SET(lb_File, no)fi])AS_IF([test AS_VAR_GET(lb_File) = yes], [$2], [$3])[]dnlAS_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## support for --with-foo, --with-foo-includes, and --with-foo-libs in# a single magical macro#AC_DEFUN([LB_ARG_LIBS_INCLUDES],[lb_pathvar="m4_bpatsubst([$2], -, _)"AC_MSG_CHECKING([for $1])AC_ARG_WITH([$2], AC_HELP_STRING([--with-$2=path], [path to $1]), [],[withval=$4])if test x$withval = xyes ; then eval "$lb_pathvar='$3'"else eval "$lb_pathvar='$withval'"fiAC_MSG_RESULT([${!lb_pathvar:-no}])if test x${!lb_pathvar} != x -a x${!lb_pathvar} != xno ; then AC_MSG_CHECKING([for $1 includes]) AC_ARG_WITH([$2-includes], AC_HELP_STRING([--with-$2-includes=path], [path to $1 includes]), [],[withval='yes']) lb_includevar="${lb_pathvar}_includes" if test x$withval = xyes ; then eval "${lb_includevar}='${!lb_pathvar}/include'" else eval "${lb_includevar}='$withval'" fi AC_MSG_RESULT([${!lb_includevar}]) AC_MSG_CHECKING([for $1 libs]) AC_ARG_WITH([$2-libs], AC_HELP_STRING([--with-$2-libs=path], [path to $1 libs]), [],[withval='yes']) lb_libvar="${lb_pathvar}_libs" if test x$withval = xyes ; then eval "${lb_libvar}='${!lb_pathvar}/lib'" else eval "${lb_libvar}='$withval'" fi AC_MSG_RESULT([${!lb_libvar}])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)]), [],[ case $lb_target_os in linux) with_sysio='yes' ;; *) with_sysio='no' ;; esac ])AC_MSG_CHECKING([location of libsysio])enable_sysio="$with_sysio"case x$with_sysio in xyes) AC_MSG_RESULT([internal]) LB_CHECK_FILE([$srcdir/libsysio/src/rmdir.c],[],[ AC_MSG_ERROR([A complete internal libsysio was not found.]) ]) LIBSYSIO_SUBDIR="libsysio" SYSIO="$PWD/libsysio" ;; xno) AC_MSG_RESULT([disabled]) ;; *) AC_MSG_RESULT([$with_sysio]) LB_CHECK_FILE([$with_sysio/lib/libsysio.a],[],[ AC_MSG_ERROR([A complete (built) external libsysio was not found.]) ]) SYSIO=$with_sysio with_sysio="yes" ;;esac# We have to configure even if we don't build here for make dist to workAC_CONFIG_SUBDIRS(libsysio)])## LB_PATH_LDISKFS## Handle internal/external ldiskfs#AC_DEFUN([LB_PATH_LDISKFS],[AC_ARG_WITH([ldiskfs], AC_HELP_STRING([--with-ldiskfs=path], [set path to ldiskfs source (default is included ldiskfs)]), [],[ if test x$linux25$enable_server = xyesyes ; then with_ldiskfs=yes else with_ldiskfs=no fi ])AC_MSG_CHECKING([location of ldiskfs])case x$with_ldiskfs in xyes) AC_MSG_RESULT([internal]) LB_CHECK_FILE([$srcdir/ldiskfs/lustre-ldiskfs.spec.in],[],[ AC_MSG_ERROR([A complete internal ldiskfs was not found.]) ]) LDISKFS_SUBDIR="ldiskfs" LDISKFS_DIR="$PWD/ldiskfs" ;; xno) AC_MSG_RESULT([disabled]) ;; *) AC_MSG_RESULT([$with_ldiskfs]) LB_CHECK_FILE([$with_ldiskfs/ldiskfs/linux/ldiskfs_fs.h],[],[ AC_MSG_ERROR([A complete (built) external ldiskfs was not found.]) ]) LDISKFS_DIR=$with_ldiskfs ;;esacAC_SUBST(LDISKFS_DIR)AC_SUBST(LDISKFS_SUBDIR)AM_CONDITIONAL(LDISKFS_ENABLED, test x$with_ldiskfs != xno)# We have to configure even if we don't build here for make dist to workAC_CONFIG_SUBDIRS(ldiskfs)])## LB_DEFINE_LDISKFS_OPTIONS## Enable config options related to ldiskfs. These are used both by ldiskfs# and lvfs (which includes ldiskfs headers.)#AC_DEFUN([LB_DEFINE_LDISKFS_OPTIONS],[ AC_DEFINE(CONFIG_LDISKFS_FS_MODULE, 1, [build ldiskfs as a module]) AC_DEFINE(CONFIG_LDISKFS_FS_XATTR, 1, [enable extended attributes for ldiskfs]) AC_DEFINE(CONFIG_LDISKFS_FS_POSIX_ACL, 1, [enable posix acls for ldiskfs]) AC_DEFINE(CONFIG_LDISKFS_FS_SECURITY, 1, [enable fs security for ldiskfs])])## LB_CONFIG_CRAY_XT3## Enable Cray XT3 features#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])## LB_CONFIG_BGL## Enable BGL features#AC_DEFUN([LB_CONFIG_BGL],[AC_MSG_CHECKING([whether to build BGL features])AC_ARG_ENABLE([bgl], AC_HELP_STRING([--enable-bgl], [enable building of BGL features]), [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) enable_doc='no' enable_tests='no' enable_server='no' enable_liblustre='no' enable_libreadline='no'fi])## Support for --enable-uoss#AC_DEFUN([LB_UOSS],[AC_MSG_CHECKING([whether to enable uoss])AC_ARG_ENABLE([uoss], AC_HELP_STRING([--enable-uoss], [enable userspace OSS]), [enable_uoss='yes'],[enable_uoss='no'])AC_MSG_RESULT([$enable_uoss])if test x$enable_uoss = xyes; then AC_DEFINE(UOSS_SUPPORT, 1, Enable user-level OSS) AC_DEFINE(LUSTRE_ULEVEL_MT, 1, Multi-threaded user-level lustre port) enable_uoss='yes' enable_ulevel_mt='yes' enable_modules='no' enable_client='no' enable_tests='no' enable_liblustre='no' with_ldiskfs='no'fiAC_SUBST(enable_uoss)])## Support for --enable-posix-osd#AC_DEFUN([LB_POSIX_OSD],[AC_MSG_CHECKING([whether to enable posix osd])AC_ARG_ENABLE([posix-osd], AC_HELP_STRING([--enable-posix-osd], [enable using of posix osd]), [enable_posix_osd='yes'],[enable_posix_osd='no'])AC_MSG_RESULT([$enable_posix_osd])if test x$enable_uoss = xyes -a x$enable_posix_osd = xyes ; then AC_DEFINE(POSIX_OSD, 1, Enable POSIX OSD) posix_osd='yes'fiAM_CONDITIONAL(POSIX_OSD_ENABLED, test x$posix_osd = xyes)])## LB_PATH_DMU# Support for --with-dmu#AC_DEFUN([LB_PATH_DMU],[AC_MSG_CHECKING([whether to enable DMU])AC_ARG_WITH([dmu], AC_HELP_STRING([--with-dmu=path], [set path to a DMU tree (default is included zfs-lustre)]), [ DMU_SRC=$with_dmu ], [ DMU_SRC="$PWD/zfs-lustre" ])if test x$enable_uoss = xyes -a x$enable_posix_osd != xyes; then AC_DEFINE(DMU_OSD, 1, Enable DMU OSD) AC_MSG_RESULT([yes]) LB_CHECK_FILE([$DMU_SRC/src/.patched],[],[ AC_MSG_ERROR([A complete (patched) DMU tree was not found.]) ]) AC_CONFIG_SUBDIRS(zfs-lustre) dmu_osd='yes'else AC_MSG_RESULT([no])fiAC_SUBST(DMU_SRC)AM_CONDITIONAL(DMU_OSD_ENABLED, test x$dmu_osd = xyes)])## LB_PATH_SNMP## check for in-tree snmp support#AC_DEFUN([LB_PATH_SNMP],[LB_CHECK_FILE([$srcdir/snmp/lustre-snmp.c],[SNMP_DIST_SUBDIR="snmp"])AC_SUBST(SNMP_DIST_SUBDIR)AC_SUBST(SNMP_SUBDIR)])## 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]), [],[ LC_TARGET_SUPPORTED([ enable_modules='yes' ],[ enable_modules='no' ]) ])AC_MSG_RESULT([$enable_modules ($target_os)])if test x$enable_modules = xyes ; then case $target_os in linux*) LB_PROG_LINUX LN_PROG_LINUX LC_PROG_LINUX ;; darwin*) LB_PROG_DARWIN ;; *) # This is strange - Lustre supports a target we don't AC_MSG_ERROR([Modules are not supported on $target_os]) ;; esacfi])## 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'])AC_MSG_RESULT([$enable_utils])if test x$enable_utils = xyes ; then LB_CONFIG_INIT_SCRIPTSfi])## 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' ])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=0if 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]) fifiAC_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/Rules"AC_SUBST(INCLUDE_RULES)])## LB_PATH_DEFAULTS## 'fixup' default paths#AC_DEFUN([LB_PATH_DEFAULTS],[# directories for binariesAC_PREFIX_DEFAULT([/usr])sysconfdir='/etc'AC_SUBST(sysconfdir)# Directories for documentation and demos.docdir='${datadir}/doc/$(PACKAGE)'AC_SUBST(docdir)LN_PATH_DEFAULTSLC_PATH_DEFAULTS])## LB_PROG_CC## checks on the C compiler#AC_DEFUN([LB_PROG_CC],[AC_PROG_RANLIBAC_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# FIXMEAC_CHECK_DECL([__i386__], [], [if test x$enable_bgl != xyes; thenAC_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"])fi])CPPFLAGS="-I\$(top_builddir)/lnet/include -I\$(top_srcdir)/lnet/include -I\$(top_builddir)/lustre/include -I\$(top_srcdir)/lustre/include $CPPFLAGS"LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1"AC_SUBST(LLCPPFLAGS)LLCFLAGS="-g -Wall -fPIC"AC_SUBST(LLCFLAGS)# everyone builds against lnet and lustreEXTRA_KCFLAGS="$EXTRA_KCFLAGS -g -I$PWD/lnet/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(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(CRAY_XT3, test x$enable_cray_xt3 = "xyes")AM_CONDITIONAL(SUNOS, test x$lb_target_os = "xSunOS")# this lets lustre cancel libsysio, per-branch or if liblustre is# disabledif test "x$LIBSYSIO_SUBDIR" = xlibsysio ; then if test "x$with_sysio" != xyes ; then SYSIO="" LIBSYSIO_SUBDIR="" fifiAC_SUBST(LIBSYSIO_SUBDIR)AC_SUBST(SYSIO)LB_LINUX_CONDITIONALSLB_DARWIN_CONDITIONALSLN_CONDITIONALSLC_CONDITIONALS])## LB_CONFIG_FILES## build-specific config files#AC_DEFUN([LB_CONFIG_FILES],[AC_CONFIG_FILES([MakefileautoMakefile][Rules:build/Rules.in]AC_PACKAGE_TARNAME[.spec])])## LB_CONFIGURE## main configure steps#AC_DEFUN([LB_CONFIGURE],[LB_CANONICAL_SYSTEMLB_INCLUDE_RULESLB_CONFIG_CRAY_XT3LB_CONFIG_BGLLB_PATH_DEFAULTSLB_PROG_CCLB_UOSSLB_POSIX_OSDLB_PATH_DMULB_CONFIG_DOCSLB_CONFIG_UTILSLB_CONFIG_TESTSLC_CONFIG_CLIENT_SERVER# three macros for cmd3 LC_CONFIG_SPLITLC_CONFIG_LDISKFSLN_CONFIG_CDEBUGLB_CONFIG_MODULESLB_PATH_LIBSYSIOLB_PATH_SNMPLB_PATH_LDISKFSLC_CONFIG_LIBLUSTRELN_CONFIGURELC_CONFIGUREif test "$SNMP_DIST_SUBDIR" ; then LS_CONFIGUREfiLB_CONDITIONALSLB_CONFIG_HEADERSLB_CONFIG_FILESLN_CONFIG_FILESLC_CONFIG_FILESif test "$SNMP_DIST_SUBDIR" ; then LS_CONFIG_FILESfiAC_SUBST(ac_configure_args)MOSTLYCLEANFILES='.*.cmd .*.flags *.o *.ko *.mod.c .depend .*.1.* Modules.symvers Module.symvers'AC_SUBST(MOSTLYCLEANFILES)AC_OUTPUTcat <<_ACEOFCC: $CCLD: $LDCPPFLAGS: $CPPFLAGSLLCPPFLAGS: $LLCPPFLAGSCFLAGS: $CFLAGSEXTRA_KCFLAGS: $EXTRA_KCFLAGSLLCFLAGS: $LLCFLAGSType 'make' to build Lustre._ACEOF])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -