gccint: Configure Terms

1 
1 6.1 Configure Terms and History
1 ===============================
1 
1 The configure and build process has a long and colorful history, and can
1 be confusing to anyone who doesn't know why things are the way they are.
1 While there are other documents which describe the configuration process
1 in detail, here are a few things that everyone working on GCC should
1 know.
1 
1  There are three system names that the build knows about: the machine
1 you are building on ("build"), the machine that you are building for
1 ("host"), and the machine that GCC will produce code for ("target").
1 When you configure GCC, you specify these with '--build=', '--host=',
1 and '--target='.
1 
1  Specifying the host without specifying the build should be avoided, as
1 'configure' may (and once did) assume that the host you specify is also
1 the build, which may not be true.
1 
1  If build, host, and target are all the same, this is called a "native".
1 If build and host are the same but target is different, this is called a
1 "cross".  If build, host, and target are all different this is called a
1 "canadian" (for obscure reasons dealing with Canada's political party
1 and the background of the person working on the build at that time).  If
1 host and target are the same, but build is different, you are using a
1 cross-compiler to build a native for a different system.  Some people
1 call this a "host-x-host", "crossed native", or "cross-built native".
1 If build and target are the same, but host is different, you are using a
1 cross compiler to build a cross compiler that produces code for the
1 machine you're building on.  This is rare, so there is no common way of
1 describing it.  There is a proposal to call this a "crossback".
1 
1  If build and host are the same, the GCC you are building will also be
1 used to build the target libraries (like 'libstdc++').  If build and
1 host are different, you must have already built and installed a cross
1 compiler that will be used to build the target libraries (if you
1 configured with '--target=foo-bar', this compiler will be called
1 'foo-bar-gcc').
1 
1  In the case of target libraries, the machine you're building for is the
1 machine you specified with '--target'.  So, build is the machine you're
1 building on (no change there), host is the machine you're building for
1 (the target libraries are built for the target, so host is the target
1 you specified), and target doesn't apply (because you're not building a
1 compiler, you're building libraries).  The configure/make process will
1 adjust these variables as needed.  It also sets '$with_cross_host' to
1 the original '--host' value in case you need it.
1 
1  The 'libiberty' support library is built up to three times: once for
1 the host, once for the target (even if they are the same), and once for
1 the build if build and host are different.  This allows it to be used by
1 all programs which are generated in the course of the build process.
1