[project @ 2003-06-27 18:28:31 by sof]
[ghc-hetmet.git] / ghc / rts / gmp / INSTALL
index 38bfaa8..62faa1a 100644 (file)
@@ -1,35 +1,47 @@
-INSTALLING GMP
-==============
+
+                          INSTALLING GNU MP
+                          =================
+
 
 These instructions are only for the impatient.  Others should read the install
-instructions in the manual, gmp.info.  Use "info -f gmp.info", or, if you
-don't have info, use type "C-h i g (gmp.info)Top" in emacs.
+instructions in the manual, gmp.info.  Use
+
+       info -f ./gmp.info
+
+or in emacs
 
-Here are short instructions how to install MP, and some examples that help you
-get started using MP.
+       C-u C-h i gmp.info
 
-First, you need to compile, and optionally install, MP.  Since you're
+
+Here are some brief instructions on how to install GMP, and some examples to
+help you get started using GMP.
+
+First, you need to compile, and optionally install, GMP.  Since you're
 impatient, try this:
 
        ./configure; make
 
-If that fails, or you care about the performance of MP, you need to read the
-full instructions in the chapter "Installing MP", in the manual.
+If that fails, or you care about the performance of GMP, you need to read the
+full instructions in the chapter "Installing GMP", in the manual.
+
+Next, try some small test programs, for example the ones below.
 
-Next, you need to try some small test programs, for example the ones below.
+In GMP programs, all variables need to be initialized before they are
+assigned, and cleared out before program flow leaves the scope in which they
+were declared.  Here is an example program that reads two numbers from the
+command line, multiplies them, and prints the result to stdout.
 
-In MP programs, all variables need to be initialized before they are assigned,
-and cleared out before program flow leaves the scope in which it was declared.
-Here is an example of a program that reads two numbers from the command line,
-multiplies them, and prints the result to stdout.
 
     #include <stdio.h>
-    #include <gmp.h>         /* All MP programs need to include gmp.h */
+    #include <gmp.h>         /* All GMP programs need to include gmp.h */
 
     main (int argc, char **argv)
     {
       mpz_t a, b, p;
 
+      if (argc != 3)
+        { printf ("Usage: %s <number> <number>\n", argv[0]); exit (1); }
+
       /* Initialize variables */
       mpz_init (a);
       mpz_init (b);
@@ -54,7 +66,10 @@ multiplies them, and prints the result to stdout.
     }
 
 
-In practice, that example would be written like this instead:
+This might look tedious, with all the initializing and clearing.  Fortunately
+some of these operations can be combined, and other operations can often be
+avoided.  An experienced GMP user might write:
+
 
     #include <stdio.h>
     #include <gmp.h>
@@ -63,6 +78,9 @@ In practice, that example would be written like this instead:
     {
       mpz_t a, b, p;
 
+      if (argc != 3)
+        { printf ("Usage: %s <number> <number>\n", argv[0]); exit (1); }
+
       /* Initialize and assign a and b from base 10 strings in argv */
       mpz_init_set_str (a, argv[1], 10);
       mpz_init_set_str (b, argv[2], 10);
@@ -80,75 +98,49 @@ In practice, that example would be written like this instead:
       exit (0);
     }
 
-Finally, you have to compile your test program, and link it with the MP
-library.  Assuming your working directory is still the gmp source directory,
-type:
 
-       gcc -g -I. example.c libgmp.a
+Now you have to compile your test program, and link it with the GMP library.
+Assuming your working directory is still the gmp source directory, and your
+source file is called example.c, enter:
 
+       gcc -g -I. example.c .libs/libgmp.a
+
+After installing, the command becomes: "gcc -g example.c -lgmp".  Also, GMP is
+libtool based so you can use that to link if you want.
 
 Now try to run the example:
 
-       a.out 98365871231256752134 319378318340103345227
+       ./a.out 98365871231256752134 319378318340103345227
        31415926535897932384618573336104570964418
 
-The functions used here all operate on the domain of signed integers.
-Functions operating on that domain have names starting with "mpz_".  There are
-many more such functions than used in these examples.  See the chapter
-"Integer Functions" in the manual, for a complete list.
+The functions used here all operate on signed integers, and have names
+starting with "mpz_".  There are many more such functions than used in these
+examples.  See the chapter "Integer Functions" in the manual, for a complete
+list.
 
-There are two other main classes of functions in MP.  They operate on rational
-numbers and floating-point numbers, respectively.  The chapters "Rational
-Number Functions", and "Floating-point Functions" documents these classes.
+There are two other main classes of functions in GMP.  They operate on
+rational numbers and floating-point numbers, respectively.  The chapters
+"Rational Number Functions", and "Floating-point Functions" document these
+classes.
 
 To run a set of tests, do "make check".  This will take a while.
 
 To create the printable documentation from the texinfo source, type "make
-dvi".  This requires the "tex" command to be available in your search path.
+gmp.dvi" or "make gmp.ps".  This requires various "tex" commands.
 
-To install the library, do "make install".
+To install the library, do "make install" (then you can use -lgmp instead of
+.libs/libgmp.a).
 
-If you decide to use MP, It is a good idea you read at least the chapter "MP
+If you decide to use GMP, it is a good idea you at least read the chapter "GMP
 Basics" in the manual.
 
+Some known build problems are noted in the "Installing GMP" chapter of
+the manual.  Please report other problems to bug-gmp@gnu.org.
+
+
 
-Known Build Problems
---------------------
-
-Note that GCC 2.7.2 (as well as 2.6.3) for the RS/6000 and PowerPC can not
-be used to compile GMP, due to a bug in GCC.  If you want to use GCC, you
-need to apply the patch at the end of this file, or use a later version of
-the compiler.
-
-If you are on a Sequent Symmetry, use GAS instead of the system's assembler
-due to the latter's serious bugs.
-
-The system compiler on NeXT is a massacred and old gcc, even if the
-compiler calls itself cc.  This compiler cannot be used to build GMP.  You
-need to get a real gcc, and install that before you compile GMP.  (NeXT
-might have fixed this in newer releases of their system.)
-
-Please report other problems to bug-gmp@prep.ai.mit.edu.
-
-
-Patch to apply to GCC 2.6.3 and 2.7.2:
-
-*** config/rs6000/rs6000.md    Sun Feb 11 08:22:11 1996
---- config/rs6000/rs6000.md.new        Sun Feb 18 03:33:37 1996
-***************
-*** 920,926 ****
-     (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-       (not:SI (match_dup 1)))]
-    ""
-!   "nor. %0,%2,%1"
-    [(set_attr "type" "compare")])
-  
-  (define_insn ""
---- 920,926 ----
-     (set (match_operand:SI 0 "gpc_reg_operand" "=r")
-       (not:SI (match_dup 1)))]
-    ""
-!   "nor. %0,%1,%1"
-    [(set_attr "type" "compare")])
-  
-  (define_insn ""
+----------------
+Local variables:
+mode: text
+fill-column: 78
+End: