X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=doc%2Fmake-stds.texi;h=cd9f0623a03e587b659ddc700dee788a91ac3a3e;hb=eecf6279cfd2b8aa43b7eb1752034b497fd67877;hp=9da9e228b1fdda548802716bfddcb947919dacee;hpb=2e04751b7494b7801a504de9c79d560bed7950f5;p=gnulib.git diff --git a/doc/make-stds.texi b/doc/make-stds.texi index 9da9e228b..cd9f0623a 100644 --- a/doc/make-stds.texi +++ b/doc/make-stds.texi @@ -8,8 +8,8 @@ @cindex conventions for makefiles @cindex standards for makefiles -@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001 Free -@c Software Foundation, Inc. +@c Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, +@c 2004, 2005 Free Software Foundation, Inc. @c Permission is granted to copy, distribute and/or modify this document @c under the terms of the GNU Free Documentation License, Version 1.1 @@ -293,9 +293,18 @@ installed. Installation directories should always be named by variables, so it is easy to install in a nonstandard place. The standard names for these -variables are described below. They are based on a standard filesystem -layout; variants of it are used in SVR4, 4.4BSD, GNU/Linux, Ultrix v4, -and other modern operating systems. +variables and the values they should have in GNU packages are +described below. They are based on a standard filesystem layout; +variants of it are used in GNU/Linux and other modern operating +systems. + +Installers are expected to override these values when calling +@command{make} (e.g., @kbd{make prefix=/usr install} or +@command{configure} (e.g., @kbd{configure --prefix=/usr}). GNU +packages should not try to guess which value should be appropriate for +these variables on the system they are being installed onto: use the +default settings specified here so that all GNU packages behave +identically, allowing the installer to achieve any desired layout. These two variables set the root for the installation. All the other installation directories should be subdirectories of one of these two, @@ -355,6 +364,12 @@ The directory for installing executable programs to be run by other programs rather than by users. This directory should normally be @file{/usr/local/libexec}, but write it as @file{$(exec_prefix)/libexec}. (If you are using Autoconf, write it as @samp{@@libexecdir@@}.) + +The definition of @samp{libexecdir} is the same for all packages, so +you should install your data in a subdirectory thereof. Most packages +install their data under @file{$(libexecdir)/@var{package-name}/}, +possibly within additional subdirectories thereof, such as +@file{$(libexecdir)/@var{package-name}/@var{machine}/@var{version}}. @end table Data files used by the program during its execution are divided into @@ -384,20 +399,26 @@ to put these various kinds of files in: @item datarootdir The root of the directory tree for read-only architecture-independent data files. This should normally be @file{/usr/local/share}, but -write it as @file{$(prefix)/share}. @samp{datadir}'s default value is -based on this variable; so are @samp{infodir}, @samp{mandir}, and others. +write it as @file{$(prefix)/share}. (If you are using Autoconf, write +it as @samp{@@datarootdir@@}.) @samp{datadir}'s default value is +based on this variable; so are @samp{infodir}, @samp{mandir}, and +others. @item datadir The directory for installing idiosyncratic read-only architecture-independent data files for this program. This is usually the same place as @samp{datarootdir}, but we use the two separate -variables so that you can move these idiosyncratic files without +variables so that you can move these program-specific files without altering the location for Info files, man pages, etc. -The default definition of @samp{datadir} should be +This should normally be @file{/usr/local/share}, but write it as @file{$(datarootdir)}. (If you are using Autoconf, write it as @samp{@@datadir@@}.) +The definition of @samp{datadir} is the same for all packages, so you +should install your data in a subdirectory thereof. Most packages +install their data under @file{$(datadir)/@var{package-name}/}. + @item sysconfdir The directory for installing read-only data files that pertain to a single machine--that is to say, files for configuring a host. Mailer @@ -525,7 +546,8 @@ AC_SUBST(lispdir) The directory for installing locale-specific message catalogs for this package. By default, it should be @file{/usr/local/share/locale}, but it should be written as @file{$(datarootdir)/locale}. (If you are -using Autoconf, write it as @samp{@@localedir@@}.) +using Autoconf, write it as @samp{@@localedir@@}.) This directory +usually has a subdirectory per locale. @end table Unix-style man pages are installed in one of the following: @@ -697,7 +719,7 @@ in different manuals will overwrite each other. @item uninstall Delete all the installed files---the copies that the @samp{install} -target creates. +and @samp{install-*} targets create. This rule should not modify the directories where compilation is done, only the directories where files are installed. @@ -1023,10 +1045,12 @@ execute the pre-installation and post-installation commands. Programs to build binary packages work by extracting the pre-installation and post-installation commands. Here is one way of -extracting the pre-installation commands: +extracting the pre-installation commands (the @option{-s} option to +@command{make} is needed to silence messages about entering +subdirectories): @smallexample -make -n install -o all \ +make -s -n install -o all \ PRE_INSTALL=pre-install \ POST_INSTALL=post-install \ NORMAL_INSTALL=normal-install \ @@ -1037,10 +1061,7 @@ make -n install -o all \ where the file @file{pre-install.awk} could contain this: @smallexample -$0 ~ /^\t[ \t]*(normal_install|post_install)[ \t]*$/ @{on = 0@} +$0 ~ /^(normal-install|post-install)[ \t]*$/ @{on = 0@} on @{print $0@} -$0 ~ /^\t[ \t]*pre_install[ \t]*$/ @{on = 1@} +$0 ~ /^pre-install[ \t]*$/ @{on = 1@} @end smallexample - -The resulting file of pre-installation commands is executed as a shell -script as part of installing the binary package.