= ecm =

== Description ==

GMP-ECM - Elliptic Curve Method for Integer Factorization

Sources can be obtained from http://gforge.inria.fr/projects/ecm/

== License ==

LGPL V3+

== SPKG Maintainers ==

 * Jeroen Demeyer

== Upstream Contact ==

 * ecm-discuss@lists.gforge.inria.fr (requires subscription)

== Dependencies ==

 * GMP/MPIR (Note: Python is *not* required for ordinary builds.)
 * GNU patch

== Special Update/Build Instructions ==

 * GMP-ECM comes with a self-tuning feature; we could support
   that as an option ($SAGE_TUNE_*=yes) in the future.
 * ECM currently does not (by itself) use the CC and CFLAGS settings
   from 'gmp.h' since we pass (other) options in CFLAGS, and CC is set
   by Sage and might got set by the user.  We now at least partially fix that
   such that "optimized" code generation options ('-mcpu=...', '-mtune=...')
   are used by gcc.
   Of course a user can also manually enable them by setting the "global"
   CFLAGS to e.g. '-march=native' on x86[_64] systems, or '-mcpu=...' and
   '-mtune=...' on other architectures where "native" isn't supported.
   Note that this doesn't affect the packages' selection of processor-
   specific optimized [assembly] code.
   'spkg-install' already reads the settings from Sage's and also a
   system-wide GMP / MPIR now, but doesn't (yet) use all of them.
   If SAGE_FAT_BINARY="yes", we should avoid too specific settings of
   "-mcpu=...", and perhaps pass a more generic "--host=..." to
   'configure'. (MPIR honors '--enable-fat' to some extent, but this
   option isn't used on anything other than x86 / x86_64.)
 * We could save some space by removing the `src/build.vc10/` directory which
   isn't used in Sage.  (It gets probably more worth in case also directories /
   files for later versions of Microsoft Visual C get added.)

=== Patches ===
 * Currently none

== Changelog ==

=== ecm-6.4.4 (Jeroen Demeyer, 11 April 2013) ===
 * Trac #14151: upgrade to GMP-ECM 6.4.4, remove all Sage patches
   since they are upstream now.

=== ecm-6.3.p8 (Jeroen Demeyer, 28 May 2012) ===
 * Trac #12751: remove the gcc-4.7.0 workaround for ia64 since this bug
   has been fixed in gcc-4.7.1 and we will not support building Sage
   with gcc-4.7.0 on Itanium.
 * Remove unused variable SAGE_CONF_OPTS.
 * Rename ECM_EXTRA_OPTS to ECM_CONFIGURE for consistency with MPIR.
 * Don't override user-set CFLAGS.

=== ecm-6.3.p7 (Leif Leonhardy, April 19th 2012) ===
 * #12830: Add `-m[no-]power*` to the processor-specific options recognized;
   these are used to enable/disable specific instruction set extensions of the
   POWER and PowerPC (PPC) CPUs.

=== ecm-6.3.p6 (Leif Leonhardy, April 16th 2012) ===
 * #12830: Add a work-around for GCC 4.7.x on ia64 (Itanium), since GMP-ECM
   currently won't build with that and anything but `-O0` on that platform.
 * Use `\{1,\}` instead of `\+` in `sed` patterns, which is more portable.
 * Also support newer system-wide MPIR installations for printing their
   settings.
 * Use `patch` to apply patches.  Since the pre-patched `configure` in
   `patches/` was created with a newer version of autotools (or, rather, the
   original `configure` was created with an outdated version), the patch would
   have been almost as large as the patched `configure` file itself.  Hence
   I `autoreconf`ed the source tree with a patched `configure.in` (and almost
   the latest versions of autotools), then created a patch to `configure`
   from the resulting file(s).  Note that therefore `src/` isn't really vanilla
   any more, although just the auto-generated files differ (which are still
   made from vanilla upstream sources, including `configure.in`).
   Add a "Patches" subsection and update "Special Update/Build Instructions".
   Remove files in `patches/` from `.hgignore` (and also remove pre-patched
   files from that directory); the patch to `configure` and the diff of
   `configure.in` are [now] under revision control, which IMHO makes sense.
 * Beautify (and simplify) the output with respect to options passed to
   `configure`; print the settings of a few more environment variables that
   GMP-ECM uses (in case they're set); add some messages, also mention
   `--enable-assert` etc. if `SAGE_DEBUG=yes`.
 * Remove unused test for GCC.

=== ecm-6.3.p5 (Leif Leonhardy, April 11th 2012) ===
 * #12830: Don't add `-march=native` if the assembler doesn't understand the
   instructions the compiler emits with that.  (E.g. the Apple/XCode assembler
   on Darwin doesn't yet support AVX.)
 * Fix extraction of `__GMP_CC` and `__GMP_CFLAGS` (from `gmp.h`) for newer
   versions of MPIR, which define these to preprocessor macros rather than
   strings.
 * Redirect warnings and error messages to `stderr`; add some messages.
 * Correct `SPKG.txt` w.r.t. applied patches.

=== ecm-6.3.p4 (Jeroen Demeyer, 13 February 2012) ===
 * #12501: Do not patch configure.in in spkg-install (to prevent
   automake from running).
 * Restore upstream sources.

=== ecm-6.3.p3 (Simon King, December 11th, 2011) ===
 * #12131: Use --libdir, to make the package work on openSUSE.

=== ecm-6.3.p2 (Leif Leonhardy, November 25th, 2010) ===
 * #5847: Apply another patch from upstream to 'configure.in' to fix com-
   pilation on 32-bit x86 processors supporting SSE2. (Also #10252.)
   (There's only a single, cumulative patch file since both patches are to
   'configure.in'.)
 * Work around linker bug on MacOS X 10.5 PPC (see Special Update/Build
   Instructions above, and #5847 comment 35 ff.).
 * Allow passing extra arguments to 'configure' through ECM_EXTRA_OPTS.
 * Add "-march=native" to CFLAGS on platforms that support it, or use
   processor-specific CFLAGS from GMP's / MPIR's 'gmp.h' if available,
   but only if CFLAGS do not already contain similar (i.e., don't over-
   ride a user's choice). [Subject to further improvement.]
 * Print settings of CC, CFLAGS etc. and how we configure.
 * Print settings of CC and CFLAGS found in 'SAGE_LOCAL/include/gmp.h'
   and eventually a system-wide 'gmp.h', although the latter aren't (yet)
   used at all, and only processor-specific parts of the former.
 * Add '-fPIC' conditionally, i.e. not if we're also building a shared
   library (or '--with-pic' was given).
 * Don't delete previous installations unless the build succeeded.
 * Further clean-up.

=== ecm-6.3.p1 (Jeroen Demeyer, November 10th, 2010) ===
 * #5847: Apply a patch from upstream to configure.in to fix compilation
   on 32-bit PowerPC processors.

=== ecm-6.3.p0 (Leif Leonhardy, November 4th, 2010) ===
 * #5847: Reviewer patch applied to Mike's spkg (upgrade to 6.3)
 * There are no patches, but to avoid confusion with the previous
   one, it's now 'p0'.
 * Added sanity checks to spkg-install and spkg-check.
 * Add debug symbols by default, disable optimization if SAGE_DEBUG=yes,
   enable optimization (-O3) otherwise.
 * Remove also the manual page of previous installations.
 * Typo: 'rm -r' -> 'rm -f' (header file)
 * Removed setting of CXXFLAGS, since we don't have C++ code.
 * Don't overwrite CFLAGS if SAGE64=yes (instead, append).
   Removed -O2 -g in that case. Make use of CFLAG64 if set.
 * Quote $SAGE_LOCAL in the parameters to configure, too.
 * Use $MAKE instead of 'make' in spkg-check, too.
 * Some messages changed (e.g. all failures now starting with "Error"),
   some added.
 * A few comments/notes added (SPKG.txt, spkg-install).

=== ecm-6.3 (Mike Hansen, August 16th, 2010) ===
 * #5847: Update GMP-ECM to 6.3

=== ecm-6.2.1.p2 (Jaap Spies, Jan 25th, 2010) ===
 * Made SAGE64="yes" work also for Open Solaris 64 bit
 * Removed Michael Mabshoff as maintainer

=== ecm-6.2.1.p1 (François Bissey, October 26th, 2009) ===
 * The removal of the old version of ecm in ecm-6.2.1_p0.spkg is
   broken because of the typo "SAGE_LCOAL"; notice that it should be
   "SAGE_LOCAL".

=== ecm-6.2.1.p0 (Michael Abshoff, January 19th, 2008) ===
 * bump version to force recompile due to gmp -> MPIR switch

=== ecm-6.2.1 (Michael Abshoff, December 23rd, 2008) ===
 * upgrade to latest upstream release (#3237)
 * clean up old static library, headers and binary
 * improve SPKG.txt

=== ecm-6.1.3.p0 (Michael Abshoff, May 18th, 2008) ===
 * add 64 bit OSX support

=== ecm-6.1.3 (Michael Abshoff, Sept. 24th, 2007) ===
 * update to ecm 6.1.3

* Initial version - date unknown:

I obtained the package from http://gforge.inria.fr/projects/ecm/