summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Action.xml
blob: da2f3e3d0802a126e58290a35c204873bcc65fbc (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!--
__COPYRIGHT__

This file is processed by the bin/SConsDoc.py module.
See its __doc__ string for a discussion of the format.
-->
<cvar name="PRINT_CMD_LINE_FUNC">
<summary>
A Python function used to print the command lines as they are executed
(assuming command printing is not disabled by the
<option>-q</option>
or
<option>-s</option>
options or their equivalents).
The function should take four arguments:
<varname>s</varname>,
the command being executed (a string),
<varname>target</varname>,
the target being built (file node, list, or string name(s)),
<varname>source</varname>,
the source(s) used (file node, list, or string name(s)), and
<varname>env</varname>,
the environment being used.

The function must do the printing itself.  The default implementation,
used if this variable is not set or is None, is:
<example>
def print_cmd_line(s, target, source, env):
  sys.stdout.write(s + "\n")
</example>

Here's an example of a more interesting function:

<example>
def print_cmd_line(s, target, source, env):
   sys.stdout.write("Building %s -> %s...\n" %
    (' and '.join([str(x) for x in source]),
     ' and '.join([str(x) for x in target])))
env=Environment(PRINT_CMD_LINE_FUNC=print_cmd_line)
env.Program('foo', 'foo.c')
</example>

This just prints "Building <varname>targetname</varname> from <varname>sourcename</varname>..." instead
of the actual commands.
Such a function could also log the actual commands to a log file,
for example.
</summary>
</cvar>

<cvar name="SPAWN">
<summary>
A command interpreter function that will be called to execute command line
strings. The function must expect the following arguments:

<example>
def spawn(shell, escape, cmd, args, env):
</example>

<varname>sh</varname>
is a string naming the shell program to use.
<varname>escape</varname>
is a function that can be called to escape shell special characters in
the command line.
<varname>cmd</varname>
is the path to the command to be executed.
<varname>args</varname>
is the arguments to the command.
<varname>env</varname>
is a dictionary of the environment variables
in which the command should be executed.
</summary>
</cvar>