APPLE LOCAL file documentation
//===----------------------------------------------------------------------===//

NOTE: This file contains a description of the non-llvm GCC that llvm-gcc is 
based on.  For information on building llvm-gcc for any platform (including
Apple), please follow the directions in README.LLVM.

//===----------------------------------------------------------------------===//


This file describes Apple's version of GCC 4.x modified for Darwin /
Mac OS X.  Although Apple's stated policy is to contribute all of its
GCC work to the FSF GCC mainstream, at any given moment there will be
changes that are permanently unacceptable for FSF GCC, in need of
rework before acceptance, or that we simply aren't ready to send in.
This version of GCC contains all those changes.

In keeping with provision 2a of the GPL, each Apple change is marked
with a comment saying "APPLE LOCAL", followed by optional words "begin",
"end", or "file", followed by a short phrase describing the change
generally ("AltiVec" for instance, if the change is related to AltiVec
support).

BUILDING, THE APPLE WAY

To build things the Apple way, just say (in the source directory)

	mkdir -p build/obj build/dst build/sym
	gnumake install RC_OS=macos RC_ARCHS=ppc TARGETS=ppc \
		SRCROOT=`pwd` OBJROOT=`pwd`/build/obj \
		DSTROOT=`pwd`/build/dst SYMROOT=`pwd`/build/sym

This will configure and then do a full bootstrap build, with all the
results going into the subdirectory build/ that you created.  The
final results will be in the "dest root" directory build/dst, in the
form of an image of the installed directory structure.  The drivers
and other user-visible tools have a "-4.0" suffixed, so for instance the
driver is /usr/bin/gcc-4.0

To install the results, become root and do

	ditto build/dst /

Various knobs and switches are available, but even so, the Apple
makefile machinery is mainly designed for mass builds of all the
projects that make up Darwin and/or Mac OS X, and is thus not as
flexible as the standard GCC build process.

To build for i386 Darwin, set TARGETS=i386.  To build universal, set
RC_ARCHS='i386 ppc' TARGETS='i386 ppc'.  Note that you must have a
complete set of universal libraries and i386-targeting cctools for this
all to work.

You can set the four *ROOT variables to point anywhere, but they must
always be absolute pathnames.

This way of building may or may not work on non-Macs, and if it
doesn't, you're on your own.

BUILDING, THE FSF WAY

In general, standard GCC procedures work for building this version.
We recommend that you build in a separate objdir; create a sibling
to the toplevel source dir, call it whatever you want, cd into it,
and say "../gcc/configure".  This way you can have more than one
build using the same set of sources.

If you insist on building in the source directory using "./configure",
the GNUmakefile that supports the Apple build process (see above) will
shadow your makefile, and you will need to override this behavior by
saying "make -f Makefile" (or by moving GNUmakefile out of the way).

For instance:

	mkdir darwin
	cd darwin
	../configure --prefix=/tmp/testplace
	make bootstrap
	make install

does a full build, plus two generations of self-compilation for
GCC proper, then an install.

To avoid building every language, use --enable-languages argument to
configure.  For instance, '--enable-languages=objc,c++,obj-c++' skips
the Fortran and Java compilers.  (The C compiler will always be
built.)

To build an x86 cross-compiler, add "--target=i386-darwin" to the
configure line.  The x86 compiler works, but to make it useful you
will need libraries and such from x86 Darwin.
