diff options
Diffstat (limited to 'Build/source/libs/mpfr/mpfr-src/INSTALL')
-rw-r--r-- | Build/source/libs/mpfr/mpfr-src/INSTALL | 719 |
1 files changed, 0 insertions, 719 deletions
diff --git a/Build/source/libs/mpfr/mpfr-src/INSTALL b/Build/source/libs/mpfr/mpfr-src/INSTALL deleted file mode 100644 index f1b6a5cccec..00000000000 --- a/Build/source/libs/mpfr/mpfr-src/INSTALL +++ /dev/null @@ -1,719 +0,0 @@ -Copyright 1999-2020 Free Software Foundation, Inc. -Contributed by the AriC and Caramba projects, INRIA. - -This file is part of the GNU MPFR Library. - -The GNU MPFR Library is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 3 of the License, or (at your -option) any later version. - -The GNU MPFR Library is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see -https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., -51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - - - - Installing GNU MPFR - =================== - -Note: In case of problem, please read this INSTALL file carefully before -reporting a bug, in particular Section "In case of problem" below. Some -problems are due to bad configuration on the user side (not specific to -MPFR). - -0. You first need to install GMP. See <https://gmplib.org/>. - MPFR requires GMP version 5.0.0 or later. - -1. Extract the files from the archive. - -2. It is strongly advised to apply the latest patches if this has - not been done yet and if patches are available. You can check - on the release page: - - https://www.mpfr.org/mpfr-4.1.0/ - - which may have additional information. The patches can be applied - with commands like: - - wget https://www.mpfr.org/mpfr-4.1.0/allpatches - patch -N -Z -p1 < allpatches - - or - - curl https://www.mpfr.org/mpfr-4.1.0/allpatches | patch -N -Z -p1 - - (Those instructions are for the GNU patch command, for example - /usr/bin/gpatch on Solaris.) - -3. In the MPFR directory, to detect your system, type: - ./configure - possibly with options (see below, in particular if this step or - one of the following fails). You should also check whether WARNING - lines have been output (such a problem may cause a failure in one - of the following steps). - Note: paths provided in configure options must always be absolute - (relative paths are not supported). - -4. To build the library, type: - make - - [optional] if you want to tune MPFR for your specific architecture, see - the section "Tuning MPFR" below. Note that for most common architectures, - MPFR includes some default tuning parameters which should be near from - optimal. - -5. To check the built library (runs the test files), type: - make check - - Note: If any test fails, information about this failure can be found in - the tests/test-suite.log file; you should provide this file in your bug - reports (in addition to other useful information, as mentioned later). - If you want the contents of this file to be automatically output in case - of failure, you can set the VERBOSE environment variable to 1 before - running "make check", for instance by typing: - VERBOSE=1 make check - -6. [Optional / experimental] Binary distributions may also want to run: - make check-gmp-symbols - - This will check that MPFR does not use GMP internal symbols, which - could yield failures in case of GMP upgrade without a MPFR rebuild. - But note that this is a heuristic and might give false positives or - false negatives. Please report any problem to the MPFR developers. - End users may also be interested in this check, unless they have - allowed GMP internals with configure options (see below). - -7. To install it (default "/usr/local" | see "--prefix" option), type: - make install - -If you installed MPFR (header and library) in directories that are -not searched by default by the compiler and/or linking tools, then, -like with other libraries, you may need to set up some environment -variables such as C_INCLUDE_PATH (to find the header mpfr.h), -LIBRARY_PATH (to find the library), and if the shared library has -been installed, LD_LIBRARY_PATH (before execution) or LD_RUN_PATH -(before linking); this list is not exhaustive and some environment -variables may be specific to your system. "make install" gives some -instructions; please read them. You can also find more information -in the manuals of your compiler and linker. The MPFR FAQ may also -give some information. - -Remember that if you have several MPFR (or GMP) versions installed -(e.g., one with the system, and one, newer, by you), you will not -necessarily get a compilation/linking error if a wrong library is -used (e.g., because LD_LIBRARY_PATH has not been set correctly). -But unexpected results may occur. - -Under Mac OS X, if the shared library was not installed and you use -Apple's linker (this is the default), you will also need to provide -the -search_paths_first linker flag ("-Wl,-search_paths_first" when -you link via gcc) to make sure that the right library is selected, -as by default, Apple's linker selects a shared library preferably, -even when it is farther in the library paths. We recall that if a -wrong library is selected due to this behavior, unexpected results -may occur. - - -Building the documentation -========================== - -To build the documentation in various formats, you may first need to -install recent versions of some utilities such as texinfo. - -* Type "make info" to produce the documentation in the info format. - -* Type "make pdf" to produce the documentation in the PDF format. - -* Type "make dvi" to produce the documentation in the DVI format. - -* Type "make ps" to produce the documentation in the Postscript format. - -* Type "make html" to produce the documentation in the HTML format - (in several pages); if you want only one output HTML file, then - type "makeinfo --html --no-split mpfr.texi" from the doc directory - instead. - - -Building MPFR with internal GMP header files -============================================ - -MPFR built with internal GMP header files is a bit faster, so you may want -to build it with them. Just do this in step 1: - - ./configure --with-gmp-build=GMPBUILD - -where GMPBUILD is the GMP build directory. The needed header files are: -gmp-impl.h, longlong.h and all the necessary headers to use them, which -may be located either in the GMP source directory or in the GMP build -directory, in case they are different (MPFR takes care of that, as of -MPFR 3.1.0). - -Warning: the library obtained in this way may use some internal GMP -symbols, and thus dynamically linking your software with a different -version of GMP might fail, even though it is declared as compatible -by Libtool's versioning system. - - -Tuning MPFR -=========== - -[For the current GMP version (6.1.0), a Unix-like OS is required.] - -For this, you need to build MPFR with a GMP build directory (see above). -In the GMP build directory, you also need to go into the "tune" subdirectory -and type "make speed". This will build the GMP speed library, which is used -by the MPFR tuning mechanism. - -Then go back to the MPFR build directory, go into the "tune" subdirectory and -type "make tune". This will build an optimized file "mparam.h" for your -specific architecture. - - -./configure options -=================== - ---prefix=DIR installs MPFR headers and library in DIR/include and - DIR/lib respectively (the default is "/usr/local"). - ---with-gmp-include=DIR assumes that DIR contains gmp.h ---with-gmp-lib=DIR assumes that DIR contains the GMP library ---with-gmp=DIR assumes that DIR is where you have installed GMP. - same as --with-gmp-lib=DIR/lib - and --with-gmp-include=DIR/include - (use either --with-gmp alone or one or both of - --with-gmp-lib/--with-gmp-include) - Warning! Do not use these options if you have - CPPFLAGS and/or LDFLAGS containing a -I or -L - option with a directory that contains a GMP - header or library file, as these options just - add -I and -L options to CPPFLAGS and LDFLAGS - *after* the ones that are currently declared, - so that DIR will have a lower precedence. Also, - this may not work if DIR is a system directory - (typically /usr or /usr/local); see below. - ---with-gmp-build=DIR assumes that DIR contains the GMP build directory, - and enables the use of GMP internals (see above). - Warning! This option and the group of options - --with-gmp are mutually exclusive. - ---enable-assert build MPFR with assertions. - ---enable-thread-safe build MPFR as thread safe, using compiler-level - Thread-Local Storage (TLS). Note: TLS support is - roughly tested by configure. If configure detects - that TLS does not work (because of the compiler, - linker or system libraries), it will output an - error message, telling you to build MPFR without - thread safe. For instance, though Mac OS X uses - GCC, it may not currently support GCC's __thread - storage class. - ---disable-thread-safe build MPFR without TLS. By default, TLS support - is detected automatically, and MPFR is built as - thread safe if supported. However this detection - is only a heuristic: TLS can be detected as - supported while its support is incomplete or - buggy (MPFR tests may fail). In such a case, - this option is useful. - ---enable-decimal-float build conversion functions from/to decimal floats. - Note that detection by the configure script is - limited in case of cross-compilation. - Accepted arguments: - yes Decimal support is requested and the configure - script fails if it detects that decimals do not - work. - The encoding (BID or DPD) will automatically be - detected at configure time or at compile time if - possible (if not, generic code will be used). - no Decimal support is explicitly disabled. - auto Decimal support is enabled if the configure script - detects that it works. This is the default when - --{enable,disable}-decimal-float is not given. - bid Decimal support is requested and the encoding is - assumed to be BID (some check may be done). - dpd Decimal support is requested and the encoding is - assumed to be DPD (some check may be done). - generic Decimal support is requested and the generic code - is used (mainly for developers). - ---enable-gmp-internals allows the MPFR build to use GMP's undocumented - functions (not from the public API). Note that - library versioning is not guaranteed to work if - this option is used. Thus it must not be used in - binary distributions. - ---with-sysroot=DIR Search for dependent libraries within DIR (which - may be useful in cross-compilation). If you use - this option, you need to have Libtool 2.4+ on - the target system. See Libtool 2.4+'s NEWS file. - -Note: By default, the configure script tries to set CC / CFLAGS to GMP's -ones from gmp.h (__GMP_CC / __GMP_CFLAGS) in order to ensure that MPFR is -built with the same ABI as GMP. The reason is that when GMP is built, it -may set CC / CFLAGS to select an ABI that is not the default one in order -to have a better performance. The -pedantic option in GMP's CFLAGS, when -present (which is the case by default), is removed, because the MPFR -build system uses some C extensions (when this script detects that they -are supported) and -pedantic yields too many useless warnings. However, -this setting from GMP is not guaranteed to work as the configure script -does some compiler tests earlier, and a conflict may arise. Also, the -values obtained from GMP may be incorrect for the MPFR build if GMP has -been built on a different machine; in such a case, the user may need to -specify CC / CFLAGS, as explained below. - -Moreover, even without --with-gmp-build and --enable-gmp-internals, -MPFR might use some GMP internals by mistake. This would be a bug, -which should be reported to the MPFR developers. - -Run "./configure --help" to see the other options (default options -from Autoconf and Automake). - - -If 'gmp.h' and 'libgmp' do not match -==================================== - -Under some circumstances, the configure script may output a message -saying: - - 'gmp.h' and 'libgmp' seem to have different versions or - we cannot run a program linked with GMP (if you cannot - see the version numbers above). [...] - -Even though the configure script does not fail in such a case, this -message most often indicates a real error, which needs to be avoided. -Possible causes are: - -* The wanted GMP library does not have the same ABI as the one chosen - to build MPFR. The consequences may be: - - - A different GMP library (with the correct ABI) has been found, - but does not have the same version as 'gmp.h'. - - - No other GMP libraries have been found (in this case, no version - numbers should be printed above the warning message). - - This is incorrect and one of the following steps (make, make check) - will probably fail. GMP (actually gmp.h) now provides CC and CFLAGS - information to select the correct ABI, so that this problem should - no longer occur; but if GMP was provided by a binary package, such - information may not be valid. See the - - checking for CC and CFLAGS in gmp.h... - - line in the configure output (about the 11th line) and the following - few ones for more information. You may need to reinstall GMP or to - provide your own CC and/or CFLAGS. See also the remaining of this - INSTALL file. - -* A configure option like --with-gmp or --with-gmp-include was used - with a system include directory, e.g. one of the following: - - --with-gmp=/usr - --with-gmp=/usr/local - --with-gmp-include=/usr/include - --with-gmp-include=/usr/local/include - - GCC (and possibly other compilers) will ignore such a directive for - include directories (but this rule is not applied for the library - itself!). This means that the library search paths will be reordered - as declared, but the specified include directory will still be near - the end of the include search paths (thus with a low precedence). - This is not a problem if only one GMP version is installed, but - otherwise, a wrong gmp.h may be chosen, so that the versions of - gmp.h and libgmp may not match. The suggestions are the following: - - - If you want to use the GMP version under /usr, then you should - uninstall all the other GMP versions (header and library files) - that may be seen in the search paths, in particular those under - /usr/local. - - - If you want to use the GMP version under /usr/local, then you - should uninstall all the other GMP versions (header and library - files) that may be seen in the search paths, but *NOT* the one - under /usr (the version under /usr is provided by the OS vendor, - and changing/removing anything related to it may break your - system, and /usr should have a lower precedence than /usr/local - anyway). - - To find where GMP versions have been installed: - - $ locate libgmp (if you have a locate database) - - and if the compiler is GCC: - - $ gcc -print-file-name=libgmp.so (under most systems) - $ gcc -print-file-name=libgmp.dylib (under Mac OS X) - - and if this does not work, you may try: - - $ gcc -print-search-dirs - -* An official GCC version was used under Debian GNU/Linux. Problems - may come from the fact that Debian chose a different convention - for library search paths concerning 32-bit and 64-bit libraries. - A possible problem can be, for instance: - - [Debian's GCC, correct library path] - $ gcc -print-file-name=libgmp.so - /home/vlefevre/gmp/athlon64/lib/../lib/libgmp.so - - [Official GCC, incorrect library path] - $ gcc-4.3.1 -print-file-name=libgmp.so - /usr/lib/../lib64/libgmp.so - - The solution: use a GCC provided by Debian or add symbolic links - such as lib64 -> lib (on 64-bit machines) for your library paths. - -* The problem may also be temporary and only due to the fact that - libtool could not be used at this time. This is unlikely, though. - - -In case of problem -================== - -First, look for any warning message in the configure output. - -Several documents may help you to solve the problem: - * this INSTALL file, in particular information given below; - * the FAQ (either the FAQ.html file distributed with MPFR, or the - on-line version <https://www.mpfr.org/faq.html>, which may be more - up-to-date); - * the MPFR web page for this version <https://www.mpfr.org/mpfr-4.1.0/>, - which lists bugs found in this version and provides some patches. - -If the "configure" fails, please check that the C compiler and its -options are the same as those for the GMP build (specially the ABI). -You can see the latter with the following command: - - grep "^CC\|^CFLAGS" GMPBUILD/Makefile - -if the GMP build directory is available. Then type: - - ./configure <configure options> CC=<C compiler> CFLAGS="<compiler options>" - -(quotes are needed when there are spaces or other special characters -in the CC/CFLAGS value) and continue the install. On some platforms, -you should provide further options to match those used by GMP, or set -some environment variables. For instance, see the "Notes on AIX/PowerPC" -section below. - -Warning! Do NOT use optimization options that can change the semantics -of math operations, such as GCC's -ffast-math or Sun CC's -fast. -Otherwise conversions from/to double's may be incorrect on infinities, -NaN's and signed zeros. Since native FP arithmetic is used in a few -places only, such options would not make MPFR faster anyway. - -If some "make check" tests fail, you can try the --disable-thread-safe -configure option (see the configure options above): it has been reported -that some platforms have buggy TLS support. Before trying this option, -you may want to check in the configure output whether MPFR was built -with TLS support; if yes, you will have a line: - checking for TLS support... yes -Alternatively "grep MPFR_USE_THREAD_SAFE config.log" will show that -MPFR_USE_THREAD_SAFE is defined to 1. If it is "no" (or the variable -is not defined), the --disable-thread-safe option would be useless. - -Some tests failure may be due to other compiler bugs, in particular -in optimization code. You can try to build MPFR without compiler -optimizations by giving -O0 (letter O, digit 0) in CFLAGS. If the -MPFR tests no longer fail, this was probably due to a compiler bug, -though we cannot exclude a bug in MPFR. You may want to contact us -(see below), possibly after looking at: - https://members.loria.fr/PZimmermann/software/compilerbugs.html - -On some platforms, try with "gmake" (GNU make) instead of "make". -Problems have been reported with the Tru64 make. - -If the configure script reports that gmp.h version and libgmp version -are different, or if the build was OK, but the tests failed to link -with GMP or gave an error like - - undefined reference to `__gmp_get_memory_functions' - -meaning that the GMP library was not found or a wrong GMP library was -selected by the linker, then your library search paths are probably -not correctly set (some paths are missing or they are specified in an -incorrect order). - -Such problems commonly occur under some GNU/Linux machines, where the -default header and library search paths may be inconsistent: GCC is -configured to search /usr/local/include and /usr/local/lib by default, -while the dynamic linker ignores /usr/local/lib. If you have a GMP -version installed in /usr (provided by the OS vendor) and a new one -installed in /usr/local, then the header of the new GMP version and -the library of the old GMP version will be used! The best solution -is to make sure that the dynamic linker configuration is consistent -with GCC's behavior, for instance by having /usr/local/lib in -/etc/ld.so.conf or in some file from /etc/ld.so.conf.d (as Debian -did: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395177). See -also https://gcc.gnu.org/legacy-ml/gcc-help/2010-01/msg00171.html for -more information. Alternatively you can use: - * environment variables. This may sometimes be necessary. If DIR - is the installation directory of GMP, add DIR/include to your - CPATH or C_INCLUDE_PATH (for compilers other than GCC, please - check the manual of your compiler), and add DIR/lib to your - LIBRARY_PATH and LD_LIBRARY_PATH (and/or LD_RUN_PATH); - * --with-gmp* configure options (described above), e.g. - --with-gmp=/opt/local (to use /opt/local/include for headers and - /opt/local/lib for libraries), but other software that uses GMP - and/or MPFR will need correct paths too, and environment variables - allow one to set such search paths in a global way. - Note about "--with-gmp=/usr/local". This option may appear to - solve the above inconsistency problem, but does not work as you - expect. Indeed it affects the library search path, in particular, - the one used by the dynamic linker (thus adding the missing - /usr/local/lib directory as wanted), but since /usr/local/include - is a "standard system include directory" for GCC, the include - search patch is not changed; this is often not a problem in this - particular case because usually, /usr/local/include is already - last in the include search patch, but this may fail under some - occasions and may trigger obscure errors. - -For instance, under Unix, where paths are separated by a colon: - - * With POSIX sh-compatible shells (e.g. sh, ksh, bash, zsh): - export C_INCLUDE_PATH="/usr/local/include:/other/path/include" - export LIBRARY_PATH="/usr/local/lib:/other/path/lib" - export LD_LIBRARY_PATH="$LIBRARY_PATH" - - * With csh or tcsh: - setenv C_INCLUDE_PATH "/usr/local/include:/other/path/include" - setenv LIBRARY_PATH "/usr/local/lib:/other/path/lib" - setenv LD_LIBRARY_PATH "$LIBRARY_PATH" - -If almost all the tests fail and the messages in the test-suite.log file -(or in the output, when running individual tests from the command line) -start with a line of the form: - - Incorrect MPFR version! (xxx header vs yyy library) - -then this means that an installed MPFR version is tested instead of the -one that has just been built. This is probably not a bug in MPFR, but a -problem caused by the user or system configuration (particular options, -environment variables, etc.) or a bug in the toolchain. In particular, -if LD_LIBRARY_PATH overrides the run path (set up by libtool) and an -installed ABI-compatible version of MPFR is in a directory listed in -the LD_LIBRARY_PATH search path, then this will break. An example with -GNU ld: - - https://sourceware.org/bugzilla/show_bug.cgi?id=21476 - -If you can't solve your problem, you should contact us via the MPFR -mailing-list <mpfr@inria.fr>, indicating the machine and operating system -used (uname -a), the compiler and version used (gcc -v if you use gcc), -the configure options used if any (including variables such as CC and -CFLAGS), the version of GMP and MPFR used, and a description of the -problem encountered, in particular the tests/test-suite.log file if -"make check" failed. Please send us also the log of the "configure" -(config.log). - - -Notes about ABI -=============== - -On 64-bit computers, it may happen that the default ABI (Application Binary -Interface) chosen by MPFR does not correspond to the default one chosen by -the compiler. - -In particular, this kind of message may indicate the problem: -/usr/bin/ld: skipping incompatible mpfr/src/.libs/libmpfr.a when searching for -lmpfr - -In fact, since MPFR relies on GMP, it uses the same ABI as GMP. -To be sure that your program compiles and links correctly, use the same -compiler flags as MPFR does (look for CFLAGS in config.log). - -You might also recompile GMP with a different ABI, with for example -./configure ABI=32. - - -Notes on Mac OS X -================= - -If you get an error of the form - - ld: pointer in read-only segment not allowed in slidable image... - -this can mean that the link is done against a static (GMP) library. -In such a case, you should configure MPFR with --disable-shared to -disable the build of the shared library. - - -Notes on FreeBSD 4.3 -==================== - -FreeBSD 4.3 is provided with an incorrect <float.h> header file, and -MPFR tests related to long double's may fail. If you cannot upgrade -the system, you can still use MPFR with FreeBSD 4.3, but you should -not use conversions with the long double type. - - -Notes on AIX/PowerPC -==================== - -The following has been tested on AIX 7.1.3 (gcc111.fsffrance.org) -with gcc 4.8.1 and GMP 6.1.0. - -If GMP was built with the 64-bit ABI, before building and testing MPFR, -you should set the OBJECT_MODE environment variable to 64, e.g., with: - - export OBJECT_MODE=64 - -(in a sh-compatible shell). Alternatively add the following to the configure -line: AR="ar -X64" NM="nm -B -X64". - - -Notes on Solaris -================ - -Do not put a -R<dir> option in the LD_OPTIONS environment variable, at least -if the directory <dir> can contain an MPFR library. Otherwise this MPFR -library may be chosen for the tests (make check) instead of the one that has -just been built, in which case, either you will get errors due to unmatched -versions or this problem may remain undetected. The reason is that this -option will appear before the -R options added by libtool, such as the one -to the src/.libs directory containing the MPFR library that has just been -built, and will have the precedence. - - -MPFR for use with Windows Applications -====================================== - -There are several ways of building MPFR on Windows, the most appropriate -approach depending on how you intend to use the resulting libraries. - -a. Using MinGW -============== - -1 - We advise to use MinGW (http://www.mingw.org/ for 32-bit, and - https://sourceforge.net/projects/mingw-w64/ for 32- and 64-bit), - which is simpler and less demanding than Cygwin. Contrary to Cygwin, - it also provides native Windows code. - - If you also use MSYS, you should use "make" for MSYS instead of - the "make" utility from MinGW-W64 or from GCC, which causes the - following error: - - libtool: warning: libobj name 'extract.Tpo -c -o extract.lo extract.lo' - may not contain shell special characters. - rm: unknown option -- c - - References about this issue and solution: - https://sourceforge.net/p/msys2/tickets/223/ - https://sympa.inria.fr/sympa/arc/mpfr/2016-07/msg00009.html - -2 - If you just want to make a binary with gcc, there is nothing to do: - GMP, MPFR and the program compile exactly as under Linux. (It is - recommended to pass --build=xxx-yyy-mingw64 to the GMP configure command, - or --build=xxx with xxx containing mingw.) - -3 - To avoid using the Microsoft runtime (which might not be conform to ISO C), - you can use the MinGW runtime package (which is an integral part of MinGW). - - With old MinGW versions, you can get an ISO-compliant printf() - if you compile your application with either '-ansi', '-posix' or - '-D__USE_MINGW_ANSI_STDIO'. But note that this latter option, - which was useful in the past (see below) should no longer be used. - - The following applies to old MinGW versions, and may be discouraged - with recent MinGW versions. - - In order to have the MPFR formatted output functions based on an - ISO-compliant printf(), you need to compile GMP (not MPFR) with - CC="gcc -D__USE_MINGW_ANSI_STDIO" (since the standard printf modifiers - %e, %Ld and %td are passed to GMP). - - To avoid failures of some of the printf-related tests, MPFR needs to - be compiled with the same __USE_MINGW_ANSI_STDIO as with GMP, i.e. - this macro should be defined for both or undefined for both; this - should be the case by default, unless CC or CFLAGS has been redefined. - For instance, if __USE_MINGW_ANSI_STDIO is defined in GMP but not in - MPFR, the following error may occur: - - Error in mpfr_vsprintf (s, "%e", ...); - expected: "-1.250000e+000" - got: "-1.250000e+00" - FAIL tsprintf.exe (exit status: 1) - - and in the opposite case: - - Error in mpfr_vsprintf (s, "%e", ...); - expected: "-1.250000e+00" - got: "-1.250000e+000" - FAIL tsprintf.exe (exit status: 1) - - Note with old GMP versions: Other issues could arise due to the fact - that the C functions vsnprintf and vsprintf both used internally in - old GMP versions do not produce the same output: - - https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00045.html - https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00051.html - https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00053.html - - If __USE_MINGW_ANSI_STDIO has not been defined when building GMP, - then the length modifiers j, L and t are not supported with the GMP - formatted output functions, and as a consequence, also with MPFR. - This is automatically detected by the configure script, except when - cross-compiling (e.g. under Linux), in which case some macros need - to be defined explicitly, e.g. with - - "CPPFLAGS=-DNPRINTF_J -DNPRINTF_L -DNPRINTF_T" - - in order to avoid potential issues with the MPFR library and failures - in the test suite (the corresponding tests are disabled explicitly). - -b. Using Cygwin -=============== - -This build should be similar to that for MinGW except that the resulting -library depends on the Cygwin DLL and cannot therefore be used with -Visual Studio as with MinGW. Indeed, the binaries compiled with Cygwin -require a dynamic library (cygwin.dll) to work; there is a Cygwin option --mno-cygwin to build native code, but it may require some non-portable tricks. - -In case of failure, you may need to pass LDFLAGS='-shared-libgcc' at the -end of the configure line due to a bug in GCC. Otherwise, if threading -support is not needed, you can configure MPFR with --disable-thread-safe. - -c. Using Microsoft Visual C++ and Intel C++ Compilers -===================================================== - -Static and dynamic MPFR libraries for the 32- and 64-bit versions of -Windows can be built with Microsoft Visual Studio 2015 using the -Microsoft Visual C++ compiler, see: - - https://visualstudio.microsoft.com/ - -The Intel C++ compiler provided as a part of Intel Parallel Studio XE -can also be used: - - https://software.intel.com/en-us/parallel-studio-xe - -The relevant build projects are available here: - - https://github.com/BrianGladman - -d. Using the CompCert compiler -============================== - -[this was tested with CompCert 3.7 and MPFR revision 13851 on x86_64-linux] - -CompCert (http://compcert.inria.fr/) is a formally verified compiler. -To compile MPFR with CompCert: - -$ ./configure CC=ccomp CFLAGS="-fbitfields -flongdouble -fstruct-passing" --disable-shared - -You also need to unset LD_LIBRARY_PATH, and/or you might need to change -wl="" into wl="-Wl," in the libtool file. - -All tests (make check) should pass (tget_set_d64, tget_set_d128 and -tset_float128 are skipped, since CompCert does not support _Decimal64, -_Decimal128 nor _Float128). |