GNU Info

Info Node: (gmp.info)Notes for Particular Systems

(gmp.info)Notes for Particular Systems


Next: Known Build Problems Prev: Notes for Package Builds Up: Installing GMP
Enter node , (file) or (file)node

Notes for Particular Systems
============================

AIX 3 and 4
     On systems `*-*-aix[34]*' shared libraries are disabled by
     default, since some versions of the native `ar' fail on the
     convenience libraries used.  A shared build can be attempted with

          ./configure --enable-shared --disable-static

     Note that the `--disable-static' is necessary because in a shared
     build libtool makes `libgmp.a' a symlink to `libgmp.so',
     apparently for the benefit of old versions of `ld' which only
     recognise `.a', but unfortunately this is done even if a fully
     functional `ld' is available.

ARM
     On systems `arm*-*-*', versions of GCC up to and including 2.95.3
     have a bug in unsigned division, giving wrong results for some
     operands.  GMP `./configure' will demand GCC 2.95.4 or later.

Microsoft Windows
     On systems `*-*-cygwin*', `*-*-mingw*' and `*-*-pw32*' by default
     GMP builds only a static library, but a DLL can be built instead
     using

          ./configure --disable-static --enable-shared

     Static and DLL libraries can't both be built, since certain export
     directives in `gmp.h' must be different.  `--enable-cxx' cannot be
     used when building a DLL, since libtool doesn't currently support
     C++ DLLs.  This might change in the future.

     GCC is recommended for compiling GMP, but the resulting DLL can be
     used with any compiler.  On mingw only the standard Windows
     libraries will be needed, on Cygwin the usual cygwin runtime will
     be required.

Motorola 68k CPU Types
     `m68k' is taken to mean 68000.  `m68020' or higher will give a
     performance boost on applicable CPUs.  `m68360' can be used for
     CPU32 series chips.  `m68302' can be used for "Dragonball" series
     chips, though this is merely a synonym for `m68000'.

OpenBSD 2.6
     `m4' in this release of OpenBSD has a bug in `eval' that makes it
     unsuitable for `.asm' file processing.  `./configure' will detect
     the problem and either abort or choose another m4 in the `PATH'.
     The bug is fixed in OpenBSD 2.7, so either upgrade or use GNU m4.

Power CPU Types
     In GMP, CPU types `power' and `powerpc' will each use instructions
     not available on the other, so it's important to choose the right
     one for the CPU that will be used.  Currently GMP has no assembler
     code support for using just the common instruction subset.  To get
     executables that run on both, the current suggestion is to use the
     generic C code (CPU `none'), possibly with appropriate compiler
     options (like `-mcpu=common' for `gcc').  CPU `rs6000' (which is
     not a CPU but a family of workstations) is accepted by
     `config.sub', but is currently equivalent to `none'.

Sparc CPU Types
     `sparcv8' or `supersparc' on relevant systems will give a
     significant performance increase over the V7 code.

SunOS 4
     `/usr/bin/m4' lacks various features needed to process `.asm'
     files, and instead `./configure' will automatically use
     `/usr/5bin/m4', which we believe is always available (if not then
     use GNU m4).

x86 CPU Types
     `i386' selects generic code which will run reasonably well on all
     x86 chips.

     `i586', `pentium' or `pentiummmx' code is good for the intended P5
     Pentium chips, but quite slow when run on Intel P6 class chips
     (PPro, P-II, P-III).  `i386' is a better choice when making
     binaries that must run on both.

     `pentium4' and an SSE2 capable assembler are important for best
     results on Pentium 4.  The specific code is for instance roughly a
     2x to 3x speedup over the generic `i386' code.

x86 MMX and SSE2 Code
     If the CPU selected has MMX code but the assembler doesn't support
     it, a warning is given and non-MMX code is used instead.  This
     will be an inferior build, since the MMX code that's present is
     there because it's faster than the corresponding plain integer
     code.  The same applies to SSE2.

     Old versions of `gas' don't support MMX instructions, in particular
     version 1.92.3 that comes with FreeBSD 2.2.8 doesn't (and
     unfortunately there's no newer assembler for that system).

     Solaris 2.6 and 2.7 `as' generate incorrect object code for
     register to register `movq' instructions, and so can't be used for
     MMX code.  Install a recent `gas' if MMX code is wanted on these
     systems.

x86 GCC `-march=pentiumpro'
     GCC 2.95.2 and 2.95.3 miscompiled some versions of `mpz/powm.c'
     when `-march=pentiumpro' was used, so for relevant CPUs that
     option is only in the default `CFLAGS' for GCC 2.95.4 and up.


automatically generated by info2www version 1.2.2.9