aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2019-12-09 17:49:12 +0100
committerEmilio Jesus Gallego Arias2019-12-13 17:05:48 +0100
commitada783d03c937ff71f87fb65d3f89e3e68a7320f (patch)
treeed7c21a564caf59f44fce31920b95c5d19af3c1f
parent7a8c20ed6a745bc8c3d77482057fe3920cb8770e (diff)
[doc] [INSTALL] split make-based install instructions to its own file.
-rw-r--r--INSTALL.md281
-rw-r--r--dev/doc/INSTALL.make.md258
2 files changed, 275 insertions, 264 deletions
diff --git a/INSTALL.md b/INSTALL.md
index 03ec26c3b3..a55e1e9ac2 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,7 +1,7 @@
Installing From Sources
=======================
-What Do You Need ?
+Build Requirements
------------------
To compile Coq yourself, you need:
@@ -61,266 +61,19 @@ compiler as way to improve the performance of Coq. In order to
profit from Flambda, a special build of the OCaml compiler that has
the Flambda optimizer enabled must be installed. For OPAM users,
this amounts to installing a compiler switch ending in `+flambda`,
-such as `4.07.1+flambda`. For other users, YMMV. Once `ocamlopt
--config` reports that Flambda is available, some further
-optimization options can be used; see the entry about -flambda-opts
-below for more details.
-
-Quick Installation Procedure.
------------------------------
-
- $ ./configure
- $ make
- $ make install (you may need superuser rights)
-
-Installation Procedure In Details (Normal Users).
--------------------------------------------------
-
-1. Check that you have the OCaml compiler installed on your
- computer and that `ocamlc` (or, better, its native code version
- `ocamlc.opt`) lies in a directory which is present in your $PATH
- environment variable. At the time of writing this sentence, all
- versions of Objective Caml later or equal to 4.05.0 are
- supported.
-
- To get Coq in native-code, (it runs 4 to 10 times faster than
- bytecode, but it takes more time to get compiled and the binary is
- bigger), you will also need the `ocamlopt` (or its native code version
- `ocamlopt.opt`) command.
-
-2. The uncompression and un-tarring of the distribution file gave birth
- to a directory named "coq-8.xx". You can rename this directory and put
- it wherever you want. Just keep in mind that you will need some spare
- space during the compilation (reckon on about 300 Mb of disk space
- for the whole system in native-code compilation). Once installed, the
- binaries take about 30 Mb, and the library about 200 Mb.
-
-3. First you need to configure the system. It is done automatically with
- the command:
-
- ./configure <options>
-
- The `configure` script will ask you for directories where to put
- the Coq binaries, standard library, man pages, etc. It will propose
- you some default values.
-
- For a list of options accepted by the `configure` script, run
- `./configure -help`. The main options accepted are:
-
- * `-prefix <dir>`
- Binaries, library, and man pages will be respectively
- installed in `<dir>/bin`, `<dir>/lib/coq`, and `<dir>/man`
-
- * `-bindir <dir>` (default: `/usr/local/bin`)
- Directory where the binaries will be installed
-
- * `-libdir <dir>` (default: `/usr/local/lib/coq`)
- Directory where the Coq standard library will be installed
-
- * `-mandir <dir>` (default: `/usr/local/share/man`)
- Directory where the Coq manual pages will be installed
-
- * `-arch <value>` (default is the result of the command `arch`)
- An arbitrary architecture name for your machine (useful when
- compiling Coq on two different architectures for which the
- result of "arch" is the same, e.g. Sun OS and Solaris)
-
- * `-local`
- Compile Coq to run in its source directory. The installation (step 6)
- is not necessary in that case.
-
- * `-browser <command>`
- Use <command> to open an URL in a browser. %s must appear in <command>,
- and will be replaced by the URL.
-
- * `-flambda-opts <flags>`
- This experimental option will pass specific user flags to the
- OCaml optimizing compiler. In most cases, this option is used
- to tweak the flambda backend; for maximum performance we
- recommend using:
-
- -flambda-opts `-O3 -unbox-closures`
-
- but of course you are free to try with a different combination
- of flags. You can read more at
- https://caml.inria.fr/pub/docs/manual-ocaml/flambda.html
-
- There is a known problem with certain OCaml versions and
- `native_compute`, that will make compilation to require
- a large amount of RAM (>= 10GiB) in some particular files.
-
- We recommend disabling native compilation (`-native-compiler no`)
- with flambda unless you use OCaml >= 4.07.0.
-
- c.f. https://caml.inria.fr/mantis/view.php?id=7630
-
- If you want your build to be reproducible, ensure that the
- SOURCE_DATE_EPOCH environment variable is set as documented in
- https://reproducible-builds.org/specs/source-date-epoch/
-
-4. Still in the root directory, do
-
- make
-
- to compile Coq in the best OCaml mode available (native-code if supported,
- bytecode otherwise).
-
- This will compile the entire system. This phase can take more or less time,
- depending on your architecture and is fairly verbose. On a multi-core machine,
- it is recommended to compile in parallel, via make -jN where N is your number
- of cores.
-
-5. You can now install the Coq system. Executables, libraries, and
- manual pages are copied in some standard places of your system,
- defined at configuration time (step 3). Just do
-
- umask 022
- make install
-
- Of course, you may need superuser rights to do that.
-
-6. Optionally, you could build the bytecode version of Coq via:
-
- make byte
-
- and install it via
-
- make install-byte
-
- This version is quite slower than the native code version of Coq, but could
- be helpful for debugging purposes. In particular, coqtop.byte embeds an OCaml
- toplevel accessible via the Drop command.
-
-7. You can now clean all the sources. (You can even erase them.)
-
- make clean
-
-Installation Procedure For Advanced Users.
-------------------------------------------
-
-If you wish to write plugins you *must* keep the Coq sources, without
-cleaning them. Therefore, to avoid a duplication of binaries and library,
-it is not necessary to do the installation step (6- above). You just have
-to tell it at configuration step (4- above) with the option -local :
-
- ./configure -local <other options>
-
-Then compile the sources as described in step 5 above. The resulting
-binaries will reside in the subdirectory bin/.
-
-Unless you pass the -nodebug option to ./configure, the -g option of the
-OCaml compiler will be used during compilation to allow debugging.
-See the debugging file in dev/doc and the chapter 15 of the Coq Reference
-Manual for details about how to use the OCaml debugger with Coq.
-
-
-The Available Commands.
------------------------
-
-There are two Coq commands:
-
- coqtop The Coq toplevel
- coqc The Coq compiler
-
-Under architecture where ocamlopt is available, coqtop is the native code
-version of Coq. On such architecture, you could additionally request
-the build of the bytecode version of Coq via 'make byte' and install it via
-'make install-byte'. This will create an extra binary named coqtop.byte,
-that could be used for debugging purpose. If native code isn't available,
-coqtop.byte is directly built by 'make', and coqtop is a link to coqtop.byte.
-coqc also invokes the fastest version of Coq. Options -opt and -byte to coqtop
-and coqc selects a particular binary.
-
-* `coqtop` launches Coq in the interactive mode. By default it loads
- basic logical definitions and tactics from the Init directory.
-
-* `coqc` allows compilation of Coq files directly from the command line.
- To compile a file foo.v, do:
-
- coqc foo.v
-
- It will produce a file `foo.vo`, that you can now load through the Coq
- command `Require`.
-
- A detailed description of these commands and of their options is given
- in the Reference Manual (which you can get in the doc/
- directory, or read online on http://coq.inria.fr/doc/)
- and in the corresponding manual pages.
-
-Compiling For Different Architectures.
---------------------------------------
-
-This section explains how to compile Coq for several architecture, sharing
-the same sources. The important fact is that some files are architecture
-dependent (`.cmx`, `.o` and executable files for instance) but others are not
-(`.cmo` and `.vo`). Consequently, you can :
-
-- save some time during compilation by not cleaning the architecture
- independent files;
-
-- save some space during installation by sharing the Coq standard
- library (which is fully architecture independent).
-
-So, in order to compile Coq for a new architecture, proceed as follows:
-
-* Omit step 7 above and clean only the architecture dependent files:
- it is done automatically with the command
-
- make archclean
-
-* Configure the system for the new architecture:
-
- ./configure <options>
-
- You can specify the same directory for the standard library but you
- MUST specify a different directory for the binaries (of course).
-
-* Compile and install the system as described in steps 5 and 6 above.
-
-Moving Binaries Or Library.
----------------------------
-
-If you move both the binaries and the library in a consistent way,
-Coq should be able to still run. Otherwise, Coq may be "lost",
-running "coqtop" would then return an error message of the kind:
-
- Error during initialization :
- Error: cannot guess a path for Coq libraries; please use -coqlib option
-
-You can then indicate the new places to Coq, using the options -coqlib :
-
- coqtop -coqlib <new directory>
-
-See also next section.
-
-Dynamically Loaded Libraries For Bytecode Executables.
-------------------------------------------------------
-
-Some bytecode executables of Coq use the OCaml runtime, which dynamically
-loads a shared library (.so or .dll). When it is not installed properly, you
-can get an error message of this kind:
-
- Fatal error: cannot load shared library dllcoqrun
- Reason: dllcoqrun.so: cannot open shared object file: No such file or directory
-
-In this case, you need either:
-
-- to set the `CAML_LD_LIBRARY_PATH` environment variable to point to the
- directory where dllcoqrun.so is; this is suitable when you want to run
- the command a limited number of times in a controlled environment (e.g.
- during compilation of binary packages);
-- install dllcoqrun.so in a location listed in the file ld.conf that is in
- the directory of the standard library of OCaml;
-- recompile your bytecode executables after reconfiguring the location
- of the shared library:
-
- ./configure -vmbyteflags "-dllib,-lcoqrun,-dllpath,<path>" ...
-
- where `<path>` is the directory where the dllcoqrun.so is installed;
-- (not recommended) compile bytecode executables with a custom OCaml
- runtime by using:
-
- ./configure -custom ...
-
- be aware that stripping executables generated this way, or performing
- other executable-specific operations, will make them useless.
+such as `4.07.1+flambda`. For other users, YMMV. Once `ocamlopt -config`
+reports that Flambda is available, some further optimization options
+can be used; see the entry about `-flambda-opts` in the build guide
+for more details.
+
+Build and Installation Procedure
+--------------------------------
+
+Coq offers the choice of two build systems, an experimental one based
+on [Dune](https://github.com/ocaml/dune), and the standard
+makefile-based one.
+
+Please see [INSTALL.make.md](dev/doc/INSTALL.make.md) for build and
+installation instructions using `make`. If you wish to experiment with
+the Dune-based system see the [dune guide for
+developers](dev/doc/build-system.dune.md).
diff --git a/dev/doc/INSTALL.make.md b/dev/doc/INSTALL.make.md
new file mode 100644
index 0000000000..3db5d0b14f
--- /dev/null
+++ b/dev/doc/INSTALL.make.md
@@ -0,0 +1,258 @@
+Quick Installation Procedure using Make.
+----------------------------------------
+
+ $ ./configure
+ $ make
+ $ make install (you may need superuser rights)
+
+Detailed Installation Procedure.
+--------------------------------
+
+1. Check that you have the OCaml compiler installed on your
+ computer and that `ocamlc` (or, better, its native code version
+ `ocamlc.opt`) is in a directory which is present in your $PATH
+ environment variable. At the time of writing this document, all
+ versions of Objective Caml later or equal to 4.05.0 are
+ supported.
+
+ To get Coq in native-code, (which runs 4 to 10 times faster than
+ bytecode, but it takes more time to get compiled and the binary is
+ bigger), you will also need the `ocamlopt` (or its native code version
+ `ocamlopt.opt`) command.
+
+2. The uncompression and un-tarring of the distribution file gave birth
+ to a directory named "coq-8.xx". You can rename this directory and put
+ it wherever you want. Just keep in mind that you will need some spare
+ space during the compilation (reckon on about 300 Mb of disk space
+ for the whole system in native-code compilation). Once installed, the
+ binaries take about 30 Mb, and the library about 200 Mb.
+
+3. First you need to configure the system. It is done automatically with
+ the command:
+
+ ./configure <options>
+
+ The `configure` script will ask you for directories where to put
+ the Coq binaries, standard library, man pages, etc. It will propose
+ default values.
+
+ For a list of options accepted by the `configure` script, run
+ `./configure -help`. The main options accepted are:
+
+ * `-prefix <dir>`
+ Binaries, library, and man pages will be respectively
+ installed in `<dir>/bin`, `<dir>/lib/coq`, and `<dir>/man`
+
+ * `-bindir <dir>` (default: `/usr/local/bin`)
+ Directory where the binaries will be installed
+
+ * `-libdir <dir>` (default: `/usr/local/lib/coq`)
+ Directory where the Coq standard library will be installed
+
+ * `-mandir <dir>` (default: `/usr/local/share/man`)
+ Directory where the Coq manual pages will be installed
+
+ * `-arch <value>` (default is the result of the command `arch`)
+ An arbitrary architecture name for your machine (useful when
+ compiling Coq on two different architectures for which the
+ result of "arch" is the same, e.g. Sun OS and Solaris)
+
+ * `-local`
+ Compile Coq to run in its source directory. The installation (step 6)
+ is not necessary in that case.
+
+ * `-browser <command>`
+ Use <command> to open an URL in a browser. %s must appear in <command>,
+ and will be replaced by the URL.
+
+ * `-flambda-opts <flags>`
+ This experimental option will pass specific user flags to the
+ OCaml optimizing compiler. In most cases, this option is used
+ to tweak the flambda backend; for maximum performance we
+ recommend using:
+
+ -flambda-opts `-O3 -unbox-closures`
+
+ but of course you are free to try with a different combination
+ of flags. You can read more at
+ https://caml.inria.fr/pub/docs/manual-ocaml/flambda.html
+
+ There is a known problem with certain OCaml versions and
+ `native_compute`, that will make compilation to require
+ a large amount of RAM (>= 10GiB) in some particular files.
+
+ We recommend disabling native compilation (`-native-compiler no`)
+ with flambda unless you use OCaml >= 4.07.0.
+
+ c.f. https://caml.inria.fr/mantis/view.php?id=7630
+
+ If you want your build to be reproducible, ensure that the
+ SOURCE_DATE_EPOCH environment variable is set as documented in
+ https://reproducible-builds.org/specs/source-date-epoch/
+
+4. Still in the root directory, do
+
+ make
+
+ to compile Coq in the best OCaml mode available (native-code if supported,
+ bytecode otherwise).
+
+ This will compile the entire system. This phase can take more or less time,
+ depending on your architecture and is fairly verbose. On a multi-core machine,
+ it is recommended to compile in parallel, via make -jN where N is your number
+ of cores.
+
+5. You can now install the Coq system. Executables, libraries, and
+ manual pages are copied in some standard places of your system,
+ defined at configuration time (step 3). Just do
+
+ umask 022
+ make install
+
+ Of course, you may need superuser rights to do that.
+
+6. Optionally, you could build the bytecode version of Coq via:
+
+ make byte
+
+ and install it via
+
+ make install-byte
+
+ This version is much slower than the native code version of Coq, but could
+ be helpful for debugging purposes. In particular, coqtop.byte embeds an OCaml
+ toplevel accessible via the Drop command.
+
+7. You can now clean all the sources. (You can even erase them.)
+
+ make clean
+
+Installation Procedure For Plugin Developers.
+---------------------------------------------
+
+If you wish to write plugins you *must* keep the Coq sources, without
+cleaning them. Therefore, to avoid a duplication of binaries and library,
+it is not necessary to do the installation step (6- above). You just have
+to tell it at configuration step (4- above) with the option -local :
+
+ ./configure -local <other options>
+
+Then compile the sources as described in step 5 above. The resulting
+binaries will reside in the subdirectory bin/.
+
+Unless you pass the -nodebug option to ./configure, the -g option of the
+OCaml compiler will be used during compilation to allow debugging.
+See the debugging file in dev/doc and the chapter 15 of the Coq Reference
+Manual for details about how to use the OCaml debugger with Coq.
+
+
+The Available Commands.
+-----------------------
+
+There are two Coq commands:
+
+ coqtop The Coq toplevel
+ coqc The Coq compiler
+
+Under architecture where ocamlopt is available, coqtop is the native code
+version of Coq. On such architecture, you could additionally request
+the build of the bytecode version of Coq via 'make byte' and install it via
+'make install-byte'. This will create an extra binary named coqtop.byte,
+that could be used for debugging purpose. If native code isn't available,
+coqtop.byte is directly built by 'make', and coqtop is a link to coqtop.byte.
+coqc also invokes the fastest version of Coq. Options -opt and -byte to coqtop
+and coqc selects a particular binary.
+
+* `coqtop` launches Coq in the interactive mode. By default it loads
+ basic logical definitions and tactics from the Init directory.
+
+* `coqc` allows compilation of Coq files directly from the command line.
+ To compile a file foo.v, do:
+
+ coqc foo.v
+
+ It will produce a file `foo.vo`, that you can now load through the Coq
+ command `Require`.
+
+ A detailed description of these commands and of their options is given
+ in the Reference Manual (which you can get in the doc/
+ directory, or read online on http://coq.inria.fr/doc/)
+ and in the corresponding manual pages.
+
+Compiling For Different Architectures.
+--------------------------------------
+
+This section explains how to compile Coq for several architecture, sharing
+the same sources. The important fact is that some files are architecture
+dependent (`.cmx`, `.o` and executable files for instance) but others are not
+(`.cmo` and `.vo`). Consequently, you can :
+
+- save some time during compilation by not cleaning the architecture
+ independent files;
+
+- save some space during installation by sharing the Coq standard
+ library (which is fully architecture independent).
+
+So, in order to compile Coq for a new architecture, proceed as follows:
+
+* Omit step 7 above and clean only the architecture dependent files:
+ it is done automatically with the command
+
+ make archclean
+
+* Configure the system for the new architecture:
+
+ ./configure <options>
+
+ You can specify the same directory for the standard library but you
+ MUST specify a different directory for the binaries (of course).
+
+* Compile and install the system as described in steps 5 and 6 above.
+
+Moving Binaries Or Library.
+---------------------------
+
+If you move both the binaries and the library in a consistent way,
+Coq should be able to still run. Otherwise, Coq may be "lost",
+running "coqtop" would then return an error message of the kind:
+
+ Error during initialization :
+ Error: cannot guess a path for Coq libraries; please use -coqlib option
+
+You can then indicate the new places to Coq, using the options -coqlib :
+
+ coqtop -coqlib <new directory>
+
+See also next section.
+
+Dynamically Loaded Libraries For Bytecode Executables.
+------------------------------------------------------
+
+Some bytecode executables of Coq use the OCaml runtime, which dynamically
+loads a shared library (.so or .dll). When it is not installed properly, you
+can get an error message of this kind:
+
+ Fatal error: cannot load shared library dllcoqrun
+ Reason: dllcoqrun.so: cannot open shared object file: No such file or directory
+
+In this case, you need either:
+
+- to set the `CAML_LD_LIBRARY_PATH` environment variable to point to the
+ directory where dllcoqrun.so is; this is suitable when you want to run
+ the command a limited number of times in a controlled environment (e.g.
+ during compilation of binary packages);
+- install dllcoqrun.so in a location listed in the file ld.conf that is in
+ the directory of the standard library of OCaml;
+- recompile your bytecode executables after reconfiguring the location
+ of the shared library:
+
+ ./configure -vmbyteflags "-dllib,-lcoqrun,-dllpath,<path>" ...
+
+ where `<path>` is the directory where the dllcoqrun.so is installed;
+- (not recommended) compile bytecode executables with a custom OCaml
+ runtime by using:
+
+ ./configure -custom ...
+
+ be aware that stripping executables generated this way, or performing
+ other executable-specific operations, will make them useless.