INSTALL revision 1.1.1.3.4.1 1 Copyright 1999-2018 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 http://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 <http://www.gnu.org/software/gmp/>.
32 MPFR requires GMP version 4.1 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 http://www.mpfr.org/mpfr-4.0.1/
41
42 which may have additional information. The patches can be applied
43 with commands like:
44
45 wget http://www.mpfr.org/mpfr-4.0.1/allpatches
46 patch -N -Z -p1 < allpatches
47
48 or
49
50 curl http://www.mpfr.org/mpfr-4.0.1/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-gmp-internals allows the MPFR build to use GMP's undocumented
228 functions (not from the public API). Note that
229 library versioning is not guaranteed to work if
230 this option is used. Thus it must not be used in
231 binary distributions.
232
233 --with-sysroot=DIR Search for dependent libraries within DIR (which
234 may be useful in cross-compilation). If you use
235 this option, you need to have Libtool 2.4+ on
236 the target system. See Libtool 2.4+'s NEWS file.
237 Technical information can be found at [1].
238
239 [1] http://permalink.gmane.org/gmane.comp.gnu.libtool.patches/10111
240
241 Note: By default, the configure script tries to set CC/CFLAGS to GMP's
242 ones (this feature needs GMP 4.3.0 or later, or the --with-gmp-build
243 option). However this is not guaranteed to work as the configure script
244 does some compiler tests earlier, and the change may be too late. Also,
245 the values obtained from GMP may be incorrect if GMP has been built
246 on a different machine. In such a case, the user may need to specify
247 CC/CFLAGS as explained below.
248
249 Moreover, even without --with-gmp-build and --enable-gmp-internals,
250 MPFR might use some GMP internals by mistake. This would be a bug,
251 which should be reported to the MPFR developers.
252
253 Run "./configure --help" to see the other options (default options
254 from Autoconf and Automake).
255
256
257 If 'gmp.h' and 'libgmp' do not match
258 ====================================
259
260 Under some circumstances, the configure script may output a message
261 saying:
262
263 'gmp.h' and 'libgmp' seem to have different versions or
264 we cannot run a program linked with GMP (if you cannot
265 see the version numbers above). [...]
266
267 Even though the configure script does not fail in such a case, this
268 message most often indicates a real error, which needs to be avoided.
269 Possible causes are:
270
271 * The wanted GMP library does not have the same ABI as the one chosen
272 to build MPFR. The consequences may be:
273
274 - A different GMP library (with the correct ABI) has been found,
275 but does not have the same version as 'gmp.h'.
276
277 - No other GMP libraries have been found (in this case, no version
278 numbers should be printed above the warning message).
279
280 This is incorrect and one of the following steps (make, make check)
281 will probably fail. GMP (actually gmp.h) now provides CC and CFLAGS
282 information to select the correct ABI, so that this problem should
283 no longer occur; but if GMP was provided by a binary package, such
284 information may not be valid. See the
285
286 checking for CC and CFLAGS in gmp.h...
287
288 line in the configure output (about the 11th line) and the following
289 few ones for more information. You may need to reinstall GMP or to
290 provide your own CC and/or CFLAGS. See also the remaining of this
291 INSTALL file.
292
293 * A configure option like --with-gmp or --with-gmp-include was used
294 with a system include directory, e.g. one of the following:
295
296 --with-gmp=/usr
297 --with-gmp=/usr/local
298 --with-gmp-include=/usr/include
299 --with-gmp-include=/usr/local/include
300
301 GCC (and possibly other compilers) will ignore such a directive for
302 include directories (but this rule is not applied for the library
303 itself!). This means that the library search paths will be reordered
304 as declared, but the specified include directory will still be near
305 the end of the include search paths (thus with a low precedence).
306 This is not a problem if only one GMP version is installed, but
307 otherwise, a wrong gmp.h may be chosen, so that the versions of
308 gmp.h and libgmp may not match. The suggestions are the following:
309
310 - If you want to use the GMP version under /usr, then you should
311 uninstall all the other GMP versions (header and library files)
312 that may be seen in the search paths, in particular those under
313 /usr/local.
314
315 - If you want to use the GMP version under /usr/local, then you
316 should uninstall all the other GMP versions (header and library
317 files) that may be seen in the search paths, but *NOT* the one
318 under /usr (the version under /usr is provided by the OS vendor,
319 and changing/removing anything related to it may break your
320 system, and /usr should have a lower precedence than /usr/local
321 anyway).
322
323 To find where GMP versions have been installed:
324
325 $ locate libgmp (if you have a locate database)
326
327 and if the compiler is GCC:
328
329 $ gcc -print-file-name=libgmp.so (under most systems)
330 $ gcc -print-file-name=libgmp.dylib (under Mac OS X)
331
332 and if this does not work, you may try:
333
334 $ gcc -print-search-dirs
335
336 * An official GCC version was used under Debian GNU/Linux. Problems
337 may come from the fact that Debian chose a different convention
338 for library search paths concerning 32-bit and 64-bit libraries.
339 A possible problem can be, for instance:
340
341 [Debian's GCC, correct library path]
342 $ gcc -print-file-name=libgmp.so
343 /home/vlefevre/gmp/athlon64/lib/../lib/libgmp.so
344
345 [Official GCC, incorrect library path]
346 $ gcc-4.3.1 -print-file-name=libgmp.so
347 /usr/lib/../lib64/libgmp.so
348
349 The solution: use a GCC provided by Debian or add symbolic links
350 such as lib64 -> lib (on 64-bit machines) for your library paths.
351
352 * The problem may also be temporary and only due to the fact that
353 libtool could not be used at this time. This is unlikely, though.
354
355
356 In case of problem
357 ==================
358
359 First, look for any warning message in the configure output.
360
361 Several documents may help you to solve the problem:
362 * this INSTALL file, in particular information given below;
363 * the FAQ (either the FAQ.html file distributed with MPFR, or the
364 on-line version <http://www.mpfr.org/faq.html>, which may be more
365 up-to-date);
366 * the MPFR web page for this version <http://www.mpfr.org/mpfr-4.0.1/>,
367 which lists bugs found in this version and provides some patches.
368
369 If the "configure" fails, please check that the C compiler and its
370 options are the same as those for the GMP build (specially the ABI).
371 You can see the latter with the following command:
372
373 grep "^CC\|^CFLAGS" GMPBUILD/Makefile
374
375 if the GMP build directory is available. Then type:
376
377 ./configure <configure options> CC=<C compiler> CFLAGS="<compiler options>"
378
379 (quotes are needed when there are spaces or other special characters
380 in the CC/CFLAGS value) and continue the install. On some platforms,
381 you should provide further options to match those used by GMP, or set
382 some environment variables. For instance, see the "Notes on AIX/PowerPC"
383 section below.
384
385 Warning! Do NOT use optimization options that can change the semantics
386 of math operations, such as GCC's -ffast-math or Sun CC's -fast.
387 Otherwise conversions from/to double's may be incorrect on infinities,
388 NaN's and signed zeros. Since native FP arithmetic is used in a few
389 places only, such options would not make MPFR faster anyway.
390
391 If some "make check" tests fail, you can try the --disable-thread-safe
392 configure option (see the configure options above): it has been reported
393 that some platforms have buggy TLS support. Before trying this option,
394 you may want to check in the configure output whether MPFR was built
395 with TLS support; if yes, you will have a line:
396 checking for TLS support... yes
397 Alternatively "grep MPFR_USE_THREAD_SAFE config.log" will show that
398 MPFR_USE_THREAD_SAFE is defined to 1. If it is "no" (or the variable
399 is not defined), the --disable-thread-safe option would be useless.
400
401 Some tests failure may be due to other compiler bugs, in particular
402 in optimization code. You can try to build MPFR without compiler
403 optimizations by giving -O0 (letter O, digit 0) in CFLAGS. If the
404 MPFR tests no longer fail, this was probably due to a compiler bug,
405 though we cannot exclude a bug in MPFR. You may want to contact us
406 (see below), possibly after looking at:
407 https://members.loria.fr/PZimmermann/software/compilerbugs.html
408
409 On some platforms, try with "gmake" (GNU make) instead of "make".
410 Problems have been reported with the Tru64 make.
411
412 If the configure script reports that gmp.h version and libgmp version
413 are different, or if the build was OK, but the tests failed to link
414 with GMP or gave an error like
415
416 undefined reference to `__gmp_get_memory_functions'
417
418 meaning that the GMP library was not found or a wrong GMP library was
419 selected by the linker, then your library search paths are probably
420 not correctly set (some paths are missing or they are specified in an
421 incorrect order).
422
423 Such problems commonly occur under some GNU/Linux machines, where the
424 default header and library search paths may be inconsistent: GCC is
425 configured to search /usr/local/include and /usr/local/lib by default,
426 while the dynamic linker ignores /usr/local/lib. If you have a GMP
427 version installed in /usr (provided by the OS vendor) and a new one
428 installed in /usr/local, then the header of the new GMP version and
429 the library of the old GMP version will be used! The best solution
430 is to make sure that the dynamic linker configuration is consistent
431 with GCC's behavior, for instance by having /usr/local/lib in
432 /etc/ld.so.conf or in some file from /etc/ld.so.conf.d (as Debian
433 did: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395177). See
434 also https://gcc.gnu.org/ml/gcc-help/2010-01/msg00171.html for more
435 information. Alternatively you can use:
436 * environment variables. This may sometimes be necessary. If DIR
437 is the installation directory of GMP, add DIR/include to your
438 CPATH or C_INCLUDE_PATH (for compilers other than GCC, please
439 check the manual of your compiler), and add DIR/lib to your
440 LIBRARY_PATH and LD_LIBRARY_PATH (and/or LD_RUN_PATH);
441 * --with-gmp* configure options (described above), e.g.
442 --with-gmp=/opt/local (to use /opt/local/include for headers and
443 /opt/local/lib for libraries), but other software that uses GMP
444 and/or MPFR will need correct paths too, and environment variables
445 allow one to set such search paths in a global way.
446 Note about "--with-gmp=/usr/local". This option may appear to
447 solve the above inconsistency problem, but does not work as you
448 expect. Indeed it affects the library search path, in particular,
449 the one used by the dynamic linker (thus adding the missing
450 /usr/local/lib directory as wanted), but since /usr/local/include
451 is a "standard system include directory" for GCC, the include
452 search patch is not changed; this is often not a problem in this
453 particular case because usually, /usr/local/include is already
454 last in the include search patch, but this may fail under some
455 occasions and may trigger obscure errors.
456
457 For instance, under Unix, where paths are separated by a colon:
458
459 * With POSIX sh-compatible shells (e.g. sh, ksh, bash, zsh):
460 export C_INCLUDE_PATH="/usr/local/include:/other/path/include"
461 export LIBRARY_PATH="/usr/local/lib:/other/path/lib"
462 export LD_LIBRARY_PATH="$LIBRARY_PATH"
463
464 * With csh or tcsh:
465 setenv C_INCLUDE_PATH "/usr/local/include:/other/path/include"
466 setenv LIBRARY_PATH "/usr/local/lib:/other/path/lib"
467 setenv LD_LIBRARY_PATH "$LIBRARY_PATH"
468
469 If almost all the tests fail and the messages in the test-suite.log file
470 (or in the output, when running individual tests from the command line)
471 start with a line of the form:
472
473 Incorrect MPFR version! (xxx header vs yyy library)
474
475 then this means that an installed MPFR version is tested instead of the
476 one that has just been built. This is probably not a bug in MPFR, but a
477 problem caused by the user or system configuration (particular options,
478 environment variables, etc.) or a bug in the toolchain. In particular,
479 if LD_LIBRARY_PATH overrides the run path (set up by libtool) and an
480 installed ABI-compatible version of MPFR is in a directory listed in
481 the LD_LIBRARY_PATH search path, then this will break. An example with
482 GNU ld:
483
484 https://sourceware.org/bugzilla/show_bug.cgi?id=21476
485
486 If you can't solve your problem, you should contact us via the MPFR
487 mailing-list <mpfr (a] inria.fr>, indicating the machine and operating system
488 used (uname -a), the compiler and version used (gcc -v if you use gcc),
489 the configure options used if any (including variables such as CC and
490 CFLAGS), the version of GMP and MPFR used, and a description of the
491 problem encountered, in particular the tests/test-suite.log file if
492 "make check" failed. Please send us also the log of the "configure"
493 (config.log).
494
495
496 Notes about ABI
497 ===============
498
499 On 64-bit computers, it may happen that the default ABI (Application Binary
500 Interface) chosen by MPFR does not correspond to the default one chosen by
501 the compiler.
502
503 In particular, this kind of message may indicate the problem:
504 /usr/bin/ld: skipping incompatible mpfr/src/.libs/libmpfr.a when searching for -lmpfr
505
506 In fact, since MPFR relies on GMP, it uses the same ABI as GMP.
507 To be sure that your program compiles and links correctly, use the same
508 compiler flags as MPFR does (look for CFLAGS in config.log).
509
510 You might also recompile GMP with a different ABI, with for example
511 ./configure ABI=32.
512
513
514 Notes on Mac OS X
515 =================
516
517 If you get an error of the form
518
519 ld: pointer in read-only segment not allowed in slidable image...
520
521 this can mean that the link is done against a static (GMP) library.
522 In such a case, you should configure MPFR with --disable-shared to
523 disable the build of the shared library.
524
525
526 Notes on FreeBSD 4.3
527 ====================
528
529 FreeBSD 4.3 is provided with an incorrect <float.h> header file, and
530 MPFR tests related to long double's may fail. If you cannot upgrade
531 the system, you can still use MPFR with FreeBSD 4.3, but you should
532 not use conversions with the long double type.
533
534
535 Notes on AIX/PowerPC
536 ====================
537
538 The following has been tested on AIX 7.1.3 (gcc111.fsffrance.org)
539 with gcc 4.8.1 and GMP 6.1.0.
540
541 If GMP was built with the 64-bit ABI, before building and testing MPFR,
542 you should set the OBJECT_MODE environment variable to 64, e.g., with:
543
544 export OBJECT_MODE=64
545
546 (in a sh-compatible shell). Alternatively add the following to the configure
547 line: AR="ar -X64" NM="nm -B -X64".
548
549
550 Notes on Solaris
551 ================
552
553 Do not put a -R<dir> option in the LD_OPTIONS environment variable, at least
554 if the directory <dir> can contain an MPFR library. Otherwise this MPFR
555 library may be chosen for the tests (make check) instead of the one that has
556 just been built, in which case, either you will get errors due to unmatched
557 versions or this problem may remain undetected. The reason is that this
558 option will appear before the -R options added by libtool, such as the one
559 to the src/.libs directory containing the MPFR library that has just been
560 built, and will have the precedence.
561
562
563 MPFR for use with Windows Applications
564 ======================================
565
566 There are several ways of building MPFR on Windows, the most appropriate
567 approach depending on how you intend to use the resulting libraries.
568
569 a. Using MinGW
570 ==============
571
572 1 - We advise to use MinGW (http://www.mingw.org/ for 32-bit, and
573 https://sourceforge.net/projects/mingw-w64/ for 32- and 64-bit),
574 which is simpler and less demanding than Cygwin. Contrary to Cygwin,
575 it also provides native Windows code.
576
577 If you also use MSYS, you should use "make" for MSYS instead of
578 the "make" utility from MinGW-W64 or from GCC, which causes the
579 following error:
580
581 libtool: warning: libobj name 'extract.Tpo -c -o extract.lo extract.lo'
582 may not contain shell special characters.
583 rm: unknown option -- c
584
585 References about this issue and solution:
586 https://sourceforge.net/p/msys2/tickets/223/
587 https://sympa.inria.fr/sympa/arc/mpfr/2016-07/msg00009.html
588
589 2 - If you just want to make a binary with gcc, there is nothing to do:
590 GMP, MPFR and the program compile exactly as under Linux. (It is
591 recommended to pass --build=xxx-yyy-mingw64 to the GMP configure command,
592 or --build=xxx with xxx containing mingw.)
593
594 3 - To avoid using the Microsoft runtime (which might not be conform to ISO C),
595 you can use the MinGW runtime package (which is an integral part of MinGW).
596 For example, with MinGW versions 3.15 and later you can get an
597 ISO-compliant printf() if you compile your application with either
598 '-ansi', '-posix' or '-D__USE_MINGW_ANSI_STDIO'. In order to have the
599 MPFR formatted output functions based on ISO-compliant printf(), you
600 need to compile GMP (not MPFR) with CC="gcc -D__USE_MINGW_ANSI_STDIO"
601 (since the standard printf modifiers %e, %Ld and %td are passed to GMP).
602 Not doing so may result in failures of some of the printf-related tests.
603 For instance, the following error on some Windows machine has been
604 reported:
605
606 https://sympa.inria.fr/sympa/arc/mpfr/2016-02/msg00053.html
607
608 Error in mpfr_vsprintf (s, "%e", ...);
609 expected: "-1.250000e+000"
610 got: "-1.250000e+00"
611 FAIL tsprintf.exe (exit status: 1)
612
613 The cause is that here the C functions vsnprintf and vsprintf used
614 internally in GMP do not produce the same output:
615
616 https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00045.html
617 https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00051.html
618 https://sympa.inria.fr/sympa/arc/mpfr/2016-03/msg00053.html
619
620 Building MPFR with -D__USE_MINGW_ANSI_STDIO is currently useless except
621 for some error messages in the test suite.
622
623 b. Using Cygwin
624 ===============
625
626 This build should be similar to that for MinGW except that the resulting
627 library depends on the Cygwin DLL and cannot therefore be used with
628 Visual Studio as with MinGW. Indeed, the binaries compiled with Cygwin
629 require a dynamic library (cygwin.dll) to work; there is a Cygwin option
630 -mno-cygwin to build native code, but it may require some non-portable tricks.
631
632 In case of failure, you may need to pass LDFLAGS='-shared-libgcc' at the
633 end of the configure line due to a bug in GCC. Otherwise, if threading
634 support is not needed, you can configure MPFR with --disable-thread-safe.
635
636 c. Using Microsoft Visual C++ and Intel C++ Compilers
637 =====================================================
638
639 Static and dynamic MPFR libraries for the 32- and 64-bit versions of
640 Windows can be built with Microsoft Visual Studio 2015 using the
641 Microsoft Visual C++ compiler, see:
642
643 https://www.visualstudio.com/
644
645 The Intel C++ compiler provided as a part of Intel Parallel Studio XE
646 can also be used:
647
648 https://software.intel.com/en-us/intel-parallel-studio-xe
649
650 The relevant build projects are available here:
651
652 https://github.com/BrianGladman
653