X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=doc%2Fmake-stds.texi;h=055996e0882b37c3301dc8041609918f7eb1388c;hb=f2f428037cd5dcf93c4cc8cfacf4dd92f0f250bd;hp=205a6db2a14134db29433d77e8d523a78718ffa7;hpb=beeb1a36059a79d5b5514f2cc98fef0f0eb71717;p=gnulib.git diff --git a/doc/make-stds.texi b/doc/make-stds.texi index 205a6db2a..055996e08 100644 --- a/doc/make-stds.texi +++ b/doc/make-stds.texi @@ -8,11 +8,11 @@ @cindex conventions for makefiles @cindex standards for makefiles -@c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, -@c 2004, 2005, 2006, 2007 Free Software Foundation, Inc. - +@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, +@c 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +@c @c Permission is granted to copy, distribute and/or modify this document -@c under the terms of the GNU Free Documentation License, Version 1.2 +@c under the terms of the GNU Free Documentation License, Version 1.3 @c or any later version published by the Free Software Foundation; @c with no Invariant Sections, with no @c Front-Cover Texts, and with no Back-Cover Texts. @@ -33,7 +33,10 @@ chapter @end iftex describes conventions for writing the Makefiles for GNU programs. Using Automake will help you write a Makefile that follows these -conventions. +conventions. For more information on portable Makefiles, see +@sc{posix} and @ref{Portable Make, Portable Make Programming,, autoconf, +Autoconf}. + @menu * Makefile Basics:: General conventions for Makefiles. @@ -144,8 +147,10 @@ subtargets) work correctly with a parallel @code{make}. @section Utilities in Makefiles Write the Makefile commands (and any shell scripts, such as -@code{configure}) to run in @code{sh}, not in @code{csh}. Don't use any -special features of @code{ksh} or @code{bash}. +@code{configure}) to run under @code{sh} (both the traditional Bourne +shell and the @sc{posix} shell), not @code{csh}. Don't use any +special features of @code{ksh} or @code{bash}, or @sc{posix} features +not widely supported in traditional Bourne @code{sh}. The @code{configure} script and the Makefile rules for building and installation should not use any utilities directly except these: @@ -156,17 +161,22 @@ installation should not use any utilities directly except these: @example awk cat cmp cp diff echo egrep expr false grep install-info -ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true +ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch tr true @end example -The compression program @code{gzip} can be used in the @code{dist} rule. +Compression programs such as @code{gzip} can be used in the +@code{dist} rule. + +Generally, stick to the widely-supported (usually +@sc{posix}-specified) options and features of these programs. For +example, don't use @samp{mkdir -p}, convenient as it may be, because a +few systems don't support it at all and with others, it is not safe +for parallel execution. For a list of known incompatibilities, see +@ref{Portable Shell, Portable Shell Programming,, autoconf, Autoconf}. -Stick to the generally supported options for these programs. For -example, don't use @samp{mkdir -p}, convenient as it may be, because -most systems don't support it. It is a good idea to avoid creating symbolic links in makefiles, since a -few systems don't support them. +few file systems don't support them. The Makefile rules for building and installation can also use compilers and related programs, but should do so via @code{make} variables so that the @@ -958,6 +968,8 @@ then @code{tar} that subdirectory. Compress the tar file with @code{gzip}. For example, the actual distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}. +It is ok to support other free compression formats as well, such as +@code{bzip2} and @code{lzma}. The @code{dist} target should explicitly depend on all non-source files that are in the distribution, to make sure they are up to date in the