1@c Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. 2@c This is part of the GCC manual. 3@c For copying conditions, see the file gcc.texi. 4 5@node Configure Terms 6@section Configure Terms and History 7@cindex configure terms 8@cindex canadian 9 10The configure and build process has a long and colorful history, and can 11be confusing to anyone who doesn't know why things are the way they are. 12While there are other documents which describe the configuration process 13in detail, here are a few things that everyone working on GCC should 14know. 15 16There are three system names that the build knows about: the machine you 17are building on (@dfn{build}), the machine that you are building for 18(@dfn{host}), and the machine that GCC will produce code for 19(@dfn{target}). When you configure GCC, you specify these with 20@option{--build=}, @option{--host=}, and @option{--target=}. 21 22Specifying the host without specifying the build should be avoided, as 23@command{configure} may (and once did) assume that the host you specify 24is also the build, which may not be true. 25 26If build, host, and target are all the same, this is called a 27@dfn{native}. If build and host are the same but target is different, 28this is called a @dfn{cross}. If build, host, and target are all 29different this is called a @dfn{canadian} (for obscure reasons dealing 30with Canada's political party and the background of the person working 31on the build at that time). If host and target are the same, but build 32is different, you are using a cross-compiler to build a native for a 33different system. Some people call this a @dfn{host-x-host}, 34@dfn{crossed native}, or @dfn{cross-built native}. If build and target 35are the same, but host is different, you are using a cross compiler to 36build a cross compiler that produces code for the machine you're 37building on. This is rare, so there is no common way of describing it. 38There is a proposal to call this a @dfn{crossback}. 39 40If build and host are the same, the GCC you are building will also be 41used to build the target libraries (like @code{libstdc++}). If build and host 42are different, you must have already build and installed a cross 43compiler that will be used to build the target libraries (if you 44configured with @option{--target=foo-bar}, this compiler will be called 45@command{foo-bar-gcc}). 46 47In the case of target libraries, the machine you're building for is the 48machine you specified with @option{--target}. So, build is the machine 49you're building on (no change there), host is the machine you're 50building for (the target libraries are built for the target, so host is 51the target you specified), and target doesn't apply (because you're not 52building a compiler, you're building libraries). The configure/make 53process will adjust these variables as needed. It also sets 54@code{$with_cross_host} to the original @option{--host} value in case you 55need it. 56 57The @code{libiberty} support library is built up to three times: once 58for the host, once for the target (even if they are the same), and once 59for the build if build and host are different. This allows it to be 60used by all programs which are generated in the course of the build 61process. 62