@c %**end of header
@setchapternewpage off
+@ifinfo
+This document attempts to describe the general concepts behind
+configuration of the Cygnus Support release of the @sc{gnu} Development
+Tools. It also discusses common usage..
+
+Copyright (C) 1991, 1992 Cygnus Support
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by Cygnus Support.
+@end ifinfo
+
@titlepage
@sp 10
@title{On Configuring Development Tools}
-@author{K. Richard Pixley}
+@author{K. Richard Pixley, @code{rich@@cygnus.com}}
@author{Cygnus Support}
+@page
+
@vskip 0pt plus 1filll
-Copyright @copyright{} 1991 Cygnus Support
-@end titlepage
+Copyright @copyright{} 1991, 1992 Cygnus Support
-@ifinfo
-This document attempts to describe the general concepts behind
-configuration of the Cygnus Support release of the @sc{gnu} Development
-Tools. It also discusses common usage..
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
-Copyright @copyright{} 1991 Cygnus Support
-@end ifinfo
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by Cygnus Support.
+@end titlepage
@ifinfo
@format
START-INFO-DIR-ENTRY
-* configuration: (cfg-paper.info). Some theory on configuring source.
+* configuration: (cfg-paper). Some theory on configuring source.
END-INFO-DIR-ENTRY
@end format
@end ifinfo
* A Walk Through:: A Walk Through
* Final Notes:: Final Notes
* Index:: Index
+
+ --- The Detailed Node Listing ---
+
+Some Basic Terms
+
+* Host Environments:: Host Environments
+* Configuration Time Options:: Configuration Time Options
+
+A Walk Through
+
+* Native Development Environments:: Native Development Environments
+* Emulation Environments:: Emulation Environments
+* Simple Cross Environments:: Simple Cross Environments
+* Crossing Into Targets:: Crossing Into Targets
+* Canadian Cross:: Canadian Cross
+
+Final Notes
+
+* Hacking Configurations:: Hacking Configurations
@end menu
@node Some Basic Terms, Specifics., top, top
development environment actually run on the sun4. This technique is
often used within individual programs to remedy deficiencies in the host
operating system. For example, some operating systems do not provide
-the @code{bcopy()} function and so it is emulated using the
-@code{memset()} funtion.
+the @code{bcopy} function and so it is emulated using the
+@code{memcpy} funtion.
Host environment simply refers to the environment in which the program
will be built from the source.
./configure sun4 -notation=postfix
@end example
-If we wanted to build both at the same time, in the same directory
-structure, the intermediate pieces used in the build process must be
-kept separate.
+If we wanted to build both at the same time, the intermediate pieces
+used in the build process must be kept separate.
@example
-./configure sun4 -subdirs -notation=postfix
-./configure sun3 -subdirs -notation=infix
+mkdir ../objdir.sun4
+(cd ../objdir.sun4 ; ./configure sun4 -notation=postfix -srcdir=../src)
+mkdir ../objdir.sun3
+(cd ../objdir.sun3 ; ./configure sun3 -notation=infix -srcdir=../src)
@end example
@noindent
sun3 configurations. This is necessary as previous systems were only
capable of one configuration at a time. Otherwise, a second
configuration would write over the first. We've chosen to retain this
-behaviour so the @code{-subdirs} configuration option is necessary to
-get the new behaviour. The order of the arguments doesn't matter.
-There should be exactly one argument without a leading '@minus{}' sign
-and that argument will be assumed to be the host name.
+behaviour so the obj directories and the @code{-srcdir} configuration
+option are necessary to get the new behaviour. The order of the
+arguments doesn't matter. There should be exactly one argument without
+a leading @samp{-} sign and that argument will be assumed to be the host
+name.
From here on the examples will assume that you want to build the tools
-@emph{in place} and won't show the @code{-subdirs} option, but remember
+@emph{in place} and won't show the @code{-srcdir} option, but remember
that it is available.
In order to actually install the program, the configuration system needs
* Emulation Environments:: Emulation Environments
* Simple Cross Environments:: Simple Cross Environments
* Crossing Into Targets:: Crossing Into Targets
-* The Three Party Cross:: The Three Party Cross
+* Canadian Cross:: Canadian Cross
@end menu
@node Native Development Environments, Emulation Environments, A Walk Through, A Walk Through
sun4 to bootstrap the Cygnus Support release and let's call the new
development environment @emph{stage1}.
-Why bother? Well, most people find that the Cygnus Support release
-builds programs that run faster and take up less space than the native
-development environments that came with their machines. Some people
-didn't get development environments with their machines and some people
-just like using the @sc{gnu} tools better than using other tools.
+Why bother? Well, most people find that the @sc{gnu} development
+environment builds programs that run faster and take up less space than
+the native development environments that came with their machines. Some
+people didn't get development environments with their machines and some
+people just like using the @sc{gnu} tools better than using other tools.
@cindex Stage2
While you're at it, if the @sc{gnu} tools produce better programs, maybe you
environments.
-@node Crossing Into Targets, The Three Party Cross, Simple Cross Environments, A Walk Through
+@node Crossing Into Targets, Canadian Cross, Simple Cross Environments, A Walk Through
@section Crossing Into Targets
@example
native development environment, this one on a29k.
-@node The Three Party Cross, , Crossing Into Targets, A Walk Through
-@section The Three Party Cross
+@node Canadian Cross, , Crossing Into Targets, A Walk Through
+@section Canadian Cross
So far you've seen that our development environment source must be
configured for a specific host and for a specific target. You've also
produce programs for a sun3 because that is how it was configured. This
means that the resulting development environment is a simple cross.
+@cindex Canadian Cross
@cindex Three party cross
There really isn't a common name for this process because very few
development environments are capable of being configured this
extensively. For the sake of discussion, let's call this process a
-@emph{three party cross}.
+@emph{Canadian cross}. It's a three party cross, Canada has a three
+party system, hence Canadian Cross.
@node Final Notes, Index, A Walk Through, top
@chapter Final Notes
pair where the host is @var{hostname} and target is @var{targetname}.
If a previous configuration existed, it will be overwritten.
-@item ./configure -subdirs @var{hostname} -target=@var{targetname}
-creates a subdirectories @file{H-@var{hostname}} if @var{hostname} is @var{targetname} or
-@file{X-@var{hostname}-@var{targetname}} if it is not and configures the new directory.
-
@end table
@menu
Makefile template called @file{Makefile.in} and then inserting host and
target specific Makefile fragments. The variables are set based on the
chosen host+target pair and build style, that is, if you use
-subdirectories or not. The host and target specific Makefile may or may
+@code{-srcdir} or not. The host and target specific Makefile may or may
not exist.
@itemize @bullet