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} | |
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. | |
d1cde16a RP |
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 | |
8f861f08 RP |
178 | @chapter Invoking |
179 | ||
180 | The usual way to invoke @code{configure} is as follows: | |
181 | @example | |
182 | configure @var{host} | |
183 | @end example | |
d1cde16a | 184 | This prepares the source to be compiled in a |
8f861f08 RP |
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. | |
ce947b9d | 189 | FIXME-soon |
d1cde16a | 190 | @* |
8f861f08 RP |
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 | ||
d1cde16a RP |
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: | |
8f861f08 | 198 | |
d1cde16a | 199 | @table @code |
8f861f08 | 200 | @item -datadir=@var{dir} |
d1cde16a | 201 | Configure the source to install host independent files in @var{dir}. |
8f861f08 RP |
202 | |
203 | This option sets the @code{configure} variable @code{datadir}. If | |
204 | @code{datadir} is not empty, generated Makefiles will have their | |
d1cde16a | 205 | @code{datadir} variables set to this value. (See @ref{Install Details}.) |
8f861f08 RP |
206 | |
207 | @item -gas | |
d1cde16a | 208 | Configure to use the @sc{GNU} assembler. |
8f861f08 RP |
209 | |
210 | @item -help | |
d1cde16a | 211 | Display a quick summary of how to invoke @code{configure}. |
8f861f08 RP |
212 | |
213 | @item -host=@var{host} | |
ce947b9d | 214 | FIXME-soon: I don't think this option should be documented. |
d1cde16a | 215 | @c Then why does it exist? /Pesch 7jan92 |
ce947b9d | 216 | |
d1cde16a RP |
217 | @item -namesubdir=@var{name} |
218 | NOTE: support for this @code{-namesubdir=} is at least temporarily | |
ce947b9d | 219 | suspended. FIXME-soon |
8f861f08 | 220 | |
d1cde16a RP |
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}. | |
8f861f08 | 228 | |
8f861f08 | 229 | @item -nfp |
d1cde16a RP |
230 | @emph{No floating point} unit available on the target; configure to |
231 | avoid dependencies on hardware floating point. | |
8f861f08 RP |
232 | |
233 | @item -norecursion | |
d1cde16a RP |
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}). | |
8f861f08 | 237 | |
d1cde16a RP |
238 | @ignore |
239 | @c This is complicated enough without "no longer supported" entries. | |
240 | @c Should really delete this, but for ease of discourse... | |
8f861f08 | 241 | @item -objdir=@var{dir} |
ce947b9d | 242 | This option is no longer supported. Use @code{-srcdir=} instead. |
d1cde16a | 243 | @end ignore |
8f861f08 RP |
244 | |
245 | @item -prefix=@var{dir} | |
d1cde16a RP |
246 | Configure the source to install programs and files under directory |
247 | @file{@var{dir}}. | |
8f861f08 RP |
248 | |
249 | This option sets the @code{configure} variable @code{prefix}. If | |
250 | @code{prefix} is not empty, generated Makefiles will have their | |
d1cde16a | 251 | @code{prefix} variables set to this value. (See @ref{Install Details}.) |
8f861f08 RP |
252 | |
253 | @item -recurring | |
f8f3c853 | 254 | @c Wouldn't it make more sense to call this "-quiet"? (FIXME). |
8f861f08 | 255 | This option is used internally by @code{configure} when recurring on |
d1cde16a RP |
256 | subdirectories. Its sole purpose is to suppress status output. You can |
257 | override this effect with the @code{-verbose} option. | |
8f861f08 RP |
258 | |
259 | @item -rm | |
d1cde16a RP |
260 | @emph{Remove} the configuration specified by @var{host} and the other |
261 | command-line options, rather than creating it. | |
8f861f08 RP |
262 | |
263 | @item -site=@var{site} | |
d1cde16a RP |
264 | Generate Makefiles using site specific Makefile fragments for |
265 | @var{site}. See also @ref{Sites}. | |
8f861f08 RP |
266 | |
267 | @item -srcdir=@var{_dir} | |
d1cde16a | 268 | Build Makefiles to use the sources located in directory @file{@var{dir}}. The |
8f861f08 RP |
269 | build directory is assumed to be @file{.}. |
270 | ||
d1cde16a | 271 | @item -subdirs |
ce947b9d RP |
272 | NOTE: support for this @code{-subdirs} is at least temporary suspended. |
273 | FIXME-soon | |
274 | ||
d1cde16a RP |
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. | |
8f861f08 RP |
282 | |
283 | @item -target=@var{target} | |
284 | Requests that the sources be configured to target the @var{target} | |
d1cde16a RP |
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. | |
8f861f08 | 293 | |
8f861f08 | 294 | @item -tmpdir=@var{tmpdir} |
d1cde16a | 295 | Use the directory @var{tmpdir} for @code{configure}'s temporary files. |
f8f3c853 RP |
296 | The default is the value of the environment variable TMPDIR, or |
297 | @file{/tmp} if the environment variable is not set. | |
8f861f08 RP |
298 | |
299 | @item -verbose | |
d1cde16a RP |
300 | @itemx -v |
301 | Print status lines for each directory configured. Normally, only the | |
302 | status lines for the initial working directory are printed. | |
8f861f08 RP |
303 | |
304 | @item -x | |
d1cde16a RP |
305 | Use @sc{MIT} style @sc{X11} header files and libraries on the host, even |
306 | if they are not normally available. | |
8f861f08 RP |
307 | @end table |
308 | ||
d1cde16a | 309 | @node Using Configure, Porting, Invoking, top |
8f861f08 RP |
310 | @chapter Using Configure |
311 | ||
d1cde16a RP |
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. | |
8f861f08 RP |
316 | |
317 | @menu | |
318 | * Install Locations:: Where to install things once they are built | |
319 | * Build Directories:: Where to build object files | |
ce947b9d RP |
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 | |
8f861f08 RP |
325 | @end menu |
326 | ||
ce947b9d | 327 | @node Install Locations, Build Directories, Using Configure, Using Configure |
8f861f08 | 328 | @section Install Locations |
8f861f08 RP |
329 | @cindex Where to install |
330 | ||
d1cde16a | 331 | Using the default configuration, @code{make install} creates a |
8f861f08 | 332 | single tree of files, some of which are programs. The location of this |
f3b7efd5 RP |
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 | |
d1cde16a | 335 | often correct for native tools installed on only one host. |
8f861f08 RP |
336 | |
337 | @menu | |
d1cde16a RP |
338 | * prefix:: Changing the default install directory |
339 | * datadir:: How to separate host independent files | |
8f861f08 RP |
340 | from host dependent files when |
341 | installing for multiple hosts | |
d1cde16a | 342 | * Install Details:: Full descriptions of all installation |
8f861f08 RP |
343 | subdirectories |
344 | @end menu | |
345 | ||
346 | @node prefix, datadir, Install Locations, Install Locations | |
347 | @subsection Changing the default install directory | |
8f861f08 | 348 | @cindex Changing the default install directory |
ce947b9d | 349 | @cindex Prefix directory |
8f861f08 RP |
350 | |
351 | In the default configuration, all files are installed in subdirectories | |
d1cde16a RP |
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}). | |
8f861f08 | 355 | |
f3b7efd5 | 356 | You can also set the value of the Makefile variable @code{prefix} |
d1cde16a | 357 | explicitly each time you invoke @code{make} if you are so inclined; but |
8f861f08 | 358 | because many programs have this location compiled in, you must specify |
d1cde16a | 359 | the @code{prefix} value consistently on each invocation of @code{make}, |
8f861f08 RP |
360 | or you will end up with a broken installation. |
361 | ||
362 | To make this easier, the value of the @code{configure} variable | |
f3b7efd5 | 363 | @code{prefix} can be set on the command line to @code{configure} |
d1cde16a | 364 | using the option @code{-prefix=}. |
8f861f08 RP |
365 | |
366 | ||
367 | @node datadir, Install Details, prefix, Install Locations | |
368 | @subsection Installing for multiple hosts | |
8f861f08 RP |
369 | @cindex Configuring for multiple hosts |
370 | @cindex Sharing host independent files | |
e59aa15a | 371 | @cindex The @file{datadir} directory |
8f861f08 RP |
372 | @cindex Installing host independent files |
373 | ||
d1cde16a RP |
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 | |
8f861f08 RP |
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 | |
d1cde16a | 388 | |
8f861f08 RP |
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 | ||
d1cde16a RP |
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}. | |
8f861f08 RP |
396 | |
397 | The second line builds and installs all programs for @var{host1}, | |
d1cde16a | 398 | including both host independent and host specific files. |
8f861f08 | 399 | |
d1cde16a RP |
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}. | |
8f861f08 RP |
404 | |
405 | The fourth line builds and installs all programs for @var{host2}. Host | |
d1cde16a RP |
406 | specific files are installed in new directories, but the host |
407 | independent files are installed @emph{on top of} the host | |
8f861f08 | 408 | independent files installed for @var{host1}. This results in a single |
d1cde16a | 409 | copy of the host independent files, suitable for use by both hosts. |
8f861f08 | 410 | |
87081339 RP |
411 | NOTE: support for @code{-subdirs} and multiple hosts is at least |
412 | temporarily suspended. FIXME-soon | |
d1cde16a | 413 | @* |
ce947b9d RP |
414 | Previously this was: |
415 | ||
416 | @example | |
417 | configure @var{host1} @var{host2} -prefix=/usr/gnu | |
f8f3c853 | 418 | make all install |
ce947b9d | 419 | @end example |
8f861f08 RP |
420 | |
421 | @node Install Details, , datadir, Install Locations | |
422 | @subsection Full descriptions of all installation subdirectories | |
423 | ||
d1cde16a RP |
424 | During any install, a number of standard directories are created. Their |
425 | names are determined by Makefile variables. Some of the | |
8f861f08 RP |
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 | ||
d1cde16a RP |
431 | Note that @code{configure} does not create the directory @code{srcdir} |
432 | at any time. @code{srcdir} is not an installation directory. | |
8f861f08 | 433 | |
d1cde16a RP |
434 | You can override all makefile variables on the command line to |
435 | @code{make}. (See @ref{Overriding, Overriding Variables, Overriding | |
8f861f08 | 436 | Variables, make, Make}.) If you do so, you will need to specify the |
d1cde16a | 437 | value precisely the same way for each invocation of @code{make}, or you |
8f861f08 RP |
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, | |
87081339 | 441 | you should consider site dependent Makefile fragments. See also |
d1cde16a | 442 | @ref{Sites}. |
8f861f08 | 443 | |
d1cde16a RP |
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''. | |
8f861f08 RP |
448 | |
449 | @vindex prefix | |
450 | @defvr {Makefile and configure} prefix | |
d1cde16a RP |
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}. | |
8f861f08 RP |
455 | @end defvr |
456 | ||
457 | @vindex bindir | |
458 | @defvr Makefile bindir | |
d1cde16a RP |
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}. | |
8f861f08 RP |
463 | @end defvr |
464 | ||
465 | @vindex datadir | |
466 | @defvr {Makefile and configure} datadir | |
d1cde16a RP |
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}. | |
8f861f08 RP |
471 | @end defvr |
472 | ||
473 | @vindex libdir | |
474 | @defvr Makefile libdir | |
d1cde16a RP |
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}. | |
8f861f08 RP |
479 | @end defvr |
480 | ||
481 | @vindex mandir | |
482 | @defvr Makefile mandir | |
d1cde16a RP |
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}. | |
8f861f08 RP |
487 | @end defvr |
488 | ||
489 | @vindex man@var{N}dir | |
490 | @defvr Makefile man@var{N}dir | |
d1cde16a RP |
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}}. | |
8f861f08 RP |
500 | @end defvr |
501 | ||
502 | @vindex manext | |
503 | @defvr Makefile manext | |
d1cde16a RP |
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}.) | |
8f861f08 RP |
508 | @end defvr |
509 | ||
510 | @vindex infodir | |
511 | @defvr Makefile infodir | |
d1cde16a RP |
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}. | |
8f861f08 RP |
516 | @end defvr |
517 | ||
518 | @vindex docdir | |
519 | @defvr Makefile docdir | |
d1cde16a RP |
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}.) | |
8f861f08 RP |
526 | @end defvr |
527 | ||
528 | @vindex includedir | |
529 | @defvr Makefile includedir | |
d1cde16a RP |
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}. | |
8f861f08 RP |
535 | @end defvr |
536 | ||
ce947b9d | 537 | @node Build Directories, Host, Install Locations, Using Configure |
8f861f08 | 538 | @section Build Directories |
ce947b9d | 539 | @cindex Build directories |
e59aa15a | 540 | @kindex objdir |
ce947b9d | 541 | @cindex Object directories |
e59aa15a | 542 | @kindex subdirs |
ce947b9d RP |
543 | @cindex Building for multiple hosts |
544 | @cindex Building for multiple targets | |
8f861f08 | 545 | |
87081339 | 546 | Normally, @code{configure} builds a @file{Makefile} and symbolic links |
ce947b9d | 547 | in the same directory as the source files. This is the typical |
d1cde16a | 548 | @sc{un*x} way to build programs, but it has limitations. For instance, |
ce947b9d | 549 | using this approach, you can only build for one host at a time. |
8f861f08 | 550 | |
d1cde16a RP |
551 | We refer to the directories where @code{configure} builds a |
552 | Makefile as the @emph{build directories} or sometimes as | |
ce947b9d RP |
553 | @emph{objdir} because these are the directories in which @code{make} |
554 | will build object files, among other things. | |
8f861f08 | 555 | |
ce947b9d | 556 | The default build directory is the same as the source directory. |
d1cde16a | 557 | You can use a different build directory with a sequence like the following: |
8f861f08 | 558 | |
ce947b9d RP |
559 | @example |
560 | mkdir @var{builddir} | |
561 | cd @var{builddir} | |
562 | configure @var{host} -srcdir=@var{sourcedirectory} | |
f3b7efd5 | 563 | @end example |
8f861f08 | 564 | |
d1cde16a RP |
565 | @noindent |
566 | where @var{builddir} is the directory where you wish to build, | |
ce947b9d RP |
567 | @var{host} is the host for which you want to build, and |
568 | @var{sourcedirectory} is the directory containing the source files. | |
8f861f08 | 569 | |
ce947b9d | 570 | If you were to do this twice with different values for @var{builddir} |
f3b7efd5 | 571 | and @var{host}, then you could @code{make} for both at the same time. |
8f861f08 | 572 | |
d1cde16a RP |
573 | @quotation |
574 | @emph{NOTE:} The rest of this section describes the @code{-subdirs} feature for | |
ce947b9d | 575 | which support is at least temporarily suspended. FIXME-soon. |
d1cde16a | 576 | @end quotation |
8f861f08 | 577 | |
d1cde16a | 578 | Another way to specify the build directory is with the @samp{-subdirs} |
ce947b9d | 579 | option. For example: |
8f861f08 | 580 | |
ce947b9d RP |
581 | @example |
582 | configure @var{host} -subdirs | |
583 | @end example | |
8f861f08 | 584 | |
ce947b9d RP |
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. | |
8f861f08 | 588 | |
ce947b9d RP |
589 | Since building for multiple hosts is so common, @code{configure} |
590 | recognizes this situation as special. For example: | |
8f861f08 | 591 | |
ce947b9d RP |
592 | @example |
593 | configure @var{host1} @var{host2} | |
594 | @end example | |
8f861f08 | 595 | |
ce947b9d | 596 | is precisely the same as: |
8f861f08 | 597 | |
ce947b9d RP |
598 | @example |
599 | configure @var{host1} -subdirs | |
600 | configure @var{host2} -subdirs | |
f3b7efd5 | 601 | @end example |
8f861f08 | 602 | |
d1cde16a RP |
603 | That is, configuring for multiple hosts or multiple targets implies |
604 | @samp{-subdirs}. | |
8f861f08 | 605 | |
d1cde16a RP |
606 | When configuring for cross tools (the converse of native tools: when the |
607 | host is not the target), as in: | |
8f861f08 | 608 | |
ce947b9d RP |
609 | @example |
610 | configure @var{host} +target=@var{targ} -subdirs | |
611 | @end example | |
8f861f08 | 612 | |
d1cde16a | 613 | @noindent |
ce947b9d RP |
614 | the subdirectories are named @file{X-@var{host}-@var{targ}}. This is |
615 | especially useful when configuring for multiple targets. | |
8f861f08 | 616 | |
d1cde16a | 617 | If you use both @samp{-subdirs} and @samp{-srcdir=}, a tree that |
ce947b9d | 618 | parallels the source directory structure is created in the current |
d1cde16a | 619 | directory, and the subdirectories are created in this directory |
ce947b9d | 620 | tree rather than in the source directories. |
8f861f08 | 621 | |
d1cde16a RP |
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. | |
8f861f08 | 628 | |
ce947b9d RP |
629 | @node Host, Target, Build Directories, Using Configure |
630 | @section Host | |
8f861f08 | 631 | |
d1cde16a RP |
632 | @quotation |
633 | @emph{NOTE:} support for multiple hosts is at least temporarily suspended. | |
ce947b9d | 634 | FIXME-soon. |
d1cde16a | 635 | @end quotation |
8f861f08 | 636 | |
ce947b9d RP |
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 | |
d1cde16a | 639 | not necessarily be the same as the physical machine involved, |
ce947b9d | 640 | although it usually is. |
8f861f08 | 641 | |
ce947b9d | 642 | For example, if some obscure machine running an operating system other |
d1cde16a | 643 | than @sc{un*x} had the @sc{gnu} @sc{posix} emulation libraries |
ce947b9d RP |
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. | |
8f861f08 | 646 | |
e59aa15a RP |
647 | For more on this topic, see @ref{Host Environments, , Host Environments, |
648 | cfg-paper, On Configuring Development Tools}. | |
8f861f08 | 649 | |
ce947b9d RP |
650 | @node Target, Local Conventions, Host, Using Configure |
651 | @section Target | |
8f861f08 | 652 | |
d1cde16a RP |
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}. | |
8f861f08 | 656 | |
d1cde16a | 657 | For building cross development tools, please see @ref{Building |
e59aa15a RP |
658 | Development Environments, , Building Development Environments, |
659 | cfg-paper, On Configuring Development Tools}. | |
8f861f08 | 660 | |
ce947b9d RP |
661 | @node Local Conventions, , Target, Using Configure |
662 | @section Local Conventions | |
8f861f08 | 663 | |
d1cde16a RP |
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 | |
87081339 | 666 | should probably consider site specific Makefile fragments. See also |
d1cde16a | 667 | @ref{Sites}. |
8f861f08 | 668 | |
ce947b9d RP |
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. | |
8f861f08 | 672 | |
d1cde16a | 673 | @node Porting, Reference, Using Configure, top |
ce947b9d | 674 | @chapter Porting with Configure |
f3b7efd5 | 675 | @cindex Porting |
d1cde16a RP |
676 | |
677 | This section explains how to add programs, host and target configuration | |
678 | names, and site-specific information to Cygnus configure. | |
8f861f08 RP |
679 | |
680 | @menu | |
87081339 RP |
681 | * Programs:: Adding configure to new programs |
682 | * Hosts and Targets:: Adding hosts and targets | |
683 | * Sites:: Adding site info | |
8f861f08 RP |
684 | @end menu |
685 | ||
8f861f08 | 686 | |
87081339 RP |
687 | @node Programs, Hosts and Targets, Porting, Porting |
688 | @section Adding Configure To New Programs | |
8f861f08 | 689 | |
f3b7efd5 RP |
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. | |
ce947b9d | 693 | |
f3b7efd5 | 694 | If the program in question currently has a configure script that meets |
d1cde16a | 695 | the criteria set out by @cite{standards.text}, please do not add Cygnus |
f3b7efd5 RP |
696 | configure. It should be possible to add this program without change to |
697 | a Cygnus configure style source tree. | |
ce947b9d | 698 | |
f3b7efd5 | 699 | If the program is not target dependent, please consider using |
d1cde16a RP |
700 | @code{autoconf} instead of Cygnus configure. @code{autoconf} will |
701 | be available soon from the @sc{fsf}. | |
702 | ||
e59aa15a | 703 | To add Cygnus configure to an existing program, do the following: |
8f861f08 | 704 | |
f3b7efd5 | 705 | @table @asis |
e59aa15a | 706 | @item Make sure the Makefile conforms to @sc{gnu} standard |
f3b7efd5 RP |
707 | The coding standard for @sc{gnu} Makefiles is described in |
708 | @cite{standards.text}. | |
8f861f08 | 709 | |
f3b7efd5 | 710 | @item Add Cygnus extensions to the Makefile |
e59aa15a | 711 | These are described in @ref{Makefile Extensions}. |
f3b7efd5 RP |
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 | |
e59aa15a RP |
716 | file called @file{./config/mh-foo}. For more information, see @ref{Hosts |
717 | and Targets}. | |
87081339 RP |
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 | |
e59aa15a RP |
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}). | |
f3b7efd5 RP |
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 | |
87081339 RP |
730 | the specific instances of those files into the @file{./config} |
731 | directory. | |
f3b7efd5 RP |
732 | |
733 | @item Separate host and target information | |
e59aa15a RP |
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 | |
f3b7efd5 RP |
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 | ||
e59aa15a | 751 | @item Write @code{configure.in} |
f3b7efd5 RP |
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 | |
d1cde16a RP |
756 | directory with more generic names. (see also @ref{Build Directories}). |
757 | The format of configure.in is described in @ref{configure.in}. | |
f3b7efd5 | 758 | |
e59aa15a | 759 | @item Rename @file{Makefile} to @file{Makefile.in} |
f3b7efd5 RP |
760 | @end table |
761 | ||
e59aa15a RP |
762 | At this point you should have a program that can be configured using |
763 | Cygnus @code{configure}. | |
f3b7efd5 | 764 | |
87081339 RP |
765 | @node Hosts and Targets, Sites, Programs, Porting |
766 | @section Adding hosts and targets | |
767 | ||
e59aa15a | 768 | To add a host or target to a program that already uses Cygnus |
87081339 RP |
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 | |
d1cde16a | 782 | configuration files. If not, add it. Also see @ref{configure.in}. |
87081339 RP |
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 | |
d1cde16a | 788 | configuration files. If not, add it. Also see @ref{configure.in}. |
87081339 RP |
789 | |
790 | @item | |
e59aa15a RP |
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 that the program uses. Make sure | |
795 | that copies of the files exist for your host. If not, create them. See | |
796 | also @ref{Configure Variables}. | |
87081339 RP |
797 | @end itemize |
798 | ||
799 | This should be enough to configure for a new host or target | |
e59aa15a RP |
800 | configuration name. Getting the program to compile and run properly |
801 | remains the hard work of the port. | |
f3b7efd5 | 802 | |
87081339 RP |
803 | @node Sites, , Hosts and Targets, Porting |
804 | @section Adding site info | |
f3b7efd5 | 805 | |
87081339 RP |
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. | |
f3b7efd5 | 808 | |
87081339 | 809 | @itemize @bullet |
f3b7efd5 | 810 | |
87081339 RP |
811 | @item |
812 | Choose a name for your site. It must be less than eleven characters for | |
813 | now. | |
814 | ||
815 | @item | |
e59aa15a | 816 | If the program source does not have a @file{./config} directory, create it. |
87081339 RP |
817 | |
818 | @item | |
819 | Create a file called @file{./config/ms-@var{site}} where @var{site} is | |
e59aa15a RP |
820 | the name of your site. In it, set whatever Makefile variables you need |
821 | to override to match your site's conventions. | |
87081339 RP |
822 | |
823 | @item | |
824 | Configure the program with: | |
f3b7efd5 | 825 | |
87081339 RP |
826 | @example |
827 | configure @dots{} +site=@var{site} | |
828 | @end example | |
829 | ||
830 | @end itemize | |
e59aa15a | 831 | |
f3b7efd5 RP |
832 | @node Reference, Known Bugs, Porting, top |
833 | @chapter Gory details described | |
834 | ||
835 | @cindex Backends | |
836 | Here we describe the backend support. | |
8f861f08 RP |
837 | |
838 | @menu | |
f3b7efd5 RP |
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 | |
8f861f08 RP |
843 | @end menu |
844 | ||
f3b7efd5 RP |
845 | @node Makefile Extensions, configure.in, Reference, Reference |
846 | @section Extensions to the @sc{gnu} coding standards | |
8f861f08 | 847 | |
f3b7efd5 RP |
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. | |
8f861f08 RP |
853 | |
854 | @itemize @bullet | |
f3b7efd5 RP |
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. | |
8f861f08 RP |
861 | @end itemize |
862 | ||
f3b7efd5 | 863 | Cygnus adds the following targets to our Makefiles. Their existence is |
e59aa15a | 864 | not required for Cygnus configure, but they are documented here for |
f3b7efd5 | 865 | completeness. |
8f861f08 | 866 | |
f3b7efd5 | 867 | @table @code |
e59aa15a | 868 | @kindex info |
f3b7efd5 RP |
869 | @item info |
870 | Build all info files from texinfo source. | |
871 | ||
e59aa15a | 872 | @kindex install-info |
f3b7efd5 RP |
873 | @item install-info |
874 | Install all info files. | |
875 | ||
e59aa15a | 876 | @kindex clean-info |
f3b7efd5 RP |
877 | @item clean-info |
878 | Remove all info files and any intermediate files that can be generated | |
879 | from texinfo source. | |
880 | ||
e59aa15a | 881 | @kindex stage1 |
f3b7efd5 | 882 | @item stage1 |
e59aa15a RP |
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 | |
f3b7efd5 | 903 | These targets are in transition and may be removed shortly. |
f3b7efd5 RP |
904 | @end table |
905 | ||
906 | In addition, the following Makefile targets have revised semantics: | |
907 | ||
908 | @table @code | |
e59aa15a | 909 | @kindex install |
f3b7efd5 RP |
910 | @item install |
911 | Should @emph{not} depend on the target @code{all}. If the program is | |
e59aa15a RP |
912 | not already built, @code{make install} should fail. This allows you |
913 | to install programs even when @code{make} would otherwise determine | |
f3b7efd5 RP |
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 | ||
e59aa15a | 918 | @kindex clean |
f3b7efd5 RP |
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: | |
8f861f08 | 924 | |
f3b7efd5 RP |
925 | @example |
926 | configure @var{host1} ; make all clean ; configure @var{host2} ; make all | |
8f861f08 RP |
927 | @end example |
928 | ||
f3b7efd5 RP |
929 | @noindent |
930 | will fail because of intermediate files intended for @var{host1}. | |
f3b7efd5 RP |
931 | @end table |
932 | ||
e59aa15a RP |
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. | |
f3b7efd5 RP |
935 | |
936 | @table @code | |
e59aa15a | 937 | @kindex docdir |
f3b7efd5 RP |
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 | ||
e59aa15a | 943 | @kindex includedir |
f3b7efd5 RP |
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. | |
f3b7efd5 RP |
949 | @end table |
950 | ||
e59aa15a RP |
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}. | |
f3b7efd5 RP |
954 | |
955 | @table @code | |
956 | ||
e59aa15a | 957 | @kindex manext |
f3b7efd5 | 958 | @item manext |
e59aa15a | 959 | is not used. The intended usage is not clear. For example, if you have a |
f3b7efd5 RP |
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 | |
e59aa15a RP |
962 | for @file{/usr/local/lib/man/man5/bar.5}, then what is the desired value |
963 | of @code{manext}? | |
f3b7efd5 | 964 | |
e59aa15a | 965 | @kindex datadir |
f3b7efd5 RP |
966 | @item datadir |
967 | is used for @emph{all} host independent files. This makes it possible | |
e59aa15a RP |
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 | |
f3b7efd5 RP |
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 | ||
e59aa15a | 974 | @kindex mandir |
f3b7efd5 | 975 | @item mandir |
e59aa15a RP |
976 | The default path for @code{mandir} depends on @code{datadir}, since man |
977 | pages are host independent. | |
f3b7efd5 | 978 | |
e59aa15a | 979 | @kindex infodir |
f3b7efd5 | 980 | @item infodir |
e59aa15a RP |
981 | The default path for @code{infodir} depends on @code{datadir}, since |
982 | info files are host independent. | |
f3b7efd5 | 983 | |
e59aa15a | 984 | @kindex BISON |
f3b7efd5 | 985 | @item BISON |
e59aa15a | 986 | is assumed to have a @code{yacc} calling convention. To use |
f3b7efd5 | 987 | @code{bison}, use @code{BISON=bison -y}. |
f3b7efd5 RP |
988 | @end table |
989 | ||
e59aa15a | 990 | Cygnus Makefiles also conform to one additional restriction: |
8f861f08 RP |
991 | |
992 | @itemize @bullet | |
f3b7efd5 RP |
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 | |
87081339 | 996 | call to @code{RANLIB} on the installed library. This is to accomodate |
e59aa15a RP |
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. | |
8f861f08 RP |
1000 | @end itemize |
1001 | ||
f3b7efd5 | 1002 | @node configure.in, config.status, Makefile Extensions, Reference |
e59aa15a RP |
1003 | @section The format of the @file{configure.in} file |
1004 | @kindex configure.in | |
1005 | ||
e59aa15a RP |
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. | |
8f861f08 | 1017 | |
87081339 | 1018 | @cindex Per-host section |
f3b7efd5 RP |
1019 | A line beginning with @code{# Per-host:} begins the per-host section. |
1020 | ||
87081339 | 1021 | @cindex Per-target section |
f3b7efd5 RP |
1022 | A line beginning with @code{# Per-target:} begins the per-target |
1023 | section. | |
1024 | ||
87081339 RP |
1025 | @cindex Post-target section |
1026 | If it exists, the post-target section begins with @code{# Per-target:}. | |
f3b7efd5 RP |
1027 | |
1028 | @menu | |
1029 | * Minimal:: A minimal configure.in | |
1030 | * Configure Variables:: Variables available to configure.in | |
e59aa15a RP |
1031 | * Declarations:: For each invocation |
1032 | * Per-host:: For each host | |
1033 | * Per-target:: For each target | |
f3b7efd5 RP |
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 | |
e59aa15a | 1039 | @subsection A minimal @file{configure.in} |
f3b7efd5 | 1040 | |
e59aa15a | 1041 | @cindex Minimal @file{configure.in} example |
f3b7efd5 RP |
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 | ||
e59aa15a RP |
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. | |
f3b7efd5 | 1057 | |
87081339 RP |
1058 | This particular example uses no links, and only the default host, |
1059 | target, and site specific Makefile fragments if they exist. | |
f3b7efd5 RP |
1060 | |
1061 | @node Configure Variables, Declarations, Minimal, configure.in | |
1062 | @subsection Variables available to configure.in | |
1063 | ||
e59aa15a | 1064 | @cindex @file{configure.in} interface |
f3b7efd5 | 1065 | |
e59aa15a RP |
1066 | The following variables pass information between the standard parts of |
1067 | @code{configure} and the shell-script fragments in @file{configure.in}: | |
f3b7efd5 RP |
1068 | |
1069 | @defvar{srctrigger} | |
1070 | Contains the name of a source file that is expected to live in the | |
e59aa15a RP |
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. | |
f3b7efd5 RP |
1076 | @end defvar |
1077 | ||
1078 | @defvar{srcname} | |
e59aa15a RP |
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. | |
f3b7efd5 RP |
1084 | @end defvar |
1085 | ||
1086 | @defvar{configdirs} | |
e59aa15a RP |
1087 | Contains the names of any subdirectories where @code{configure} should |
1088 | recur. You must usually set this in the per-invocation section of | |
f3b7efd5 RP |
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. | |
f8f3c853 RP |
1094 | @c Most other matching makefile/config vars use the same name. Why not |
1095 | @c this? (FIXME). | |
f3b7efd5 RP |
1096 | @end defvar |
1097 | ||
f3b7efd5 | 1098 | @defvar{target_dependent} |
e59aa15a RP |
1099 | NOTE: support for multiple targets is currently suspended. |
1100 | @* | |
f3b7efd5 RP |
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 | |
e59aa15a RP |
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 | |
f3b7efd5 RP |
1106 | a target independent directory will be built exactly once regardless of |
1107 | how many targets are being built. | |
1108 | @end defvar | |
8f861f08 RP |
1109 | |
1110 | @defvar{host} | |
f8f3c853 RP |
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. | |
8f861f08 RP |
1117 | @end defvar |
1118 | ||
1119 | @defvar{host_cpu} | |
1120 | Contains the first element of the canonical triple representing the host | |
f3b7efd5 | 1121 | as returned by @file{config.sub}. This is occasionally used to |
8f861f08 RP |
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 | |
f3b7efd5 | 1129 | host as returned by @file{config.sub}. This is usually used to |
8f861f08 RP |
1130 | distinguish betwen the numerous variations between @emph{common} |
1131 | operating systems. | |
e59aa15a RP |
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? | |
8f861f08 RP |
1134 | @end defvar |
1135 | ||
1136 | @defvar{host_os} | |
1137 | Contains the the third element of the canonical triple representing the | |
f3b7efd5 | 1138 | host as returned by @file{config.sub}. |
8f861f08 RP |
1139 | @end defvar |
1140 | ||
1141 | @defvar{target} | |
d1cde16a | 1142 | Contains the name that the user entered for the target. Since |
f3b7efd5 RP |
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 | |
8f861f08 RP |
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 | |
f3b7efd5 | 1152 | target as returned by @file{config.sub}. This is used heavily by |
8f861f08 RP |
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 | |
e59aa15a | 1157 | alignment differ from the system where the program is running. |
8f861f08 RP |
1158 | @end defvar |
1159 | ||
1160 | @defvar{target_vendor} | |
1161 | Contains the second element of the canonical triple representing the | |
f3b7efd5 | 1162 | target as returned by @file{config.sub}. This is usually used to |
8f861f08 RP |
1163 | distinguish betwen the numerous variations between @emph{common} |
1164 | operating systems or object file formats. Sometimes it is used to | |
87081339 | 1165 | switch between different flavors of user interfaces. |
e59aa15a | 1166 | @c above query re "@emph{common} OS" applies here too |
8f861f08 RP |
1167 | @end defvar |
1168 | ||
1169 | @defvar{target_os} | |
1170 | Contains the the third element of the canonical triple representing the | |
f3b7efd5 | 1171 | target as returned by @file{config.sub}. This variable is used by |
8f861f08 RP |
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 | |
87081339 RP |
1181 | machines with @emph{no floating point} unit, even if the targets |
1182 | ordinarily have floating point units available. This option has no | |
f3b7efd5 | 1183 | negation. |
8f861f08 RP |
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 | |
e59aa15a RP |
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. | |
8f861f08 RP |
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 | |
87081339 RP |
1196 | that @sc{mit x11} compatible headers files and libraries are available |
1197 | on all hosts, regardless of what is normally available on them. | |
8f861f08 RP |
1198 | @end defvar |
1199 | ||
1200 | @defvar{srcdir} | |
e59aa15a RP |
1201 | NOTE: support for @code{-subdirs} is at least temporarily suspended. |
1202 | @* | |
8f861f08 | 1203 | Is set to the name of the directory containing the source for this |
f3b7efd5 RP |
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. | |
8f861f08 RP |
1207 | @end defvar |
1208 | ||
1209 | @defvar{host_makefile_frag} | |
1210 | Is set to a file name representing to the default Makefile fragment for | |
e59aa15a | 1211 | this host. It may be set in @file{configure.in} to override this |
8f861f08 RP |
1212 | default. |
1213 | @end defvar | |
1214 | ||
1215 | @defvar{target_makefile_frag} | |
1216 | Is set to a file name representing to the default Makefile fragment for | |
e59aa15a | 1217 | this target. It may be set in @file{configure.in} to override this |
8f861f08 RP |
1218 | default. |
1219 | @end defvar | |
1220 | ||
e59aa15a | 1221 | @defvar{site_makefile_frag} |
8f861f08 | 1222 | Is set to a file name representing to the default Makefile fragment for |
e59aa15a | 1223 | this host. It may be set in @file{configure.in} to override this |
8f861f08 | 1224 | default. Normally @code{site_makefile_frag} is empty, but will have a |
e59aa15a RP |
1225 | value if the user specified @code{-site=} on the command line. It is |
1226 | probably not a good idea to override this variable from | |
1227 | @file{configure.in}, since that may defeat the @code{configure} user's | |
1228 | intentions. | |
8f861f08 RP |
1229 | @end defvar |
1230 | ||
1231 | @defvar{Makefile} | |
1232 | Is set to the name of the generated @file{Makefile}. Normally this | |
1233 | value is precisely @file{Makefile} but some programs may want something | |
1234 | else. | |
1235 | @end defvar | |
1236 | ||
1237 | @defvar{removing} | |
1238 | Is normally empty but will be set to some non-empty value if the user | |
1239 | specified @code{-rm} on the command line. That is, if @code{removing} | |
1240 | is non-empty, then configure is @emph{removing} a configuration rather | |
1241 | than creating one. | |
1242 | @end defvar | |
1243 | ||
1244 | @defvar{files} | |
1245 | If this variable is non-empty following the @code{per-target:} section, | |
e59aa15a RP |
1246 | then each word in its value will be the target of a symbolic link named |
1247 | in the corresponding word from the @code{links} variable. | |
8f861f08 RP |
1248 | @end defvar |
1249 | ||
1250 | @defvar{links} | |
1251 | If the @code{files} variable is non-empty following the | |
e59aa15a RP |
1252 | @code{per-target:} section, then @code{configure} creates symbolic links |
1253 | with the first word of @code{links} pointing to the first word of | |
1254 | @code{files}, the second word of @code{links} pointing to the second | |
1255 | word of @code{files}, and so on. | |
8f861f08 RP |
1256 | @end defvar |
1257 | ||
f3b7efd5 | 1258 | @node Declarations, Per-host, Configure Variables, configure.in |
e59aa15a | 1259 | @subsection For each invocation |
ce947b9d | 1260 | |
f3b7efd5 | 1261 | @cindex Declarations section |
ce947b9d | 1262 | |
e59aa15a RP |
1263 | @code{configure} sources the entire shell script fragment from the start |
1264 | of @file{configure.in} up to a line beginning with @samp{# Per-host:} | |
1265 | immediately after parsing command line arguments. The variables | |
1266 | @code{srctrigger} and @code{srcname} @emph{must} be set here. | |
ce947b9d | 1267 | |
e59aa15a RP |
1268 | You might also want to set the variables @code{configdirs} or |
1269 | @code{target_dependent} here. | |
1270 | @* | |
1271 | FIXME-soon. target_dependent isn't useful without multiple targets. | |
ce947b9d | 1272 | |
f3b7efd5 | 1273 | @node Per-host, Per-target, Declarations, configure.in |
e59aa15a RP |
1274 | @subsection For each host |
1275 | @cindex per-host section | |
1276 | @cindex host shell-script fragment | |
ce947b9d | 1277 | |
e59aa15a RP |
1278 | The per-host section of @file{configure.in} starts with the line that begins |
1279 | with @samp{# Per-host:} and ends before a line beginning with | |
1280 | @samp{# Per-target:}. @code{configure} sources the per-host section once for | |
f3b7efd5 | 1281 | each host. |
ce947b9d | 1282 | |
f3b7efd5 | 1283 | This section usually contains a big case statement using the variables |
e59aa15a RP |
1284 | @samp{host_cpu}, @samp{host_vendor}, and @samp{host_os} to determine |
1285 | appropriate values for @samp{host_makefile_frag} and @samp{files}, | |
1286 | although @samp{files} is not usually set here. Usually, it is set | |
f3b7efd5 RP |
1287 | at the end of the per-target section after determining the names of the |
1288 | target specific configuration files. | |
8f861f08 | 1289 | |
f3b7efd5 | 1290 | @node Per-target, Post-target, Per-host, configure.in |
e59aa15a RP |
1291 | @subsection For each target |
1292 | @cindex per-target section | |
1293 | @cindex target shell-script fragment | |
1294 | ||
1295 | The per-target section of @file{configure.in} starts with the line that | |
1296 | begins with @samp{# Per-target:} and ends before the line that begins | |
1297 | with @samp{# Post-target:}, if there is such a line. Otherwise the | |
1298 | per-target section extends to the end of the file. @code{configure} sources | |
1299 | the per-target section once for each target before building any files, | |
f3b7efd5 | 1300 | directories, or links. |
ce947b9d | 1301 | |
e59aa15a RP |
1302 | This section usually contains a big case statement using the variables called |
1303 | @samp{target_cpu}, @samp{target_vendor}, and @samp{target_os} to determine | |
1304 | appropriate values for @samp{target_makefile_frag} and @samp{files}. | |
f3b7efd5 RP |
1305 | The last lines in the per-target section normally set the variables |
1306 | @code{files} and @code{links}. | |
ce947b9d | 1307 | |
f3b7efd5 RP |
1308 | @node Post-target, Example, Per-target, configure.in |
1309 | @subsection After each target | |
ce947b9d | 1310 | |
f3b7efd5 RP |
1311 | The post-target section is optional. If it exists, the post-target |
1312 | section starts with a line beginning with @code{# Post-target:} and | |
e59aa15a | 1313 | extends to the end of the file. If it exists, @code{configure} sources this |
f3b7efd5 RP |
1314 | section once for each target after building all files, directories, or |
1315 | links. | |
ce947b9d | 1316 | |
e59aa15a RP |
1317 | This section is seldom needed, but you can use it to edit the Makefile |
1318 | generated by @code{configure}. | |
ce947b9d | 1319 | |
f3b7efd5 | 1320 | @node Example, , Post-target, configure.in |
e59aa15a RP |
1321 | @subsection An example @file{configure.in} |
1322 | @cindex example @file{configure.in} | |
1323 | @cindex sample @file{configure.in} | |
1324 | @cindex Bison @file{configure.in} | |
8f861f08 | 1325 | |
e59aa15a | 1326 | Here is a small example of a @file{configure.in} file. |
8f861f08 | 1327 | |
f3b7efd5 | 1328 | @example |
e59aa15a RP |
1329 | # This file is a collection of shell script fragments used to tailor |
1330 | # a template configure script as appropriate for this directory. | |
f8f3c853 | 1331 | # For more information, see configure.texi. |
8f861f08 | 1332 | |
f3b7efd5 RP |
1333 | configdirs= |
1334 | srctrigger=warshall.c | |
1335 | srcname="bison" | |
1336 | ||
1337 | # per-host: | |
87081339 | 1338 | case "$@{host_os@}" in |
f3b7efd5 RP |
1339 | m88kbcs) |
1340 | host_makefile_frag=config/mh-delta88 | |
1341 | ;; | |
1342 | esac | |
ce947b9d | 1343 | |
f3b7efd5 | 1344 | # per-target: |
ce947b9d | 1345 | |
f3b7efd5 RP |
1346 | files="bison_in.hairy" |
1347 | links="bison.hairy" | |
ce947b9d | 1348 | |
f3b7efd5 RP |
1349 | # post-target: |
1350 | @end example | |
ce947b9d | 1351 | |
f3b7efd5 | 1352 | @node config.status, Makefile Fragments, configure.in, Reference |
e59aa15a | 1353 | @section @code{config.status} |
ce947b9d | 1354 | |
e59aa15a | 1355 | @kindex config.status |
ce947b9d | 1356 | |
87081339 | 1357 | The final step in configuring a directory is to create an executable |
e59aa15a RP |
1358 | shell script, @file{config.status}. The main purpose of this file |
1359 | is to allow the Makefile for the current directory to rebuild itself, if | |
1360 | necessary. For this reason, @file{config.status} uses the | |
1361 | @samp{-norecursion} option to @code{configure}, and is therefore | |
1362 | probably inappropriate for reconfiguring a tree of source code. | |
ce947b9d | 1363 | |
f3b7efd5 RP |
1364 | @node Makefile Fragments, , config.status, Reference |
1365 | @section Makefile Fragments | |
ce947b9d | 1366 | |
f3b7efd5 | 1367 | @cindex Makefile fragments |
ce947b9d | 1368 | |
e59aa15a RP |
1369 | Cygnus @code{configure} uses three types of Makefile fragments. In a |
1370 | generated Makefile they appear in the order target fragment, host | |
1371 | fragment, and site fragment. This allows host fragments to override | |
1372 | target fragments, and site fragments to override both. | |
87081339 RP |
1373 | |
1374 | Host specific Makefile fragments conventionally reside in the | |
1375 | @file{./config} directory with names of the form | |
1376 | @file{mh-@var{host}}. They are used for hosts that require | |
1377 | odd options to the standard compiler and for compile time options based | |
1378 | on the host configuration. | |
1379 | ||
1380 | Target specific Makefile fragments conventionally reside in the | |
1381 | @file{./config} directory with names of the form @file{mt-@var{target}}. | |
1382 | They are used for target dependent compile time options. | |
1383 | ||
1384 | Site specific Makefile fragments conventionally reside in the | |
1385 | @file{./config} directory with names of the form @file{ms-@var{site}}. | |
1386 | They are used to override host and target independent compile time | |
e59aa15a | 1387 | options. Note that you can also overridde these options on the |
87081339 | 1388 | @code{make} invocation line. |
ce947b9d | 1389 | |
f3b7efd5 | 1390 | @node Known Bugs, Variables Index, Reference, top |
8f861f08 RP |
1391 | @chapter Known Bugs |
1392 | ||
f3b7efd5 RP |
1393 | @cindex bugs |
1394 | ||
e59aa15a | 1395 | We know of the following bugs: |
8f861f08 RP |
1396 | |
1397 | @itemize @bullet | |
1398 | ||
1399 | @item | |
1400 | There is no way to query about known hosts, known targets, or the | |
1401 | porting or testing status of any configuration. | |
1402 | ||
1403 | @item | |
1404 | The negations to the options @code{-gas}, @code{-x}, and @code{-nfp} are | |
1405 | not available. | |
1406 | ||
1407 | @end itemize | |
1408 | ||
f3b7efd5 | 1409 | @page |
8f861f08 | 1410 | @node Variables Index, Concept Index, Known Bugs, top |
ce947b9d | 1411 | @appendix Variable Index |
8f861f08 RP |
1412 | |
1413 | @printindex vr | |
1414 | ||
f3b7efd5 | 1415 | @page |
8f861f08 | 1416 | @node Concept Index, , Variables Index, top |
ce947b9d | 1417 | @appendix Concept Index |
8f861f08 RP |
1418 | |
1419 | @printindex cp | |
8f861f08 RP |
1420 | @contents |
1421 | @bye | |
1422 | ||
1423 | @c Local Variables: | |
1424 | @c fill-column: 79 | |
1425 | @c outline-regexp: "@chap" | |
1426 | @c End: | |
1427 | @c (setq outline-regexp "@chapt\\\|@unnum\\\|@setf\\\|@conte\\\|@sectio\\\|@subsect\\\|@itemize\\\|@defvar{") |