From 43f2396ae00ad7565175ce7ba4111f690ae84923 Mon Sep 17 00:00:00 2001 From: psmith Date: Sat, 12 Sep 2009 21:28:33 +0000 Subject: [PATCH] - Fix Savannah bug #21824: don't loop through NULL cmds pointer - Fix Savannah bugs #24509, 18963: doc enhancements --- ChangeLog | 13 +++++++++++++ doc/make.texi | 17 +++++++++++------ remake.c | 4 +--- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a6c5b2..8c567c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,8 +3,21 @@ * function.c (windows32_openpipe): Update envp after calling sync_Path_environment. +2009-08-02 Paul Smith + + * remake.c (notice_finished_file): Ensure file->cmds is not null + before looping through them. Fixes Savannah bug #21824. + + * doc/make.texi (Wildcard Examples): Clarify when objects is + wildcard-expanded. Fixes Savannah bug #24509. Patch by Martin Dorey. + (Include): Clarify the behavior of -include. + Fixes Savannah bug #18963. + 2009-08-01 Paul Smith + * doc/make.texi (Catalogue of Rules): Clarify where -c, -F, + etc. come on the command line. Fixes Savannah bug #27093. + * expand.c (expand_argument): If the argument is large enough use xmalloc() instead of alloca(). Fixes Savannah bug #27143. diff --git a/doc/make.texi b/doc/make.texi index 3397c89..de28ab2 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -4,7 +4,7 @@ @include version.texi @set EDITION 0.70 -@set RCSID $Id: make.texi,v 1.58 2009/08/02 16:05:42 psmith Exp $ +@set RCSID $Id: make.texi,v 1.59 2009/09/12 21:28:34 psmith Exp $ @settitle GNU @code{make} @setchapternewpage odd @@ -1171,7 +1171,7 @@ Only after it has tried to find a way to remake a makefile and failed, will @code{make} diagnose the missing makefile as a fatal error. If you want @code{make} to simply ignore a makefile which does not exist -and cannot be remade, with no error message, use the @w{@code{-include}} +or cannot be remade, with no error message, use the @w{@code{-include}} directive instead of @code{include}, like this: @example @@ -1179,7 +1179,10 @@ directive instead of @code{include}, like this: @end example This acts like @code{include} in every way except that there is no -error (not even a warning) if any of the @var{filenames} do not exist. +error (not even a warning) if any of the @var{filenames} (or any +prerequisites of any of the @var{filenames}) do not exist or cannot be +remade. + For compatibility with some other @code{make} implementations, @code{sinclude} is another name for @w{@code{-include}}. @@ -1966,9 +1969,11 @@ objects = *.o @noindent then the value of the variable @code{objects} is the actual string -@samp{*.o}. However, if you use the value of @code{objects} in a target, -prerequisite, or recipe, wildcard expansion will take place at that time. -To set @code{objects} to the expansion, instead use: +@samp{*.o}. However, if you use the value of @code{objects} in a +target or prerequisite, wildcard expansion will take place there. If +you use the value of @code{objects} in a recipe, the shell may perform +wildcard expansion when the recipe runs. To set @code{objects} to the +expansion, instead use: @example objects := $(wildcard *.o) diff --git a/remake.c b/remake.c index 4a4fb73..4cf8bd7 100644 --- a/remake.c +++ b/remake.c @@ -82,7 +82,6 @@ int update_goal_chain (struct dep *goals) { int t = touch_flag, q = question_flag, n = just_print_flag; - unsigned int j = job_slots; int status = -1; #define MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \ @@ -263,7 +262,6 @@ update_goal_chain (struct dep *goals) touch_flag = t; question_flag = q; just_print_flag = n; - job_slots = j; } return status; @@ -872,7 +870,7 @@ notice_finished_file (struct file *file) really check the target's mtime again. Otherwise, assume the target would have been updated. */ - if (question_flag || just_print_flag || touch_flag) + if (question_flag || just_print_flag || touch_flag && file->cmds != 0) { for (i = file->cmds->ncommand_lines; i > 0; --i) if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE)) -- 2.11.4.GIT