From 7f1f85735933b798a3c40b76115b608b4e43938f Mon Sep 17 00:00:00 2001 From: Jeff Squyres Date: Tue, 27 Nov 2012 18:09:35 +0000 Subject: [PATCH] Per discussion on the OMPI teleconf this morning: * Remove the check for a specific m4 version. We don't require it. Autoconf requires a specific version of m4, but we don't. * Reduce flex min version to 2.5.4 * Update a bunch of language in HACKING, including: * General text updates * OMPI doesn't require a specific m4; Autoconf does * Soften language about flex version * Reserve the right to upgrade min flex version to 2.5.35 someday This commit was SVN r27647. --- HACKING | 78 ++++++++++++++++++++++++++++++++++-------------------- autogen.pl | 6 +---- 2 files changed, 50 insertions(+), 34 deletions(-) diff --git a/HACKING b/HACKING index 10efc00656..21a5e27ce5 100644 --- a/HACKING +++ b/HACKING @@ -8,7 +8,7 @@ Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. Copyright (c) 2004-2005 The Regents of the University of California. All rights reserved. -Copyright (c) 2008-2010 Cisco Systems, Inc. All rights reserved. +Copyright (c) 2008-2012 Cisco Systems, Inc. All rights reserved. $COPYRIGHT$ Additional copyrights may follow @@ -82,8 +82,8 @@ developer's checkout, you have three main options: shell$ make all install -Use of GNU m4, Autoconf, Automake, and Libtool -============================================== +Use of GNU Autoconf, Automake, and Libtool (and m4) +=================================================== This procedure is *ONLY* necessary if you are building from a developer's tree. If you have an Open MPI distribution tarball, this @@ -91,10 +91,12 @@ procedure is unnecessary -- you can (and should) skip reading this section. If you are building Open MPI from a developer's tree, you must first -install fairly recent versions of the GNU tools m4, Autoconf, Automake, -and Libtool. The specific versions required depend on if you are -using the trunk or a release branch (and which release branch you are -using). The specific versions can be found at: +install fairly recent versions of the GNU tools Autoconf, Automake, +and Libtool (and possibly GNU m4, because recent versions of Autoconf +have specific GNU m4 version requirements). The specific versions +required depend on if you are using the trunk or a release branch (and +which release branch you are using). The specific versions can be +found at: http://www.open-mpi.org/svn/building.php @@ -117,16 +119,25 @@ If you need newer versions, you are *strongly* encouraged to heed the following advice: NOTE: On MacOS/X, the default "libtool" program is different than the - GNU libtool. You must download and install the GNU version (via - Fink or any other mechanism). + GNU libtool. You must download and install the GNU version + (e.g., via MacPorts, Homebrew, or some other mechanism). 1. Unless your OS distribution has easy-to-use binary installations, the sources can be can be downloaded from: - ftp://ftp.gnu.org/gnu/m4/ ftp://ftp.gnu.org/gnu/autoconf/ ftp://ftp.gnu.org/gnu/automake/ ftp://ftp.gnu.org/gnu/libtool/ + and if you need it: + ftp://ftp.gnu.org/gnu/m4/ + + NOTE: It is certainly easiest to download/build/install all four of + these tools together. But note that Open MPI has no specific m4 + requirements; it is only listed here because Autoconf requires + minimum versions of GNU m4. Hence, you may or may not *need* to + actually install a new version of GNU m4. That being said, if you + are confused or don't know, just install the latest GNU m4 with the + rest of the GNU Autotools and everything will work out fine. 2. Build and install the tools in the following order: @@ -138,9 +149,11 @@ NOTE: On MacOS/X, the default "libtool" program is different than the 3. You MUST install the last three tools (Autoconf, Automake, Libtool) into the same prefix directory. These three tools are somewhat inter-related, and if they're going to be used together, they MUST - share a common installation prefix. You can install m4 anywhere, - as long as it can be found in the path. It may be convenient to - install it instal the same prefix as the other three. + share a common installation prefix. + + You can install m4 anywhere as long as it can be found in the path; + it may be convenient to install it in the same prefix as the other + three. Or you can use any recent-enough m4 that is in your path. 3a. It is *strongly* encouraged that you do not install your new versions over the OS-installed versions. This could cause @@ -198,15 +211,15 @@ NOTE: On MacOS/X, the default "libtool" program is different than the will invoke the GNU Autoconf, Automake, and Libtool commands in the proper order and setup to run OMPI's top-level "configure" script. - Running autogen.pl may take several minutes, depending on your + Running autogen.pl may take a few minutes, depending on your system. It's not very exciting to watch. :-) If you have a multi-processor system, enabling the multi-threaded behavior in Automake 1.11 (or newer) can result in autogen.pl running faster. Do this by setting the AUTOMAKE_JOBS environment variable to the number of processors (threads) that you want it to - use. For example (you can again put this in your shell startup - files): + use before invoking autogen.pl. For example (you can again put + this in your shell startup files): # For bash/sh: export AUTOMAKE_JOBS=4 @@ -214,9 +227,10 @@ NOTE: On MacOS/X, the default "libtool" program is different than the set AUTOMAKE_JOBS 4 5a. You generally need to run autogen.pl whenever the top-level - file "configure.ac" changes, or any files in the config/ - directory change (the config/ directory is where a lot of - "include" files for OMPI's configure script live). + file "configure.ac" changes, or any files in the config/ or + /config/ directories change (these directories are + where a lot of "include" files for OMPI's configure script + live). 5b. You do *NOT* need to re-run autogen.pl if you modify a Makefile.am. @@ -225,21 +239,27 @@ Use of Flex =========== Flex is used during the compilation of a developer's checkout (it is -not used in distribution tarballs). Other flavors of lex are *not* -supported: given the choice of making parsing code portable between -all flavors of lex and doing more interesting work on Open MPI, we -greatly prefer the latter. +not used to build official distribution tarballs). Other flavors of +lex are *not* supported: given the choice of making parsing code +portable between all flavors of lex and doing more interesting work on +Open MPI, we greatly prefer the latter. Note that no testing has been performed to see what the minimum version of Flex is required by Open MPI. We suggest that you use v2.5.35 at the earliest. -*** NOTE: Windows builds of Open MPI require Flex version 2.5.35. -Specifically, we know that v2.5.35 works and 2.5.4a does not. We have -not tested to figure out exactly what the minimum required flex -version is on Windows; we suggest that you use 2.5.35 at the earliest. -It is for this reason that the contrib/dist/make_dist_tarball script -checks for a Windows-friendly version of flex before continuing. +*** NOTE: Windows developer builds of Open MPI *require* Flex version +2.5.35. Specifically, we know that v2.5.35 works and 2.5.4a does not. +We have not tested to figure out exactly what the minimum required +flex version is on Windows; we suggest that you use 2.5.35 at the +earliest. It is for this reason that the +contrib/dist/make_dist_tarball script checks for a Windows-friendly +version of flex before continuing. + +For now, Open MPI will allow developer builds with Flex 2.5.4. This +is primarily motivated by the fact that RedHat/Centos 5 ships with +Flex 2.5.4. It is likely that someday Open MPI developer builds will +require Flex version >=2.5.35. Note that the flex-generated code generates some compiler warnings on some platforms, but the warnings do not seem to be consistent or diff --git a/autogen.pl b/autogen.pl index e8535e62f1..67abbc33f6 100755 --- a/autogen.pl +++ b/autogen.pl @@ -56,15 +56,13 @@ my $exclude_list; my $ompi_automake_version = "1.11.1"; my $ompi_autoconf_version = "2.65"; my $ompi_libtool_version = "2.2.6b"; -my $ompi_flex_version = "2.5.35"; -my $ompi_m4_version = "1.4.16"; +my $ompi_flex_version = "2.5.4"; # Search paths my $ompi_autoconf_search = "autoconf"; my $ompi_automake_search = "automake"; my $ompi_libtoolize_search = "libtoolize;glibtoolize"; my $ompi_flex_search = "flex"; -my $ompi_m4_search = "m4;gm4"; # One-time setup my $username; @@ -811,7 +809,6 @@ tools: GNU Autoconf: $ompi_autoconf_version GNU Automake: $ompi_automake_version GNU Libtool: $ompi_libtool_version - GNU M4: $ompi_m4_version (BSD/Solaris M4 is ok) Flex: $ompi_flex_version =================================================================\n"; my_exit(1); @@ -1032,7 +1029,6 @@ $step. Checking tool versions\n\n"; &find_and_check("libtool", $ompi_libtoolize_search, $ompi_libtool_version); &find_and_check("automake", $ompi_automake_search, $ompi_automake_version); &find_and_check("flex", $ompi_flex_search, $ompi_flex_version); -&find_and_check("m4", $ompi_m4_search, $ompi_m4_version); #---------------------------------------------------------------------------