diff options
Diffstat (limited to 'dev/doc/build-system.txt')
-rw-r--r-- | dev/doc/build-system.txt | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/dev/doc/build-system.txt b/dev/doc/build-system.txt index 9362aeeb..b243ebe2 100644 --- a/dev/doc/build-system.txt +++ b/dev/doc/build-system.txt @@ -1,12 +1,60 @@ Since July 2007, Coq features a build system overhauled by Pierre Corbineau and Lionel Elie Mamane. +--------------------------------------------------------------------- +WARNING: +In March 2010 this build system has been heavily adapted by Pierre +Letouzey. In particular there no more explicit stage1,2. Stage3 +was removed some time ago when coqdep was splitted into coqdep_boot +and full coqdep. Ideas are still similar to what is describe below, +but: +1) .ml4 are explicitely turned into .ml files, which stay after build +2) we let "make" handle the inclusion of .d without trying to guess + what could be done at what time. Some initial inclusions hence + _fail_, but "make" tries again later and succeed. + +TODO: remove obsolete sections below and better describe the new approach +----------------------------------------------------------------------- + This file documents what a Coq developer needs to know about the build system. If you want to enhance the build system itself (or are curious about its implementation details), see build-system.dev.txt . The build system is not at its optimal state, see TODO section. + +FAQ: special features used in this Makefile +------------------------------------------- + +* Order-only dependencies: | + +Dependencies placed after a bar (|) should be built before +the current rule, but having one of them is out-of-date do not +trigger a rebuild of the current rule. +See http://www.gnu.org/software/make/manual/make.htmlPrerequisite-Types + +* Annotation before commands: +/-/@ + +a command starting by - is always successful (errors are ignored) +a command starting by + is runned even if option -n is given to make +a command starting by @ is not echoed before being runned + +* Custom functions + +Definition via "define foo" followed by commands (arg is $(1) etc) +Call via "$(call foo,arg1)" + +* Useful builtin functions + +$(subst ...), $(patsubst ...), $(shell ...), $(foreach ...), $(if ...) + +* Behavior of -include + +If the file given to -include doesn't exist, make tries to build it, +but doesn't care if this build fails. This can be quite surprising, +see in particular the -include in Makefile.stage* + + Stages in build system ---------------------- |