X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=mpfr%2FINSTALL;fp=mpfr%2FINSTALL;h=cabc75c81a84bc36efd4b74e64c24ac8a84ec0ed;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/mpfr/INSTALL b/mpfr/INSTALL new file mode 100644 index 00000000..cabc75c8 --- /dev/null +++ b/mpfr/INSTALL @@ -0,0 +1,333 @@ + Installing 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 . + MPFR requires GMP version 4.1 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), e.g. + wget http://www.mpfr.org/mpfr-2.4.1/patches + patch -N -Z -p1 < patches + or + curl http://www.mpfr.org/mpfr-2.4.1/patches | patch -N -Z -p1 + +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). + Note: paths provided in configure options must always be absolute + (relative paths are not supported). + +4. To build the library, type: + make + +5. To check the built library (runs the test files), type: + make check + +6. 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" 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. + +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. + + +./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. + +--with-gmp-build=DIR assumes that DIR contains the source of GMP and + enables the use of GMP internals. + Try to set CC/CFLAGS to GMP's ones. This is not + guaranteed to work as the configure script does + some compiler tests earlier, and the change may + be too late. + 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. + +Run "./configure --help" to see the other options (autoconf default options). + + +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 , which may be more + up-to-date); + * the MPFR web page for this version , + 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 CC= CFLAGS= + +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. + +On some platforms, try with "gmake" (GNU make) instead of "make". +Problems have been reported with the Tru64 make. + +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 GNU/Linux machines, where default +header and library paths may be inconsistent: gcc is configured to +search /usr/local/include by default, while /usr/local/lib is not in +the default search paths. If you have a GMP version installed in /usr +(provided by the OS) 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! A typical error is the above one in "make check". The +solution is to add /usr/local/include to your C_INCLUDE_PATH and to +add /usr/local/lib to your LIBRARY_PATH and LD_LIBRARY_PATH (and/or +LD_RUN_PATH), as said above. Alternatively, you can use --with-gmp* +configure options (described above), e.g. --with-gmp=/usr/local, but +other software that uses GMP and/or MPFR will need correct paths too, +and environment variables allow to set them in a global way. + +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 you can't solve your problem, you should contact us at , +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. Please send us +also the log of the "configure" (config.log). + +Note that even if you can build MPFR with a C++ compiler, you can't run +the test suite: C and C++ are not the same language! You should use a C +compiler instead. + + +Notes on FreeBSD 4.3 +==================== + +FreeBSD 4.3 is provided with an incorrect 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 5.3 (powerpc-ibm-aix5.3.0.0) with +gcc 3.3.2 and GMP 4.2.1. + +Before building and testing MPFR, you should set the OBJECT_MODE +environment variable to 64 (as GMP selects the 64-bit ABI by default), +e.g. with: + + export OBJECT_MODE=64 + +(in a sh-compatible shell). But you should also provide a correct CFLAGS +value to the "configure" script: using --with-gmp-build is not sufficient +due to the early compiler tests, as gcc will not compile any program if +OBJECT_MODE is 64 and the -maix64 option is not provided. + + +Notes on 32-bit Windows Applications (win32) +============================================ + +1 - We advise to use mingw (http://www.mingw.org/), which is simpler and + less demanding than Cygwin. Contrary to Cygwin, it also provides native + Windows code. 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. + +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. + +3 - If you want to make libraries to work under another Windows compiler + like Visual C / C++, you have two options. Since the unix-like *.a + library files are compatible with Windows *.lib files, you can simply + rename all *.a libraries to *.lib. The second option is to build + MPFR with the Microsoft Visual Studio compiler to produce Windows + libraries directly (Visual Studio build projects for MPFR are + available at http://fp.gladman.plus.com/computing/gmp4win.htm). + + With gmp-4.1.3, the only remaining problem seems to be the "alloca" calls + in GMP. Configuring GMP and MPFR with --enable-alloca=malloc-reentrant + should work (if you build MPFR with GMP internal files). + + Or you could add the library + "$MINGWIN$/lib/gcc-lib/mingw32/$VERSION$/libgcc.a" + to your project: it contains all the extra-functions needed by a program + compiled by gcc (division of 64-bit integer, bcopy, alloca...). + Of course, include it if and only if your compiler is not gcc. + +4 - On Windows32 / MinGW, if all the tests fail, try to run the test suite + with "make check EXEEXT=". + +5 - 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). + For example, with MinGW versions 3.15 and later you can get an + ISO-compliant printf() if you compile your application with either + '-ansi', '-posix' or '-D__USE_MINGW_ANSI_STDIO'. For example, you can + compile and test MPFR with CC="gcc -D__USE_MINGW_ANSI_STDIO". + + For example under Win32, the following problem has been experienced with + MPFR 2.4.0 RC1 and the MSVC runtime (msvcrt.dll): + + Error in mpfr_vsprintf (s, "%.*Zi, %R*e, %Lf%n", ...); + expected: "00000010610209857723, -1.2345678875e+07, 0.032258" + got: "00000010610209857723, -1.2345678875e+07, -0.000000" + FAIL: tsprintf.exe + + This error is due to the MSVC runtime not supporting the L length modifier + for formatted output (e.g. printf with %Lf). You can check this with the + following program: + + #include + int main (void) + { + long double d = 1. / 31.; + printf ("%Lf\n", d); + return 0; + } + + The expected output is 0.032258. + + Note: The L modifier has been standard for a long time (it was added + in ISO C89). + +Notes on 64-bit Windows Applications (x64) +========================================== + +[See the Notes on 32-bit Windows Applications, which might be relevant here, + in particular when running a 64-bit operating system] + +Cygwin and mingw do not yet offer support for native Windows 64 builds but +the 32-bit version of MPFR can be used to build 32-bit applications that +will run on 64-bit Windows systems (see above). MPFR can be built as a native +64-bit static or DLL library for Windows 64 using the Visual Studio build +projects at http://fp.gladman.plus.com/computing/gmp4win.htm.