distributed builds for C, C++ and Objective C
C Python Shell Makefile M4 C++
Latest commit 6f886a5 Oct 13, 2016 @TafThorne TafThorne committed on GitHub Merge pull request #198 from dabrahams/patch-1
Handle arguments -target & -F

These arguments are needed to build Swift on MacOS.  

"-F" introduces a "framework path." A framework is a bundle of related libraries (usually one) and headers under a single directory. Adding a framework path effectively adds all of its */Headers directories to the -I #include path.
Failed to load latest commit information.
bench Make the benchmarking script's stdout and stderr line buffered. Aug 2, 2008
contrib The first step of moving everything in the distcc directory to the top Apr 11, 2008
doc Regenerate the automatically-generate HTML files for the man pages May 9, 2012
gnome Swedish translation, from Nille <nille.kungen@gmail.com>. Jun 30, 2009
include_server Kill stray space Sep 22, 2016
lzo lzo: Update to 2.08 Jul 29, 2014
m4 Update acx_pthread to the latest version we use internally. This is May 14, 2008
man allow -j (jobs) parameter with zeroconf Jul 7, 2016
packaging Add help for systemd-based RH-like distro users Nov 4, 2015
popt Fix a couple of compiler warnings. Oct 21, 2011
src ssh.c: tokenize the ssh command retrieved from DISTCC_SSH Aug 12, 2016
test include_server python(3) ready Apr 14, 2016
.gitignore added initial .gitignore covering build results Jan 21, 2016
.travis.yml Remove gcc-dev From before_install Jul 19, 2016
AUTHORS Documentation fixes: May 30, 2008
COPYING Initial submission @6805748, not fully baked yet. Mar 28, 2008
ChangeLog Update ChangeLog again. Oct 26, 2011
INSTALL Libiberty has moved in Debian Mar 3, 2014
Makefile.in removed forgotten echo from Makefile.in, reference to a include_serve… Apr 27, 2016
NEWS Update the NEWS and ChangeLog files, and set the version number to 3.… Oct 25, 2011
README Adding missing README from svn to fix make install breakage Jul 13, 2015
README.md typo fix Sep 15, 2016
README.packaging Take these human-readable files and normalize their content and Apr 9, 2008
README.pump Documentation fixes: May 30, 2008
TODO Some updates to the TODO list to mark as done issues which are addressed Jun 9, 2008
autogen.sh Address review comments on an earlier change: Apr 18, 2008
config.guess Merge configure.ac, distcc/configure.ac, and Apr 11, 2008
config.sub Merge configure.ac, distcc/configure.ac, and Apr 11, 2008
configure.ac removed forgotten echo from Makefile.in, reference to a include_serve… Apr 27, 2016
find_c_extension.sh Correct obscure bug (that quoting a variable eliminates the conversio… Jun 9, 2008
install-sh Merge configure.ac, distcc/configure.ac, and Apr 11, 2008
mkinstalldirs Merge configure.ac, distcc/configure.ac, and Apr 11, 2008
pump.in Fix for distcc issue 109 <http://code.google.com/p/distcc/issues/deta… May 3, 2012
survey.txt Direct survey response to distcc-survey@google.com rather than to Mar… May 22, 2008


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

by Martin Pool

Current Documents: https://cdn.rawgit.com/distcc/distcc/9a09372bd3f420cdd7021e52eda14fa536a3c10e/doc/web/index.html 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.


distcc is distributed under the GNU General Public Licence v2.