| CCONTROL(1) | CCONTROL(1) |
NAME¶
ccontrol - wrapper to control distcc, ccache and moreSYNOPSIS¶
gcc ...DESCRIPTION¶
The ccontrol(1) program takes over the roles of the compiler and linker, and reads a configuration file to decide what to do before invoking them. This is particularly useful for centralized control over commands and options, such as enabling distcc(1) and ccache(1).OPTIONS¶
Normally ccontrol(1) is invoked as a symboling link to cc, make, etc, so it can identify what is being invoked by examining its own name. It can also be invoked under its own name, in which case ccontrol-specific arguments can be supplied. The first non-option argument will be used to identify the invocation, eg. "ccontrol gcc ...".This is treated as the "current
directory" for the purposes of evaluating the configuration file. As all
real directories must begin with a "/" using an argument which does
not, is a good way of overriding configuration for this particular
invocation.
CONFIGURATION FILE¶
ccontrol’s configuration file is $HOME/.ccontrol/config. If this cannot be read (and written), your compilations will all fail. It is normal to have several different configuration files in this directory, and make default a symbolic link.SYNTAX¶
A configuration file consists of sections, led by a "[path]" header and followed by indented "name = value" entries. The first section is usually labelled "[*]" to set up the defaults. At the very least, you must set the "cc", "c++", "make" and "ld" values.Followed by = specifies the path of the
compiler to be invoked when ccontrol is invoked as "cc" or
"gcc". ccontrol will fail to compile C programs if this is not
set.
c++
Followed by = specifies the path of the
compiler to be invoked when ccontrol is invoked as "c" or
"g". ccontrol will fail to compile C++ programs if this is not
set.
ld
Followed by = specifies the path of the
linker to be invoked when ccontrol is invoked as "ld". ccontrol will
fail to link programs if this is not set.
make
Followed by = specifies the path of the
binary to be invoked when ccontrol is invoked as "make". ccontrol
will fail to make if this is not set.
ccache
Followed by = specifies the path of
"ccache", and indicates that ccache is to be used where appropriate.
If followed by disable, or not set, ccache will not be used.
distcc
Followed by = specifies the path of
"distcc", and indicates that distcc is to be used where appropriate.
If followed by disable, or not set, or distcc-hosts is not set, distcc
will not be used.
distcc-hosts
Followed by = specifies the distcc
servers to use, as per the DISTCC_HOSTS environment variable in distcc(1).
Followed by disable disables distcc.
distc++-hosts
The same as distcc-hosts, but only applies to
Ccompilations. If not set, distcc-hosts is used. You can thus disable distcc
for C compilations by setting "distc++-hosts disable".
cpus
Followed by = and a number of CPUs, set
to the number of CPUs you have (the default is "1"). ccontrol
uses this to tune the degree of parallelism.
no-parallel
Followed by = and a space-separated
list of wildcards, suppresses parallel make for any make target matching one
of those. This option is needed because ccontrol(1) usually forces make(1) to
perform all actions in parallel, but this can be confusing when an error
occurs, and breaks poorly-written makefiles. Followed by disable,
enables parallel make for all targets: this is useful to re-enable parallel
make in a subdirectory.
nice
Followed by = and a priority level from
-19 to 20, causes ccontrol to try to set its priority to this value. Default
is 10.
include
Followed by = specifies a file to
include at the current point. The effect is exactly as if the contents of the
included file were literally inserted. Can be used at file level to include
sections. Can also be used within sections to include section fragments.
add make
Followed by = specifies an argument to
be added to each invocation of make. This can be specified multiple
times to add multiple arguments. Followed by disable removes any
arguments previously specified.
add env
Followed by = specifies an environment
variable to be set, such as "add env = CCACHE_DIR=/tmp". This can be
specified multiple times to set multiple environment variables. Followed by
disable removes any arguments previously specified.
verbose
By itself, indicates that ccontrol(1) is to
spit lots of crap out to standard error about what it’s doing to your
innocent command line.
lock-file
Specify a particular lock file to use.
EXAMPLES¶
This is the minimal configuration file:[*]
cc = /usr/bin/gcc
c++ = /usr/bin/g++
ld = /usr/bin/ld
make = /usr/bin/make
# Configuration file for when I'm at work. Lots of distcc hosts!
include = ~/.ccontrol/global
[*]
distcc-hosts = snab swarm1 swarm3 swarm4 swarm5 fandango2 mingo
distc++-hosts = snab mingo
[*]
cc = /usr/bin/gcc-4.0
c++ = /usr/bin/g++-4.0
ld = /usr/bin/ld
make = /usr/bin/make
# Comment this back in for debugging
# verbose
distcc = /usr/bin/distcc
distcc-hosts = snab swarm1 swarm3 swarm4 swarm5 fandango2 mingo
distc++-hosts = snab mingo
ccache = /usr/bin/ccache
# make check should not generally be run in parallel
no-parallel = check
# Wesnoth doesn't compile with g++ 4.0
[*wesnoth*]
c++ = /usr/bin/g++-3.4
# Stupid third-party modules don't build in parallel.
[/usr/src/modules/*]
no-parallel = *
# Using distcc when testing module-init-tools causes strange effects.
[*module-init-tools*/tests/*]
distcc disable
BUGS¶
The ~/.ccontrol/config file must be writable: ccontrol(1) needs to get an exclusive write lock on it, which means it needs to open the file for writing. Use include to include read-only files.echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice
AUTHOR¶
Written by Rusty Russell < rusty@rustcorp.com.au[1]>LICENSE¶
Copyright © 2005 Rusty Russell. Free use of this software is granted under the terms of the GNU General Public License (GPL).SEE ALSO¶
make(1), cc(1), c++(1), ld(1), distcc(1), ccache(1), glob(7), cpufreq-set(1)AUTHOR¶
Rusty Russell <rusty@rustcorp.com.au>Author.
NOTES¶
- 1.
- rusty@rustcorp.com.au
mailto:rusty@rustcorp.com.au
| v0.9 5 January 2006 |