2016-07-15 18:15:34 -07:00
|
|
|
This document is a work-in-progress attempt to provide useful
|
|
|
|
information for people willing to inspect or modify the compiler
|
|
|
|
distribution's codebase. Feel free to improve it by sending change
|
|
|
|
proposals for it.
|
|
|
|
|
|
|
|
== Contents
|
|
|
|
|
|
|
|
Changes:: what's new with each release
|
|
|
|
configure:: configure script
|
|
|
|
CONTRIBUTING.md:: how to contribute to OCaml
|
|
|
|
HACKING.adoc:: tips for people modifying the code
|
|
|
|
INSTALL.adoc:: instructions for installation
|
|
|
|
LICENSE:: license and copyright notice
|
|
|
|
Makefile:: main Makefile
|
|
|
|
Makefile.nt:: MS Windows Makefile
|
|
|
|
Makefile.shared:: common Makefile
|
|
|
|
Makefile.tools:: used by manual/ and testsuite/ Makefiles
|
|
|
|
README.adoc:: this file
|
|
|
|
README.win32.adoc:: info on the MS Windows ports of OCaml
|
|
|
|
VERSION:: version string
|
|
|
|
asmcomp/:: native-code compiler and linker
|
|
|
|
asmrun/:: native-code runtime library
|
|
|
|
boot/:: bootstrap compiler
|
|
|
|
bytecomp/:: bytecode compiler and linker
|
|
|
|
byterun/:: bytecode interpreter and runtime system
|
|
|
|
compilerlibs/:: the OCaml compiler as a library
|
|
|
|
config/:: autoconfiguration stuff
|
|
|
|
debugger/:: source-level replay debugger
|
|
|
|
driver/:: driver code for the compilers
|
|
|
|
emacs/:: editing mode and debugger interface for GNU Emacs
|
|
|
|
experimental/:: experiments not built by default
|
|
|
|
flexdll/:: empty (see README.win32.adoc)
|
|
|
|
lex/:: lexer generator
|
|
|
|
man/:: man pages
|
|
|
|
manual/:: system to generate the manual
|
|
|
|
middle_end/:: the flambda optimisation phase
|
|
|
|
ocamldoc/:: documentation generator
|
|
|
|
otherlibs/:: several external libraries
|
|
|
|
parsing/:: syntax analysis
|
|
|
|
stdlib/:: standard library
|
|
|
|
testsuite/:: tests
|
|
|
|
tools/:: various utilities
|
|
|
|
toplevel/:: interactive system
|
|
|
|
typing/:: typechecking
|
|
|
|
utils/:: utility libraries
|
|
|
|
yacc/:: parser generator
|
|
|
|
|
|
|
|
== Useful Makefile targets
|
|
|
|
|
|
|
|
Besides the targets listed in link:INSTALL.adoc for build and
|
|
|
|
installation, the following targets may be of use:
|
|
|
|
|
|
|
|
make runtop:: builds and runs the ocaml toplevel of the distribution
|
|
|
|
(optionally uses `rlwrap` for readline+history support)
|
|
|
|
make natruntop:: builds and runs the native ocaml toplevel (experimental)
|
|
|
|
|
|
|
|
== opam compiler script
|
|
|
|
|
|
|
|
The separately-distributed script
|
|
|
|
https://github.com/gasche/opam-compiler-conf[`opam-compiler-conf`] can
|
|
|
|
be used to easily build opam switches out of a git branch of the
|
|
|
|
compiler distribution. This lets you easily install and test opam
|
|
|
|
packages from an under-modification compiler version.
|
2016-11-17 07:16:46 -08:00
|
|
|
|
|
|
|
== INRIA's Continuous Integration (CI)
|
|
|
|
|
|
|
|
INRIA provides a Jenkins continuous integration service that OCaml
|
|
|
|
uses, see link:https://ci.inria.fr/ocaml/[]. It provides a wider
|
|
|
|
architecture support (MSVC and MingW, a zsystems s390x machine, and
|
|
|
|
various MacOS versions) than the Travis/AppVeyor testing on github,
|
|
|
|
but only runs on commits to the trunk or release branch, not on every
|
|
|
|
PR.
|
|
|
|
|
|
|
|
You do not need to be an INRIA employee to open account on this travis
|
|
|
|
service; anyone can create an account there to access build logs,
|
|
|
|
enable email notifications, and manually restart builds. If you would
|
|
|
|
like to do this but have trouble doing it, you may contact Damien
|
|
|
|
Doligez or Gabriel Scherer.
|
|
|
|
|
|
|
|
== Running INRIA's CI on a github Pull Request (PR)
|
|
|
|
|
|
|
|
If you have suspicions that a PR may fail on exotic architectures
|
|
|
|
(it touches the build system or the backend code generator,
|
|
|
|
for example) and would like to get wider testing than github's CI
|
|
|
|
provides, it is possible to manually start INRIA's CI on arbitrary git
|
|
|
|
branches by pushing to a `precheck` branch of the main repository.
|
|
|
|
|
|
|
|
This is done by pushing to a specific github repository that the CI
|
|
|
|
watches, namely
|
|
|
|
link:https://github.com/ocaml/precheck[ocaml/precheck]. You thus need
|
|
|
|
to have write/push/commit access to this repository to perform this operation.
|
|
|
|
|
|
|
|
Just checkout the commit/branch you want to test, then run
|
|
|
|
|
|
|
|
git push --force git@github.com:ocaml/precheck.git HEAD:trunk
|
|
|
|
|
|
|
|
(This is the syntax to push the current `HEAD` state into the `trunk`
|
|
|
|
reference on the specified remote.)
|