MCPcopy Index your code
hub / github.com/distcc/distcc

github.com/distcc/distcc @3.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.4 ↗ · + Follow
1,421 symbols 3,579 edges 222 files 629 documented · 44%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

distcc -- a free distributed C/C++ compiler system

Build Status

by Martin Pool

Current Documents: https://distcc.github.io/ Formally http://distcc.org/

"pump" functionality added by Fergus Henderson, Nils Klarlund, Manos Renieris, and Craig Silverstein (Google Inc.)

distcc is a program to distribute compilation of C or C++ code across several machines on a network. distcc should always generate the same results as a local compile, is simple to install and use, and is often two or more times faster than a local compile.

Unlike other distributed build systems, distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed. Machines can be running different operating systems, as long as they have compatible binary formats or cross-compilers.

By default, distcc sends the complete preprocessed source code across the network for each job, so all it requires of the volunteer machines is that they be running the distccd daemon, and that they have an appropriate compiler installed.

The distcc "pump" functionality, added in distcc 3.0, improves on distcc by distributing not only compilation but also preprocessing to distcc servers. This requires that the server and client have the same system headers (the client takes responsibility for transmitting application-specific headers). Given that, distcc in pump mode yields the same results that distcc would in non-pump mode, but faster, since the preprocessor no longer runs locally. For more details on the pump functionality, see README.pump.

distcc is not itself a compiler, but rather a front-end to the GNU C/C++ compiler (gcc), or another compiler of your choice. All the regular gcc options and features work as normal.

distcc is designed to be used with GNU make's parallel-build feature (-j). Shipping files across the network takes time, but few cycles on the client machine. Any files that can be built remotely are essentially "for free" in terms of client CPU. This is even more true in "pump" mode, where the client does not even have to take time to preprocess the source files. distcc has been successfully used in environments with hundreds of distcc servers, supporting dozens of simultaneous compiles.

distcc is now reasonably stable and can successfully compile the Linux kernel, rsync, KDE, GNOME (via GARNOME), Samba and Ethereal. distcc is nearly linearly scalable for small numbers of machines: for a typical case, three machines are 2.6 times faster than one.

Licence

distcc is distributed under the GNU General Public Licence v2.

Resources

Core symbols most depended-on inside this repo

strerror
called by 136
popt/popt.c
runcmd
called by 60
test/comfychair.py
assert_equal
called by 40
test/comfychair.py
str_startswith
called by 35
src/util.c
Debug
called by 35
include_server/basics.py
Index
called by 32
include_server/cache_basics.py
dcc_close
called by 31
src/io.c
assert_re_search
called by 28
test/comfychair.py

Shape

Function 654
Method 400
Class 313
Enum 54

Languages

C51%
Python43%
C++6%

Modules by API surface

test/testdistcc.py258 symbols
src/util.c38 symbols
test/comfychair.py36 symbols
popt/popt.c34 symbols
include_server/cache_basics.py34 symbols
lzo/minilzo.c32 symbols
include_server/include_analyzer_test.py26 symbols
src/trace.c24 symbols
src/stats.c24 symbols
include_server/include_server.py24 symbols
include_server/include_analyzer_memoizing_node.py21 symbols
include_server/basics.py21 symbols

For agents

$ claude mcp add distcc \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact