For SPARC V9, change icc to %icc, xcc to %xcc, fccX to %fccX.
[deliverable/binutils-gdb.git] / cfg-paper.texi
CommitLineData
7d283cc1
RP
1\input texinfo @c -*-para-*-
2@c %**start of header
3@setfilename cfg-paper.info
4@settitle On Configuring Development Tools
5@c %**end of header
6@setchapternewpage off
7
ad659e07
RP
8@ifinfo
9This document attempts to describe the general concepts behind
10configuration of the Cygnus Support release of the @sc{gnu} Development
11Tools. It also discusses common usage..
12
d0fbd756 13Copyright 1991, 1992 Free Software Foundation, Inc.
ad659e07
RP
14Permission is granted to make and distribute verbatim copies of
15this manual provided the copyright notice and this permission notice
16are preserved on all copies.
17
18@ignore
19Permission is granted to process this file through TeX and print the
20results, provided the printed document carries copying permission
21notice identical to this one except for the removal of this paragraph
22(this paragraph not being relevant to the printed manual).
23
24@end ignore
25Permission is granted to copy and distribute modified versions of this
26manual under the conditions for verbatim copying, provided that the entire
27resulting derived work is distributed under the terms of a permission
28notice identical to this one.
29
30Permission is granted to copy and distribute translations of this manual
31into another language, under the above conditions for modified versions,
32except that this permission notice may be stated in a translation approved
33by Cygnus Support.
34@end ifinfo
35
7d283cc1
RP
36@titlepage
37@sp 10
38@title{On Configuring Development Tools}
0065bc39 39@author{K. Richard Pixley, @code{rich@@cygnus.com}}
7d283cc1 40@author{Cygnus Support}
ad659e07 41@page
0065bc39 42
7d283cc1 43@vskip 0pt plus 1filll
d0fbd756 44Copyright @copyright{} 1991, 1992 Free Software Foundation, Inc.
7d283cc1 45
ad659e07
RP
46Permission is granted to make and distribute verbatim copies of
47this manual provided the copyright notice and this permission notice
48are preserved on all copies.
7d283cc1 49
ad659e07
RP
50Permission is granted to copy and distribute modified versions of this
51manual under the conditions for verbatim copying, provided that the entire
52resulting derived work is distributed under the terms of a permission
53notice identical to this one.
54
55Permission is granted to copy and distribute translations of this manual
56into another language, under the above conditions for modified versions,
57except that this permission notice may be stated in a translation approved
58by Cygnus Support.
59@end titlepage
7d283cc1 60
12682548
RP
61@ifinfo
62@format
63START-INFO-DIR-ENTRY
01b8752d 64* configuration: (cfg-paper). Some theory on configuring source.
12682548
RP
65END-INFO-DIR-ENTRY
66@end format
67@end ifinfo
68
7d283cc1
RP
69@node top, Some Basic Terms, (dir), (dir)
70
71@ifinfo
72This document attempts to describe the general concepts behind
73configuration of the Cygnus Support release of the @sc{gnu} Development
74Tools. It also discusses common usage.
75@end ifinfo
76
77@menu
78* Some Basic Terms:: Some Basic Terms
79* Specifics.:: Specifics
80* Building Development Environments:: Building Development Environments
81* A Walk Through:: A Walk Through
82* Final Notes:: Final Notes
83* Index:: Index
90f66196
RP
84
85 --- The Detailed Node Listing ---
86
87Some Basic Terms
88
89* Host Environments:: Host Environments
90* Configuration Time Options:: Configuration Time Options
91
92A Walk Through
93
94* Native Development Environments:: Native Development Environments
95* Emulation Environments:: Emulation Environments
96* Simple Cross Environments:: Simple Cross Environments
97* Crossing Into Targets:: Crossing Into Targets
98* Canadian Cross:: Canadian Cross
99
100Final Notes
101
102* Hacking Configurations:: Hacking Configurations
7d283cc1
RP
103@end menu
104
105@node Some Basic Terms, Specifics., top, top
106@chapter Some Basic Terms
107
108There are a lot of terms that are frequently used when discussing
109development tools. Most of the common terms have been used for many
110different concepts such that their meanings have become ambiguous to the
111point of being confusing. Typically, we only guess at their meanings
112from context and we frequently guess wrong.
113
114This document uses very few terms by comparison. The intent is to make
115the concepts as clear as possible in order to convey the usage and
116intent of these tools.
117
118@emph{Programs} run on @emph{machines}. Programs are very nearly always
119written in @emph{source}. Programs are @emph{built} from source.
120@emph{Compilation} is a process that is frequently, but not always, used
121when building programs.
122@cindex Programs
123@cindex Machines
124@cindex Source
125@cindex Building
126@cindex Compilation
127
128@menu
129* Host Environments:: Host Environments
130* Configuration Time Options:: Configuration Time Options
131@end menu
132
133@node Host Environments, Configuration Time Options, Some Basic Terms, Some Basic Terms
134@section Host Environments
135
136@cindex host
137In this document, the word @emph{host} refers to the environment in
138which the source in question will be compiled. @emph{host} and
139@emph{host name} have nothing to do with the proper name of your host,
140like @emph{ucbvax}, @emph{prep.ai.mit.edu} or @emph{att.com}. Instead
141they refer to things like @emph{sun4} and @emph{dec3100}.
142
143Forget for a moment that this particular directory of source is the
144source for a development environment. Instead, pretend that it is the
145source for a simpler, more mundane, application, say, a desk calculator.
146
147Source that can be compiled in more than one environment, generally
148needs to be set up for each environment explicitly. Here we refer to
149that process as configuration. That is, we configure the source for a
150host.
151
152For example, if we wanted to configure our mythical desk calculator to
153compile on a SparcStation, we might configure for host sun4. With our
154configuration system:
155
156@example
157cd desk-calculator ; ./configure sun4
158@end example
159
160@noindent
161does the trick. @code{configure} is a shell script that sets up Makefiles,
162subdirectories, and symbolic links appropriate for compiling the source
163on a sun4.
164
165The @emph{host} environment does not necessarily refer to the machine on
166which the tools are built. It is possible to provide a sun3 development
167environment on a sun4. If we wanted to use a cross compiler on the sun4
168to build a program intended to be run on a sun3, we would configure the
169source for sun3.
170
171@example
172cd desk-calculator ; ./configure sun3
173@end example
174
175@noindent
176The fact that we are actually building the program on a sun4 makes no
177difference if the sun3 cross compiler presents an environment that looks
178like a sun3 from the point of view of the desk calculator source code.
179Specifically, the environment is a sun3 environment if the header files,
180predefined symbols, and libraries appear as they do on a sun3.
181
182Nor does the host environment refer to the the machine on which the
183program to be built will run. It is possible to provide a sun3
184emulation environment on a sun4 such that programs built in a sun3
185development environment actually run on the sun4. This technique is
186often used within individual programs to remedy deficiencies in the host
187operating system. For example, some operating systems do not provide
62ddb92b
RP
188the @code{bcopy} function and so it is emulated using the
189@code{memcpy} funtion.
7d283cc1
RP
190
191Host environment simply refers to the environment in which the program
192will be built from the source.
193
194
195@node Configuration Time Options, , Host Environments, Some Basic Terms
196@section Configuration Time Options
197
198Many programs have compile time options. That is, features of the
199program that are either compiled into the program or not based on a
200choice made by the person who builds the program. We refer to these as
201@emph{configuration options}. For example, our desk calculator might be
202capable of being compiled into a program that either uses infix notation
203or postfix as a configuration option. For a sun3, to choose infix you
204might use:
205
206@example
207./configure sun3 -notation=infix
208@end example
209
210@noindent
211while for a sun4 with postfix you might use:
212
213@example
214./configure sun4 -notation=postfix
215@end example
216
787c6bfe
RP
217If we wanted to build both at the same time, the intermediate pieces
218used in the build process must be kept separate.
7d283cc1
RP
219
220@example
787c6bfe
RP
221mkdir ../objdir.sun4
222(cd ../objdir.sun4 ; ./configure sun4 -notation=postfix -srcdir=../src)
223mkdir ../objdir.sun3
224(cd ../objdir.sun3 ; ./configure sun3 -notation=infix -srcdir=../src)
7d283cc1
RP
225@end example
226
227@noindent
228will create subdirectories for the intermediate pieces of the sun4 and
229sun3 configurations. This is necessary as previous systems were only
230capable of one configuration at a time. Otherwise, a second
231configuration would write over the first. We've chosen to retain this
787c6bfe
RP
232behaviour so the obj directories and the @code{-srcdir} configuration
233option are necessary to get the new behaviour. The order of the
234arguments doesn't matter. There should be exactly one argument without
235a leading @samp{-} sign and that argument will be assumed to be the host
236name.
7d283cc1
RP
237
238From here on the examples will assume that you want to build the tools
787c6bfe 239@emph{in place} and won't show the @code{-srcdir} option, but remember
7d283cc1
RP
240that it is available.
241
242In order to actually install the program, the configuration system needs
243to know where you would like the program installed. The default
244location is @file{/usr/local}. We refer to this location as
245@code{$(prefix)}. All user visible programs will be installed in
246@file{@code{$(prefix)}/bin}. All other programs and files will be
247installed in a subdirectory of @file{@code{$(prefix)}/lib}.
248
249NOTE: @code{$(prefix)} was previously known as @code{$(destdir)}.
250
251You can elect to change @code{$(prefix)} only as a configuration time
252option.
253
254@example
255./configure sun4 -notation=postfix -prefix=/local
256@end example
257
258@noindent
259Will configure the source such that:
260
261@example
262make install
263@end example
264
265@noindent
266will put it's programs in @file{/local/bin} and @file{/local/lib/gcc}.
267If you change @code{$(prefix)} after building the source, you will need
268to:
269
270@example
271make clean
272@end example
273
274@noindent
275before the change will be propogated properly. This is because some
276tools need to know the locations of other tools.
277
278With these concepts in mind, we can drop the desk calculator example and
279move on to the application that resides in these directories, namely,
280the source to a development environment.
281
282@node Specifics., Building Development Environments, Some Basic Terms, top
283@chapter Specifics
284
285The @sc{gnu} Development Tools can be built on a wide variety of hosts. So,
286of course, they must be configured. Like the last example,
287
288@example
289./configure sun4 -prefix=/local
290./configure sun3 -prefix=/local
291@end example
292
293@noindent
294will configure the source to be built in subdirectories, in order to
295keep the intermediate pieces separate, and to be installed in
296@file{/local}.
297
298When built with suitable development environments, these will be native
299tools. We'll explain the term @emph{native} later.
300
301@node Building Development Environments, A Walk Through, Specifics., top
302@chapter Building Development Environments
303
304@cindex Target
305
306The Cygnus Support @sc{gnu} development tools can not only be built in a
307number of host development environments, they can also be configured to
308create a number of different development environments on each of those
309hosts. We refer to a specific development environment created as a
310@emph{target}. That is, the word @emph{target} refers to the development
311environment produced by compiling this source and installing the
312resulting programs.
313
314For the Cygnus Support @sc{gnu} development tools, the default target is the
315same as the host. That is, the development environment produced is
316intended to be compatible with the environment used to build the tools.
317
318In the example above, we created two configurations, one for sun4 and
319one for sun3. The first configuration is expecting to be built in a
320sun4 development environment, to create a sun4 development environment.
321It doesn't necessarily need to be built on a sun4 if a sun4 development
322environment is available elsewhere. Likewise, if the available sun4
323development environment produces executables intended for something
324other than sun4, then the development environment built from this sun4
325configuration will run on something other than a sun4. From the point
326of view of the configuration system and the @sc{gnu} development tools
327source, this doesn't matter. What matters is that they will be built in
328a sun4 environment.
329
330Similarly, the second configuration given above is expecting to be built
331in a sun3 development environment, to create a sun3 development
332environment.
333
334The development environment produced, is a configuration time option,
335just like @code{$(prefix)}.
336
337@example
338./configure sun4 -prefix=/local -target=sun3
339./configure sun3 -prefix=/local -target=sun4
340@end example
341
342In this example, like before, we create two configurations. The first
343is intended to be built in a sun4 environment, in subdirectories, to be
344installed in @file{/local}. The second is intended to be built in a
345sun3 environment, in subdirectories, to be installed in @file{/local}.
346
347Unlike the previous example, the first configuration will produce a sun3
348development environment, perhaps even suitable for building the second
349configuration. Likewise, the second configuration will produce a sun4
350development environment, perhaps even suitable for building the first
351configuration.
352
353The development environment used to build these configurations will
354determine the machines on which the resulting development environments
355can be used.
356
357
358@node A Walk Through, Final Notes, Building Development Environments, top
359@chapter A Walk Through
360
361
362@menu
363* Native Development Environments:: Native Development Environments
364* Emulation Environments:: Emulation Environments
365* Simple Cross Environments:: Simple Cross Environments
366* Crossing Into Targets:: Crossing Into Targets
90f66196 367* Canadian Cross:: Canadian Cross
7d283cc1
RP
368@end menu
369
370@node Native Development Environments, Emulation Environments, A Walk Through, A Walk Through
371@section Native Development Environments
372
373Let us assume for a moment that you have a sun4 and that with your sun4
374you received a development environment. This development environment is
375intended to be run on your sun4 to build programs that can be run on
376your sun4. You could, for instance, run this development environment on
377your sun4 to build our example desk calculator program. You could then
378run the desk calculator program on your sun4.
379
380@cindex Native
381@cindex Foreign
382The resulting desk calculator program is referred to as a @emph{native}
383program. The development environment itself is composed of native
384programs that, when run, build other native programs. Any other program
385is referred to as @emph{foreign}. Programs intended for other machines are
386foreign programs.
387
388This type of development environment, which is by far the most common,
389is refered to as @emph{native}. That is, a native development environment
390runs on some machine to build programs for that same machine. The
391process of using a native development environment to build native
392programs is called a @emph{native} build.
393
394@example
395./configure sun4
396@end example
397
398@noindent
399will configure this source such that when built in a sun4 development
400environment, with a development environment that builds programs
401intended to be run on sun4 machines, the programs built will be native
402programs and the resulting development environment will be a native
403development environment.
404
405The development system that came with your sun4 is one such environment.
406Using it to build the @sc{gnu} Development Tools is a very common activity
407and the resulting development environment is quite popular.
408
409@example
410make all
411@end example
412
413@noindent
414will build the tools as configured and will assume that you want to use
415the native development environment that came with your machine.
416
417@cindex Bootstrapping
418@cindex Stage1
419Using a development environment to build a development environment is
420called @emph{bootstrapping}. The Cygnus Support release of the @sc{gnu}
421Development Tools is capable of bootstrapping itself. This is a very
422powerful feature that we'll return to later. For now, let's pretend
423that you used the native development environment that came with your
424sun4 to bootstrap the Cygnus Support release and let's call the new
425development environment @emph{stage1}.
426
62ddb92b
RP
427Why bother? Well, most people find that the @sc{gnu} development
428environment builds programs that run faster and take up less space than
429the native development environments that came with their machines. Some
430people didn't get development environments with their machines and some
431people just like using the @sc{gnu} tools better than using other tools.
7d283cc1
RP
432
433@cindex Stage2
434While you're at it, if the @sc{gnu} tools produce better programs, maybe you
435should use them to build the @sc{gnu} tools. It's a good idea, so let's
436pretend that you do. Let's call the new development environment
437@emph{stage2}.
438
439@cindex Stage3
440So far you've built a development environment, stage1, and you've used
441stage1 to build a new, faster and smaller development environment,
442stage2, but you haven't run any of the programs that the @sc{gnu} tools have
443built. You really don't yet know if these tools work. Do you have any
444programs built with the @sc{gnu} tools? Yes, you do. stage2. What does
445that program do? It builds programs. Ok, do you have any source handy
446to build into a program? Yes, you do. The @sc{gnu} tools themselves. In
447fact, if you use stage2 to build the @sc{gnu} tools again the resulting
448programs should be identical to stage2. Let's pretend that you do and
449call the new development environment @emph{stage3}.
450
451@cindex Three stage boot
452You've just completed what's called a @emph{three stage boot}. You now have
453a small, fast, somewhat tested, development environment.
454
455@example
456make bootstrap
457@end example
458
459@noindent
460will do a three stage boot across all tools and will compare stage2 to
461stage3 and complain if they are not identical.
462
463Once built,
464
465@example
466make install
467@end example
468
469@noindent
470will install the development environment in the default location or in
471@code{$(prefix)} if you specified an alternate when you configured.
472
473@cindex Cross
474Any development environment that is not a native development environment
475is refered to as a @emph{cross} development environment. There are many
476different types of cross development environments but most fall into one
477of three basic categories.
478
479
480@node Emulation Environments, Simple Cross Environments, Native Development Environments, A Walk Through
481@section Emulation Environments
482
483@cindex Emulation
484The first category of cross development environment is called
485@emph{emulation}. There are two primary types of emulation, but both
486types result in programs that run on the native host.
487
488@cindex Software emulation
489@cindex Software emulator
490The first type is @emph{software emulation}. This form of cross
491development environment involves a native program that when run on the
492native host, is capable of interpreting, and in most aspects running, a
493program intended for some other machine. This technique is typically
494used when the other machine is either too expensive, too slow, too fast,
495or not available, perhaps because it hasn't yet been built. The native,
496interpreting program is called a @emph{software emulator}.
497
498The @sc{gnu} Development Tools do not currently include any software
499emulators. Some do exist and the @sc{gnu} Development Tools can be
500configured to create simple cross development environments for with
501these emulators. More on this later.
502
503The second type of emulation is when source intended for some other
504development environment is built into a program intended for the native
505host. The concepts of operating system universes and hosted operating
506systems are two such development environments.
507
508The Cygnus Support Release of the @sc{gnu} Development Tools can be
509configured for one such emulation at this time.
510
511@example
512./configure sun4 -ansi
513@end example
514
515@cindex ANSI
516@cindex X3J11
517@noindent
518will configure the source such that when built in a sun4 development
519environment the resulting development environment is capable of building
520sun4 programs from strictly conforming @sc{ANSI X3J11 C} source.
521Remember that the environment used to build the tools determines the
522machine on which this tools will run, so the resulting programs aren't
523necessarily intended to run on a sun4, although they usually are. Also
524note that the source for the @sc{gnu} tools is not strictly conforming
525@sc{ansi} source so this configuration cannot be used to bootstrap the
526@sc{gnu} tools.
527
528
529@node Simple Cross Environments, Crossing Into Targets, Emulation Environments, A Walk Through
530@section Simple Cross Environments
531
532@example
533./configure sun4 -target=a29k
534@end example
535
536@noindent
537will configure the tools such that when compiled in a sun4 development
538environment the resulting development environment can be used to create
539programs intended for an a29k. Again, this does not necessarily mean
540that the new development environment can be run on a sun4. That would
541depend on the development environment used to build these tools.
542
543Earlier you saw how to configure the tools to build a native development
544environment, that is, a development environment that runs on your sun4
545and builds programs for your sun4. Let's pretend that you use stage3 to
546build this simple cross configuration and let's call the new development
547environment gcc-a29k. Remember that this is a native build. Gcc-a29k
548is a collection of native programs intended to run on your sun4. That's
549what stage3 builds, programs for your sun4. Gcc-a29k represents an a29k
550development environment that builds programs intended to run on an a29k.
551But, remember, gcc-a29k runs on your sun4. Programs built with gcc-a29k
552will run on your sun4 only with the help of an appropriate software
553emulator.
554
555@cindex Simple cross
556@cindex Crossing to
557Building gcc-a29k is also a bootstrap but of a slightly different sort.
558We call gcc-a29k a @emph{simple cross} environment and using gcc-a29k to
559build a program intended for a29k is called @emph{crossing to} a29k.
560Simple cross environments are the second category of cross development
561environments.
562
563
90f66196 564@node Crossing Into Targets, Canadian Cross, Simple Cross Environments, A Walk Through
7d283cc1
RP
565@section Crossing Into Targets
566
567@example
568./configure a29k -target=a29k
569@end example
570
571@noindent
572will configure the tools such that when compiled in an a29k development
573environment, the resulting development environment can be used to create
574programs intended for an a29k. Again, this does not necessarily mean
575that the new development environment can be run on an a29k. That would
576depend on the development environment used to build these tools.
577
578If you've been following along this walk through, then you've already
579built an a29k environment, namely gcc-a29k. Let's pretend you use
580gcc-a29k to build the current configuration.
581
582Gcc-a29k builds programs intended for the a29k so the new development
583environment will be intended for use on an a29k. That is, this new gcc
584consists of programs that are foreign to your sun4. They cannot be run
585on your sun4.
586
587@cindex Crossing into
588The process of building this configuration is another a bootstrap. This
589bootstrap is also a cross to a29k. Because this type of build is both a
590bootstrap and a cross to a29k, it is sometimes referred to as a
591@emph{cross into} a29k. This new development environment isn't really a
592cross development environment at all. It is intended to run on an a29k
593to produce programs for an a29k. You'll remember that this makes it, by
594definition, an a29k native compiler. @emph{Crossing into} has been
595introduced here not because it is a type of cross development
596environment, but because it is frequently mistaken as one. The process
597is @emph{a cross} but the resulting development environment is a native
598development environment.
599
600You could not have built this configuration with stage3, because stage3
601doesn't provide an a29k environment. Instead it provides a sun4
602environment.
603
604If you happen to have an a29k lying around, you could now use this fresh
605development environment on the a29k to three-stage these tools all over
606again. This process would look just like it did when we built the
607native sun4 development environment because we would be building another
608native development environment, this one on a29k.
609
610
90f66196
RP
611@node Canadian Cross, , Crossing Into Targets, A Walk Through
612@section Canadian Cross
7d283cc1
RP
613
614So far you've seen that our development environment source must be
615configured for a specific host and for a specific target. You've also
616seen that the resulting development environment depends on the
617development environment used in the build process.
618
619When all four match identically, that is, the configured host, the
620configured target, the environment presented by the development
621environment used in the build, and the machine on which the resulting
622development environment is intended to run, then the new development
623environment will be a native development environment.
624
625When all four match except the configured host, then we can assume that
626the development environment used in the build is some form of library
627emulation.
628
629When all four match except for the configured target, then the resulting
630development environment will be a simple cross development environment.
631
632When all four match except for the host on which the development
633environment used in the build runs, the build process is a @emph{cross into}
634and the resulting development environment will be native to some other
635machine.
636
637Most of the other permutations do exist in some form, but only one more
638is interesting to the current discussion.
639
640@example
641./configure a29k -target=sun3
642@end example
643
644@noindent
645will configure the tools such that when compiled in an a29k development
646environment, the resulting development environment can be used to create
647programs intended for a sun3. Again, this does not necessarily mean
648that the new development environment can be run on an a29k. That would
649depend on the development environment used to build these tools.
650
651If you are still following along, then you have two a29k development
652environments, the native development environment that runs on a29k, and
653the simple cross that runs on your sun4. If you use the a29k native
654development environment on the a29k, you will be doing the same thing we
655did a while back, namely building a simple cross from a29k to sun3.
656Let's pretend that instead, you use gcc-a29k, the simple cross
657development environment that runs on sun4 but produces programs for
658a29k.
659
660The resulting development environment will run on a29k because that's
661what gcc-a29k builds, a29k programs. This development environment will
662produce programs for a sun3 because that is how it was configured. This
663means that the resulting development environment is a simple cross.
664
90f66196 665@cindex Canadian Cross
7d283cc1
RP
666@cindex Three party cross
667There really isn't a common name for this process because very few
668development environments are capable of being configured this
669extensively. For the sake of discussion, let's call this process a
90f66196
RP
670@emph{Canadian cross}. It's a three party cross, Canada has a three
671party system, hence Canadian Cross.
7d283cc1
RP
672
673@node Final Notes, Index, A Walk Through, top
674@chapter Final Notes
675
676By @emph{configures}, I mean that links, Makefile, .gdbinit, and
677config.status are built. Configuration is always done from the source
678directory.
679
680@table @code
681
682@item ./configure @var{name}
683configures this directory, perhaps recursively, for a single host+target
684pair where the host and target are both @var{name}. If a previous
685configuration existed, it will be overwritten.
686
687@item ./configure @var{hostname} -target=@var{targetname}
688configures this directory, perhaps recursively, for a single host+target
689pair where the host is @var{hostname} and target is @var{targetname}.
690If a previous configuration existed, it will be overwritten.
691
7d283cc1
RP
692@end table
693
694@menu
695* Hacking Configurations:: Hacking Configurations
696@end menu
697
698@node Hacking Configurations, , Final Notes, Final Notes
699@section Hacking Configurations
700
701The configure scripts essentially do three things, create subdirectories
702if appropriate, build a @file{Makefile}, and create links to files, all
703based on and tailored to, a specific host+target pair. The scripts also
704create a @file{.gdbinit} if appropriate but this is not tailored.
705
706The Makefile is created by prepending some variable definitions to a
707Makefile template called @file{Makefile.in} and then inserting host and
708target specific Makefile fragments. The variables are set based on the
709chosen host+target pair and build style, that is, if you use
787c6bfe 710@code{-srcdir} or not. The host and target specific Makefile may or may
7d283cc1
RP
711not exist.
712
713@itemize @bullet
714
715@item
716Makefiles can be edited directly, but those changes will eventually be
717lost. Changes intended to be permanent for a specific host should be
718made to the host specific Makefile fragment. This should be in
719@file{./config/mh-@var{host}} if it exists. Changes intended to be
720permanent for a specific target should be made to the target specific
721Makefile fragment. This should be in @file{./config/mt-@var{target}} if
722it exists. Changes intended to be permanent for the directory should be
723made in @file{Makefile.in}. To propogate changes to any of these,
724either use @code{make Makefile} or @code{./config.status} or
725re-configure.
726
727@end itemize
728
729@page
730@node Index, , Final Notes, top
731@appendix Index
732
733@printindex cp
734
735@contents
736@bye
737
738@c Local Variables:
739@c fill-column: 72
740@c End:
This page took 0.075132 seconds and 4 git commands to generate.