@c APPLE LOCAL file GPL compliance
@node Source Code
@unnumbered Source Code

The source code for released versions of Apple's GCC is available at
@samp{http://www.opensource.apple.com/darwinsource/}, in
@samp{.tar.gz} format.

For unreleased versions (including 'seeds', beta versions and
engineering roots), source can be obtained by asking the Apple contact
from which you obtained the unreleased version.

For many versions of Apple's GCC, source code is available by using
anonymous Subversion.  You may obtain Subversion ('SVN') from
@samp{http://subversion.tigris.org/project_packages.html}.

Development of this version is done at
@samp{svn://gcc.gnu.org/svn/gcc/branches/apple-local-200502-branch}.

For example, you can fetch the latest version by entering:

@smallexample
$ svn co svn://gcc.gnu.org/svn/gcc/branches/apple-local-200502-branch
@end smallexample

Each version will be tagged based on its build number, which
you can find by executing @samp{gcc --version}; for instance, if this prints

@smallexample
gcc (GCC) 3.3 20030304 (Apple Computer, Inc. build 8402)
@end smallexample

then the build number is 8402.  Some older compilers may require you
use @samp{gcc -v} to obtain the build number.  Once you have the build
number, its tag will be at
@samp{svn://gcc.gnu.org/svn/gcc/tags/apple}, like
@samp{svn://gcc.gnu.org/svn/gcc/tags/apple/gcc-8402}.  You can list
all the tags by writing

@smallexample
$ svn ls svn://gcc.gnu.org/svn/gcc/tags/apple
@end smallexample

Then check out a particular version by writing

@smallexample
$ svn co svn://gcc.gnu.org/svn/gcc/tags/apple/gcc-8402
@end smallexample

The above command won't succeed as written, because 8402 is not yet a
real compiler build number.
