Home | History | Annotate | Line # | Download | only in dist
INSTALL revision 1.1.1.5
      1 Copyright 1999-2020 Free Software Foundation, Inc.
      2 Contributed by the AriC and Caramba projects, INRIA.
      3 
      4 This file is part of the GNU MPFR Library.
      5 
      6 The GNU MPFR Library is free software; you can redistribute it and/or modify
      7 it under the terms of the GNU Lesser General Public License as published by
      8 the Free Software Foundation; either version 3 of the License, or (at your
      9 option) any later version.
     10 
     11 The GNU MPFR Library is distributed in the hope that it will be useful, but
     12 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     13 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
     14 License for more details.
     15 
     16 You should have received a copy of the GNU Lesser General Public License
     17 along with the GNU MPFR Library; see the file COPYING.LESSER.  If not, see
     18 https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
     19 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
     20 
     21 
     22 
     23                         Installing GNU MPFR
     24                         ===================
     25 
     26 Note: In case of problem, please read this INSTALL file carefully before
     27 reporting a bug, in particular Section "In case of problem" below. Some
     28 problems are due to bad configuration on the user side (not specific to
     29 MPFR).
     30 
     31 0. You first need to install GMP. See <https://gmplib.org/>.
     32    MPFR requires GMP version 5.0.0 or later.
     33 
     34 1. Extract the files from the archive.
     35 
     36 2. It is strongly advised to apply the latest patches if this has
     37    not been done yet and if patches are available. You can check
     38    on the release page:
     39 
     40      https://www.mpfr.org/mpfr-4.1.0/
     41 
     42    which may have additional information. The patches can be applied
     43    with commands like:
     44 
     45      wget https://www.mpfr.org/mpfr-4.1.0/allpatches
     46      patch -N -Z -p1 < allpatches
     47 
     48    or
     49 
     50      curl https://www.mpfr.org/mpfr-4.1.0/allpatches | patch -N -Z -p1
     51 
     52    (Those instructions are for the GNU patch command, for example
     53    /usr/bin/gpatch on Solaris.)
     54 
     55 3. In the MPFR directory, to detect your system, type:
     56      ./configure
     57    possibly with options (see below, in particular if this step or
     58    one of the following fails). You should also check whether WARNING
     59    lines have been output (such a problem may cause a failure in one
     60    of the following steps).
     61    Note: paths provided in configure options must always be absolute
     62    (relative paths are not supported).
     63 
     64 4. To build the library, type:
     65      make
     66 
     67    [optional] if you want to tune MPFR for your specific architecture, see
     68    the section "Tuning MPFR" below. Note that for most common architectures,
     69    MPFR includes some default tuning parameters which should be near from
     70    optimal.
     71 
     72 5. To check the built library (runs the test files), type:
     73      make check
     74 
     75    Note: If any test fails, information about this failure can be found in
     76    the tests/test-suite.log file; you should provide this file in your bug
     77    reports (in addition to other useful information, as mentioned later).
     78    If you want the contents of this file to be automatically output in case
     79    of failure, you can set the VERBOSE environment variable to 1 before
     80    running "make check", for instance by typing:
     81      VERBOSE=1 make check
     82 
     83 6. [Optional / experimental] Binary distributions may also want to run:
     84      make check-gmp-symbols
     85 
     86    This will check that MPFR does not use GMP internal symbols, which
     87    could yield failures in case of GMP upgrade without a MPFR rebuild.
     88    But note that this is a heuristic and might give false positives or
     89    false negatives. Please report any problem to the MPFR developers.
     90    End users may also be interested in this check, unless they have
     91    allowed GMP internals with configure options (see below).
     92 
     93 7. To install it (default "/usr/local" | see "--prefix" option), type:
     94      make install
     95 
     96 If you installed MPFR (header and library) in directories that are
     97 not searched by default by the compiler and/or linking tools, then,
     98 like with other libraries, you may need to set up some environment
     99 variables such as C_INCLUDE_PATH (to find the header mpfr.h),
    100 LIBRARY_PATH (to find the library), and if the shared library has
    101 been installed, LD_LIBRARY_PATH (before execution) or LD_RUN_PATH
    102 (before linking); this list is not exhaustive and some environment
    103 variables may be specific to your system. "make install" gives some
    104 instructions; please read them. You can also find more information
    105 in the manuals of your compiler and linker. The MPFR FAQ may also
    106 give some information.
    107 
    108 Remember that if you have several MPFR (or GMP) versions installed
    109 (e.g., one with the system, and one, newer, by you), you will not
    110 necessarily get a compilation/linking error if a wrong library is
    111 used (e.g., because LD_LIBRARY_PATH has not been set correctly).
    112 But unexpected results may occur.
    113 
    114 Under Mac OS X, if the shared library was not installed and you use
    115 Apple's linker (this is the default), you will also need to provide
    116 the -search_paths_first linker flag ("-Wl,-search_paths_first" when
    117 you link via gcc) to make sure that the right library is selected,
    118 as by default, Apple's linker selects a shared library preferably,
    119 even when it is farther in the library paths. We recall that if a
    120 wrong library is selected due to this behavior, unexpected results
    121 may occur.
    122 
    123 
    124 Building the documentation
    125 ==========================
    126 
    127 To build the documentation in various formats, you may first need to
    128 install recent versions of some utilities such as texinfo.
    129 
    130 * Type "make info" to produce the documentation in the info format.
    131 
    132 * Type "make pdf" to produce the documentation in the PDF format.
    133 
    134 * Type "make dvi" to produce the documentation in the DVI format.
    135 
    136 * Type "make ps" to produce the documentation in the Postscript format.
    137 
    138 * Type "make html" to produce the documentation in the HTML format
    139   (in several pages); if you want only one output HTML file, then
    140   type "makeinfo --html --no-split mpfr.texi" from the doc directory
    141   instead.
    142 
    143 
    144 Building MPFR with internal GMP header files
    145 ============================================
    146 
    147 MPFR built with internal GMP header files is a bit faster, so you may want
    148 to build it with them. Just do this in step 1:
    149 
    150   ./configure --with-gmp-build=GMPBUILD
    151 
    152 where GMPBUILD is the GMP build directory. The needed header files are:
    153 gmp-impl.h, longlong.h and all the necessary headers to use them, which
    154 may be located either in the GMP source directory or in the GMP build
    155 directory, in case they are different (MPFR takes care of that, as of
    156 MPFR 3.1.0).
    157 
    158 Warning: the library obtained in this way may use some internal GMP
    159 symbols, and thus dynamically linking your software with a different
    160 version of GMP might fail, even though it is declared as compatible
    161 by Libtool's versioning system.
    162 
    163 
    164 Tuning MPFR
    165 ===========
    166 
    167 [For the current GMP version (6.1.0), a Unix-like OS is required.]
    168 
    169 For this, you need to build MPFR with a GMP build directory (see above).
    170 In the GMP build directory, you also need to go into the "tune" subdirectory
    171 and type "make speed". This will build the GMP speed library, which is used
    172 by the MPFR tuning mechanism.
    173 
    174 Then go back to the MPFR build directory, go into the "tune" subdirectory and
    175 type "make tune". This will build an optimized file "mparam.h" for your
    176 specific architecture.
    177 
    178 
    179 ./configure options
    180 ===================
    181 
    182 --prefix=DIR            installs MPFR headers and library in DIR/include and
    183                         DIR/lib respectively (the default is "/usr/local").
    184 
    185 --with-gmp-include=DIR  assumes that DIR contains gmp.h
    186 --with-gmp-lib=DIR      assumes that DIR contains the GMP library
    187 --with-gmp=DIR          assumes that DIR is where you have installed GMP.
    188                         same as --with-gmp-lib=DIR/lib
    189                         and     --with-gmp-include=DIR/include
    190                         (use either --with-gmp alone or one or both of
    191                         --with-gmp-lib/--with-gmp-include)
    192                         Warning! Do not use these options if you have
    193                         CPPFLAGS and/or LDFLAGS containing a -I or -L
    194                         option with a directory that contains a GMP
    195                         header or library file, as these options just
    196                         add -I and -L options to CPPFLAGS and LDFLAGS
    197                         *after* the ones that are currently declared,
    198                         so that DIR will have a lower precedence. Also,
    199                         this may not work if DIR is a system directory
    200                         (typically /usr or /usr/local); see below.
    201 
    202 --with-gmp-build=DIR    assumes that DIR contains the GMP build directory,
    203                         and enables the use of GMP internals (see above).
    204                         Warning! This option and the group of options
    205                         --with-gmp are mutually exclusive.
    206 
    207 --enable-assert         build MPFR with assertions.
    208 
    209 --enable-thread-safe    build MPFR as thread safe, using compiler-level
    210                         Thread-Local Storage (TLS). Note: TLS support is
    211                         roughly tested by configure. If configure detects
    212                         that TLS does not work (because of the compiler,
    213                         linker or system libraries), it will output an
    214                         error message, telling you to build MPFR without
    215                         thread safe. For instance, though Mac OS X uses
    216                         GCC, it may not currently support GCC's __thread
    217                         storage class.
    218 
    219 --disable-thread-safe   build MPFR without TLS. By default, TLS support
    220                         is detected automatically, and MPFR is built as
    221                         thread safe if supported. However this detection
    222                         is only a heuristic: TLS can be detected as
    223                         supported while its support is incomplete or
    224                         buggy (MPFR tests may fail). In such a case,
    225                         this option is useful.
    226 
    227 --enable-decimal-float  build conversion functions from/to decimal floats.
    228                         Note that detection by the configure script is
    229                         limited in case of cross-compilation.
    230                         Accepted arguments:
    231                    yes  Decimal support is requested and the configure
    232                         script fails if it detects that decimals do not
    233                         work.
    234                         The encoding (BID or DPD) will automatically be
    235                         detected at configure time or at compile time if
    236                         possible (if not, generic code will be used).
    237                     no  Decimal support is explicitly disabled.
    238                   auto  Decimal support is enabled if the configure script
    239                         detects that it works. This is the default when
    240                         --{enable,disable}-decimal-float is not given.
    241                    bid  Decimal support is requested and the encoding is
    242                         assumed to be BID (some check may be done).
    243                    dpd  Decimal support is requested and the encoding is
    244                         assumed to be DPD (some check may be done).
    245                generic  Decimal support is requested and the generic code
    246                         is used (mainly for developers).
    247 
    248 --enable-gmp-internals  allows the MPFR build to use GMP's undocumented
    249                         functions (not from the public API). Note that
    250                         library versioning is not guaranteed to work if
    251                         this option is used. Thus it must not be used in
    252                         binary distributions.
    253 
    254 --with-sysroot=DIR      Search for dependent libraries within DIR (which
    255                         may be useful in cross-compilation). If you use
    256                         this option, you need to have Libtool 2.4+ on
    257                         the target system. See Libtool 2.4+'s NEWS file.
    258 
    259 Note: By default, the configure script tries to set CC / CFLAGS to GMP's
    260 ones from gmp.h (__GMP_CC / __GMP_CFLAGS) in order to ensure that MPFR is
    261 built with the same ABI as GMP. The reason is that when GMP is built, it
    262 may set CC / CFLAGS to select an ABI that is not the default one in order
    263 to have a better performance. The -pedantic option in GMP's CFLAGS, when
    264 present (which is the case by default), is removed, because the MPFR
    265 build system uses some C extensions (when this script detects that they
    266 are supported) and -pedantic yields too many useless warnings. However,
    267 this setting from GMP is not guaranteed to work as the configure script
    268 does some compiler tests earlier, and a conflict may arise. Also, the
    269 values obtained from GMP may be incorrect for the MPFR build if GMP has
    270 been built on a different machine; in such a case, the user may need to
    271 specify CC / CFLAGS, as explained below.
    272 
    273 Moreover, even without --with-gmp-build and --enable-gmp-internals,
    274 MPFR might use some GMP internals by mistake. This would be a bug,
    275 which should be reported to the MPFR developers.
    276 
    277 Run "./configure --help" to see the other options (default options
    278 from Autoconf and Automake).
    279 
    280 
    281 If 'gmp.h' and 'libgmp' do not match
    282 ====================================
    283 
    284 Under some circumstances, the configure script may output a message
    285 saying:
    286 
    287   'gmp.h' and 'libgmp' seem to have different versions or
    288   we cannot run a program linked with GMP (if you cannot
    289   see the version numbers above). [...]
    290 
    291 Even though the configure script does not fail in such a case, this
    292 message most often indicates a real error, which needs to be avoided.
    293 Possible causes are:
    294 
    295 * The wanted GMP library does not have the same ABI as the one chosen
    296   to build MPFR. The consequences may be:
    297 
    298     - A different GMP library (with the correct ABI) has been found,
    299       but does not have the same version as 'gmp.h'.
    300 
    301     - No other GMP libraries have been found (in this case, no version
    302       numbers should be printed above the warning message).
    303 
    304   This is incorrect and one of the following steps (make, make check)
    305   will probably fail. GMP (actually gmp.h) now provides CC and CFLAGS
    306   information to select the correct ABI, so that this problem should
    307   no longer occur; but if GMP was provided by a binary package, such
    308   information may not be valid. See the
    309 
    310     checking for CC and CFLAGS in gmp.h...
    311 
    312   line in the configure output (about the 11th line) and the following
    313   few ones for more information. You may need to reinstall GMP or to
    314   provide your own CC and/or CFLAGS. See also the remaining of this
    315   INSTALL file.
    316 
    317 * A configure option like --with-gmp or --with-gmp-include was used
    318   with a system include directory, e.g. one of the following:
    319 
    320     --with-gmp=/usr
    321     --with-gmp=/usr/local
    322     --with-gmp-include=/usr/include
    323     --with-gmp-include=/usr/local/include
    324 
    325   GCC (and possibly other compilers) will ignore such a directive for
    326   include directories (but this rule is not applied for the library
    327   itself!). This means that the library search paths will be reordered
    328   as declared, but the specified include directory will still be near
    329   the end of the include search paths (thus with a low precedence).
    330   This is not a problem if only one GMP version is installed, but
    331   otherwise, a wrong gmp.h may be chosen, so that the versions of
    332   gmp.h and libgmp may not match. The suggestions are the following:
    333 
    334     - If you want to use the GMP version under /usr, then you should
    335       uninstall all the other GMP versions (header and library files)
    336       that may be seen in the search paths, in particular those under
    337       /usr/local.
    338 
    339     - If you want to use the GMP version under /usr/local, then you
    340       should uninstall all the other GMP versions (header and library
    341       files) that may be seen in the search paths, but *NOT* the one
    342       under /usr (the version under /usr is provided by the OS vendor,
    343       and changing/removing anything related to it may break your
    344       system, and /usr should have a lower precedence than /usr/local
    345       anyway).
    346 
    347   To find where GMP versions have been installed:
    348 
    349     $ locate libgmp  (if you have a locate database)
    350 
    351   and if the compiler is GCC:
    352 
    353     $ gcc -print-file-name=libgmp.so     (under most systems)
    354     $ gcc -print-file-name=libgmp.dylib  (under Mac OS X)
    355 
    356   and if this does not work, you may try:
    357 
    358     $ gcc -print-search-dirs
    359 
    360 * An official GCC version was used under Debian GNU/Linux. Problems
    361   may come from the fact that Debian chose a different convention
    362   for library search paths concerning 32-bit and 64-bit libraries.
    363   A possible problem can be, for instance:
    364 
    365   [Debian's GCC, correct library path]
    366   $ gcc -print-file-name=libgmp.so
    367   /home/vlefevre/gmp/athlon64/lib/../lib/libgmp.so
    368 
    369   [Official GCC, incorrect library path]
    370   $ gcc-4.3.1 -print-file-name=libgmp.so
    371   /usr/lib/../lib64/libgmp.so
    372 
    373   The solution: use a GCC provided by Debian or add symbolic links
    374   such as lib64 -> lib (on 64-bit machines) for your library paths.
    375 
    376 * The problem may also be temporary and only due to the fact that
    377   libtool could not be used at this time. This is unlikely, though.
    378 
    379 
    380 In case of problem
    381 ==================
    382 
    383 First, look for any warning message in the configure output.
    384 
    385 Several documents may help you to solve the problem:
    386   * this INSTALL file, in particular information given below;
    387   * the FAQ (either the FAQ.html file distributed with MPFR, or the
    388     on-line version <https://www.mpfr.org/faq.html>, which may be more
    389     up-to-date);
    390   * the MPFR web page for this version <https://www.mpfr.org/mpfr-4.1.0/>,
    391     which lists bugs found in this version and provides some patches.
    392 
    393 If the "configure" fails, please check that the C compiler and its
    394 options are the same as those for the GMP build (specially the ABI).
    395 You can see the latter with the following command:
    396 
    397   grep "^CC\|^CFLAGS" GMPBUILD/Makefile
    398 
    399 if the GMP build directory is available. Then type:
    400 
    401   ./configure <configure options> CC=<C compiler> CFLAGS="<compiler options>"
    402 
    403 (quotes are needed when there are spaces or other special characters
    404 in the CC/CFLAGS value) and continue the install. On some platforms,
    405 you should provide further options to match those used by GMP, or set
    406 some environment variables. For instance, see the "Notes on AIX/PowerPC"
    407 section below.
    408 
    409 Warning! Do NOT use optimization options that can change the semantics
    410 of math operations, such as GCC's -ffast-math or Sun CC's -fast.
    411 Otherwise conversions from/to double's may be incorrect on infinities,
    412 NaN's and signed zeros. Since native FP arithmetic is used in a few
    413 places only, such options would not make MPFR faster anyway.
    414 
    415 If some "make check" tests fail, you can try the --disable-thread-safe
    416 configure option (see the configure options above): it has been reported
    417 that some platforms have buggy TLS support. Before trying this option,
    418 you may want to check in the configure output whether MPFR was built
    419 with TLS support; if yes, you will have a line:
    420   checking for TLS support... yes
    421 Alternatively "grep MPFR_USE_THREAD_SAFE config.log" will show that
    422 MPFR_USE_THREAD_SAFE is defined to 1. If it is "no" (or the variable
    423 is not defined), the --disable-thread-safe option would be useless.
    424 
    425 Some tests failure may be due to other compiler bugs, in particular
    426 in optimization code. You can try to build MPFR without compiler
    427 optimizations by giving -O0 (letter O, digit 0) in CFLAGS. If the
    428 MPFR tests no longer fail, this was probably due to a compiler bug,
    429 though we cannot exclude a bug in MPFR. You may want to contact us
    430 (see below), possibly after looking at:
    431   https://members.loria.fr/PZimmermann/software/compilerbugs.html
    432 
    433 On some platforms, try with "gmake" (GNU make) instead of "make".
    434 Problems have been reported with the Tru64 make.
    435 
    436 If the configure script reports that gmp.h version and libgmp version
    437 are different, or if the build was OK, but the tests failed to link
    438 with GMP or gave an error like
    439 
    440   undefined reference to `__gmp_get_memory_functions'
    441 
    442 meaning that the GMP library was not found or a wrong GMP library was
    443 selected by the linker, then your library search paths are probably
    444 not correctly set (some paths are missing or they are specified in an
    445 incorrect order).
    446 
    447 Such problems commonly occur under some GNU/Linux machines, where the
    448 default header and library search paths may be inconsistent: GCC is
    449 configured to search /usr/local/include and /usr/local/lib by default,
    450 while the dynamic linker ignores /usr/local/lib. If you have a GMP
    451 version installed in /usr (provided by the OS vendor) and a new one
    452 installed in /usr/local, then the header of the new GMP version and
    453 the library of the old GMP version will be used! The best solution
    454 is to make sure that the dynamic linker configuration is consistent
    455 with GCC's behavior, for instance by having /usr/local/lib in
    456 /etc/ld.so.conf or in some file from /etc/ld.so.conf.d (as Debian
    457 did: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395177). See
    458 also https://gcc.gnu.org/legacy-ml/gcc-help/2010-01/msg00171.html for
    459 more information. Alternatively you can use:
    460   * environment variables. This may sometimes be necessary. If DIR
    461     is the installation directory of GMP, add DIR/include to your
    462     CPATH or C_INCLUDE_PATH (for compilers other than GCC, please
    463     check the manual of your compiler), and add DIR/lib to your
    464     LIBRARY_PATH and LD_LIBRARY_PATH (and/or LD_RUN_PATH);
    465   * --with-gmp* configure options (described above), e.g.
    466     --with-gmp=/opt/local (to use /opt/local/include for headers and
    467     /opt/local/lib for libraries), but other software that uses GMP
    468     and/or MPFR will need correct paths too, and environment variables
    469     allow one to set such search paths in a global way.
    470     Note about "--with-gmp=/usr/local". This option may appear to
    471     solve the above inconsistency problem, but does not work as you
    472     expect. Indeed it affects the library search path, in particular,
    473     the one used by the dynamic linker (thus adding the missing
    474     /usr/local/lib directory as wanted), but since /usr/local/include
    475     is a "standard system include directory" for GCC, the include
    476     search patch is not changed; this is often not a problem in this
    477     particular case because usually, /usr/local/include is already
    478     last in the include search patch, but this may fail under some
    479     occasions and may trigger obscure errors.
    480 
    481 For instance, under Unix, where paths are separated by a colon:
    482 
    483   * With POSIX sh-compatible shells (e.g. sh, ksh, bash, zsh):
    484     export C_INCLUDE_PATH="/usr/local/include:/other/path/include"
    485     export LIBRARY_PATH="/usr/local/lib:/other/path/lib"
    486     export LD_LIBRARY_PATH="$LIBRARY_PATH"
    487 
    488   * With csh or tcsh:
    489     setenv C_INCLUDE_PATH "/usr/local/include:/other/path/include"
    490     setenv LIBRARY_PATH "/usr/local/lib:/other/path/lib"
    491     setenv LD_LIBRARY_PATH "$LIBRARY_PATH"
    492 
    493 If almost all the tests fail and the messages in the test-suite.log file
    494 (or in the output, when running individual tests from the command line)
    495 start with a line of the form:
    496 
    497   Incorrect MPFR version! (xxx header vs yyy library)
    498 
    499 then this means that an installed MPFR version is tested instead of the
    500 one that has just been built. This is probably not a bug in MPFR, but a
    501 problem caused by the user or system configuration (particular options,
    502 environment variables, etc.) or a bug in the toolchain. In particular,
    503 if LD_LIBRARY_PATH overrides the run path (set up by libtool) and an
    504 installed ABI-compatible version of MPFR is in a directory listed in
    505 the LD_LIBRARY_PATH search path, then this will break. An example with
    506 GNU ld:
    507 
    508   https://sourceware.org/bugzilla/show_bug.cgi?id=21476
    509 
    510 If you can't solve your problem, you should contact us via the MPFR
    511 mailing-list <mpfr (a] inria.fr>, indicating the machine and operating system
    512 used (uname -a), the compiler and version used (gcc -v if you use gcc),
    513 the configure options used if any (including variables such as CC and
    514 CFLAGS), the version of GMP and MPFR used, and a description of the
    515 problem encountered, in particular the tests/test-suite.log file if
    516 "make check" failed. Please send us also the log of the "configure"
    517 (config.log).
    518 
    519 
    520 Notes about ABI
    521 ===============
    522 
    523 On 64-bit computers, it may happen that the default ABI (Application Binary
    524 Interface) chosen by MPFR does not correspond to the default one chosen by
    525 the compiler.
    526 
    527 In particular, this kind of message may indicate the problem:
    528 /usr/bin/ld: skipping incompatible mpfr/src/.libs/libmpfr.a when searching for -lmpfr
    529 
    530 In fact, since MPFR relies on GMP, it uses the same ABI as GMP.
    531 To be sure that your program compiles and links correctly, use the same
    532 compiler flags as MPFR does (look for CFLAGS in config.log).
    533 
    534 You might also recompile GMP with a different ABI, with for example
    535 ./configure ABI=32.
    536 
    537 
    538 Notes on Mac OS X
    539 =================
    540 
    541 If you get an error of the form
    542 
    543   ld: pointer in read-only segment not allowed in slidable image...
    544 
    545 this can mean that the link is done against a static (GMP) library.
    546 In such a case, you should configure MPFR with --disable-shared to
    547 disable the build of the shared library.
    548 
    549 
    550 Notes on FreeBSD 4.3
    551 ====================
    552 
    553 FreeBSD 4.3 is provided with an incorrect <float.h> header file, and
    554 MPFR tests related to long double's may fail. If you cannot upgrade
    555 the system, you can still use MPFR with FreeBSD 4.3, but you should
    556 not use conversions with the long double type.
    557 
    558 
    559 Notes on AIX/PowerPC
    560 ====================
    561 
    562 The following has been tested on AIX 7.1.3 (gcc111.fsffrance.org)
    563 with gcc 4.8.1 and GMP 6.1.0.
    564 
    565 If GMP was built with the 64-bit ABI, before building and testing MPFR,
    566 you should set the OBJECT_MODE environment variable to 64, e.g., with:
    567 
    568   export OBJECT_MODE=64
    569 
    570 (in a sh-compatible shell). Alternatively add the following to the configure
    571 line: AR="ar -X64" NM="nm -B -X64".
    572 
    573 
    574 Notes on Solaris
    575 ================
    576 
    577 Do not put a -R<dir> option in the LD_OPTIONS environment variable, at least
    578 if the directory <dir> can contain an MPFR library. Otherwise this MPFR
    579 library may be chosen for the tests (make check) instead of the one that has
    580 just been built, in which case, either you will get errors due to unmatched
    581 versions or this problem may remain undetected. The reason is that this
    582 option will appear before the -R options added by libtool, such as the one
    583 to the src/.libs directory containing the MPFR library that has just been
    584 built, and will have the precedence.
    585 
    586 
    587 MPFR for use with Windows Applications
    588 ======================================
    589 
    590 There are several ways of building MPFR on Windows, the most appropriate
    591 approach depending on how you intend to use the resulting libraries.
    592 
    593 a. Using MinGW
    594 ==============
    595 
    596 1 - We advise to use MinGW (http://www.mingw.org/ for 32-bit, and
    597     https://sourceforge.net/projects/mingw-w64/ for 32- and 64-bit),
    598     which is simpler and less demanding than Cygwin. Contrary to Cygwin,
    599     it also provides native Windows code.
    600 
    601     If you also use MSYS, you should use "make" for MSYS instead of
    602     the "make" utility from MinGW-W64 or from GCC, which causes the
    603     following error:
    604 
    605       libtool: warning: libobj name 'extract.Tpo -c -o extract.lo extract.lo'
    606       may not contain shell special characters.
    607       rm: unknown option -- c
    608 
    609     References about this issue and solution:
    610       https://sourceforge.net/p/msys2/tickets/223/
    611       https://sympa.inria.fr/sympa/arc/mpfr/2016-07/msg00009.html
    612 
    613 2 - If you just want to make a binary with gcc, there is nothing to do:
    614     GMP, MPFR and the program compile exactly as under Linux. (It is
    615     recommended to pass --build=xxx-yyy-mingw64 to the GMP configure command,
    616     or --build=xxx with xxx containing mingw.)
    617 
    618 3 - To avoid using the Microsoft runtime (which might not be conform to ISO C),
    619     you can use the MinGW runtime package (which is an integral part of MinGW).
    620 
    621     With old MinGW versions, you can get an ISO-compliant printf()
    622     if you compile your application with either '-ansi', '-posix' or
    623     '-D__USE_MINGW_ANSI_STDIO'. But note that this latter option,
    624     which was useful in the past (see below) should no longer be used.
    625 
    626     The following applies to old MinGW versions, and may be discouraged
    627     with recent MinGW versions.
    628 
    629     In order to have the MPFR formatted output functions based on an
    630     ISO-compliant printf(), you need to compile GMP (not MPFR) with
    631     CC="gcc -D__USE_MINGW_ANSI_STDIO" (since the standard printf modifiers
    632     %e, %Ld and %td are passed to GMP).
    633 
    634     To avoid failures of some of the printf-related tests, MPFR needs to
    635     be compiled with the same __USE_MINGW_ANSI_STDIO as with GMP, i.e.
    636     this macro should be defined for both or undefined for both; this
    637     should be the case by default, unless CC or CFLAGS has been redefined.
    638     For instance, if __USE_MINGW_ANSI_STDIO is defined in GMP but not in
    639     MPFR, the following error may occur:
    640 
    641       Error in mpfr_vsprintf (s, "%e", ...);
    642       expected: "-1.250000e+000"
    643       got:      "-1.250000e+00"
    644       FAIL tsprintf.exe (exit status: 1)
    645 
    646     and in the opposite case:
    647 
    648       Error in mpfr_vsprintf (s, "%e", ...);
    649       expected: "-1.250000e+00"
    650       got:      "-1.250000e+000"
    651       FAIL tsprintf.exe (exit status: 1)
    652 
    653     Note with old GMP versions: Other issues could arise due to the fact
    654     that the C functions vsnprintf and vsprintf both used internally in
    655     old GMP versions do not produce the same output:
    656 
    657       https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00045.html
    658       https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00051.html
    659       https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00053.html
    660 
    661     If __USE_MINGW_ANSI_STDIO has not been defined when building GMP,
    662     then the length modifiers j, L and t are not supported with the GMP
    663     formatted output functions, and as a consequence, also with MPFR.
    664     This is automatically detected by the configure script, except when
    665     cross-compiling (e.g. under Linux), in which case some macros need
    666     to be defined explicitly, e.g. with
    667 
    668       "CPPFLAGS=-DNPRINTF_J -DNPRINTF_L -DNPRINTF_T"
    669 
    670     in order to avoid potential issues with the MPFR library and failures
    671     in the test suite (the corresponding tests are disabled explicitly).
    672 
    673 b. Using Cygwin
    674 ===============
    675 
    676 This build should be similar to that for MinGW except that the resulting
    677 library depends on the Cygwin DLL and cannot therefore be used with
    678 Visual Studio as with MinGW. Indeed, the binaries compiled with Cygwin
    679 require a dynamic library (cygwin.dll) to work; there is a Cygwin option
    680 -mno-cygwin to build native code, but it may require some non-portable tricks.
    681 
    682 In case of failure, you may need to pass LDFLAGS='-shared-libgcc' at the
    683 end of the configure line due to a bug in GCC. Otherwise, if threading
    684 support is not needed, you can configure MPFR with --disable-thread-safe.
    685 
    686 c. Using Microsoft Visual C++ and Intel C++ Compilers
    687 =====================================================
    688 
    689 Static and dynamic MPFR libraries for the 32- and 64-bit versions of
    690 Windows can be built with Microsoft Visual Studio 2015 using the
    691 Microsoft Visual C++ compiler, see:
    692 
    693   https://visualstudio.microsoft.com/
    694 
    695 The Intel C++ compiler provided as a part of Intel Parallel Studio XE
    696 can also be used:
    697 
    698   https://software.intel.com/en-us/parallel-studio-xe
    699 
    700 The relevant build projects are available here:
    701 
    702   https://github.com/BrianGladman
    703 
    704 d. Using the CompCert compiler
    705 ==============================
    706 
    707 [this was tested with CompCert 3.7 and MPFR revision 13851 on x86_64-linux]
    708 
    709 CompCert (http://compcert.inria.fr/) is a formally verified compiler.
    710 To compile MPFR with CompCert:
    711 
    712 $ ./configure CC=ccomp CFLAGS="-fbitfields -flongdouble -fstruct-passing" --disable-shared
    713 
    714 You also need to unset LD_LIBRARY_PATH, and/or you might need to change
    715 wl="" into wl="-Wl," in the libtool file.
    716 
    717 All tests (make check) should pass (tget_set_d64, tget_set_d128 and
    718 tset_float128 are skipped, since CompCert does not support _Decimal64,
    719 _Decimal128 nor _Float128).
    720