]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - mpfr/INSTALL
Imported gcc-4.4.3
[msp430-gcc.git] / mpfr / INSTALL
diff --git a/mpfr/INSTALL b/mpfr/INSTALL
new file mode 100644 (file)
index 0000000..cabc75c
--- /dev/null
@@ -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 <http://www.gnu.org/software/gmp/>.
+   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 <http://www.mpfr.org/faq.html>, which may be more
+    up-to-date);
+  * the MPFR web page for this version <http://www.mpfr.org/mpfr-2.4.1/>,
+    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>
+
+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 <mpfr@loria.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. 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 <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 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 <stdio.h>
+       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.