diff options
author | lmamane <lmamane@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2007-10-11 18:45:30 +0000 |
---|---|---|
committer | lmamane <lmamane@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2007-10-11 18:45:30 +0000 |
commit | 3b9e93568a189227fc54204335fdf283c4d2b33a (patch) | |
tree | d5722fa34ceaa422a35a0d8acdb54449b7beca3c /dev/doc | |
parent | 0ff8e6a43c35c632292c6d9bf8c28ec6a3fc16e0 (diff) |
Allow a few build system optimisations/corner-cutting
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10218 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'dev/doc')
-rw-r--r-- | dev/doc/build-system.txt | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/dev/doc/build-system.txt b/dev/doc/build-system.txt index 516664720..5b71dc9c9 100644 --- a/dev/doc/build-system.txt +++ b/dev/doc/build-system.txt @@ -40,6 +40,50 @@ files. In particular, .glob files are now always created. See also section "cleaning targets" +Reducing build system overhead +------------------------------ + +When you are actively working on a file in a "make a change, make to +test, make a change, make to test", etc mode, here are a few tips to +save precious time: + + - Always ask for what you want directly (e.g. bin/coqtop, + foo/bar.cmo, ...), don't do "make world" and interrupt + it when it has done what you want. This will try to minimise the + stage at which what you ask for is done (instead of maximising it + in order to maximise parallelism of the build process). + + For example, if you only want to test whether bin/coqtop still + builds (and eventually start it to test your bugfix or new + feature), don't do "make world" and interrupt it when bin/coqtop is + built. Use "make bin/coqtop" or "make coqbinaries" or something + like that. This will avoid entering the stage 3, and cut build + system overhead by 50% (1.2s instead of 2.4 on writer's machine). + + - You can turn off rebuilding of the standard library each time + bin/coqtop is rebuilt with NO_RECOMPILE_LIB=1. + + - If you want to avoid all .ml4 files being recompiled only because + grammar.cma was rebuilt, do "make ml4depclean" once and then use + NO_RECOMPILE_ML4=1. + + - The CM_STAGE1=1 option to make will build all .cm* files mentioned + as targets on the command line in stage1. Whether this will work is + your responsibility. It should work for .ml files that don't depend + (nor directly nor indirectly through transitive closure of the + dependencies) on any .ml4 file, or where those dependencies can be + safely ignored in the current situation (e.g. all these .ml4 files + don't need to be recompiled). + + This will avoid entering the stage2 (a reduction of 33% in + overhead, 0.4s on the writer's machine). + + - To jump directly into a stage (e.g. because you know nothing is to + be done in stage 1 or (1 and 2) or because you know that the target + you give can be, in this situation, done in a lower stage than the + build system dares to), use GOTO_STAGE=n. This will jump into stage + n and try to do the targets you gave in that stage. + Dependencies ------------ |