mirror of
https://github.com/mirror/make.git
synced 2025-01-26 20:30:36 +08:00
Fix some documentation gitches.
Fix an uninitialized variable. Add builtin rules for Objective C. Add a new debug line that shows where the commands that are about to be run were defined.
This commit is contained in:
parent
52ebc531ce
commit
eda0e24ccd
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2007-05-11 Paul Smith <psmith@gnu.org>
|
||||
|
||||
* job.c (new_job): Add debug info to specify where make found the
|
||||
command script it is running to build a target.
|
||||
Fixes Savannah bug #18617.
|
||||
|
||||
* default.c (default_suffixes,default_suffix_rules,default_variables):
|
||||
Add support for Objective C. Fixes Savannah bug #16389.
|
||||
Based on a patch provided by Peter O'Gorman <peter@pogma.com>.
|
||||
|
||||
* function.c (func_lastword): Initialize p.
|
||||
|
||||
* doc/make.texi (Eval Function, Implicit Variables, Special Targets):
|
||||
Doc fixes noticed by Bob <twobanjobob@sbcglobal.net>. Patch from
|
||||
Dave Korn <dave.korn@artimi.com>
|
||||
|
||||
2007-05-08 Paul Smith <psmith@gnu.org>
|
||||
|
||||
Fix Savannah bug #19656:
|
||||
|
23
default.c
23
default.c
@ -41,11 +41,11 @@ static char default_suffixes[]
|
||||
.s .ss .i .ii .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
|
||||
.w .ch .cweb .web .com .sh .elc .el";
|
||||
#elif defined(__EMX__)
|
||||
= ".out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S \
|
||||
= ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \
|
||||
.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
|
||||
.w .ch .web .sh .elc .el .obj .exe .dll .lib";
|
||||
#else
|
||||
= ".out .a .ln .o .c .cc .C .cpp .p .f .F .r .y .l .s .S \
|
||||
= ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \
|
||||
.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \
|
||||
.w .ch .web .sh .elc .el";
|
||||
#endif
|
||||
@ -192,6 +192,8 @@ static char *default_suffix_rules[] =
|
||||
"$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
||||
".f",
|
||||
"$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
||||
".m",
|
||||
"$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
||||
".p",
|
||||
"$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@",
|
||||
".F",
|
||||
@ -221,6 +223,8 @@ static char *default_suffix_rules[] =
|
||||
"$(COMPILE.cpp) $(OUTPUT_OPTION) $<",
|
||||
".f.o",
|
||||
"$(COMPILE.f) $(OUTPUT_OPTION) $<",
|
||||
".m.o",
|
||||
"$(COMPILE.m) $(OUTPUT_OPTION) $<",
|
||||
".p.o",
|
||||
"$(COMPILE.p) $(OUTPUT_OPTION) $<",
|
||||
".F.o",
|
||||
@ -249,15 +253,18 @@ static char *default_suffix_rules[] =
|
||||
#endif
|
||||
".l.c",
|
||||
"@$(RM) $@ \n $(LEX.l) $< > $@",
|
||||
".ym.m",
|
||||
"$(YACC.m) $< \n mv -f y.tab.c $@",
|
||||
".lm.m",
|
||||
"@$(RM) $@ \n $(LEX.m) $< > $@",
|
||||
|
||||
".F.f",
|
||||
"$(PREPROCESS.F) $(OUTPUT_OPTION) $<",
|
||||
".r.f",
|
||||
"$(PREPROCESS.r) $(OUTPUT_OPTION) $<",
|
||||
|
||||
/* This might actually make lex.yy.c if there's no %R%
|
||||
directive in $*.l, but in that case why were you
|
||||
trying to make $*.r anyway? */
|
||||
/* This might actually make lex.yy.c if there's no %R% directive in $*.l,
|
||||
but in that case why were you trying to make $*.r anyway? */
|
||||
".l.r",
|
||||
"$(LEX.l) $< > $@ \n mv -f lex.yy.r $@",
|
||||
|
||||
@ -398,9 +405,11 @@ static const char *default_variables[] =
|
||||
# else
|
||||
"CXX", "gcc",
|
||||
# endif /* __MSDOS__ */
|
||||
"OBJC", "gcc",
|
||||
#else
|
||||
"CC", "cc",
|
||||
"CXX", "g++",
|
||||
"OBJC", "cc",
|
||||
#endif
|
||||
|
||||
/* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist,
|
||||
@ -468,6 +477,8 @@ static const char *default_variables[] =
|
||||
"LINK.o", "$(CC) $(LDFLAGS) $(TARGET_ARCH)",
|
||||
"COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
||||
"LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
||||
"COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
||||
"LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
||||
"COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
||||
"COMPILE.C", "$(COMPILE.cc)",
|
||||
"COMPILE.cpp", "$(COMPILE.cc)",
|
||||
@ -476,6 +487,8 @@ static const char *default_variables[] =
|
||||
"LINK.cpp", "$(LINK.cc)",
|
||||
"YACC.y", "$(YACC) $(YFLAGS)",
|
||||
"LEX.l", "$(LEX) $(LFLAGS) -t",
|
||||
"YACC.m", "$(YACC) $(YFLAGS)",
|
||||
"LEX.m", "$(LEX) $(LFLAGS) -t",
|
||||
"COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c",
|
||||
"LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)",
|
||||
"COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c",
|
||||
|
@ -2940,10 +2940,6 @@ makefile, then all prerequisite lists defined @emph{after} it appears
|
||||
will be expanded a second time after all makefiles have been read in.
|
||||
@xref{Secondary Expansion, ,Secondary Expansion}.
|
||||
|
||||
The prerequisites of the special target @code{.SUFFIXES} are the list
|
||||
of suffixes to be used in checking for suffix rules.
|
||||
@xref{Suffix Rules, , Old-Fashioned Suffix Rules}.
|
||||
|
||||
@findex .DELETE_ON_ERROR
|
||||
@item .DELETE_ON_ERROR
|
||||
@cindex removing targets on failure
|
||||
@ -8390,17 +8386,18 @@ implemented in @code{make} as suffix rules, so which ones will be
|
||||
defined depends on the @dfn{suffix list} (the list of prerequisites of
|
||||
the special target @code{.SUFFIXES}). The default suffix list is:
|
||||
@code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc},
|
||||
@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.r}, @code{.y},
|
||||
@code{.l}, @code{.s}, @code{.S}, @code{.mod}, @code{.sym}, @code{.def},
|
||||
@code{.h}, @code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo},
|
||||
@code{.texi}, @code{.txinfo}, @code{.w}, @code{.ch} @code{.web},
|
||||
@code{.sh}, @code{.elc}, @code{.el}. All of the implicit rules
|
||||
described below whose prerequisites have one of these suffixes are
|
||||
actually suffix rules. If you modify the suffix list, the only
|
||||
predefined suffix rules in effect will be those named by one or two of
|
||||
the suffixes that are on the list you specify; rules whose suffixes fail
|
||||
to be on the list are disabled. @xref{Suffix Rules, ,Old-Fashioned
|
||||
Suffix Rules}, for full details on suffix rules.
|
||||
@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.m},
|
||||
@code{.r}, @code{.y}, @code{.l}, @code{.ym}, @code{.lm}, @code{.s},
|
||||
@code{.S}, @code{.mod}, @code{.sym}, @code{.def}, @code{.h},
|
||||
@code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo}, @code{.texi},
|
||||
@code{.txinfo}, @code{.w}, @code{.ch} @code{.web}, @code{.sh},
|
||||
@code{.elc}, @code{.el}. All of the implicit rules described below
|
||||
whose prerequisites have one of these suffixes are actually suffix
|
||||
rules. If you modify the suffix list, the only predefined suffix
|
||||
rules in effect will be those named by one or two of the suffixes that
|
||||
are on the list you specify; rules whose suffixes fail to be on the
|
||||
list are disabled. @xref{Suffix Rules, ,Old-Fashioned Suffix Rules},
|
||||
for full details on suffix rules.
|
||||
|
||||
@table @asis
|
||||
@item Compiling C programs
|
||||
@ -8731,21 +8728,11 @@ Program for compiling assembly files; default @samp{as}.
|
||||
Program for compiling C programs; default @samp{cc}.
|
||||
@pindex cc
|
||||
|
||||
@item CO
|
||||
@vindex CO
|
||||
Program for checking out files from RCS; default @samp{co}.
|
||||
@pindex cc
|
||||
|
||||
@item CXX
|
||||
@vindex CXX
|
||||
Program for compiling C++ programs; default @samp{g++}.
|
||||
@pindex g++
|
||||
|
||||
@item CO
|
||||
@vindex CO
|
||||
Program for extracting a file from RCS; default @samp{co}.
|
||||
@pindex co
|
||||
|
||||
@item CPP
|
||||
@vindex CPP
|
||||
Program for running the C preprocessor, with results to standard output;
|
||||
@ -8757,6 +8744,21 @@ Program for compiling or preprocessing Fortran and Ratfor programs;
|
||||
default @samp{f77}.
|
||||
@pindex f77
|
||||
|
||||
@item M2C
|
||||
@vindex M2C
|
||||
Program to use to compile Modula-2 source code; default @samp{m2c}.
|
||||
@pindex m2c
|
||||
|
||||
@item PC
|
||||
@vindex PC
|
||||
Program for compiling Pascal programs; default @samp{pc}.
|
||||
@pindex pc
|
||||
|
||||
@item CO
|
||||
@vindex CO
|
||||
Program for extracting a file from RCS; default @samp{co}.
|
||||
@pindex co
|
||||
|
||||
@item GET
|
||||
@vindex GET
|
||||
Program for extracting a file from SCCS; default @samp{get}.
|
||||
@ -8777,16 +8779,6 @@ Program to use to turn Yacc grammars into source code; default @samp{yacc}.
|
||||
Program to use to run lint on source code; default @samp{lint}.
|
||||
@pindex lint
|
||||
|
||||
@item M2C
|
||||
@vindex M2C
|
||||
Program to use to compile Modula-2 source code; default @samp{m2c}.
|
||||
@pindex m2c
|
||||
|
||||
@item PC
|
||||
@vindex PC
|
||||
Program for compiling Pascal programs; default @samp{pc}.
|
||||
@pindex pc
|
||||
|
||||
@item MAKEINFO
|
||||
@vindex MAKEINFO
|
||||
Program to convert a Texinfo source file into an Info file; default
|
||||
|
@ -693,7 +693,7 @@ func_lastword (char *o, char **argv, const char *funcname UNUSED)
|
||||
{
|
||||
unsigned int i;
|
||||
const char *words = argv[0]; /* Use a temp variable for find_next_token */
|
||||
const char *p;
|
||||
const char *p = NULL;
|
||||
const char *t;
|
||||
|
||||
while ((t = find_next_token (&words, &i)))
|
||||
|
17
job.c
17
job.c
@ -1482,10 +1482,10 @@ start_waiting_job (struct child *c)
|
||||
void
|
||||
new_job (struct file *file)
|
||||
{
|
||||
register struct commands *cmds = file->cmds;
|
||||
register struct child *c;
|
||||
struct commands *cmds = file->cmds;
|
||||
struct child *c;
|
||||
char **lines;
|
||||
register unsigned int i;
|
||||
unsigned int i;
|
||||
|
||||
/* Let any previously decided-upon jobs that are waiting
|
||||
for the load to go down start before this new one. */
|
||||
@ -1723,7 +1723,16 @@ new_job (struct file *file)
|
||||
|
||||
/* The job is now primed. Start it running.
|
||||
(This will notice if there are in fact no commands.) */
|
||||
(void) start_waiting_job (c);
|
||||
if (cmds->fileinfo.filenm)
|
||||
DB (DB_BASIC, (_("Invoking commands from %s:%lu to update target `%s'.\n"),
|
||||
cmds->fileinfo.filenm, cmds->fileinfo.lineno,
|
||||
c->file->name));
|
||||
else
|
||||
DB (DB_BASIC, (_("Invoking builtin commands to update target `%s'.\n"),
|
||||
c->file->name));
|
||||
|
||||
|
||||
start_waiting_job (c);
|
||||
|
||||
if (job_slots == 1 || not_parallel)
|
||||
/* Since there is only one job slot, make things run linearly.
|
||||
|
2
remake.c
2
remake.c
@ -803,7 +803,7 @@ notice_finished_file (struct file *file)
|
||||
|
||||
if (touch_flag
|
||||
/* The update status will be:
|
||||
-1 if this target was not remade;
|
||||
-1 if this target was not remade;
|
||||
0 if 0 or more commands (+ or ${MAKE}) were run and won;
|
||||
1 if some commands were run and lost.
|
||||
We touch the target if it has commands which either were not run
|
||||
|
Loading…
Reference in New Issue
Block a user