mirror of
https://github.com/mirror/make.git
synced 2024-12-27 13:20:34 +08:00
* Manual updates: added xrefs, some typos sent by users.
* Change the build env. to not link libglob.a unless we need it.
This commit is contained in:
parent
c4353af3f9
commit
ecb3bca9f5
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
||||
1999-03-26 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* configure.in: Substitute GLOBLIB if we need the link the
|
||||
glob/libglob.a library.
|
||||
* Makefile.am (make_LDADD): Use the subst variable GLOBLIB so we
|
||||
don't link the local libglob.a at all if we don't need it.
|
||||
* build.template: Don't compile glob/*.o unless we want globlib.
|
||||
* maintMakefile (build.sh.in): Substitute the glob/*.o files
|
||||
separately.
|
||||
|
||||
1999-03-25 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* make.texinfo: Various typos and additions, pointed out by James
|
||||
G. Sack <jsack@dornfeld.com>.
|
||||
|
||||
1999-03-22 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* make.texinfo (Functions): Add a new section documenting the new
|
||||
|
@ -10,7 +10,7 @@ make_SOURCES = main.c commands.c job.c dir.c file.c misc.c read.c remake.c \
|
||||
commands.h dep.h filedef.h job.h make.h rule.h variable.h \
|
||||
signame.c signame.h \
|
||||
getopt.c getopt1.c getopt.h
|
||||
make_LDADD = @LIBOBJS@ @ALLOCA@ glob/libglob.a
|
||||
make_LDADD = @LIBOBJS@ @ALLOCA@ @GLOBLIB@
|
||||
|
||||
info_TEXINFOS = make.texinfo
|
||||
man_MANS = make.1
|
||||
|
@ -32,6 +32,7 @@ ALLOCA='@ALLOCA@'
|
||||
LOADLIBES='@LIBS@'
|
||||
extras='@LIBOBJS@'
|
||||
REMOTE='@REMOTE@'
|
||||
GLOBLIB='@GLOBLIB@'
|
||||
|
||||
# Common prefix for machine-independent installed files.
|
||||
prefix='@prefix@'
|
||||
@ -48,6 +49,10 @@ set -e
|
||||
# These are all the objects we need to link together.
|
||||
objs="%objs% remote-${REMOTE}.o ${extras} ${ALLOCA}"
|
||||
|
||||
if [ x"$GLOBLIB" != x ]; then
|
||||
objs="$objs %globobjs%"
|
||||
fi
|
||||
|
||||
# Compile the source files into those objects.
|
||||
for file in `echo ${objs} | sed 's/\.o/.c/g'`; do
|
||||
echo compiling ${file}...
|
||||
|
@ -169,7 +169,9 @@ AC_CACHE_VAL(make_cv_sys_gnu_glob, [
|
||||
case "$make_cv_sys_gnu_glob" in
|
||||
yes) AC_MSG_RESULT(yes) ;;
|
||||
no) AC_MSG_RESULT([no; using local copy])
|
||||
CPPFLAGS="$CPPFLAGS -I$srcdir/glob" ;;
|
||||
CPPFLAGS="$CPPFLAGS -I$srcdir/glob"
|
||||
AC_SUBST(GLOBLIB) GLOBLIB=glob/libglob.a
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@ -179,8 +181,6 @@ if test -r $srcdir/maintMakefile; then
|
||||
fi
|
||||
AC_SUBST_FILE(MAINT_MAKEFILE)
|
||||
|
||||
dnl AM_CONDITIONAL(MAINT_MAKEFILE, test -r $srcdir/maintMakefile)
|
||||
|
||||
AC_OUTPUT(Makefile glob/Makefile build.sh)
|
||||
|
||||
case "$make_badcust" in
|
||||
|
@ -440,10 +440,7 @@ string_glob (line)
|
||||
(&line, '\0', sizeof (struct nameseq),
|
||||
/* We do not want parse_file_seq to strip `./'s.
|
||||
That would break examples like:
|
||||
$(patsubst ./%.c,obj/%.o,$(wildcard ./*.c)). */
|
||||
|
||||
/* Yep, and the preceding comment triggers a GCC
|
||||
warning. Nothing wrong though. */
|
||||
$(patsubst ./%.c,obj/%.o,$(wildcard ./?*.c)). */
|
||||
0),
|
||||
sizeof (struct nameseq));
|
||||
|
||||
|
@ -45,9 +45,9 @@ NMakefile: NMakefile.template .dep_segment Makefile.am maintMakefile
|
||||
#
|
||||
build.sh.in: build.template Makefile.am maintMakefile
|
||||
rm -f $@
|
||||
sed -e 's@%objs%@$(filter-out remote-%, $(make_OBJECTS)\
|
||||
$(patsubst %.c,%.o,$(globsrc)))@' \
|
||||
$< > $@
|
||||
sed -e 's@%objs%@$(filter-out remote-%, $(make_OBJECTS)@' \
|
||||
-e 's@%globobjs%@$(patsubst %.c,%.o,$(globsrc)))@' \
|
||||
$< > $@
|
||||
chmod a-w+x $@
|
||||
|
||||
# Use automake to build a dependency list file, for "foreign" makefiles like
|
||||
@ -63,8 +63,7 @@ build.sh.in: build.template Makefile.am maintMakefile
|
||||
# And _I_ want them to be removed ;)
|
||||
#
|
||||
maintFILES = configure aclocal.m4 config.h.in Makefile.in stamp-h.in \
|
||||
glob/configure glob/aclocal.m4 glob/config.h.in glob/Makefile.in \
|
||||
glob/stamp-h.in
|
||||
glob/Makefile.in
|
||||
|
||||
MAINTAINERCLEANFILES = $(maintFILES) $(TEMPLATES) $(MTEMPLATES) NMakefile \
|
||||
missing build.sh.in .dep_segment
|
||||
|
3
make.h
3
make.h
@ -297,8 +297,7 @@ extern char *alloca ();
|
||||
# define streq(a, b) (strcmp ((a), (b)) == 0)
|
||||
# define strieq(a, b) (strcmp ((a), (b)) == 0)
|
||||
#endif
|
||||
|
||||
#define strneq(a, b, n) (strncmp((a), (b), (n)) == 0)
|
||||
#define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
|
||||
|
||||
/* Add to VAR the hashing value of C, one character in a name. */
|
||||
#define HASH(var, c) \
|
||||
|
68
make.texinfo
68
make.texinfo
@ -81,6 +81,8 @@ Published by the Free Software Foundation @*
|
||||
Boston, MA 02111-1307 USA @*
|
||||
ISBN @value{ISBN} @*
|
||||
|
||||
Maintenance and updates since Version 3.76 by Paul D. Smith.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
@ -332,8 +334,11 @@ Implicit Rule for Archive Member Targets
|
||||
The @code{make} utility automatically determines which pieces of a large
|
||||
program need to be recompiled, and issues commands to recompile them.
|
||||
This manual describes GNU @code{make}, which was implemented by Richard
|
||||
Stallman and Roland McGrath. GNU @code{make} conforms to section 6.2 of
|
||||
@cite{IEEE Standard 1003.2-1992} (POSIX.2).
|
||||
Stallman and Roland McGrath. Development since Version 3.76 has been
|
||||
handled by Paul D. Smith.
|
||||
|
||||
GNU @code{make} conforms to section 6.2 of @cite{IEEE Standard
|
||||
1003.2-1992} (POSIX.2).
|
||||
@cindex POSIX
|
||||
@cindex IEEE Standard 1003.2
|
||||
@cindex standards conformance
|
||||
@ -2184,10 +2189,11 @@ last-modification time, when the rule's commands were last executed. It
|
||||
does so because one of the commands is a @code{touch} command to update the
|
||||
target file.
|
||||
|
||||
The empty target file must have some dependencies. When you ask to remake
|
||||
the empty target, the commands are executed if any dependency is more
|
||||
recent than the target; in other words, if a dependency has changed since
|
||||
the last time you remade the target. Here is an example:
|
||||
The empty target file should have some dependencies (otherwise it
|
||||
doesn't make sense). When you ask to remake the empty target, the
|
||||
commands are executed if any dependency is more recent than the target;
|
||||
in other words, if a dependency has changed since the last time you
|
||||
remade the target. Here is an example:
|
||||
|
||||
@example
|
||||
print: foo.c bar.c
|
||||
@ -2277,6 +2283,15 @@ intermediate files, except that they are never automatically deleted.
|
||||
@code{.SECONDARY} with no dependencies marks all file targets mentioned
|
||||
in the makefile as secondary.
|
||||
|
||||
@findex .DELETE_ON_ERROR
|
||||
@item .DELETE_ON_ERROR
|
||||
@cindex removing targets on failure
|
||||
|
||||
If @code{.DELETE_ON_ERROR} is mentioned as a target anywhere in the
|
||||
makefile, then @code{make} will delete the target of a rule if it has
|
||||
changed and its commands exit with a nonzero exit status, just as it
|
||||
does when it receives a signal. @xref{Errors, ,Errors in Commands}.
|
||||
|
||||
@findex .IGNORE
|
||||
@item .IGNORE
|
||||
|
||||
@ -2295,7 +2310,7 @@ commands. @xref{Errors, ,Errors in Commands}.
|
||||
@item .SILENT
|
||||
|
||||
If you specify dependencies for @code{.SILENT}, then @code{make} will
|
||||
not the print commands to remake those particular files before executing
|
||||
not print the commands to remake those particular files before executing
|
||||
them. The commands for @code{.SILENT} are not meaningful.
|
||||
|
||||
If mentioned as a target with no dependencies, @code{.SILENT} says not
|
||||
@ -2853,8 +2868,8 @@ the makefile:
|
||||
@cindex @code{--just-print}
|
||||
@cindex @code{--dry-run}
|
||||
@cindex @code{--recon}
|
||||
When @code{make} is given the flag @samp{-n} or @samp{--just-print},
|
||||
echoing is all that happens, no execution. @xref{Options Summary,
|
||||
When @code{make} is given the flag @samp{-n} or @samp{--just-print}
|
||||
it only echoes commands, it won't execute them. @xref{Options Summary,
|
||||
,Summary of Options}. In this case and only this case, even the
|
||||
commands starting with @samp{@@} are printed. This flag is useful for
|
||||
finding out which commands @code{make} thinks are necessary without
|
||||
@ -3563,8 +3578,8 @@ MAKEOVERRIDES =
|
||||
@cindex E2BIG
|
||||
This is not usually useful to do. However, some systems have a small
|
||||
fixed limit on the size of the environment, and putting so much
|
||||
information in into the value of @code{MAKEFLAGS} can exceed it.
|
||||
If you see the error message @samp{Arg list too long}, this may be the problem.
|
||||
information into the value of @code{MAKEFLAGS} can exceed it. If you
|
||||
see the error message @samp{Arg list too long}, this may be the problem.
|
||||
@findex .POSIX
|
||||
@cindex POSIX.2
|
||||
(For strict compliance with POSIX.2, changing @code{MAKEOVERRIDES} does
|
||||
@ -6007,6 +6022,7 @@ and the resulting message is displayed, but processing of the makefile
|
||||
continues.
|
||||
|
||||
The result of the expansion of this function is the empty string.
|
||||
@end table
|
||||
|
||||
@node Running, Implicit Rules, Functions, Top
|
||||
@chapter How to Run @code{make}
|
||||
@ -6974,7 +6990,7 @@ running the C preprocessor, @code{cpp}. The precise command is
|
||||
@pindex .o
|
||||
@file{@var{n}} is made automatically from @file{@var{n}.o} by running
|
||||
the linker (usually called @code{ld}) via the C compiler. The precise
|
||||
command used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES)}}.
|
||||
command used is @w{@samp{$(CC) $(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}.
|
||||
|
||||
This rule does the right thing for a simple program with only one
|
||||
source file. It will also do the right thing if there are multiple
|
||||
@ -7708,9 +7724,9 @@ lib: foo.o bar.o lose.o win.o
|
||||
@end example
|
||||
|
||||
Of the variables listed above, four have values that are single file
|
||||
names, and two have values that are lists of file names. These six have
|
||||
variants that get just the file's directory name or just the file name
|
||||
within the directory. The variant variables' names are formed by
|
||||
names, and three have values that are lists of file names. These seven
|
||||
have variants that get just the file's directory name or just the file
|
||||
name within the directory. The variant variables' names are formed by
|
||||
appending @samp{D} or @samp{F}, respectively. These variants are
|
||||
semi-obsolete in GNU @code{make} since the functions @code{dir} and
|
||||
@code{notdir} can be used to get a similar effect (@pxref{File Name
|
||||
@ -8408,8 +8424,8 @@ in the normal way (@pxref{Suffix Rules}). Thus a double-suffix rule
|
||||
Here is a summary of the features of GNU @code{make}, for comparison
|
||||
with and credit to other versions of @code{make}. We consider the
|
||||
features of @code{make} in 4.2 BSD systems as a baseline. If you are
|
||||
concerned with writing portable makefiles, you should use only the
|
||||
features of @code{make} @emph{not} listed here or in @ref{Missing}.
|
||||
concerned with writing portable makefiles, you should not use the
|
||||
features of @code{make} listed here, nor the ones in @ref{Missing}.
|
||||
|
||||
Many features come from the version of @code{make} in System V.
|
||||
|
||||
@ -9095,7 +9111,7 @@ These errors are not really @code{make} errors at all. They mean that a
|
||||
program that @code{make} invoked as part of a command script returned a
|
||||
non-0 error code (@samp{Error @var{NN}}), which @code{make} interprets
|
||||
as failure, or it exited in some other abnormal fashion (with a
|
||||
signal of some type).
|
||||
signal of some type). @xref{Errors, ,Errors in Commands}.
|
||||
|
||||
If no @code{***} is attached to the message, then the subprocess failed
|
||||
but the rule in the makefile was prefixed with the @code{-} special
|
||||
@ -9110,7 +9126,7 @@ One of the most common reasons for this message is that you (or perhaps
|
||||
your oh-so-helpful editor, as is the case with many MS-Windows editors)
|
||||
have attempted to indent your command scripts with spaces instead of a
|
||||
TAB character. Remember that every line in the command script must
|
||||
begin with a TAB character. Eight spaces do not count.
|
||||
begin with a TAB character. Eight spaces do not count. @xref{Rule Syntax}.
|
||||
|
||||
@item commands commence before first target. Stop.
|
||||
@itemx missing rule before commands. Stop.
|
||||
@ -9121,7 +9137,7 @@ must always be associated with a target.
|
||||
|
||||
The second form is generated if the line has a semicolon as the first
|
||||
non-whitespace character; @code{make} interprets this to mean you left
|
||||
out the "target: dependency" section of a rule.
|
||||
out the "target: dependency" section of a rule. @xref{Rule Syntax}.
|
||||
|
||||
@item No rule to make target `@var{xxx}'.
|
||||
@itemx No rule to make target `@var{xxx}', needed by `@var{yyy}'.
|
||||
@ -9142,6 +9158,7 @@ command line, and @code{make} couldn't find any makefiles to read in.
|
||||
The latter means that some makefile was found, but it didn't contain any
|
||||
default target and none was given on the command line. GNU @code{make}
|
||||
has nothing to do in these situations.
|
||||
@xref{Makefile Arguments, ,Arguments to Specify the Makefile}.@refill
|
||||
|
||||
@item Makefile `@var{xxx}' was not found.
|
||||
@itemx Included makefile `@var{xxx}' was not found.
|
||||
@ -9154,6 +9171,7 @@ GNU @code{make} allows commands to be specified only once per target
|
||||
(except for double-colon rules). If you give commands for a target
|
||||
which already has been defined to have commands, this warning is issued
|
||||
and the second set of commands will overwrite the first set.
|
||||
@xref{Multiple Rules, ,Multiple Rules for One Target}.
|
||||
|
||||
@item Circular @var{xxx} <- @var{yyy} dependency dropped.
|
||||
This means that @code{make} detected a loop in the dependency graph:
|
||||
@ -9164,7 +9182,8 @@ dependencies, etc., one of them depended on @var{xxx} again.
|
||||
This means you've defined a normal (recursive) @code{make} variable
|
||||
@var{xxx} that, when its expanded, will refer to itself (@var{xxx}).
|
||||
This is not allowed; either use simply-expanded variables (@code{:=}) or
|
||||
use the append operator (@code{+=}).
|
||||
use the append operator (@code{+=}). @xref{Using Variables, ,How to Use
|
||||
Variables}.
|
||||
|
||||
@item Unterminated variable reference. Stop.
|
||||
This means you forgot to provide the proper closing parenthesis
|
||||
@ -9173,7 +9192,7 @@ or brace in your variable or function reference.
|
||||
@item insufficient arguments to function `@var{xxx}'. Stop.
|
||||
This means you haven't provided the requisite number of arguments for
|
||||
this function. See the documentation of the function for a description
|
||||
of its arguments.
|
||||
of its arguments. @xref{Functions, ,Functions for Transforming Text}.
|
||||
|
||||
@item missing target pattern. Stop.
|
||||
@itemx multiple target patterns. Stop.
|
||||
@ -9181,7 +9200,8 @@ of its arguments.
|
||||
These are generated for malformed static pattern rules. The first means
|
||||
there's no pattern in the target section of the rule, the second means
|
||||
there are multiple patterns in the target section, and the third means
|
||||
the target doesn't contain a pattern character (@code{%}).
|
||||
the target doesn't contain a pattern character (@code{%}). @xref{Static
|
||||
Usage, ,Syntax of Static Pattern Rules}.
|
||||
|
||||
@end table
|
||||
|
||||
@ -9439,8 +9459,8 @@ dist: $(SRCS) $(AUX)
|
||||
-rm -rf `cat .fname`
|
||||
mkdir `cat .fname`
|
||||
ln $(SRCS) $(AUX) `cat .fname`
|
||||
-rm -rf `cat .fname` .fname
|
||||
tar chZf `cat .fname`.tar.Z `cat .fname`
|
||||
-rm -rf `cat .fname` .fname
|
||||
@end group
|
||||
|
||||
@group
|
||||
|
Loading…
Reference in New Issue
Block a user