summaryrefslogtreecommitdiffstats
path: root/build/docs/mozbuild/dumbmake.rst
blob: 7840695adddd6194f5daee0ee51b67df322ae3e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
dumbmake
========

*dumbmake* is a simple dependency tracker for make.

It turns lists of make targets into longer lists of make targets that
include dependencies.  For example:

    netwerk, package

might be turned into

    netwerk, netwerk/build, toolkit/library, package

The dependency list is read from the plain text file
`topsrcdir/build/dumbmake-dependencies`.  The format best described by
example:

    build_this
        when_this_changes

Interpret this to mean that `build_this` is a dependency of
`when_this_changes`.  More formally, a line (CHILD) indented more than
the preceding line (PARENT) means that CHILD should trigger building
PARENT.  That is, building CHILD will trigger building first CHILD and
then PARENT.

This structure is recursive:

    build_this_when_either_change
        build_this_only_when
            this_changes

This means that `build_this_when_either_change` is a dependency of
`build_this_only_when` and `this_changes`, and `build_this_only_when`
is a dependency of `this_changes`.  Building `this_changes` will build
first `this_changes`, then `build_this_only_when`, and finally
`build_this_when_either_change`.