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