summaryrefslogtreecommitdiff
path: root/contrib/utility/BuildRules/Thoughts
blob: 486a44f108bc9461dee45440fbf5cba08265cfd7 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

Makefile variable naming style.

* Each target is usually invoking one or more commands of the following type:

  (1) translator which translates target's prerequsites to target(s)

  (2) arbitrary command which doesn't create target (aka PHONY targets)

Examples of type (1) are:

  - translation of c++ source to object code

  - translation of object code to executable/shared

Examples of type (2) are:

  - test: terget

  - clean: target


Some properties of these types of targets:

  (1)   - usually implemented as an implicit rule

        - sometimes the same program is used as two separate translators
          (e.g. CXX is used as a compiler and as a linker)



  (2)   - seldom (never?) implemented as an implicit rule



Approach #1

For type (1) name is derived from the translator's name e.g.

CXX_COMPILE_FLAGS
CXX_PREPROCESS_FLAGS
CXX_LINK_FLAGS
CXX_LINK_LIBS

CC_
LD_


For type (2) name is derived from the target's name e.g.

TEST_FLAGS
CLEAN_FLAGS
INSTALL_FLAGS

$Id$