2b524fa8d3867dd29ffd108c2d4bf7c472e57fe9
[deliverable/binutils-gdb.git] / configure.texi
1 \input texinfo @c -*-para-*-
2 @c %**start of header
3 @setfilename configure.info
4 @settitle Cygnus Configure
5 @c %**end of header
6 @synindex ky cp
7 @tex
8 \def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
9 \xdef\manvers{\$Revision$} % For use in headers, footers too
10 @end tex
11 @setchapternewpage off
12
13 @ifinfo
14 This document attempts to describe the Cygnus Support version of
15 @code{configure}.
16
17 Copyright (C) 1991 Cygnus Support
18 Permission is granted to make and distribute verbatim copies of
19 this manual provided the copyright notice and this permission notice
20 are preserved on all copies.
21
22 @ignore
23 Permission is granted to process this file through TeX and print the
24 results, provided the printed document carries copying permission
25 notice identical to this one except for the removal of this paragraph
26 (this paragraph not being relevant to the printed manual).
27
28 @end ignore
29 Permission is granted to copy and distribute modified versions of this
30 manual under the conditions for verbatim copying, provided that the entire
31 resulting derived work is distributed under the terms of a permission
32 notice identical to this one.
33
34 Permission is granted to copy and distribute translations of this manual
35 into another language, under the above conditions for modified versions,
36 except that this permission notice may be stated in a translation approved
37 by Cygnus Support.
38 @end ifinfo
39
40 @titlepage
41 @sp 10
42 @title{Cygnus Configure}
43 @subtitle @manvers, for Cygnus Configure version 1.84
44 @author{K. Richard Pixley, @code{rich@@cygnus.com}}
45 @author{Cygnus Support}
46 @page
47
48 @vskip 0pt plus 1filll
49 Copyright @copyright{} 1991 Cygnus Support
50
51 Permission is granted to make and distribute verbatim copies of
52 this manual provided the copyright notice and this permission notice
53 are preserved on all copies.
54
55 Permission is granted to copy and distribute modified versions of this
56 manual under the conditions for verbatim copying, provided that the entire
57 resulting derived work is distributed under the terms of a permission
58 notice identical to this one.
59
60 Permission is granted to copy and distribute translations of this manual
61 into another language, under the above conditions for modified versions,
62 except that this permission notice may be stated in a translation approved
63 by Cygnus Support.
64 @end titlepage
65
66 @ifinfo
67 @format
68 START-INFO-DIR-ENTRY
69 * configure: (configure.info). Cygnus configure.
70 END-INFO-DIR-ENTRY
71 @end format
72
73 @node top, What Configure Does, (dir), (dir)
74 @top top
75
76 This file documents the configuration system used and distributed by
77 Cygnus Support.
78
79 NOTE: support for a Cygnus experimental option, @code{-subdirs} is at
80 least temporarily suspended. Most of the code is still in configure but
81 the option is disabled. This document describes that feature, but those
82 parts are prominently marked with NOTE's like this one. FIXME-soon
83
84 @menu
85 * What Configure Does:: What Configure Does
86 * Invoking:: Invoking
87 * Using Configure:: Using Configure
88 * Porting:: Porting with Configure
89 * Reference:: Gory details described
90 * Known Bugs:: Known Bugs
91 * Variables Index:: Variable Index
92 * Concept Index:: Concept Index
93
94 @end menu
95
96 @end ifinfo
97
98 @iftex
99 @unnumbered Preface
100 NOTE: support for a Cygnus experimental option, @code{-subdirs} is at
101 least temporarily suspended. Most of the code is still in configure but
102 the option is disabled. This document describes that feature, but those
103 parts are prominently marked with NOTE's like this one. FIXME-soon
104 @end iftex
105
106 @node What Configure Does, Invoking, top, top
107 @chapter What Configure Does
108
109 @code{configure} prepares source directories for building working
110 programs. A program cannot be built until its source has been
111 configured. When configure runs, it does the following things for each source
112 directory for each host and target combination.
113 @*
114 NOTE: support for multiple hosts and targets is at least temporarily
115 suspended.
116
117 @table @emph
118 @item Create build directories
119 (see @ref{Build Directories}). When you run @code{configure} with the
120 @code{-srcdir=} option, it uses the current directory as build
121 directory, creating under it a directory tree that parallels the
122 directory structure under the source directory. (See @ref{Invoking}).
123
124 NOTE: support for @code{-subdirs} is at least temporarily suspended.
125 @*
126 When you run @code{configure} with the @code{-subdirs} option, it
127 creates a build subdirectory in each source directory.
128
129 If you use both @code{-subdirs} and @code{-srcdir=}, a tree that
130 parallels the source directory structure is created in the current
131 directory, and the subdirectories are created in this directory tree
132 rather than in the source directories.
133
134 @item Generate makefiles
135 A makefile template from the source directory, usually called
136 @file{Makefile.in}, is copied to an output file in the build directory.
137 The output file is usually named @file{Makefile}. @code{configure}
138 places definitions for a number of standard makefile
139 macros at the beginning of the output file. If @code{-prefix=} or
140 @code{-datadir=} were specified on the @code{configure} command line,
141 corresponding makefile variables are set accordingly. If host, target, or
142 site specific makefile fragments exist, these are inserted into the
143 output file. (See @ref{Makefiles, , , make, Makefiles}.)
144
145 @item Generate @file{.gdbinit}
146 If the source directory contains a @file{.gdbinit} file and the build
147 directory is not the same as the source directory, a @file{.gdbinit}
148 file is created in the build directory. (see @ref{Command Files, , ,
149 gdb, Command Files}.)
150 @c There doesn't seem to be anything else about this. Is the build-dir
151 @c .gdbinit identical with the source-dir one? If so should say "copy"
152 @c rather than "create" to make it clear.
153
154 @item Make symbolic links
155 Most directories have some symbolic links with generic names built
156 pointing to specific files in the source directory. If the system where
157 @code{configure} runs cannot support symbolic links, hard links are used
158 instead.
159
160 @item Miscellaneous
161 If the source directory has special needs, they are handled by shell
162 script fragments stored with the source. Usually there are no special
163 needs, but sometimes they involve changes to the output makefile.
164
165 @item Generate @file{config.status}
166 @code{configure} creates a shell script named @file{config.status} in
167 the build directory. This shell script, when run from the build
168 directory, will reconfigure the build directory (but not its
169 subdirectories). This is most often used to have a @code{Makefile} update
170 itself automatically if a new source directory is available.
171
172 @item Recursion
173 If the source directory has subdirectories that should also be
174 configured, @code{configure} is called for each.
175 @end table
176
177 @node Invoking, Using Configure, What Configure Does, top
178 @chapter Invoking
179
180 The usual way to invoke @code{configure} is as follows:
181 @example
182 configure @var{host}
183 @end example
184 This prepares the source to be compiled in a
185 @var{host} environment with programs and files to be installed in
186 @file{/usr/local}.
187
188 NOTE: support for multiple hosts is at least temporarily suspended.
189 FIXME-soon
190 @*
191 If more than one host is specified on the command line, then
192 configurations are created for each and @code{-subdirs} is assumed.
193
194 @code{configure} prepares the source as you specify by selecting and
195 using script and Makefile fragments prepared in advance, and stored with
196 the source. @code{configure}'s command line options also allow you to
197 specify other aspects of the source configuration:
198
199 @table @code
200 @item -datadir=@var{dir}
201 Configure the source to install host independent files in @var{dir}.
202
203 This option sets the @code{configure} variable @code{datadir}.
204 Generated Makefiles will have their @code{datadir} variables set to this
205 value. (See @ref{Install Details}.)
206
207 @item -gas
208 Configure to use the @sc{GNU} assembler.
209
210 @item -help
211 Display a quick summary of how to invoke @code{configure}.
212
213 @item -host=@var{host}
214 FIXME-soon: I don't think this option should be documented.
215 @c Then why does it exist? /Pesch 7jan92
216
217 @item -namesubdir=@var{name}
218 NOTE: support for this @code{-namesubdir=} is at least temporarily
219 suspended. FIXME-soon
220
221 Name any subdirectories created by the @code{-subdirs} option
222 @file{@var{name}}.
223
224 @emph{Warning:} Avoid using this option if you specify multiple hosts
225 simultaneously. There is no way to specify separate names for
226 subdirectories, when you configure for multiple hosts in a single
227 invocation of @code{configure}.
228
229 @item -nfp
230 @emph{No floating point} unit available on the target; configure to
231 avoid dependencies on hardware floating point.
232
233 @item -norecursion
234 Configure only this directory; ignore any subdirectories. This is used
235 by the executable shell script @file{config.status} to reconfigure the
236 current directory. (see @ref{config.status}).
237
238 @ignore
239 @c This is complicated enough without "no longer supported" entries.
240 @c Should really delete this, but for ease of discourse...
241 @item -objdir=@var{dir}
242 This option is no longer supported. Use @code{-srcdir=} instead.
243 @end ignore
244
245 @item -prefix=@var{dir}
246 Configure the source to install programs and files under directory
247 @file{@var{dir}}.
248
249 This option sets the @code{configure} variable @code{prefix}. Generated
250 Makefiles will have their @code{prefix} variables set to this value.
251 (See @ref{Install Details}.)
252
253 @item -recurring
254 @c Wouldn't it make more sense to call this "-quiet"? (FIXME).
255 This option is used internally by @code{configure} when recurring on
256 subdirectories. Its sole purpose is to suppress status output. You can
257 override this effect with the @code{-verbose} option.
258
259 @item -rm
260 @emph{Remove} the configuration specified by @var{host} and the other
261 command-line options, rather than creating it.
262
263 @item -site=@var{site}
264 Generate Makefiles using site specific Makefile fragments for
265 @var{site}. See also @ref{Sites}.
266
267 @item -srcdir=@var{_dir}
268 Build Makefiles to use the sources located in directory @file{@var{dir}}. The
269 build directory is assumed to be @file{.}.
270
271 @item -subdirs
272 NOTE: support for this @code{-subdirs} is at least temporary suspended.
273 FIXME-soon
274
275 Place configurations in subdirectories of each build directory.
276 @code{configure} builds a separate subdirectory for each host specified,
277 and names it @file{H-@var{host}}. If a configuration is not native,
278 (@var{host} is not @var{target}), then the subdirectory is named
279 @file{X-@var{host}-@var{target}} instead. You can also name a
280 subdirectory explicitly using the @samp{-namesubdir} option, but this is
281 effective only when you specify one configuration at a time.
282
283 @item -target=@var{target}
284 Requests that the sources be configured to target the @var{target}
285 machine. If no target is specified explicitly, the target is assumed
286 to be the same as the host.
287
288 NOTE: support for multiple targets is at least temporarily suspended.
289 FIXME-soon
290 @*
291 If multiple targets are specified, configurations for each
292 are created and @code{-subdirs} is assumed.
293
294 @item -tmpdir=@var{tmpdir}
295 Use the directory @var{tmpdir} for @code{configure}'s temporary files.
296 The default is the value of the environment variable TMPDIR, or
297 @file{/tmp} if the environment variable is not set.
298
299 @item -verbose
300 @itemx -v
301 Print status lines for each directory configured. Normally, only the
302 status lines for the initial working directory are printed.
303
304 @item -x
305 Use @sc{MIT} style @sc{X11} header files and libraries on the host, even
306 if they are not normally available.
307 @end table
308
309 @node Using Configure, Porting, Invoking, top
310 @chapter Using Configure
311
312 The choices and options available at configuration time
313 generally have valid defaults, but the defaults do not cover all cases.
314 The choices available include install locations, build directories,
315 host, target, and local conventions.
316
317 @menu
318 * Install Locations:: Where to install things once they are built
319 * Build Directories:: Where to build object files
320 * Host:: Telling @code{configure} what will source will
321 be built
322 * Target:: Telling @code{configure} what the source will
323 target
324 * Local Conventions:: Adding information about local conventions
325 @end menu
326
327 @node Install Locations, Build Directories, Using Configure, Using Configure
328 @section Install Locations
329 @cindex Where to install
330
331 Using the default configuration, @code{make install} creates a
332 single tree of files, some of which are programs. The location of this
333 tree is determined by the value of the variable @code{prefix}. The
334 default value of @code{prefix} is @file{/usr/local}. This is
335 often correct for native tools installed on only one host.
336
337 @menu
338 * prefix:: Changing the default install directory
339 * datadir:: How to separate host independent files
340 from host dependent files when
341 installing for multiple hosts
342 * Install Details:: Full descriptions of all installation
343 subdirectories
344 @end menu
345
346 @node prefix, datadir, Install Locations, Install Locations
347 @subsection Changing the default install directory
348 @cindex Changing the default install directory
349 @cindex Prefix directory
350
351 In the default configuration, all files are installed in subdirectories
352 of @file{/usr/local}. The location is determined by the value of
353 the @code{configure} variable @code{prefix}; in turn, this determines the
354 value of the Makefile variable of the same name (@code{prefix}).
355
356 You can also set the value of the Makefile variable @code{prefix}
357 explicitly each time you invoke @code{make} if you are so inclined; but
358 because many programs have this location compiled in, you must specify
359 the @code{prefix} value consistently on each invocation of @code{make},
360 or you will end up with a broken installation.
361
362 To make this easier, the value of the @code{configure} variable
363 @code{prefix} can be set on the command line to @code{configure}
364 using the option @code{-prefix=}.
365
366
367 @node datadir, Install Details, prefix, Install Locations
368 @subsection Installing for multiple hosts
369 @cindex Configuring for multiple hosts
370 @cindex Sharing host independent files
371 @cindex The @file{datadir} directory
372 @cindex Installing host independent files
373
374 By default, host independent files are installed in subdirectories of
375 @file{@var{prefix}/lib}. The location is determined by the value of the
376 @code{configure} variable @code{datadir}, which determines the value of
377 the Makefile variable @code{datadir}. This makes it simpler to install
378 for a single host, and simplifies changing the default location for the
379 install tree; but the default doesn't allow for multiple hosts to
380 effectively share host independent files.
381
382 To configure so that multiple hosts can share common files, use
383 something like:
384
385 @example
386 configure @var{host1} -prefix=/usr/gnu/H-@var{host1} -datadir=/usr/gnu/H-independent
387 make all info install install-info clean
388
389 configure @var{host2} -prefix=/usr/gnu/H-@var{host2} -datadir=/usr/gnu/H-independent
390 make all info install install-info
391 @end example
392
393 The first line configures the source for @var{host1} to place host
394 specific programs in subdirectories of @file{/usr/gnu/H-@var{host1}},
395 and host independent files in @file{/usr/gnu/H-independent}.
396
397 The second line builds and installs all programs for @var{host1},
398 including both host independent and host specific files.
399
400 The third line reconfigures the source for @var{host2} to place host
401 specific programs in subdirectories of @file{/usr/gnu/H-@var{host2}},
402 and host independent files (once again) in
403 @file{/usr/gnu/H-independent}.
404
405 The fourth line builds and installs all programs for @var{host2}. Host
406 specific files are installed in new directories, but the host
407 independent files are installed @emph{on top of} the host
408 independent files installed for @var{host1}. This results in a single
409 copy of the host independent files, suitable for use by both hosts.
410
411 NOTE: support for @code{-subdirs} and multiple hosts is at least
412 temporarily suspended. FIXME-soon
413 @*
414 Previously this was:
415
416 @example
417 configure @var{host1} @var{host2} -prefix=/usr/gnu
418 make all install
419 @end example
420
421 @node Install Details, , datadir, Install Locations
422 @subsection Full descriptions of all installation subdirectories
423
424 During any install, a number of standard directories are created. Their
425 names are determined by Makefile variables. Some of the
426 defaults for Makefile variables can be changed at configure time using
427 command line options to @code{configure}. For more information on the
428 standard directories or the Makefile variables, please refer to
429 @cite{standards.text}.
430
431 Note that @code{configure} does not create the directory @code{srcdir}
432 at any time. @code{srcdir} is not an installation directory.
433
434 You can override all makefile variables on the command line to
435 @code{make}. (See @ref{Overriding, Overriding Variables, Overriding
436 Variables, make, Make}.) If you do so, you will need to specify the
437 value precisely the same way for each invocation of @code{make}, or you
438 risk ending up with a broken installation. This is because many
439 programs have the locations of other programs or files compiled into
440 them. If you find yourself overriding any of the variables frequently,
441 you should consider site dependent Makefile fragments. See also
442 @ref{Sites}.
443
444 During @code{make install}, a number of standard directories are
445 created and populated. The following Makefile variables define them.
446 Those whose defaults are set by corresponding @code{configure} variables
447 are marked ``Makefile and configure''.
448
449 @vindex prefix
450 @defvr {Makefile and configure} prefix
451 The root of the installation tree. You can set
452 its Makefile default with the @code{-prefix=} command line option to
453 @code{configure}. (@ref{Invoking}.) The default value for
454 @code{prefix} is @file{/usr/local}.
455 @end defvr
456
457 @vindex bindir
458 @defvr Makefile bindir
459 A directory for binary programs that users can run.
460 The default value for @code{bindir} depends on @code{prefix};
461 @code{bindir} is normally changed only indirectly through @code{prefix}.
462 The default value for @code{bindir} is @file{$(prefix)/bin}.
463 @end defvr
464
465 @vindex datadir
466 @defvr {Makefile and configure} datadir
467 A directory for host independent files. You can specify the Makefile
468 default value by using the @code{-datadir=} option to @code{configure}.
469 (See also @ref{Invoking}.) The default value for @code{datadir} is
470 @file{$(prefix)/lib}.
471 @end defvr
472
473 @vindex libdir
474 @defvr Makefile libdir
475 A directory for libraries and support programs. The default value for
476 @code{libdir} depends on @code{prefix}; @code{libdir} is normally
477 changed only indirectly through @code{prefix}. The default value for
478 @code{libdir} is @file{$(prefix)/lib}.
479 @end defvr
480
481 @vindex mandir
482 @defvr Makefile mandir
483 A directory for @code{man} format documentation (``man pages''). The
484 default value for @code{mandir} depends on @code{prefix};
485 @code{mandir} is normally changed only indirectly through @code{prefix}.
486 The default value for @code{mandir} is @file{$(datadir)/man}.
487 @end defvr
488
489 @vindex man@var{N}dir
490 @defvr Makefile man@var{N}dir
491 There are eight variables named @code{man1dir}, @code{man2dir}, etc.
492 They name the specific directories for each man page section. For
493 example, @code{man1dir} holds @file{emacs.1} (the man page for the emacs
494 program), while @code{man5dir} holds @file{rcsfile.5} (the man page
495 describing the @code{rcs} data file format). The default value for any
496 of the @code{man@var{N}dir} variables depends indirectly on
497 @code{prefix}, and is normally changed only through @code{prefix}. The
498 default value for @code{man@var{N}dir} is
499 @file{$(mandir)/man@var{N}}.
500 @end defvr
501
502 @vindex manext
503 @defvr Makefile manext
504 @emph{Not supported by @code{configure}}. The @sc{gnu} coding standards
505 do not call for @code{man1ext}, @code{man2ext}, so the intended use for
506 @code{manext} is apparently not parallel to @code{mandir}. Its use is
507 not clear. (See also @ref{Makefile Extensions}.)
508 @end defvr
509
510 @vindex infodir
511 @defvr Makefile infodir
512 A directory for @emph{info} format documentation. The default value for
513 @code{infodir} depends indirectly on @code{prefix}; @code{infodir} is
514 normally changed only through @code{prefix}. The default value for
515 @code{infodir} is @file{$(datadir)/info}.
516 @end defvr
517
518 @vindex docdir
519 @defvr Makefile docdir
520 A directory for any documentation that is in a format other than those
521 used by @code{info} or @code{man}. The default value for @code{docdir}
522 depends indirectly on @code{prefix}; @code{docdir} is normally changed only
523 through @code{prefix}. The default value for @code{docdir}
524 is @file{$(datadir)/doc}. @emph{This variable is an extension to
525 the @sc{gnu} coding standards}. (See also @ref{Makefile Extensions}.)
526 @end defvr
527
528 @vindex includedir
529 @defvr Makefile includedir
530 A directory for the header files accompanying the libraries installed in
531 @code{libdir}. The default value for @code{includedir} depends on
532 @code{prefix}; @code{includedir} is normally changed only indirectly
533 through @code{prefix}. The default value for @code{includedir} is
534 @file{$(prefix)/include}.
535 @end defvr
536
537 @node Build Directories, Host, Install Locations, Using Configure
538 @section Build Directories
539 @cindex Build directories
540 @kindex objdir
541 @cindex Object directories
542 @kindex subdirs
543 @cindex Building for multiple hosts
544 @cindex Building for multiple targets
545
546 Normally, @code{configure} builds a @file{Makefile} and symbolic links
547 in the same directory as the source files. This is the typical
548 @sc{un*x} way to build programs, but it has limitations. For instance,
549 using this approach, you can only build for one host at a time.
550
551 We refer to the directories where @code{configure} builds a
552 Makefile as the @emph{build directories} or sometimes as
553 @emph{objdir} because these are the directories in which @code{make}
554 will build object files, among other things.
555
556 The default build directory is the same as the source directory.
557 You can use a different build directory with a sequence like the following:
558
559 @example
560 mkdir @var{builddir}
561 cd @var{builddir}
562 configure @var{host} -srcdir=@var{sourcedirectory}
563 @end example
564
565 @noindent
566 where @var{builddir} is the directory where you wish to build,
567 @var{host} is the host for which you want to build, and
568 @var{sourcedirectory} is the directory containing the source files.
569
570 If you were to do this twice with different values for @var{builddir}
571 and @var{host}, then you could @code{make} for both at the same time.
572
573 @quotation
574 @emph{NOTE:} The rest of this section describes the @code{-subdirs} feature for
575 which support is at least temporarily suspended. FIXME-soon.
576 @end quotation
577
578 Another way to specify the build directory is with the @samp{-subdirs}
579 option. For example:
580
581 @example
582 configure @var{host} -subdirs
583 @end example
584
585 Using this option, @code{configure} will create a subdirectory named
586 @file{H-@var{host}} to act as the build directory for each source
587 directory.
588
589 Since building for multiple hosts is so common, @code{configure}
590 recognizes this situation as special. For example:
591
592 @example
593 configure @var{host1} @var{host2}
594 @end example
595
596 is precisely the same as:
597
598 @example
599 configure @var{host1} -subdirs
600 configure @var{host2} -subdirs
601 @end example
602
603 That is, configuring for multiple hosts or multiple targets implies
604 @samp{-subdirs}.
605
606 When configuring for cross tools (the converse of native tools: when the
607 host is not the target), as in:
608
609 @example
610 configure @var{host} +target=@var{targ} -subdirs
611 @end example
612
613 @noindent
614 the subdirectories are named @file{X-@var{host}-@var{targ}}. This is
615 especially useful when configuring for multiple targets.
616
617 If you use both @samp{-subdirs} and @samp{-srcdir=}, a tree that
618 parallels the source directory structure is created in the current
619 directory, and the subdirectories are created in this directory
620 tree rather than in the source directories.
621
622 @emph{NOTE:} previously, @samp{-subdirs} built two-level subdirectories
623 as @file{./H-@var{host}/T-@var{target}}, created
624 @file{./H-@var{host}/Makefile} for building across all targets,
625 @file{./Makefile} for building across all hosts, and
626 @file{./config.status} and @file{./H-@var{host}/config.status} for
627 rebuilding these Makefiles.
628
629 @node Host, Target, Build Directories, Using Configure
630 @section Host
631
632 @quotation
633 @emph{NOTE:} support for multiple hosts is at least temporarily suspended.
634 FIXME-soon.
635 @end quotation
636
637 The arguments to @code{configure} are @emph{hosts}. By @emph{host} we
638 mean the environment in which the source will be compiled. This need
639 not necessarily be the same as the physical machine involved,
640 although it usually is.
641
642 For example, if some obscure machine running an operating system other
643 than @sc{un*x} had the @sc{gnu} @sc{posix} emulation libraries
644 available, it would be possible to configure most @sc{gnu} source for a
645 @sc{posix} system and build it on the obscure host.
646
647 For more on this topic, see @ref{Host Environments, , Host Environments,
648 cfg-paper, On Configuring Development Tools}.
649
650 @node Target, Local Conventions, Host, Using Configure
651 @section Target
652
653 For building native development tools, or most of the other @sc{gnu}
654 tools, you need not worry about the target. The @emph{target} of a
655 configuration defaults to the same as the @emph{host}.
656
657 For building cross development tools, please see @ref{Building
658 Development Environments, , Building Development Environments,
659 cfg-paper, On Configuring Development Tools}.
660
661 @node Local Conventions, , Target, Using Configure
662 @section Local Conventions
663
664 If you find that a tool does not get configured to your liking, or if
665 @code{configure}'s conventions differ from your local conventions, you
666 should probably consider site specific Makefile fragments. See also
667 @ref{Sites}.
668
669 These are probably not the right choice for options that can be set from
670 the @code{configure} command line or for differences that are host or
671 target dependent.
672
673 @node Porting, Reference, Using Configure, top
674 @chapter Porting with Configure
675 @cindex Porting
676
677 This section explains how to add programs, host and target configuration
678 names, and site-specific information to Cygnus configure.
679
680 @menu
681 * Programs:: Adding configure to new programs
682 * Hosts and Targets:: Adding hosts and targets
683 * Sites:: Adding site info
684 @end menu
685
686
687 @node Programs, Hosts and Targets, Porting, Porting
688 @section Adding Configure To New Programs
689
690 If you are writing a new program, you probably shouldn't worry about
691 porting issues or configure until it is running reasonably on some host.
692 Then refer back to this section.
693
694 If the program in question currently has a configure script that meets
695 the criteria set out by @cite{standards.text}, please do not add Cygnus
696 configure. It should be possible to add this program without change to
697 a Cygnus configure style source tree.
698
699 If the program is not target dependent, please consider using
700 @code{autoconf} instead of Cygnus configure. @code{autoconf} will
701 be available soon from the @sc{fsf}.
702
703 To add Cygnus configure to an existing program, do the following:
704
705 @table @asis
706 @item Make sure the Makefile conforms to @sc{gnu} standard
707 The coding standard for @sc{gnu} Makefiles is described in
708 @cite{standards.text}.
709
710 @item Add Cygnus extensions to the Makefile
711 These are described in @ref{Makefile Extensions}.
712
713 @item Move host support from Makefile to fragments
714 This usually involves finding sections of the Makefile that say things
715 like ``uncomment these lines for host foo'' and moving them to a new
716 file called @file{./config/mh-foo}. For more information, see @ref{Hosts
717 and Targets}.
718
719 @item Choose defaults
720 If the program has compile time options that determine the way the
721 program should behave, chose reasonable defaults and make these Makefile
722 variables. Be sure the variables are assigned their default values
723 before the @code{####} line so that site specific Makefile fragments can
724 override them (@pxref{Makefile Extensions,,Extensions to the @sc{gnu}
725 coding standards}).
726
727 @item Locate configuration files
728 If there is configuration information in header files or source files,
729 separate it in such a way that the files have a generic name. Then move
730 the specific instances of those files into the @file{./config}
731 directory.
732
733 @item Separate host and target information
734 Some programs already have this information separated. If yours does
735 not, you will need to separate these two kinds of configuration
736 information. @dfn{Host specific} information is the information needed to
737 compile the program. @dfn{Target specific} information is information on the
738 format of data files that the program will read or write. This
739 information should live in separate files in the @file{./config}
740 directory with names that reflect the configuration for which they are
741 intended.
742
743 At this point you might skip this step and simply move on. If you do,
744 you should end up with a program that can be configured only to build
745 native tools, that is, tools for which the host system is also the
746 target system. Later, you could attempt to build a cross tool and
747 separate out the target specific information by figuring out what went
748 wrong. This is often simpler than combing through all of the source
749 code.
750
751 @item Write @code{configure.in}
752 Usually this involves writing shell script fragments to map from
753 canonical configuration names into the names of the configuration files.
754 These files will then be linked at configure time from the specific
755 instances of those files in @file{./config} to file in the build
756 directory with more generic names. (see also @ref{Build Directories}).
757 The format of configure.in is described in @ref{configure.in}.
758
759 @item Rename @file{Makefile} to @file{Makefile.in}
760 @end table
761
762 At this point you should have a program that can be configured using
763 Cygnus @code{configure}.
764
765 @node Hosts and Targets, Sites, Programs, Porting
766 @section Adding hosts and targets
767
768 To add a host or target to a program that already uses Cygnus
769 configure, do the following.
770
771 @itemize @bullet
772
773 @item
774 Make sure the new configuration name is represented in
775 @file{config.sub}. If not, add it. For more details, see the comments
776 in the shell script @file{config.sub}.
777
778 @item
779 If you are adding a host configuration, look in @file{configure.in}, in
780 the per-host section. Make sure that your configuration name is
781 represented in the mapping from host configuration names to
782 configuration files. If not, add it. Also see @ref{configure.in}.
783
784 @item
785 If you are adding a target configuration, look in @file{configure.in},
786 in the per-target section. Make sure that your configuration name is
787 represented in the mapping from target configuration names to
788 configuration files. If not, add it. Also see @ref{configure.in}.
789
790 @item
791 Look in @file{configure.in} for the variables @samp{files},
792 @samp{links}, @samp{host_makefile_frag}, and
793 @samp{target_makefile_frag}. The values assigned to these variables are
794 the names of the configuration files, relative to @code{srcdir} that the
795 program uses. Make sure that copies of the files exist for your host.
796 If not, create them. See also @ref{Configure Variables}.
797 @end itemize
798
799 This should be enough to configure for a new host or target
800 configuration name. Getting the program to compile and run properly
801 remains the hard work of the port.
802
803 @node Sites, , Hosts and Targets, Porting
804 @section Adding site info
805
806 If some of the Makefile defaults are not right for your site, you can
807 build site specific Makefile fragments. To do this, do the following.
808
809 @itemize @bullet
810
811 @item
812 Choose a name for your site. It must be less than eleven characters for
813 now.
814
815 @item
816 If the program source does not have a @file{./config} directory, create it.
817
818 @item
819 Create a file called @file{./config/ms-@var{site}} where @var{site} is
820 the name of your site. In it, set whatever Makefile variables you need
821 to override to match your site's conventions.
822
823 @item
824 Configure the program with:
825
826 @example
827 configure @dots{} +site=@var{site}
828 @end example
829
830 @end itemize
831
832 @node Reference, Known Bugs, Porting, top
833 @chapter Gory details described
834
835 @cindex Backends
836 Here we describe the backend support.
837
838 @menu
839 * Makefile Extensions:: Extensions to the @sc{gnu} coding standards
840 * configure.in:: The format of the configure.in file
841 * config.status:: config.status
842 * Makefile Fragments:: Makefile Fragments
843 @end menu
844
845 @node Makefile Extensions, configure.in, Reference, Reference
846 @section Extensions to the @sc{gnu} coding standards
847
848 @cindex Makefile extensions
849 @cindex Cygnus extensions
850
851 The following additions to the @sc{gnu} coding standards are required
852 for Cygnus configure to work properly.
853
854 @itemize @bullet
855 @item
856 The Makefile must contain exactly one line starting with @code{####}.
857 This line should follow any default macro definitions but precede any
858 rules. Host, target, and site specific Makefile fragments will be
859 inserted immediately after this line. If the line is missing, the
860 fragments will not be inserted.
861 @end itemize
862
863 Cygnus adds the following targets to our Makefiles. Their existence is
864 not required for Cygnus configure, but they are documented here for
865 completeness.
866
867 @table @code
868 @kindex info
869 @item info
870 Build all info files from texinfo source.
871
872 @kindex install-info
873 @item install-info
874 Install all info files.
875
876 @kindex clean-info
877 @item clean-info
878 Remove all info files and any intermediate files that can be generated
879 from texinfo source.
880
881 @kindex stage1
882 @item stage1
883 @kindex stage2
884 @itemx stage2
885 @kindex stage3
886 @itemx stage3
887 @kindex stage4
888 @itemx stage4
889 @kindex de-stage1
890 @itemx de-stage1
891 @kindex de-stage2
892 @itemx de-stage2
893 @kindex de-stage3
894 @itemx de-stage3
895 @kindex de-stage4
896 @itemx de-stage4
897 @kindex bootstrap
898 @itemx bootstrap
899 @kindex comparison
900 @itemx comparison
901 @kindex Makefile
902 @itemx Makefile
903 These targets are in transition and may be removed shortly.
904 @end table
905
906 In addition, the following Makefile targets have revised semantics:
907
908 @table @code
909 @kindex install
910 @item install
911 Should @emph{not} depend on the target @code{all}. If the program is
912 not already built, @code{make install} should fail. This allows you
913 to install programs even when @code{make} would otherwise determine
914 them to be out of date. This can happen when the result of a @code{make
915 all} is transported via tape to another machine for installation as
916 well as in a number of other cases.
917
918 @kindex clean
919 @item clean
920 Should remove any file that can be regenerated by the Makefile,
921 excepting only the Makefile itself, and any links created by configure.
922 That is, @code{make all clean} should return all directories to their
923 original condition. If this is not done, then:
924
925 @example
926 configure @var{host1} ; make all clean ; configure @var{host2} ; make all
927 @end example
928
929 @noindent
930 will fail because of intermediate files intended for @var{host1}.
931 @end table
932
933 Cygnus adds the following macros to all @file{Makefile.in} files, but
934 you are not required to use them to run Cygnus configure.
935
936 @table @code
937 @kindex docdir
938 @item docdir
939 The directory in which to install any documentation that is not either a
940 man page or an info file. For man pages, see mandir, for info, see
941 infodir.
942
943 @kindex includedir
944 @item includedir
945 The directory in which to install any headers files that should be made
946 available to users. This is distinct from the @code{gcc} include
947 directory which is intended for @code{gcc} only. Files in
948 @code{includedir} may be used by @code{cc} as well.
949 @end table
950
951 In addition, the following macros have revised semantics. Most of them
952 describe installation directories; see also @ref{Install Details,,Full
953 description of all installation subdirectories}.
954
955 @table @code
956
957 @kindex manext
958 @item manext
959 is not used. The intended usage is not clear. For example, if you have a
960 @file{foo.man} and a @file{bar.man}, and @file{foo.man} is destined for
961 @file{/usr/local/lib/man/man1/foo.1} while @file{bar.man} is destined
962 for @file{/usr/local/lib/man/man5/bar.5}, then what is the desired value
963 of @code{manext}?
964
965 @kindex datadir
966 @item datadir
967 is used for @emph{all} host independent files. This makes it possible
968 to share host independent files across multiple hosts without resorting
969 to symbolic links or to multiple mount points. This also makes it possible
970 build an install tree that contains multiple host binaries, write
971 the binaries to tape, and extract any of the hosts without extracting
972 the others.
973
974 @kindex mandir
975 @item mandir
976 The default path for @code{mandir} depends on @code{datadir}, since man
977 pages are host independent.
978
979 @kindex infodir
980 @item infodir
981 The default path for @code{infodir} depends on @code{datadir}, since
982 info files are host independent.
983
984 @kindex BISON
985 @item BISON
986 is assumed to have a @code{yacc} calling convention. To use
987 @code{bison}, use @code{BISON=bison -y}.
988 @end table
989
990 Cygnus Makefiles also conform to one additional restriction:
991
992 @itemize @bullet
993 @item
994 When libraries are installed, the line containing the call to
995 @code{INSTALL_DATA} should always be followed by a line containing a
996 call to @code{RANLIB} on the installed library. This is to accomodate
997 systems that use @code{ranlib}. Systems that do not use @code{ranlib}
998 can set @code{RANLIB} to @code{echo} in a host specific Makefile
999 fragment.
1000 @end itemize
1001
1002 @node configure.in, config.status, Makefile Extensions, Reference
1003 @section The format of the @file{configure.in} file
1004 @kindex configure.in
1005
1006 A @file{configure.in} file for Cygnus configure consists of a
1007 @dfn{per-invocation} section, followed by a @dfn{per-host} section,
1008 followed by a @dfn{per-target} section, optionally followed by a
1009 @dfn{post-target} section. Each section is a shell script fragment sourced by
1010 configure at the appropriate time. The interface between configure and
1011 the shell fragments is through a set of shell variables. All sections
1012 are sourced in the build directory.
1013
1014 @cindex Per-invocation section
1015 The beginning of the @file{configure.in} file begins the per-invocation
1016 section.
1017
1018 @cindex Per-host section
1019 A line beginning with @code{# Per-host:} begins the per-host section.
1020
1021 @cindex Per-target section
1022 A line beginning with @code{# Per-target:} begins the per-target
1023 section.
1024
1025 @cindex Post-target section
1026 If it exists, the post-target section begins with @code{# Per-target:}.
1027
1028 @menu
1029 * Minimal:: A minimal configure.in
1030 * Configure Variables:: Variables available to configure.in
1031 * Declarations:: For each invocation
1032 * Per-host:: For each host
1033 * Per-target:: For each target
1034 * Post-target:: After each target
1035 * Example:: An example configure.in
1036 @end menu
1037
1038 @node Minimal, Configure Variables, configure.in, configure.in
1039 @subsection A minimal @file{configure.in}
1040
1041 @cindex Minimal @file{configure.in} example
1042 A minimal @file{configure.in} consists of four lines.
1043
1044 @example
1045 srctrigger=foo.c
1046 srcname="source for the foo program"
1047 # Per-host:
1048 # Per-target:
1049 @end example
1050
1051 The @samp{Per-host} and @samp{Per-target} lines divide the file into the
1052 three required sections. The @samp{srctrigger} line names a file.
1053 @code{configure} checks to see that this file exists in the source
1054 directory before configuring. If the @samp{srctrigger} file does not
1055 exist, @code{configure} uses the value of @samp{srcname} to print an
1056 error message about not finding the source.
1057
1058 This particular example uses no links, and only the default host,
1059 target, and site specific Makefile fragments if they exist.
1060
1061 @node Configure Variables, Declarations, Minimal, configure.in
1062 @subsection Variables available to configure.in
1063
1064 @cindex @file{configure.in} interface
1065
1066 The following variables pass information between the standard parts of
1067 @code{configure} and the shell-script fragments in @file{configure.in}:
1068
1069 @defvar{srctrigger}
1070 Contains the name of a source file that is expected to live in the
1071 source directory. You must usually set this in the per-invocation
1072 section of @file{configure.in}. Configure tests to see that this file
1073 exists. If the file does not exist, configure prints an error message.
1074 This is used as a sanity check that configure.in matches the source
1075 directory.
1076 @end defvar
1077
1078 @defvar{srcname}
1079 Contains the name of the source collection contained in the source
1080 directory. You must usually set this in the per-invocation section of
1081 @file{configure.in}. If the file named in @code{srctrigger} does not
1082 exist, configure uses the value of this variable when it prints the
1083 error message.
1084 @end defvar
1085
1086 @defvar{configdirs}
1087 Contains the names of any subdirectories where @code{configure} should
1088 recur. You must usually set this in the per-invocation section of
1089 @file{configure.in}. If @file{Makefile.in} contains a line starting
1090 with @code{SUBDIRS =}, then it will be replaced with an assignment to
1091 @code{SUBDIRS} using the value of @code{configdirs}. This can be used
1092 to determine which directories to configure and build depending on the
1093 host and target configurations.
1094 @c Most other matching makefile/config vars use the same name. Why not
1095 @c this? (FIXME).
1096 @end defvar
1097
1098 @defvar{target_dependent}
1099 NOTE: support for multiple targets is currently suspended.
1100 @*
1101 If this variable is not empty and @code{-subdirs} is in effect then
1102 configure will create separate build directories for each target. This
1103 is usually set in the declarations section of @file{configure.in}. The
1104 default is to assume that a directory is target independent, and to create
1105 only one real directory with symlinks from the other names. This means that
1106 a target independent directory will be built exactly once regardless of
1107 how many targets are being built.
1108 @end defvar
1109
1110 @defvar{host}
1111 Contains the name that the user entered for the host. Since many things
1112 that the user could enter would map to the same output from
1113 @code{config.sub}, this variable is innappropriate to use for picking
1114 available configurations. For that, use @code{host_cpu},
1115 @code{host_vendor}, and/or @code{host_os}. This variable is useful,
1116 however, for error messages.
1117 @end defvar
1118
1119 @defvar{host_cpu}
1120 Contains the first element of the canonical triple representing the host
1121 as returned by @file{config.sub}. This is occasionally used to
1122 distinguish between minor variations of a particular vendor's operating
1123 system and sometimes to determine variations in binary format between
1124 the host and the target.
1125 @end defvar
1126
1127 @defvar{host_vendor}
1128 Contains the second element of the canonical triple representing the
1129 host as returned by @file{config.sub}. This is usually used to
1130 distinguish betwen the numerous variations between @emph{common}
1131 operating systems.
1132 @c "@emph{common} OS" doesn't convey much to me. Is this meant to cover
1133 @c cases like Unix, widespread but with many variations?
1134 @end defvar
1135
1136 @defvar{host_os}
1137 Contains the the third element of the canonical triple representing the
1138 host as returned by @file{config.sub}.
1139 @end defvar
1140
1141 @defvar{target}
1142 Contains the name that the user entered for the target. Since
1143 many things that the user could enter would map to the same canonical
1144 triple, this variable is innappropriate to use for picking available
1145 configurations. For that, use @code{target_cpu}, @code{target_vendor},
1146 and/or @code{target_os}. This variable is useful, however, for error
1147 messages.
1148 @end defvar
1149
1150 @defvar{target_cpu}
1151 Contains the first element of the canonical triple representing the
1152 target as returned by @file{config.sub}. This is used heavily by
1153 programs involved in building programs, like the compiler, assembler,
1154 linker, etc. Most programs will not need the @code{target} variables at
1155 all, but this one could conceivably be used to build a program, for
1156 instance, that operated on binary data files whose byte order or
1157 alignment differ from the system where the program is running.
1158 @end defvar
1159
1160 @defvar{target_vendor}
1161 Contains the second element of the canonical triple representing the
1162 target as returned by @file{config.sub}. This is usually used to
1163 distinguish betwen the numerous variations between @emph{common}
1164 operating systems or object file formats. Sometimes it is used to
1165 switch between different flavors of user interfaces.
1166 @c above query re "@emph{common} OS" applies here too
1167 @end defvar
1168
1169 @defvar{target_os}
1170 Contains the the third element of the canonical triple representing the
1171 target as returned by @file{config.sub}. This variable is used by
1172 development tools to distinguish between subtle variations in object
1173 file formats that some vendors use across operating system releases. It
1174 might also be use to decide which libraries to build or what user
1175 interface the tool should provide.
1176 @end defvar
1177
1178 @defvar{nfp}
1179 Is set to @code{true} if the user invoked configure with the @code{-nfp}
1180 command line option, otherwise it is empty. This is a request to target
1181 machines with @emph{no floating point} unit, even if the targets
1182 ordinarily have floating point units available. This option has no
1183 negation.
1184 @end defvar
1185
1186 @defvar{gas}
1187 Is set to @code{true} if the user invoked configure with the @code{-gas}
1188 command line option, otherwise it is empty. This is a request to assume
1189 that all target machines have @sc{gas} available even if they ordinarily do
1190 not. The converse option @samp{-no-gas} is not available.
1191 @end defvar
1192
1193 @defvar{x}
1194 Is set to @code{true} if the user invoked configure with the @code{-x}
1195 command line option, otherwise it is empty. This is a request to assume
1196 that @sc{mit x11} compatible headers files and libraries are available
1197 on all hosts, regardless of what is normally available on them.
1198 @end defvar
1199
1200 @defvar{srcdir}
1201 NOTE: support for @code{-subdirs} is at least temporarily suspended.
1202 @*
1203 Is set to the name of the directory containing the source for this
1204 program. This will be different from @file{.} if the user has specified
1205 either the @code{-srcdir=} or the @code{-subdirs} options. Note that
1206 @code{srcdir} is not necessarily an absolute path.
1207 @end defvar
1208
1209 @defvar{host_makefile_frag}
1210 If set by @file{configure.in}, this variable should be the name a file,
1211 relative to @code{srcdir} to be included in the resulting Makefile. If
1212 the named file does not exist, @code{configure} will print a warning
1213 message. This variable is not set by @code{configure}.
1214 @end defvar
1215
1216 @defvar{target_makefile_frag}
1217 If set by @file{configure.in}, this variable should be the name of a
1218 file, relative to @code{srcdir}, to be included in the resulting
1219 Makefile. If the named file does not exist, @code{configure} will print
1220 a warning message. This variable is not set by @code{configure}.
1221 @end defvar
1222
1223 @defvar{site_makefile_frag}
1224 Is set to a file name representing to the default Makefile fragment for
1225 this host. It may be set in @file{configure.in} to override this
1226 default. Normally @code{site_makefile_frag} is empty, but will have a
1227 value if the user specified @code{-site=} on the command line. It is
1228 probably not a good idea to override this variable from
1229 @file{configure.in}, since that may defeat the @code{configure} user's
1230 intentions.
1231 @end defvar
1232
1233 @defvar{Makefile}
1234 Is set to the name of the generated @file{Makefile}. Normally this
1235 value is precisely @file{Makefile} but some programs may want something
1236 else.
1237 @end defvar
1238
1239 @defvar{removing}
1240 Is normally empty but will be set to some non-empty value if the user
1241 specified @code{-rm} on the command line. That is, if @code{removing}
1242 is non-empty, then configure is @emph{removing} a configuration rather
1243 than creating one.
1244 @end defvar
1245
1246 @defvar{files}
1247 If this variable is non-empty following the @code{per-target:} section,
1248 then each word in its value will be the target of a symbolic link named
1249 in the corresponding word from the @code{links} variable.
1250 @end defvar
1251
1252 @defvar{links}
1253 If the @code{files} variable is non-empty following the
1254 @code{per-target:} section, then @code{configure} creates symbolic links
1255 with the first word of @code{links} pointing to the first word of
1256 @code{files}, the second word of @code{links} pointing to the second
1257 word of @code{files}, and so on.
1258 @end defvar
1259
1260 @node Declarations, Per-host, Configure Variables, configure.in
1261 @subsection For each invocation
1262
1263 @cindex Declarations section
1264
1265 @code{configure} sources the entire shell script fragment from the start
1266 of @file{configure.in} up to a line beginning with @samp{# Per-host:}
1267 immediately after parsing command line arguments. The variables
1268 @code{srctrigger} and @code{srcname} @emph{must} be set here.
1269
1270 You might also want to set the variables @code{configdirs} or
1271 @code{target_dependent} here.
1272 @*
1273 FIXME-soon. target_dependent isn't useful without multiple targets.
1274
1275 @node Per-host, Per-target, Declarations, configure.in
1276 @subsection For each host
1277 @cindex per-host section
1278 @cindex host shell-script fragment
1279
1280 The per-host section of @file{configure.in} starts with the line that begins
1281 with @samp{# Per-host:} and ends before a line beginning with
1282 @samp{# Per-target:}. @code{configure} sources the per-host section once for
1283 each host.
1284
1285 This section usually contains a big case statement using the variables
1286 @samp{host_cpu}, @samp{host_vendor}, and @samp{host_os} to determine
1287 appropriate values for @samp{host_makefile_frag} and @samp{files},
1288 although @samp{files} is not usually set here. Usually, it is set
1289 at the end of the per-target section after determining the names of the
1290 target specific configuration files.
1291
1292 @node Per-target, Post-target, Per-host, configure.in
1293 @subsection For each target
1294 @cindex per-target section
1295 @cindex target shell-script fragment
1296
1297 The per-target section of @file{configure.in} starts with the line that
1298 begins with @samp{# Per-target:} and ends before the line that begins
1299 with @samp{# Post-target:}, if there is such a line. Otherwise the
1300 per-target section extends to the end of the file. @code{configure} sources
1301 the per-target section once for each target before building any files,
1302 directories, or links.
1303
1304 This section usually contains a big case statement using the variables called
1305 @samp{target_cpu}, @samp{target_vendor}, and @samp{target_os} to determine
1306 appropriate values for @samp{target_makefile_frag} and @samp{files}.
1307 The last lines in the per-target section normally set the variables
1308 @code{files} and @code{links}.
1309
1310 @node Post-target, Example, Per-target, configure.in
1311 @subsection After each target
1312
1313 The post-target section is optional. If it exists, the post-target
1314 section starts with a line beginning with @code{# Post-target:} and
1315 extends to the end of the file. If it exists, @code{configure} sources this
1316 section once for each target after building all files, directories, or
1317 links.
1318
1319 This section is seldom needed, but you can use it to edit the Makefile
1320 generated by @code{configure}.
1321
1322 @node Example, , Post-target, configure.in
1323 @subsection An example @file{configure.in}
1324 @cindex example @file{configure.in}
1325 @cindex sample @file{configure.in}
1326 @cindex Bison @file{configure.in}
1327
1328 Here is a small example of a @file{configure.in} file.
1329
1330 @example
1331 # This file is a collection of shell script fragments used to tailor
1332 # a template configure script as appropriate for this directory.
1333 # For more information, see configure.texi.
1334
1335 configdirs=
1336 srctrigger=warshall.c
1337 srcname="bison"
1338
1339 # per-host:
1340 case "$@{host_os@}" in
1341 m88kbcs)
1342 host_makefile_frag=config/mh-delta88
1343 ;;
1344 esac
1345
1346 # per-target:
1347
1348 files="bison_in.hairy"
1349 links="bison.hairy"
1350
1351 # post-target:
1352 @end example
1353
1354 @node config.status, Makefile Fragments, configure.in, Reference
1355 @section @code{config.status}
1356
1357 @kindex config.status
1358
1359 The final step in configuring a directory is to create an executable
1360 shell script, @file{config.status}. The main purpose of this file
1361 is to allow the Makefile for the current directory to rebuild itself, if
1362 necessary. For this reason, @file{config.status} uses the
1363 @samp{-norecursion} option to @code{configure}, and is therefore
1364 probably inappropriate for reconfiguring a tree of source code.
1365
1366 @node Makefile Fragments, , config.status, Reference
1367 @section Makefile Fragments
1368
1369 @cindex Makefile fragments
1370
1371 Cygnus @code{configure} uses three types of Makefile fragments. In a
1372 generated Makefile they appear in the order target fragment, host
1373 fragment, and site fragment. This allows host fragments to override
1374 target fragments, and site fragments to override both.
1375
1376 Host specific Makefile fragments conventionally reside in the
1377 @file{./config} directory with names of the form
1378 @file{mh-@var{host}}. They are used for hosts that require
1379 odd options to the standard compiler and for compile time options based
1380 on the host configuration.
1381
1382 Target specific Makefile fragments conventionally reside in the
1383 @file{./config} directory with names of the form @file{mt-@var{target}}.
1384 They are used for target dependent compile time options.
1385
1386 Site specific Makefile fragments conventionally reside in the
1387 @file{./config} directory with names of the form @file{ms-@var{site}}.
1388 They are used to override host and target independent compile time
1389 options. Note that you can also overridde these options on the
1390 @code{make} invocation line.
1391
1392 @node Known Bugs, Variables Index, Reference, top
1393 @chapter Known Bugs
1394
1395 @cindex bugs
1396
1397 We know of the following bugs:
1398
1399 @itemize @bullet
1400
1401 @item
1402 There is no way to query about known hosts, known targets, or the
1403 porting or testing status of any configuration.
1404
1405 @item
1406 The negations to the options @code{-gas}, @code{-x}, and @code{-nfp} are
1407 not available.
1408
1409 @end itemize
1410
1411 @page
1412 @node Variables Index, Concept Index, Known Bugs, top
1413 @appendix Variable Index
1414
1415 @printindex vr
1416
1417 @page
1418 @node Concept Index, , Variables Index, top
1419 @appendix Concept Index
1420
1421 @printindex cp
1422 @contents
1423 @bye
1424
1425 @c Local Variables:
1426 @c fill-column: 79
1427 @c outline-regexp: "@chap"
1428 @c End:
1429 @c (setq outline-regexp "@chapt\\\|@unnum\\\|@setf\\\|@conte\\\|@sectio\\\|@subsect\\\|@itemize\\\|@defvar{")
This page took 0.081265 seconds and 3 git commands to generate.