autoupdate
[gnulib.git] / doc / make-stds.texi
1 @comment This file is included by both standards.texi and make.texinfo.
2 @comment It was broken out of standards.texi on 1/6/93 by roland.
3
4 @node Makefile Conventions
5 @chapter Makefile Conventions
6 @comment standards.texi does not print an index, but make.texinfo does.
7 @cindex makefile, conventions for
8 @cindex conventions for makefiles
9 @cindex standards for makefiles
10
11 @c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
12 @c 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
13
14 @c Permission is granted to copy, distribute and/or modify this document
15 @c under the terms of the GNU Free Documentation License, Version 1.2
16 @c or any later version published by the Free Software Foundation;
17 @c with no Invariant Sections, with no
18 @c Front-Cover Texts, and with no Back-Cover Texts.
19 @c A copy of the license is included in the section entitled ``GNU
20 @c Free Documentation License''.
21
22 This
23 @ifinfo
24 node
25 @end ifinfo
26 @iftex
27 @ifset CODESTD
28 section
29 @end ifset
30 @ifclear CODESTD
31 chapter
32 @end ifclear
33 @end iftex
34 describes conventions for writing the Makefiles for GNU programs.
35 Using Automake will help you write a Makefile that follows these
36 conventions.
37
38 @menu
39 * Makefile Basics::             General conventions for Makefiles.
40 * Utilities in Makefiles::      Utilities to be used in Makefiles.
41 * Command Variables::           Variables for specifying commands.
42 * DESTDIR::                     Supporting staged installs.
43 * Directory Variables::         Variables for installation directories.
44 * Standard Targets::            Standard targets for users.
45 * Install Command Categories::  Three categories of commands in the `install'
46                                   rule: normal, pre-install and post-install.
47 @end menu
48
49 @node Makefile Basics
50 @section General Conventions for Makefiles
51
52 Every Makefile should contain this line:
53
54 @example
55 SHELL = /bin/sh
56 @end example
57
58 @noindent
59 to avoid trouble on systems where the @code{SHELL} variable might be
60 inherited from the environment.  (This is never a problem with GNU
61 @code{make}.)
62
63 Different @code{make} programs have incompatible suffix lists and
64 implicit rules, and this sometimes creates confusion or misbehavior.  So
65 it is a good idea to set the suffix list explicitly using only the
66 suffixes you need in the particular Makefile, like this:
67
68 @example
69 .SUFFIXES:
70 .SUFFIXES: .c .o
71 @end example
72
73 @noindent
74 The first line clears out the suffix list, the second introduces all
75 suffixes which may be subject to implicit rules in this Makefile.
76
77 Don't assume that @file{.} is in the path for command execution.  When
78 you need to run programs that are a part of your package during the
79 make, please make sure that it uses @file{./} if the program is built as
80 part of the make or @file{$(srcdir)/} if the file is an unchanging part
81 of the source code.  Without one of these prefixes, the current search
82 path is used.
83
84 The distinction between @file{./} (the @dfn{build directory}) and
85 @file{$(srcdir)/} (the @dfn{source directory}) is important because
86 users can build in a separate directory using the @samp{--srcdir} option
87 to @file{configure}.  A rule of the form:
88
89 @smallexample
90 foo.1 : foo.man sedscript
91         sed -e sedscript foo.man > foo.1
92 @end smallexample
93
94 @noindent
95 will fail when the build directory is not the source directory, because
96 @file{foo.man} and @file{sedscript} are in the source directory.
97
98 When using GNU @code{make}, relying on @samp{VPATH} to find the source
99 file will work in the case where there is a single dependency file,
100 since the @code{make} automatic variable @samp{$<} will represent the
101 source file wherever it is.  (Many versions of @code{make} set @samp{$<}
102 only in implicit rules.)  A Makefile target like
103
104 @smallexample
105 foo.o : bar.c
106         $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
107 @end smallexample
108
109 @noindent
110 should instead be written as
111
112 @smallexample
113 foo.o : bar.c
114         $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@@
115 @end smallexample
116
117 @noindent
118 in order to allow @samp{VPATH} to work correctly.  When the target has
119 multiple dependencies, using an explicit @samp{$(srcdir)} is the easiest
120 way to make the rule work well.  For example, the target above for
121 @file{foo.1} is best written as:
122
123 @smallexample
124 foo.1 : foo.man sedscript
125         sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@@
126 @end smallexample
127
128 GNU distributions usually contain some files which are not source
129 files---for example, Info files, and the output from Autoconf, Automake,
130 Bison or Flex.  Since these files normally appear in the source
131 directory, they should always appear in the source directory, not in the
132 build directory.  So Makefile rules to update them should put the
133 updated files in the source directory.
134
135 However, if a file does not appear in the distribution, then the
136 Makefile should not put it in the source directory, because building a
137 program in ordinary circumstances should not modify the source directory
138 in any way.
139
140 Try to make the build and installation targets, at least (and all their
141 subtargets) work correctly with a parallel @code{make}.
142
143 @node Utilities in Makefiles
144 @section Utilities in Makefiles
145
146 Write the Makefile commands (and any shell scripts, such as
147 @code{configure}) to run in @code{sh}, not in @code{csh}.  Don't use any
148 special features of @code{ksh} or @code{bash}.
149
150 The @code{configure} script and the Makefile rules for building and
151 installation should not use any utilities directly except these:
152
153 @c dd find
154 @c gunzip gzip md5sum
155 @c mkfifo mknod tee uname
156
157 @example
158 awk cat cmp cp diff echo egrep expr false grep install-info
159 ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
160 @end example
161
162 The compression program @code{gzip} can be used in the @code{dist} rule.
163
164 Stick to the generally supported options for these programs.  For
165 example, don't use @samp{mkdir -p}, convenient as it may be, because
166 most systems don't support it.
167
168 It is a good idea to avoid creating symbolic links in makefiles, since a
169 few systems don't support them.
170
171 The Makefile rules for building and installation can also use compilers
172 and related programs, but should do so via @code{make} variables so that the
173 user can substitute alternatives.  Here are some of the programs we
174 mean:
175
176 @example
177 ar bison cc flex install ld ldconfig lex
178 make makeinfo ranlib texi2dvi yacc
179 @end example
180
181 Use the following @code{make} variables to run those programs:
182
183 @example
184 $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
185 $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
186 @end example
187
188 When you use @code{ranlib} or @code{ldconfig}, you should make sure
189 nothing bad happens if the system does not have the program in question.
190 Arrange to ignore an error from that command, and print a message before
191 the command to tell the user that failure of this command does not mean
192 a problem.  (The Autoconf @samp{AC_PROG_RANLIB} macro can help with
193 this.)
194
195 If you use symbolic links, you should implement a fallback for systems
196 that don't have symbolic links.
197
198 Additional utilities that can be used via Make variables are:
199
200 @example
201 chgrp chmod chown mknod
202 @end example
203
204 It is ok to use other utilities in Makefile portions (or scripts)
205 intended only for particular systems where you know those utilities
206 exist.
207
208 @node Command Variables
209 @section Variables for Specifying Commands
210
211 Makefiles should provide variables for overriding certain commands, options,
212 and so on.
213
214 In particular, you should run most utility programs via variables.
215 Thus, if you use Bison, have a variable named @code{BISON} whose default
216 value is set with @samp{BISON = bison}, and refer to it with
217 @code{$(BISON)} whenever you need to use Bison.
218
219 File management utilities such as @code{ln}, @code{rm}, @code{mv}, and
220 so on, need not be referred to through variables in this way, since users
221 don't need to replace them with other programs.
222
223 Each program-name variable should come with an options variable that is
224 used to supply options to the program.  Append @samp{FLAGS} to the
225 program-name variable name to get the options variable name---for
226 example, @code{BISONFLAGS}.  (The names @code{CFLAGS} for the C
227 compiler, @code{YFLAGS} for yacc, and @code{LFLAGS} for lex, are
228 exceptions to this rule, but we keep them because they are standard.)
229 Use @code{CPPFLAGS} in any compilation command that runs the
230 preprocessor, and use @code{LDFLAGS} in any compilation command that
231 does linking as well as in any direct use of @code{ld}.
232
233 If there are C compiler options that @emph{must} be used for proper
234 compilation of certain files, do not include them in @code{CFLAGS}.
235 Users expect to be able to specify @code{CFLAGS} freely themselves.
236 Instead, arrange to pass the necessary options to the C compiler
237 independently of @code{CFLAGS}, by writing them explicitly in the
238 compilation commands or by defining an implicit rule, like this:
239
240 @smallexample
241 CFLAGS = -g
242 ALL_CFLAGS = -I. $(CFLAGS)
243 .c.o:
244         $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
245 @end smallexample
246
247 Do include the @samp{-g} option in @code{CFLAGS}, because that is not
248 @emph{required} for proper compilation.  You can consider it a default
249 that is only recommended.  If the package is set up so that it is
250 compiled with GCC by default, then you might as well include @samp{-O}
251 in the default value of @code{CFLAGS} as well.
252
253 Put @code{CFLAGS} last in the compilation command, after other variables
254 containing compiler options, so the user can use @code{CFLAGS} to
255 override the others.
256
257 @code{CFLAGS} should be used in every invocation of the C compiler,
258 both those which do compilation and those which do linking.
259
260 Every Makefile should define the variable @code{INSTALL}, which is the
261 basic command for installing a file into the system.
262
263 Every Makefile should also define the variables @code{INSTALL_PROGRAM}
264 and @code{INSTALL_DATA}.  (The default for @code{INSTALL_PROGRAM} should
265 be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be
266 @code{$@{INSTALL@} -m 644}.)  Then it should use those variables as the
267 commands for actual installation, for executables and non-executables
268 respectively.  Minimal use of these variables is as follows:
269
270 @example
271 $(INSTALL_PROGRAM) foo $(bindir)/foo
272 $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
273 @end example
274
275 However, it is preferable to support a @code{DESTDIR} prefix on the
276 target files, as explained in the next section.
277
278 It is acceptable, but not required, to install multiple files in one
279 command, with the final argument being a directory, as in:
280
281 @example
282 $(INSTALL_PROGRAM) foo bar baz $(bindir)
283 @end example
284
285
286 @node DESTDIR
287 @section @code{DESTDIR}: support for staged installs
288
289 @vindex DESTDIR
290 @cindex staged installs
291 @cindex installations, staged
292
293 @code{DESTDIR} is a variable prepended to each installed target file,
294 like this:
295
296 @example
297 $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
298 $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
299 @end example
300
301 The @code{DESTDIR} variable is specified by the user on the @code{make}
302 command line as an absolute file name.  For example:
303
304 @example
305 make DESTDIR=/tmp/stage install
306 @end example
307
308 @noindent
309 @code{DESTDIR} should be supported only in the @code{install*} and
310 @code{uninstall*} targets, as those are the only targets where it is
311 useful.
312
313 If your installation step would normally install
314 @file{/usr/local/bin/foo} and @file{/usr/local/lib/libfoo.a}, then an
315 installation invoked as in the example above would install
316 @file{/tmp/stage/usr/local/bin/foo} and
317 @file{/tmp/stage/usr/local/lib/libfoo.a} instead.
318
319 Prepending the variable @code{DESTDIR} to each target in this way
320 provides for @dfn{staged installs}, where the installed files are not
321 placed directly into their expected location but are instead copied
322 into a temporary location (@code{DESTDIR}).  However, installed files
323 maintain their relative directory structure and any embedded file names
324 will not be modified.
325
326 You should not set the value of @code{DESTDIR} in your @file{Makefile}
327 at all; then the files are installed into their expected locations by
328 default.  Also, specifying @code{DESTDIR} should not change the
329 operation of the software in any way, so its value should not be
330 included in any file contents.
331
332 @code{DESTDIR} support is commonly used in package creation.  It is
333 also helpful to users who want to understand what a given package will
334 install where, and to allow users who don't normally have permissions
335 to install into protected areas to build and install before gaining
336 those permissions.  Finally, it can be useful with tools such as
337 @code{stow}, where code is installed in one place but made to appear
338 to be installed somewhere else using symbolic links or special mount
339 operations.  So, we strongly recommend GNU packages support
340 @code{DESTDIR}, though it is not an absolute requirement.
341
342
343 @node Directory Variables
344 @section Variables for Installation Directories
345
346 Installation directories should always be named by variables, so it is
347 easy to install in a nonstandard place.  The standard names for these
348 variables and the values they should have in GNU packages are
349 described below.  They are based on a standard file system layout;
350 variants of it are used in GNU/Linux and other modern operating
351 systems.
352
353 Installers are expected to override these values when calling
354 @command{make} (e.g., @kbd{make prefix=/usr install} or
355 @command{configure} (e.g., @kbd{configure --prefix=/usr}).  GNU
356 packages should not try to guess which value should be appropriate for
357 these variables on the system they are being installed onto: use the
358 default settings specified here so that all GNU packages behave
359 identically, allowing the installer to achieve any desired layout.
360
361 These first two variables set the root for the installation.  All the
362 other installation directories should be subdirectories of one of
363 these two, and nothing should be directly installed into these two
364 directories.
365
366 @table @code
367 @item prefix
368 @vindex prefix
369 A prefix used in constructing the default values of the variables listed
370 below.  The default value of @code{prefix} should be @file{/usr/local}.
371 When building the complete GNU system, the prefix will be empty and
372 @file{/usr} will be a symbolic link to @file{/}.
373 (If you are using Autoconf, write it as @samp{@@prefix@@}.)
374
375 Running @samp{make install} with a different value of @code{prefix} from
376 the one used to build the program should @emph{not} recompile the
377 program.
378
379 @item exec_prefix
380 @vindex exec_prefix
381 A prefix used in constructing the default values of some of the
382 variables listed below.  The default value of @code{exec_prefix} should
383 be @code{$(prefix)}.
384 (If you are using Autoconf, write it as @samp{@@exec_prefix@@}.)
385
386 Generally, @code{$(exec_prefix)} is used for directories that contain
387 machine-specific files (such as executables and subroutine libraries),
388 while @code{$(prefix)} is used directly for other directories.
389
390 Running @samp{make install} with a different value of @code{exec_prefix}
391 from the one used to build the program should @emph{not} recompile the
392 program.
393 @end table
394
395 Executable programs are installed in one of the following directories.
396
397 @table @code
398 @item bindir
399 @vindex bindir
400 The directory for installing executable programs that users can run.
401 This should normally be @file{/usr/local/bin}, but write it as
402 @file{$(exec_prefix)/bin}.
403 (If you are using Autoconf, write it as @samp{@@bindir@@}.)
404
405 @item sbindir
406 @vindex sbindir
407 The directory for installing executable programs that can be run from
408 the shell, but are only generally useful to system administrators.  This
409 should normally be @file{/usr/local/sbin}, but write it as
410 @file{$(exec_prefix)/sbin}.
411 (If you are using Autoconf, write it as @samp{@@sbindir@@}.)
412
413 @item libexecdir
414 @vindex libexecdir
415 @comment This paragraph adjusted to avoid overfull hbox --roland 5jul94
416 The directory for installing executable programs to be run by other
417 programs rather than by users.  This directory should normally be
418 @file{/usr/local/libexec}, but write it as @file{$(exec_prefix)/libexec}.
419 (If you are using Autoconf, write it as @samp{@@libexecdir@@}.)
420
421 The definition of @samp{libexecdir} is the same for all packages, so
422 you should install your data in a subdirectory thereof.  Most packages
423 install their data under @file{$(libexecdir)/@var{package-name}/},
424 possibly within additional subdirectories thereof, such as
425 @file{$(libexecdir)/@var{package-name}/@var{machine}/@var{version}}.
426 @end table
427
428 Data files used by the program during its execution are divided into
429 categories in two ways.
430
431 @itemize @bullet
432 @item
433 Some files are normally modified by programs; others are never normally
434 modified (though users may edit some of these).
435
436 @item
437 Some files are architecture-independent and can be shared by all
438 machines at a site; some are architecture-dependent and can be shared
439 only by machines of the same kind and operating system; others may never
440 be shared between two machines.
441 @end itemize
442
443 This makes for six different possibilities.  However, we want to
444 discourage the use of architecture-dependent files, aside from object
445 files and libraries.  It is much cleaner to make other data files
446 architecture-independent, and it is generally not hard.
447
448 Here are the variables Makefiles should use to specify directories
449 to put these various kinds of files in:
450
451 @table @samp
452 @item datarootdir
453 The root of the directory tree for read-only architecture-independent
454 data files.  This should normally be @file{/usr/local/share}, but
455 write it as @file{$(prefix)/share}.  (If you are using Autoconf, write
456 it as @samp{@@datarootdir@@}.)  @samp{datadir}'s default value is
457 based on this variable; so are @samp{infodir}, @samp{mandir}, and
458 others.
459
460 @item datadir
461 The directory for installing idiosyncratic read-only
462 architecture-independent data files for this program.  This is usually
463 the same place as @samp{datarootdir}, but we use the two separate
464 variables so that you can move these program-specific files without
465 altering the location for Info files, man pages, etc.
466
467 This should normally be @file{/usr/local/share}, but write it as
468 @file{$(datarootdir)}.  (If you are using Autoconf, write it as
469 @samp{@@datadir@@}.)
470
471 The definition of @samp{datadir} is the same for all packages, so you
472 should install your data in a subdirectory thereof.  Most packages
473 install their data under @file{$(datadir)/@var{package-name}/}.
474
475 @item sysconfdir
476 The directory for installing read-only data files that pertain to a
477 single machine--that is to say, files for configuring a host.  Mailer
478 and network configuration files, @file{/etc/passwd}, and so forth belong
479 here.  All the files in this directory should be ordinary ASCII text
480 files.  This directory should normally be @file{/usr/local/etc}, but
481 write it as @file{$(prefix)/etc}.
482 (If you are using Autoconf, write it as @samp{@@sysconfdir@@}.)
483
484 Do not install executables here in this directory (they probably belong
485 in @file{$(libexecdir)} or @file{$(sbindir)}).  Also do not install
486 files that are modified in the normal course of their use (programs
487 whose purpose is to change the configuration of the system excluded).
488 Those probably belong in @file{$(localstatedir)}.
489
490 @item sharedstatedir
491 The directory for installing architecture-independent data files which
492 the programs modify while they run.  This should normally be
493 @file{/usr/local/com}, but write it as @file{$(prefix)/com}.
494 (If you are using Autoconf, write it as @samp{@@sharedstatedir@@}.)
495
496 @item localstatedir
497 The directory for installing data files which the programs modify while
498 they run, and that pertain to one specific machine.  Users should never
499 need to modify files in this directory to configure the package's
500 operation; put such configuration information in separate files that go
501 in @file{$(datadir)} or @file{$(sysconfdir)}.  @file{$(localstatedir)}
502 should normally be @file{/usr/local/var}, but write it as
503 @file{$(prefix)/var}.
504 (If you are using Autoconf, write it as @samp{@@localstatedir@@}.)
505 @end table
506
507 These variables specify the directory for installing certain specific
508 types of files, if your program has them.  Every GNU package should
509 have Info files, so every program needs @samp{infodir}, but not all
510 need @samp{libdir} or @samp{lispdir}.
511
512 @table @samp
513 @item includedir
514 @c rewritten to avoid overfull hbox --roland
515 The directory for installing header files to be included by user
516 programs with the C @samp{#include} preprocessor directive.  This
517 should normally be @file{/usr/local/include}, but write it as
518 @file{$(prefix)/include}.
519 (If you are using Autoconf, write it as @samp{@@includedir@@}.)
520
521 Most compilers other than GCC do not look for header files in directory
522 @file{/usr/local/include}.  So installing the header files this way is
523 only useful with GCC.  Sometimes this is not a problem because some
524 libraries are only really intended to work with GCC.  But some libraries
525 are intended to work with other compilers.  They should install their
526 header files in two places, one specified by @code{includedir} and one
527 specified by @code{oldincludedir}.
528
529 @item oldincludedir
530 The directory for installing @samp{#include} header files for use with
531 compilers other than GCC.  This should normally be @file{/usr/include}.
532 (If you are using Autoconf, you can write it as @samp{@@oldincludedir@@}.)
533
534 The Makefile commands should check whether the value of
535 @code{oldincludedir} is empty.  If it is, they should not try to use
536 it; they should cancel the second installation of the header files.
537
538 A package should not replace an existing header in this directory unless
539 the header came from the same package.  Thus, if your Foo package
540 provides a header file @file{foo.h}, then it should install the header
541 file in the @code{oldincludedir} directory if either (1) there is no
542 @file{foo.h} there or (2) the @file{foo.h} that exists came from the Foo
543 package.
544
545 To tell whether @file{foo.h} came from the Foo package, put a magic
546 string in the file---part of a comment---and @code{grep} for that string.
547
548 @item docdir
549 The directory for installing documentation files (other than Info) for
550 this package.  By default, it should be
551 @file{/usr/local/share/doc/@var{yourpkg}}, but it should be written as
552 @file{$(datarootdir)/doc/@var{yourpkg}}.  (If you are using Autoconf,
553 write it as @samp{@@docdir@@}.)  The @var{yourpkg} subdirectory, which
554 may include a version number, prevents collisions among files with
555 common names, such as @file{README}.
556
557 @item infodir
558 The directory for installing the Info files for this package.  By
559 default, it should be @file{/usr/local/share/info}, but it should be
560 written as @file{$(datarootdir)/info}.  (If you are using Autoconf,
561 write it as @samp{@@infodir@@}.)  @code{infodir} is separate from
562 @code{docdir} for compatibility with existing practice.
563
564 @item htmldir
565 @itemx dvidir
566 @itemx pdfdir
567 @itemx psdir
568 Directories for installing documentation files in the particular
569 format.  They should all be set to @code{$(docdir)} by default.  (If
570 you are using Autoconf, write them as @samp{@@htmldir@@},
571 @samp{@@dvidir@@}, etc.)  Packages which supply several translations
572 of their documentation should install them in
573 @samp{$(htmldir)/}@var{ll}, @samp{$(pdfdir)/}@var{ll}, etc. where
574 @var{ll} is a locale abbreviation such as @samp{en} or @samp{pt_BR}.
575
576 @item libdir
577 The directory for object files and libraries of object code.  Do not
578 install executables here, they probably ought to go in @file{$(libexecdir)}
579 instead.  The value of @code{libdir} should normally be
580 @file{/usr/local/lib}, but write it as @file{$(exec_prefix)/lib}.
581 (If you are using Autoconf, write it as @samp{@@libdir@@}.)
582
583 @item lispdir
584 The directory for installing any Emacs Lisp files in this package.  By
585 default, it should be @file{/usr/local/share/emacs/site-lisp}, but it
586 should be written as @file{$(datarootdir)/emacs/site-lisp}.
587
588 If you are using Autoconf, write the default as @samp{@@lispdir@@}.
589 In order to make @samp{@@lispdir@@} work, you need the following lines
590 in your @file{configure.in} file:
591
592 @example
593 lispdir='$@{datarootdir@}/emacs/site-lisp'
594 AC_SUBST(lispdir)
595 @end example
596
597 @item localedir
598 The directory for installing locale-specific message catalogs for this
599 package.  By default, it should be @file{/usr/local/share/locale}, but
600 it should be written as @file{$(datarootdir)/locale}.  (If you are
601 using Autoconf, write it as @samp{@@localedir@@}.)  This directory
602 usually has a subdirectory per locale.
603 @end table
604
605 Unix-style man pages are installed in one of the following:
606
607 @table @samp
608 @item mandir
609 The top-level directory for installing the man pages (if any) for this
610 package.  It will normally be @file{/usr/local/share/man}, but you
611 should write it as @file{$(datarootdir)/man}.  (If you are using
612 Autoconf, write it as @samp{@@mandir@@}.)
613
614 @item man1dir
615 The directory for installing section 1 man pages.  Write it as
616 @file{$(mandir)/man1}.
617 @item man2dir
618 The directory for installing section 2 man pages.  Write it as
619 @file{$(mandir)/man2}
620 @item @dots{}
621
622 @strong{Don't make the primary documentation for any GNU software be a
623 man page.  Write a manual in Texinfo instead.  Man pages are just for
624 the sake of people running GNU software on Unix, which is a secondary
625 application only.}
626
627 @item manext
628 The file name extension for the installed man page.  This should contain
629 a period followed by the appropriate digit; it should normally be @samp{.1}.
630
631 @item man1ext
632 The file name extension for installed section 1 man pages.
633 @item man2ext
634 The file name extension for installed section 2 man pages.
635 @item @dots{}
636 Use these names instead of @samp{manext} if the package needs to install man
637 pages in more than one section of the manual.
638 @end table
639
640 And finally, you should set the following variable:
641
642 @table @samp
643 @item srcdir
644 The directory for the sources being compiled.  The value of this
645 variable is normally inserted by the @code{configure} shell script.
646 (If you are using Autoconf, use @samp{srcdir = @@srcdir@@}.)
647 @end table
648
649 For example:
650
651 @smallexample
652 @c I have changed some of the comments here slightly to fix an overfull
653 @c hbox, so the make manual can format correctly. --roland
654 # Common prefix for installation directories.
655 # NOTE: This directory must exist when you start the install.
656 prefix = /usr/local
657 datarootdir = $(prefix)/share
658 datadir = $(datarootdir)
659 exec_prefix = $(prefix)
660 # Where to put the executable for the command `gcc'.
661 bindir = $(exec_prefix)/bin
662 # Where to put the directories used by the compiler.
663 libexecdir = $(exec_prefix)/libexec
664 # Where to put the Info files.
665 infodir = $(datarootdir)/info
666 @end smallexample
667
668 If your program installs a large number of files into one of the
669 standard user-specified directories, it might be useful to group them
670 into a subdirectory particular to that program.  If you do this, you
671 should write the @code{install} rule to create these subdirectories.
672
673 Do not expect the user to include the subdirectory name in the value of
674 any of the variables listed above.  The idea of having a uniform set of
675 variable names for installation directories is to enable the user to
676 specify the exact same values for several different GNU packages.  In
677 order for this to be useful, all the packages must be designed so that
678 they will work sensibly when the user does so.
679
680 At times, not all of these variables may be implemented in the current
681 release of Autoconf and/or Automake; but as of Autoconf@tie{}2.60, we
682 believe all of them are.  When any are missing, the descriptions here
683 serve as specifications for what Autoconf will implement.  As a
684 programmer, you can either use a development version of Autoconf or
685 avoid using these variables until a stable release is made which
686 supports them.
687
688
689 @node Standard Targets
690 @section Standard Targets for Users
691
692 All GNU programs should have the following targets in their Makefiles:
693
694 @table @samp
695 @item all
696 Compile the entire program.  This should be the default target.  This
697 target need not rebuild any documentation files; Info files should
698 normally be included in the distribution, and DVI (and other
699 documentation format) files should be made only when explicitly asked
700 for.
701
702 By default, the Make rules should compile and link with @samp{-g}, so
703 that executable programs have debugging symbols.  Users who don't mind
704 being helpless can strip the executables later if they wish.
705
706 @item install
707 Compile the program and copy the executables, libraries, and so on to
708 the file names where they should reside for actual use.  If there is a
709 simple test to verify that a program is properly installed, this target
710 should run that test.
711
712 Do not strip executables when installing them.  Devil-may-care users can
713 use the @code{install-strip} target to do that.
714
715 If possible, write the @code{install} target rule so that it does not
716 modify anything in the directory where the program was built, provided
717 @samp{make all} has just been done.  This is convenient for building the
718 program under one user name and installing it under another.
719
720 The commands should create all the directories in which files are to be
721 installed, if they don't already exist.  This includes the directories
722 specified as the values of the variables @code{prefix} and
723 @code{exec_prefix}, as well as all subdirectories that are needed.
724 One way to do this is by means of an @code{installdirs} target
725 as described below.
726
727 Use @samp{-} before any command for installing a man page, so that
728 @code{make} will ignore any errors.  This is in case there are systems
729 that don't have the Unix man page documentation system installed.
730
731 The way to install Info files is to copy them into @file{$(infodir)}
732 with @code{$(INSTALL_DATA)} (@pxref{Command Variables}), and then run
733 the @code{install-info} program if it is present.  @code{install-info}
734 is a program that edits the Info @file{dir} file to add or update the
735 menu entry for the given Info file; it is part of the Texinfo package.
736 Here is a sample rule to install an Info file:
737
738 @comment This example has been carefully formatted for the Make manual.
739 @comment Please do not reformat it without talking to bug-make@gnu.org.
740 @smallexample
741 $(DESTDIR)$(infodir)/foo.info: foo.info
742         $(POST_INSTALL)
743 # There may be a newer info file in . than in srcdir.
744         -if test -f foo.info; then d=.; \
745          else d=$(srcdir); fi; \
746         $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@@; \
747 # Run install-info only if it exists.
748 # Use `if' instead of just prepending `-' to the
749 # line so we notice real errors from install-info.
750 # We use `$(SHELL) -c' because some shells do not
751 # fail gracefully when there is an unknown command.
752         if $(SHELL) -c 'install-info --version' \
753            >/dev/null 2>&1; then \
754           install-info --dir-file=$(DESTDIR)$(infodir)/dir \
755                        $(DESTDIR)$(infodir)/foo.info; \
756         else true; fi
757 @end smallexample
758
759 When writing the @code{install} target, you must classify all the
760 commands into three categories: normal ones, @dfn{pre-installation}
761 commands and @dfn{post-installation} commands.  @xref{Install Command
762 Categories}.
763
764 @item install-html
765 @itemx install-dvi
766 @itemx install-pdf
767 @itemx install-ps
768 These targets install documentation in formats other than Info;
769 they're intended to be called explicitly by the person installing the
770 package, if that format is desired.  GNU prefers Info files, so these
771 must be installed by the @code{install} target.
772
773 When you have many documentation files to install, we recommend that
774 you avoid collisions and clutter by arranging for these targets to
775 install in subdirectories of the appropriate installation directory,
776 such as @code{htmldir}.  As one example, if your package has multiple
777 manuals, and you wish to install HTML documentation with many files
778 (such as the ``split'' mode output by @code{makeinfo --html}), you'll
779 certainly want to use subdirectories, or two nodes with the same name
780 in different manuals will overwrite each other.
781
782 Please make these @code{install-@var{format}} targets invoke the
783 commands for the @var{format} target, for example, by making
784 @var{format} a dependency.
785
786 @item uninstall
787 Delete all the installed files---the copies that the @samp{install}
788 and @samp{install-*} targets create.
789
790 This rule should not modify the directories where compilation is done,
791 only the directories where files are installed.
792
793 The uninstallation commands are divided into three categories, just like
794 the installation commands.  @xref{Install Command Categories}.
795
796 @item install-strip
797 Like @code{install}, but strip the executable files while installing
798 them.  In simple cases, this target can use the @code{install} target in
799 a simple way:
800
801 @smallexample
802 install-strip:
803         $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
804                 install
805 @end smallexample
806
807 But if the package installs scripts as well as real executables, the
808 @code{install-strip} target can't just refer to the @code{install}
809 target; it has to strip the executables but not the scripts.
810
811 @code{install-strip} should not strip the executables in the build
812 directory which are being copied for installation.  It should only strip
813 the copies that are installed.
814
815 Normally we do not recommend stripping an executable unless you are sure
816 the program has no bugs.  However, it can be reasonable to install a
817 stripped executable for actual execution while saving the unstripped
818 executable elsewhere in case there is a bug.
819
820 @comment The gratuitous blank line here is to make the table look better
821 @comment in the printed Make manual.  Please leave it in.
822 @item clean
823
824 Delete all files in the current directory that are normally created by
825 building the program.  Also delete files in other directories if they
826 are created by this makefile.  However, don't delete the files that
827 record the configuration.  Also preserve files that could be made by
828 building, but normally aren't because the distribution comes with
829 them.  There is no need to delete parent directories that were created
830 with @samp{mkdir -p}, since they could have existed anyway.
831
832 Delete @file{.dvi} files here if they are not part of the distribution.
833
834 @item distclean
835 Delete all files in the current directory (or created by this
836 makefile) that are created by configuring or building the program.  If
837 you have unpacked the source and built the program without creating
838 any other files, @samp{make distclean} should leave only the files
839 that were in the distribution.  However, there is no need to delete
840 parent directories that were created with @samp{mkdir -p}, since they
841 could have existed anyway.
842
843 @item mostlyclean
844 Like @samp{clean}, but may refrain from deleting a few files that people
845 normally don't want to recompile.  For example, the @samp{mostlyclean}
846 target for GCC does not delete @file{libgcc.a}, because recompiling it
847 is rarely necessary and takes a lot of time.
848
849 @item maintainer-clean
850 Delete almost everything that can be reconstructed with this Makefile.
851 This typically includes everything deleted by @code{distclean}, plus
852 more: C source files produced by Bison, tags tables, Info files, and
853 so on.
854
855 The reason we say ``almost everything'' is that running the command
856 @samp{make maintainer-clean} should not delete @file{configure} even
857 if @file{configure} can be remade using a rule in the Makefile.  More
858 generally, @samp{make maintainer-clean} should not delete anything
859 that needs to exist in order to run @file{configure} and then begin to
860 build the program.  Also, there is no need to delete parent
861 directories that were created with @samp{mkdir -p}, since they could
862 have existed anyway.  These are the only exceptions;
863 @code{maintainer-clean} should delete everything else that can be
864 rebuilt.
865
866 The @samp{maintainer-clean} target is intended to be used by a maintainer of
867 the package, not by ordinary users.  You may need special tools to
868 reconstruct some of the files that @samp{make maintainer-clean} deletes.
869 Since these files are normally included in the distribution, we don't
870 take care to make them easy to reconstruct.  If you find you need to
871 unpack the full distribution again, don't blame us.
872
873 To help make users aware of this, the commands for the special
874 @code{maintainer-clean} target should start with these two:
875
876 @smallexample
877 @@echo 'This command is intended for maintainers to use; it'
878 @@echo 'deletes files that may need special tools to rebuild.'
879 @end smallexample
880
881 @item TAGS
882 Update a tags table for this program.
883 @c ADR: how?
884
885 @item info
886 Generate any Info files needed.  The best way to write the rules is as
887 follows:
888
889 @smallexample
890 info: foo.info
891
892 foo.info: foo.texi chap1.texi chap2.texi
893         $(MAKEINFO) $(srcdir)/foo.texi
894 @end smallexample
895
896 @noindent
897 You must define the variable @code{MAKEINFO} in the Makefile.  It should
898 run the @code{makeinfo} program, which is part of the Texinfo
899 distribution.
900
901 Normally a GNU distribution comes with Info files, and that means the
902 Info files are present in the source directory.  Therefore, the Make
903 rule for an info file should update it in the source directory.  When
904 users build the package, ordinarily Make will not update the Info files
905 because they will already be up to date.
906
907 @item dvi
908 @itemx html
909 @itemx pdf
910 @itemx ps
911 Generate documentation files in the given format.  These targets
912 should always exist, but any or all can be a no-op if the given output
913 format cannot be generated.  These targets should not be dependencies
914 of the @code{all} target; the user must manually invoke them.
915
916 Here's an example rule for generating DVI files from Texinfo:
917
918 @smallexample
919 dvi: foo.dvi
920
921 foo.dvi: foo.texi chap1.texi chap2.texi
922         $(TEXI2DVI) $(srcdir)/foo.texi
923 @end smallexample
924
925 @noindent
926 You must define the variable @code{TEXI2DVI} in the Makefile.  It should
927 run the program @code{texi2dvi}, which is part of the Texinfo
928 distribution.@footnote{@code{texi2dvi} uses @TeX{} to do the real work
929 of formatting. @TeX{} is not distributed with Texinfo.}  Alternatively,
930 write just the dependencies, and allow GNU @code{make} to provide the command.
931
932 Here's another example, this one for generating HTML from Texinfo:
933
934 @smallexample
935 html: foo.html
936
937 foo.html: foo.texi chap1.texi chap2.texi
938         $(TEXI2HTML) $(srcdir)/foo.texi
939 @end smallexample
940
941 @noindent
942 Again, you would define the variable @code{TEXI2HTML} in the Makefile;
943 for example, it might run @code{makeinfo --no-split --html}
944 (@command{makeinfo} is part of the Texinfo distribution).
945
946 @item dist
947 Create a distribution tar file for this program.  The tar file should be
948 set up so that the file names in the tar file start with a subdirectory
949 name which is the name of the package it is a distribution for.  This
950 name can include the version number.
951
952 For example, the distribution tar file of GCC version 1.40 unpacks into
953 a subdirectory named @file{gcc-1.40}.
954
955 The easiest way to do this is to create a subdirectory appropriately
956 named, use @code{ln} or @code{cp} to install the proper files in it, and
957 then @code{tar} that subdirectory.
958
959 Compress the tar file with @code{gzip}.  For example, the actual
960 distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}.
961
962 The @code{dist} target should explicitly depend on all non-source files
963 that are in the distribution, to make sure they are up to date in the
964 distribution.
965 @ifset CODESTD
966 @xref{Releases, , Making Releases}.
967 @end ifset
968 @ifclear CODESTD
969 @xref{Releases, , Making Releases, standards, GNU Coding Standards}.
970 @end ifclear
971
972 @item check
973 Perform self-tests (if any).  The user must build the program before
974 running the tests, but need not install the program; you should write
975 the self-tests so that they work when the program is built but not
976 installed.
977 @end table
978
979 The following targets are suggested as conventional names, for programs
980 in which they are useful.
981
982 @table @code
983 @item installcheck
984 Perform installation tests (if any).  The user must build and install
985 the program before running the tests.  You should not assume that
986 @file{$(bindir)} is in the search path.
987
988 @item installdirs
989 It's useful to add a target named @samp{installdirs} to create the
990 directories where files are installed, and their parent directories.
991 There is a script called @file{mkinstalldirs} which is convenient for
992 this; you can find it in the Texinfo package.
993 @c It's in /gd/gnu/lib/mkinstalldirs.
994 You can use a rule like this:
995
996 @comment This has been carefully formatted to look decent in the Make manual.
997 @comment Please be sure not to make it extend any further to the right.--roland
998 @smallexample
999 # Make sure all installation directories (e.g. $(bindir))
1000 # actually exist by making them if necessary.
1001 installdirs: mkinstalldirs
1002         $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
1003                                 $(libdir) $(infodir) \
1004                                 $(mandir)
1005 @end smallexample
1006
1007 @noindent
1008 or, if you wish to support @env{DESTDIR},
1009
1010 @smallexample
1011 # Make sure all installation directories (e.g. $(bindir))
1012 # actually exist by making them if necessary.
1013 installdirs: mkinstalldirs
1014         $(srcdir)/mkinstalldirs \
1015             $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
1016             $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
1017             $(DESTDIR)$(mandir)
1018 @end smallexample
1019
1020 This rule should not modify the directories where compilation is done.
1021 It should do nothing but create installation directories.
1022 @end table
1023
1024 @node Install Command Categories
1025 @section Install Command Categories
1026
1027 @cindex pre-installation commands
1028 @cindex post-installation commands
1029 When writing the @code{install} target, you must classify all the
1030 commands into three categories: normal ones, @dfn{pre-installation}
1031 commands and @dfn{post-installation} commands.
1032
1033 Normal commands move files into their proper places, and set their
1034 modes.  They may not alter any files except the ones that come entirely
1035 from the package they belong to.
1036
1037 Pre-installation and post-installation commands may alter other files;
1038 in particular, they can edit global configuration files or data bases.
1039
1040 Pre-installation commands are typically executed before the normal
1041 commands, and post-installation commands are typically run after the
1042 normal commands.
1043
1044 The most common use for a post-installation command is to run
1045 @code{install-info}.  This cannot be done with a normal command, since
1046 it alters a file (the Info directory) which does not come entirely and
1047 solely from the package being installed.  It is a post-installation
1048 command because it needs to be done after the normal command which
1049 installs the package's Info files.
1050
1051 Most programs don't need any pre-installation commands, but we have the
1052 feature just in case it is needed.
1053
1054 To classify the commands in the @code{install} rule into these three
1055 categories, insert @dfn{category lines} among them.  A category line
1056 specifies the category for the commands that follow.
1057
1058 A category line consists of a tab and a reference to a special Make
1059 variable, plus an optional comment at the end.  There are three
1060 variables you can use, one for each category; the variable name
1061 specifies the category.  Category lines are no-ops in ordinary execution
1062 because these three Make variables are normally undefined (and you
1063 @emph{should not} define them in the makefile).
1064
1065 Here are the three possible category lines, each with a comment that
1066 explains what it means:
1067
1068 @smallexample
1069         $(PRE_INSTALL)     # @r{Pre-install commands follow.}
1070         $(POST_INSTALL)    # @r{Post-install commands follow.}
1071         $(NORMAL_INSTALL)  # @r{Normal commands follow.}
1072 @end smallexample
1073
1074 If you don't use a category line at the beginning of the @code{install}
1075 rule, all the commands are classified as normal until the first category
1076 line.  If you don't use any category lines, all the commands are
1077 classified as normal.
1078
1079 These are the category lines for @code{uninstall}:
1080
1081 @smallexample
1082         $(PRE_UNINSTALL)     # @r{Pre-uninstall commands follow.}
1083         $(POST_UNINSTALL)    # @r{Post-uninstall commands follow.}
1084         $(NORMAL_UNINSTALL)  # @r{Normal commands follow.}
1085 @end smallexample
1086
1087 Typically, a pre-uninstall command would be used for deleting entries
1088 from the Info directory.
1089
1090 If the @code{install} or @code{uninstall} target has any dependencies
1091 which act as subroutines of installation, then you should start
1092 @emph{each} dependency's commands with a category line, and start the
1093 main target's commands with a category line also.  This way, you can
1094 ensure that each command is placed in the right category regardless of
1095 which of the dependencies actually run.
1096
1097 Pre-installation and post-installation commands should not run any
1098 programs except for these:
1099
1100 @example
1101 [ basename bash cat chgrp chmod chown cmp cp dd diff echo
1102 egrep expand expr false fgrep find getopt grep gunzip gzip
1103 hostname install install-info kill ldconfig ln ls md5sum
1104 mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
1105 test touch true uname xargs yes
1106 @end example
1107
1108 @cindex binary packages
1109 The reason for distinguishing the commands in this way is for the sake
1110 of making binary packages.  Typically a binary package contains all the
1111 executables and other files that need to be installed, and has its own
1112 method of installing them---so it does not need to run the normal
1113 installation commands.  But installing the binary package does need to
1114 execute the pre-installation and post-installation commands.
1115
1116 Programs to build binary packages work by extracting the
1117 pre-installation and post-installation commands.  Here is one way of
1118 extracting the pre-installation commands (the @option{-s} option to
1119 @command{make} is needed to silence messages about entering
1120 subdirectories):
1121
1122 @smallexample
1123 make -s -n install -o all \
1124       PRE_INSTALL=pre-install \
1125       POST_INSTALL=post-install \
1126       NORMAL_INSTALL=normal-install \
1127   | gawk -f pre-install.awk
1128 @end smallexample
1129
1130 @noindent
1131 where the file @file{pre-install.awk} could contain this:
1132
1133 @smallexample
1134 $0 ~ /^(normal-install|post-install)[ \t]*$/ @{on = 0@}
1135 on @{print $0@}
1136 $0 ~ /^pre-install[ \t]*$/ @{on = 1@}
1137 @end smallexample