Per RFC initially started here:
http://www.open-mpi.org/community/lists/devel/2010/02/7496.php Increase the required versions of AM, AC, and LT: * Autoconf: 2.65 * Automake: 1.11.1 * Libtool: 2.2.6b And therefore removed a bunch of patches that we used to apply to make older versions of these tools work. Also updated the HACKING document to match these version numbers, specifically mentioned Mercurial in a few places, and removed some outdated language about running autogen.sh in subdirectories. This commit was SVN r22896.
Этот коммит содержится в:
родитель
b2e6c02e22
Коммит
319fb12504
52
HACKING
52
HACKING
@ -20,7 +20,7 @@ Overview
|
||||
|
||||
This file is here for those who are building/exploring OMPI in its
|
||||
source code form, most likely through a developer's tree (i.e., a
|
||||
Subversion checkout).
|
||||
Subversion or Mercurial checkout).
|
||||
|
||||
|
||||
Debugging vs. Optimized Builds
|
||||
@ -31,8 +31,10 @@ build includes a lot of debugging features. This happens
|
||||
automatically when when configure detects the hidden ".svn" Subversion
|
||||
meta directory (that is present in all Subversion checkouts) in your
|
||||
source tree, and therefore activates a number of developer-only
|
||||
debugging features in the Open MPI code base. The same is true if you
|
||||
have a Mercurial checkout (with the hidden .hg meta directory).
|
||||
debugging features in the Open MPI code base.
|
||||
|
||||
The same debugging features are activated if you build in a Mercurial
|
||||
clone (with the hidden ".hg" meta directory).
|
||||
|
||||
By definition, debugging builds will perform [much] slower than
|
||||
optimized builds of Open MPI. You should *NOT* conduct timing tests
|
||||
@ -105,10 +107,11 @@ shell$ automake --version
|
||||
shell$ libtoolize --version
|
||||
|
||||
To strengthen the above point: the core Open MPI developers typically
|
||||
use very, very recent versions of the GNU tools. Little checking is
|
||||
done to ensure that the code base is compatible with older versions of
|
||||
these tools. If you have a problem, try upgrading your GNU tools to
|
||||
the latest versions and try again.
|
||||
use very, very recent versions of the GNU tools. There are known bugs
|
||||
in older versions of the GNU tools that Open MPI no longer compensates
|
||||
for (it seemed senseless to indefinitely support patches for ancient
|
||||
versions of Autoconf, for example). You *WILL* have problems if you
|
||||
do not use recent versions of the GNU tools.
|
||||
|
||||
If you need newer versions, you are *strongly* encouraged to heed the
|
||||
following advice:
|
||||
@ -157,7 +160,7 @@ NOTE: On MacOS/X, the default "libtool" program is different than the
|
||||
4. All four packages require two simple commands to build and
|
||||
install (where PREFIX is the prefix discussed in 3, above).
|
||||
|
||||
shell$ cd m4-1.4.11
|
||||
shell$ cd m4-1.4.13
|
||||
shell$ ./configure --prefix=PREFIX
|
||||
shell$ make; make install
|
||||
|
||||
@ -167,14 +170,14 @@ NOTE: On MacOS/X, the default "libtool" program is different than the
|
||||
--> If you are using the csh or tcsh shells, be sure to run the
|
||||
"rehash" command after you install each package.
|
||||
|
||||
shell$ cd ../autoconf-2.63
|
||||
shell$ cd ../autoconf-2.65
|
||||
shell$ ./configure --prefix=PREFIX
|
||||
shell$ make; make install
|
||||
|
||||
--> If you are using the csh or tcsh shells, be sure to run the
|
||||
"rehash" command after you install each package.
|
||||
|
||||
shell$ cd ../automake-1.10.1
|
||||
shell$ cd ../automake-1.11.1
|
||||
shell$ ./configure --prefix=PREFIX
|
||||
shell$ make; make install
|
||||
|
||||
@ -218,35 +221,6 @@ NOTE: On MacOS/X, the default "libtool" program is different than the
|
||||
5b. You do *NOT* need to re-run autogen.sh if you modify a
|
||||
Makefile.am.
|
||||
|
||||
5c. Note that "autogen.sh" automatically traverses the entire OMPI
|
||||
tree, running the GNU tools in all MCA component directories.
|
||||
This is not always necessary. As you become more familiar with
|
||||
the OMPI sources, you will come to understand the when you only
|
||||
need to re-generate the top-level configure script, and when
|
||||
you need to re-generate *all* configure scripts (it's
|
||||
complicated -- not described here -- when in doubt, do them
|
||||
all).
|
||||
|
||||
If you only need to re-generate the top-level configure script,
|
||||
you can run:
|
||||
|
||||
shell$ autogen.sh -l
|
||||
|
||||
(i.e., "local" mode) which will prevent autogen.sh from
|
||||
traversing all the MCA component directories.
|
||||
|
||||
5d. Similarly, if you only need to regenerate the configure script
|
||||
in a single MCA component directory (and that component has a
|
||||
"configure.stub" file), cd into that component's directory and
|
||||
run autogen.sh in there directly:
|
||||
|
||||
shell$ cd src/mca/pml/teg
|
||||
shell$ ../../../../autogen.sh
|
||||
|
||||
This does *not* work if the component has a "configure.m4"
|
||||
file. If a component's configure.m4 file changes, you will
|
||||
need to run "autogen.sh" from the top-level directory.
|
||||
|
||||
Use of Flex
|
||||
===========
|
||||
|
||||
|
150
autogen.sh
150
autogen.sh
@ -59,9 +59,9 @@ if test ! -z "$AUTOMAKE"; then
|
||||
ompi_automake_search="$AUTOMAKE"
|
||||
fi
|
||||
|
||||
ompi_automake_version="1.9.6"
|
||||
ompi_autoconf_version="2.59"
|
||||
ompi_libtool_version="1.5.22"
|
||||
ompi_automake_version="1.11.1"
|
||||
ompi_autoconf_version="2.65"
|
||||
ompi_libtool_version="2.2.6b"
|
||||
|
||||
|
||||
##############################################################################
|
||||
@ -442,89 +442,11 @@ EOF
|
||||
|
||||
echo "** Adjusting libltdl for OMPI :-("
|
||||
|
||||
echo " ++ patching for argz bugfix in libtool 1.5"
|
||||
cd opal/libltdl
|
||||
if test "`grep 'while ((before >= *pargz) && (before[-1] != LT_EOS_CHAR))' ltdl.c`" != ""; then
|
||||
patch -N -p0 <<EOF
|
||||
--- ltdl.c.old 2003-11-26 16:42:17.000000000 -0500
|
||||
+++ ltdl.c 2003-12-03 17:06:27.000000000 -0500
|
||||
@@ -682,7 +682,7 @@
|
||||
/* This probably indicates a programmer error, but to preserve
|
||||
semantics, scan back to the start of an entry if BEFORE points
|
||||
into the middle of it. */
|
||||
- while ((before >= *pargz) && (before[-1] != LT_EOS_CHAR))
|
||||
+ while ((before > *pargz) && (before[-1] != LT_EOS_CHAR))
|
||||
--before;
|
||||
|
||||
{
|
||||
EOF
|
||||
#'
|
||||
rm -f ltdl.c.orig
|
||||
rm -f ltdl.c.rej
|
||||
else
|
||||
echo " -- your libtool doesn't need this! yay!"
|
||||
fi
|
||||
cd ../..
|
||||
echo " ++ patching 64-bit OS X bug in ltmain.sh"
|
||||
if test ! -z "`grep otool config/ltmain.sh`" -a \
|
||||
-z "`grep otool64 config/ltmain.sh`"; then
|
||||
patch -N -p0 < config/ltmain_otool.diff
|
||||
rm -f config/ltmain.sh.orig
|
||||
rm -f config/ltmain.sh.rej
|
||||
else
|
||||
echo " -- your libtool doesn't need this! yay!"
|
||||
fi
|
||||
|
||||
echo " ++ RTLD_GLOBAL in libltdl"
|
||||
if test -r opal/libltdl/loaders/dlopen.c && \
|
||||
test ! -z "`grep 'filename, LT_LAZY_OR_NOW' opal/libltdl/loaders/dlopen.c`"; then
|
||||
patch -N -p0 < config/libltdl_dlopen_global.diff
|
||||
rm -f opal/libltdl/loaders/dlopen.c.rej
|
||||
else
|
||||
echo " -- your libltdl doesn't need this! yay!"
|
||||
fi
|
||||
if grep 'chmod -w \.' configure ; then
|
||||
echo " ++ patching configure for broken -c/-o compiler test"
|
||||
sed -e 's/chmod -w \./#OMPI\/MPI FIX: chmod -w ./' \
|
||||
configure > configure.new
|
||||
mv configure.new configure
|
||||
chmod a+x configure
|
||||
fi
|
||||
echo " ++ preopen error masking ib libltdl"
|
||||
if test -r opal/libltdl/loaders/preopen.c; then
|
||||
patch -N -p0 < config/libltdl-preopen-error.diff
|
||||
rm -f opal/libltdl/loaders/preopen.c.rej
|
||||
fi
|
||||
|
||||
# See
|
||||
# http://lists.gnu.org/archive/html/bug-libtool/2008-05/msg00045.html.
|
||||
# Note that this issue was fixed in LT 2.2.6, so don't patch if
|
||||
# you have a version after that (because this patch changes
|
||||
# the timestamp on opal/libltdl/m4/libtool.m4, which should be
|
||||
# avoided if possible...).
|
||||
echo " ++ patching for ifort (LT 2.2.0-4)"
|
||||
patched=0
|
||||
if check_version "2.1.9999" $ompi_libtoolize_found_version; then
|
||||
if ! check_version "2.2.6" $ompi_libtoolize_found_version; then
|
||||
cd opal/libltdl/m4
|
||||
patch -N -p0 < ../../../config/lt224-icc.diff > /dev/null 2>&1
|
||||
rm -f libtool.m4.orig
|
||||
rm -f libtool.m4.rej
|
||||
|
||||
# We must touch aclocal.m4 here, because it must be
|
||||
# newer than libtool.m4, otherwise a whole bunch of
|
||||
# Automake-mandated timestamps may be off (depending
|
||||
# on the resolution of timestamps on your
|
||||
# filesystem).
|
||||
touch -r ../aclocal.m4 libtool.m4
|
||||
|
||||
cd ../../..
|
||||
patched=1
|
||||
fi
|
||||
fi
|
||||
if test "$patched" != "1"; then
|
||||
echo " -- your libltdl doesn't need this! yay!"
|
||||
fi
|
||||
else
|
||||
run_and_check $ompi_libtoolize --automake --copy
|
||||
fi
|
||||
@ -547,72 +469,6 @@ EOF
|
||||
run_and_check $ompi_autoheader
|
||||
fi
|
||||
|
||||
# We only need to patch the top-level aclocal.m4 for libtool stuff
|
||||
# because this only affects creating C++ libraries (with pathCC).
|
||||
# This must be done before we run autoconf.
|
||||
|
||||
if test -f $topdir_file; then
|
||||
echo "** Adjusting libtool for OMPI :-("
|
||||
if ! check_version "2.0.0" $ompi_libtoolize_found_version ; then
|
||||
echo " ++ patching for pathscale multi-line output (LT 1.5.x)"
|
||||
patch -N -p0 < config/lt1522-pathCC.diff > /dev/null 2>&1
|
||||
else
|
||||
echo " ++ patching for pathscale multi-line output (LT 2.x)"
|
||||
patch -N -p0 < config/lt21a-pathCC.diff > /dev/null 2>&1
|
||||
fi
|
||||
rm -f aclocal.m4.orig
|
||||
rm -f aclocal.m4.rej
|
||||
|
||||
# See note above about lt224-icc.diff
|
||||
echo " ++ patching for ifort (LT 2.2.0-4)"
|
||||
patched=0
|
||||
if check_version "2.1.9999" $ompi_libtoolize_found_version; then
|
||||
if ! check_version "2.2.6" $ompi_libtoolize_found_version; then
|
||||
cd config
|
||||
patch -N -p0 < lt224-icc.diff > /dev/null 2>&1
|
||||
rm -f libtool.m4.orig
|
||||
rm -f libtool.m4.rej
|
||||
# We'll touch aclocal.m4 below (see comment below).
|
||||
cd ..
|
||||
patched=1
|
||||
fi
|
||||
fi
|
||||
if test "$patched" != "1"; then
|
||||
echo " -- your libltdl doesn't need this! yay!"
|
||||
fi
|
||||
|
||||
# Libtool 1.5.2x and 2.1x automatically link in the "Cstd" STL library
|
||||
# when using the Sun compilers on Linux or Solaris, even if the
|
||||
# application does not use the STL (as of Feb 2008, Open MPI does not
|
||||
# use any C++ STL). The problem is that Solaris has two different STL
|
||||
# libraries: Cstd and stlport. Having Libtool choose that OMPI (and its
|
||||
# wrapper compilers) use Cstd is problematic for users who want to
|
||||
# compile their MPI applications with the other STL library. So we
|
||||
# currently hack aclocal's LT macros to *not* add the Cstd library to
|
||||
# any of OMPI's CXXFLAGS; the OMPI wrapper compilers can then therefore
|
||||
# be used with any STL library -- it's the user's choice.
|
||||
|
||||
echo " ++ patching to remove solaris Cstd"
|
||||
sed -e 's/-lCstd -lCrun//' \
|
||||
-e 's/-library=Cstd -library=Crun//' \
|
||||
aclocal.m4 > aclocal.m4.new
|
||||
cp aclocal.m4.new aclocal.m4
|
||||
rm -f aclocal.m4.new
|
||||
|
||||
# This patch fixes a bug in Libtool's detection of the Sun Studio
|
||||
# Fortran compiler. See the below e-mail thread for more details:
|
||||
# http://www.open-mpi.org/community/lists/devel/2008/11/4920.php
|
||||
echo " ++ patching for Sun Studio Fortran compilers"
|
||||
patch -N -p0 < config/lt-sun-fortran.diff > /dev/null 2>&1
|
||||
rm -f libtool.m4.orig
|
||||
rm -f libtool.m4.rej
|
||||
# We must touch aclocal.m4 here, because it must be newer than
|
||||
# libtool.m4, otherwise a whole bunch of Automake-mandated
|
||||
# timestamps may be off (depending on the resolution of
|
||||
# timestamps on your filesystem).
|
||||
touch -r aclocal.m4 config/libtool.m4
|
||||
fi
|
||||
|
||||
run_and_check $ompi_autoconf
|
||||
|
||||
run_and_check $ompi_automake --foreign -a --copy --include-deps
|
||||
|
@ -1,29 +0,0 @@
|
||||
--- opal/libltdl/loaders/dlopen.c 2007-03-05 08:56:11.000000000 -0800
|
||||
+++ opal/libltdl/loaders/dlopen_global.c 2007-03-05 08:54:46.000000000 -0800
|
||||
@@ -121,6 +121,17 @@
|
||||
# define LT_LAZY_OR_NOW 0
|
||||
#endif /* !LT_LAZY_OR_NOW */
|
||||
|
||||
+/* Open MPI */
|
||||
+#if !defined(LT_GLOBAL)
|
||||
+# if defined(RTLD_GLOBAL)
|
||||
+# define LT_GLOBAL RTLD_GLOBAL
|
||||
+# else
|
||||
+# if defined(DL_GLOBAL)
|
||||
+# define LT_GLOBAL DL_GLOBAL
|
||||
+# endif
|
||||
+# endif /* !RTLD_GLOBAL */
|
||||
+#endif
|
||||
+
|
||||
#if defined(HAVE_DLERROR)
|
||||
# define DLERROR(arg) dlerror ()
|
||||
#else
|
||||
@@ -136,7 +147,7 @@
|
||||
static lt_module
|
||||
vm_open (lt_user_data LT__UNUSED loader_data, const char *filename)
|
||||
{
|
||||
- lt_module module = dlopen (filename, LT_LAZY_OR_NOW);
|
||||
+ lt_module module = dlopen (filename, LT_GLOBAL | LT_LAZY_OR_NOW);
|
||||
|
||||
if (!module)
|
||||
{
|
@ -1,26 +0,0 @@
|
||||
--- config/libtool.m4.orig
|
||||
+++ config/libtool.m4
|
||||
@@ -3947,17 +3947,17 @@ m4_if([$1], [CXX], [
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
- *Sun\ C*)
|
||||
- # Sun C 5.9
|
||||
+ *Sun\ F* | *Sun*Fortran*)
|
||||
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
|
||||
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
|
||||
;;
|
||||
- *Sun\ F*)
|
||||
- # Sun Fortran 8.3 passes all unrecognized flags to the linker
|
||||
+ *Sun\ C*)
|
||||
+ # Sun C 5.9
|
||||
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||
- _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
|
||||
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
@ -1,11 +0,0 @@
|
||||
--- aclocal.m4.old 2007-04-20 14:54:50.000000000 -0700
|
||||
+++ aclocal.m4 2007-04-20 13:03:19.000000000 -0700
|
||||
@@ -2855,7 +2855,7 @@
|
||||
# Commands to make compiler produce verbose output that lists
|
||||
# what "hidden" libraries, object files and flags are used when
|
||||
# linking a shared library.
|
||||
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
|
||||
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L" | tail -n 1'
|
||||
|
||||
else
|
||||
GXX=no
|
@ -1,11 +0,0 @@
|
||||
--- aclocal.m4.old 2007-04-20 15:18:48.000000000 -0700
|
||||
+++ aclocal.m4 2007-04-20 15:18:59.000000000 -0700
|
||||
@@ -5311,7 +5311,7 @@
|
||||
# Commands to make compiler produce verbose output that lists
|
||||
# what "hidden" libraries, object files and flags are used when
|
||||
# linking a shared library.
|
||||
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
|
||||
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L" | tail -n 1'
|
||||
|
||||
else
|
||||
GXX=no
|
@ -1,20 +0,0 @@
|
||||
--- /users/jsquyres/svn/ompi2/config/libtool.m4 2008-05-21 07:48:07.000000000 -0700
|
||||
+++ libtool.m4 2008-05-25 05:12:37.000000000 -0700
|
||||
@@ -3962,12 +3962,17 @@
|
||||
|
||||
linux* | k*bsd*-gnu)
|
||||
case $cc_basename in
|
||||
- icc* | ecc* | ifort*)
|
||||
+ icc* | ecc*)
|
||||
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
|
||||
;;
|
||||
+ ifort*)
|
||||
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
|
||||
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
|
||||
+ ;;
|
||||
pgcc* | pgf77* | pgf90* | pgf95*)
|
||||
# Portland Group compilers (*not* the Pentium gcc compiler,
|
||||
# which looks to be a dead project)
|
@ -1,13 +0,0 @@
|
||||
--- config/ltmain.sh.old 2007-01-22 11:34:19.000000000 -0500
|
||||
+++ config/ltmain.sh 2007-01-22 11:34:43.000000000 -0500
|
||||
@@ -4428,6 +4428,10 @@
|
||||
depdepl="$absdir/$objdir/$depdepl"
|
||||
darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
|
||||
darwin_install_name=`$ECHO $darwin_install_name`
|
||||
+ if test -z "$darwin_install_name"; then
|
||||
+ darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
|
||||
+ darwin_install_name=`$ECHO $darwin_install_name`
|
||||
+ fi
|
||||
compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
|
||||
linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
|
||||
path=
|
Загрузка…
x
Ссылка в новой задаче
Block a user