Support --output-sync on MS-Windows.
[libreoffice:gnu-make-lo.git] / ChangeLog
1 2013-04-27  Frank Heckenbach <f.heckenbach@fh-soft.de>  (tiny change)
2
3         * job.c (sync_output): Don't discard the output if
4         acquire_semaphore fails; instead, dump the output unsynchronized.
5
6 2013-04-27  Eli Zaretskii  <eliz@gnu.org>
7
8         Support --output-sync on MS-Windows.
9         * w32/compat/posixfcn.c: New file, with emulations of Posix
10         functions and Posix functionality for MS-Windows.
11
12         * w32/subproc/sub_proc.c: Include io.h.
13         (process_noinherit): New function, forces a file descriptor to not
14         be inherited by child processes.
15         (process_easy): Accept two additional arguments, and use them to
16         set up the standard output and standard error handles of the child
17         process.
18
19         * w32/include/sub_proc.h (process_easy): Adjust prototype.
20         (process_noinherit): Add prototype.
21
22         * read.c [WINDOWS32]: Include windows.h and sub_proc.h.
23
24         * makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not
25         defined.  This is needed because the MS-Windows build doesn't have
26         a canonical place for LOCALEDIR.
27         (WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from
28         windows.h header too much stuff that could conflict with the code.
29
30         * main.c <sync_mutex>: New static variable.
31         <switches>: Add support for "--sync-mutex" switch.
32         (decode_output_sync_flags): Decode the --sync-mutex= switch.
33         (prepare_mutex_handle_string) [WINDOWS32]: New function.
34         (main): Add "output-sync" to .FEATURES.
35
36         * job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call
37         process_noinherit.
38         (F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]:
39         New macros.
40         (RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms.
41         (sync_handle_t): New typedef.
42
43         * job.c <sync_handle>: Change type to sync_handle_t.
44         (FD_NOT_EMPTY): Seek to the file's end.  Suggested by Frank
45         Heckenbach <f.heckenbach@fh-soft.de>.
46         (pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for
47         the duration of this function, and then change back before
48         returning.
49         (start_job_command) [WINDOWS32]: Support output_sync mode on
50         MS-Windows.  Use a system-wide mutex instead of locking
51         stdout/stderr.  Call process_easy with two additional arguments:
52         child->outfd and child->errfd.
53         (exec_command) [WINDOWS32]: Pass two additional arguments, both
54         -1, to process_easy, to adjust for the changed function signature.
55
56         * function.c (windows32_openpipe) [WINDOWS32]: This function now
57         returns an int, which is -1 if it fails and zero otherwise.  It
58         also calls 'error' instead of 'fatal', to avoid exiting
59         prematurely.
60         (func_shell_base) [WINDOWS32]: Call perror_with_name if
61         windows32_openpipe fails, now that it always returns.  This avoids
62         a compiler warning that error_prefix is not used in the MS-Windows
63         build.
64
65         * config.h.W32.template (OUTPUT_SYNC): Define.
66
67         * build_w32.bat: Add w32/compat/posixfcn.c to compilation and
68         linking commands.
69
70 2013-04-16  Paul Smith  <psmith@gnu.org>
71
72         * misc.c (open_tmpfd): Add a new function that returns a temporary
73         file by file descriptor.
74         (open_tmpfile): Move here from main.c.
75         * job.c (assign_child_tempfiles): Use the new open_tmpfd().
76
77 2013-04-15  Paul Smith  <psmith@gnu.org>
78
79         * makeint.h (OUTPUT_SYNC_TARGET, OUTPUT_SYNC_MAKE): Rename.
80         * job.c (start_job_command): Use new constants.
81         * main.c: New -O argument format.
82
83         * doc/make.texi (Options Summary): Document the argument to -O.
84         * make.1: Ditto.
85
86         * main.c (define_makeflags): Don't add space between a single-char
87         option and its argument.
88
89 2013-04-06  Paul Smith  <psmith@gnu.org>
90
91         * doc/make.texi (Implicit Variables): Clarify LDFLAGS vs. LDLIBS.
92         Fixes Savannah bug #37970.
93
94         * remake.c (check_dep): Reconsider files waiting on prerequisites,
95         as they may have finished.  Fixes Savannah bug #37703.
96
97 2013-02-28  Paul Smith  <psmith@gnu.org>
98
99         * function.c (func_realpath): On Solaris (at least) realpath() can
100         fail due to EINTR, so loop it.  Fixes Savannah bug #38420.
101
102 2013-02-25  Paul Smith  <psmith@gnu.org>
103
104         Add a proposed supported API for GNU make loaded objects.
105
106         * doc/make.texi (Loaded Object API): Document it.
107         * Makefile.am (make_SOURCES): Add new loadapi.c.
108         * dep.h: Remove eval_buffer(); moved to loadapi.c:gmk_eval().
109         * read.c (eval_buffer): Change eval_buffer() signature.
110         * main.c (main): Change eval_buffer() signature.
111         * variable.h (define_new_function): Change func_ptr signature.
112         * load.c (SYMBOL_EXTENSION): Change the extension.
113         * loadapi.c: Implement the new API.
114         * gnumake.h (gmk_eval): New function prototype.
115         (gmk_expand) Ditto.
116         (gmk_add_function) Ditto.
117         * gmk-default.scm (gmk-eval): Remove: now implemented in guile.c.
118         * guile.c (guile_expand_wrapper): Use gmk_expand()
119         (guile_eval_wrapper): Implement eval here to avoid double-expansion.
120         (guile_define_module): Define gmk-eval.
121         (func_guile): Use new func_ptr calling model.
122         (guile_gmake_setup): Use gmk_add_function() to declare $(guile ...)
123         * function.c (function_table_entry): Provide alternative func_ptr.
124         (func_eval): New signature for eval_buffer();
125         (function_table_init): New initialization for function_table_entry.
126         (expand_builtin_function): Support alternative invocation signature.
127         (define_new_function): Ditto.
128
129 2013-01-20  Paul Smith  <psmith@gnu.org>
130
131         * gnumake.h: New file to contain externally-visible content.
132         * makeint.h: Include gnumake.h.  Move gmk_floc type to gnumake.h.
133         * Makefile.am (include_HEADERS): Install the gnumake.h header.
134
135         * makeint.h: Change struct floc to gmk_floc typedef.
136         * Many: Use the new typedef.
137
138         * make.h: Rename to makeint.h.
139         * Many: Use the new name makeint.h.
140
141 2013-01-19  Paul Smith  <psmith@gnu.org>
142
143         * doc/make.texi (load Directive): Update to discuss location of
144         loaded object file.
145         (Remaking Loaded Objects): Document remaking of loaded objects.
146
147         * main.c (main): Rename READ_MAKEFILES to READ_FILES.
148         * read.c: Change READ_MAKEFILES to READ_FILES since it now
149         contains loaded object files as well.
150         (read_all_makefiles): Ditto.
151         (eval_makefile): Ditto.
152         (eval): Add any loaded file to the READ_FILES list, so that it
153         will be considered for re-build.
154
155         * load.c (load_file): Return the simple filename (no symbol) in
156         the LDNAME argument (now a const char **).
157         This filename should no longer have "./" prepended: modify the
158         function to always check the current directory if the name has no
159         "/", before using the normal methods.
160         * make.h: Change the load_file() prototype.
161
162         * README.git: Add a bit more documentation on Git workflow & rules.
163
164 2013-01-13  Paul Smith  <psmith@gnu.org>
165
166         * main.c (main): Restore all make flags after re-exec is complete.
167         Fixes Savannah bug #38051.
168
169 2013-01-12  Paul Smith  <psmith@gnu.org>
170
171         Convert CVS archive to Git.
172
173         * configure.in: Rename to configure.ac.
174         * README.cvs: Rename to README.git and rework for Git.
175         * maintMakefile: Use git clean for cleanup.
176         * ChangeLog: Use new Git repository URL.
177         * ChangeLog.2: Ditto.
178         * Makefile.am: Change documentation for Git
179         * Makefile.DOS.template: Ditto.
180         * README.template: Ditto.
181         * build_w32.bat: Ditto.
182         * prepare_w32.bat: Ditto.
183         * .cvsignore: Rename to .gitignore, and change to Git format.
184
185 2012-12-08  Eli Zaretskii  <eliz@gnu.org>
186
187         * job.c (create_batch_file): Fix last change: always increment the
188         counter of batch files before trying to use it.
189
190 2012-12-07  Eli Zaretskii  <eliz@gnu.org>
191
192         * job.c (construct_command_argv_internal): Remove " from
193         sh_chars_dos[].  Ignore an escaped backslash inside a string
194         quoted with "..".  This lifts the 4KB or 8KB command-line length
195         limitation imposed by the Windows shells when a command uses quoted
196         strings, because we now don't call the shell in that case.
197
198         * job.c (create_batch_file): Declare the counter of batch files
199         static, to avoid having 2 jobs using the same file name and
200         stepping on each other's toes.  When all 64K names are used up,
201         make one more loop looking for slots that became vacant.  This
202         avoids leaving behind temporary batch files in the temporary
203         directory, which happens frequently on a fast machine when using
204         parallel builds.
205         (reap_children): Add debug message for when removal of a temporary
206         batch file fails.
207
208 2012-10-29  Paul Smith  <psmith@gnu.org>
209
210         New feature: "load" directive for dynamically-loaded objects.
211
212         * NEWS: Document new "load" directive.
213         * doc/make.texi (Extending make): New chapter on extensions to make.
214         * configure.in: Check for dlopen/dlsym/dlerror and -ldl.
215         * Makefile.am (make_SOURCES): Add new file load.c.
216         * make.h: Prototype for load_file().
217         * main.c (main): Add "load" to .FEATURES if it's available.
218         * read.c (eval): Parse "load" and "-load" directives.
219
220 2012-09-29  Paul Smith  <psmith@gnu.org>
221
222         * configure.in: Require a new version of gettext (1.18.1).
223         Fixes Savannah bug #37307.
224
225 2012-09-09  Paul Smith  <psmith@gnu.org>
226
227         * configure.in (bsd_signal): Define _GNU_SOURCE, a la make.h.
228         Fixes Savannah bug #32247.
229
230         * remake.c (update_file_1): Force intermediate files to be
231         considered, not pruned, if their non-intermediate parent needs to
232         be remade.  Fixes Savannah bug #30653.
233
234         * job.c (construct_command_argv_internal): Keep the command line
235         on the heap for very long lines.  Fixes Savannah bug #36451.
236
237         * function.c (func_realpath): BSD realpath(3) doesn't fail if the
238         file does not exist: use stat.  Fixes Savannah bug #35919.
239
240         * file.c (expand_deps): Duplicate the current variable buffer, not
241         the old pointer.  Fixes Savannah bug #36925.
242
243         * read.c (eval): If we detect an initial UTF-8 BOM, skip it.
244         Fixes Savannah bug #36529.
245         (record_target_var): Remove unused variable "fname".
246         (eval): Use the correct pointer when adding to the variable buffer.
247         Fixes Savannah bug #36106.
248
249 2012-09-09  Eli Zaretskii  <eliz@gnu.org>
250
251         * read.c (unescape_char): Fix a thinko in the last change.
252
253 2012-09-09  Paul Smith  <psmith@gnu.org>
254
255         * default.c (default_variables): Use a correct default LIBPPATERNS
256         for MacOS.  Fixes Savannah bug #37197.
257
258         * read.c (record_files): Reset the default macro values if .POSIX
259         is set.  Fixes Savannah bug #37069.
260         (parse_file_seq): Break out of an infinite loop if we're not
261         making progress when parsing archive references.
262
263 2012-09-01  Eli Zaretskii  <eliz@gnu.org>
264
265         * README.W32.template: Update for job-server and Guile support.
266
267         * read.c (unescape_char): Advance 'p' after copying the unescaped
268         characters.  Otherwise the backslashes are incorrectly erased from
269         the original string.
270
271 2012-03-05  Paul Smith  <psmith@gnu.org>
272
273         Update copyright notices to use year ranges, as allowed by
274         clarifications in the GNU Maintainer's Manual.
275
276 2012-03-04  Paul Smith  <psmith@gnu.org>
277
278         * read.c (unescape_char): New function to remove escapes from a char.
279         (record_files): Call it on the dependency string to unescape ":".
280         Fixes Savannah bug #12126 and bug #16545.
281
282         * make.h (CSTRLEN): Determine the length of a constant string.
283         * main.c: Use the new macro.
284         * read.c: Ditto.
285         * variable.h: Ditto.
286         * function.c: Simplify checks for function alternatives.
287
288         * expand.c (variable_append): If the current set is local and the
289         next one is not a parent, then treat the next set as
290         local as well.  Fixes Savannah bug #35468.
291
292 2012-03-03  Paul Smith  <psmith@gnu.org>
293
294         * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add support for AIX 5.2+
295         nanosecond timestamps.  Fixes Savannah bug #32485.
296
297         Convert uses of `foo' for quoting to 'foo' to reflect changes in
298         the GNU Coding Standards.  Fixes Savannah bug #34530.
299
300         * job.c (construct_command_argv_internal): In oneshell we need to
301         break the SHELLFLAGS up for argv.  Fixes Savannah bug #35397.
302
303         * function.c (func_filter_filterout): Recompute the length of each
304         filter word in case it was compressed due to escape chars.  Don't
305         reset the string as it's freed.  Fixes Savannah bug #35410.
306
307         * misc.c (collapse_continuations): Only use POSIX-style
308         backslash/newline handling if the .POSIX target is set.
309         Addresses Savannah bug #16670 without backward-incompatibility.
310         * NEWS: Document behavior change.
311         * doc/make.texi (Splitting Lines): New section describing how to
312         use backslash/newline to split long lines.
313
314 2012-02-26  Paul Smith  <psmith@gnu.org>
315
316         * implicit.c (pattern_search): Check the stem length to avoid
317         stack overflows in stem_str.  Fixes Savannah bug #35525.
318
319 2012-02-03  Eli Zaretskii  <eliz@gnu.org>
320
321         * w32/subproc/sub_proc.c (proc_stdin_thread, proc_stdout_thread)
322         (proc_stderr_thread, process_pipe_io): Ifdef away unused
323         functions.
324
325         * w32/subproc/w32err.c (map_windows32_error_to_string) [_MSC_VER]:
326         Don't use TLS storage for szMessageBuffer.  Ifdef away special
327         code for handling Winsock error codes.  Make the function return a
328         `const char *'.  Suggested by Ozkan Sezer.  Fixes Savannah bug #34832.
329
330 2012-01-29  Paul Smith  <psmith@gnu.org>
331
332         * gmk-default.scm (to-string-maybe): Variables map to empty strings.
333         In Guile 2.0, (define ...) results in a variable object so make
334         sure that maps to an empty string in make.
335
336         * variable.c (parse_variable_definition): New POSIX assignment ::=
337         Take a struct variable to return more information after parsing.
338         (assign_variable_definition): New parse_variable_definition() call.
339         * variable.h: New declaration of parse_variable_definition().
340         * read.c (do_define): New parse_variable_definition() call.
341         (parse_var_assignment): Ditto.
342         (get_next_mword): Parse ::= as a variable assignment.
343         * doc/make.texi (Flavors): Describe the new ::= syntax.
344         * NEWS: Mention the ::= operator.
345
346         * variable.h (struct variable): Rearrange elts to reduce struct size.
347
348         * function.c (func_file): Create a new function, $(file ...)
349         * doc/make.texi (File Function): Document the $(file ..) function.
350         * NEWS: Announce it.
351
352         * gmk-default.scm (to-string-maybe): Use a more portable way to
353         test for unprintable characters.
354         * configure.in [GUILE]: Guile 1.6 doesn't have pkg-config
355         * build_w32.bat: Ditto.
356
357 2012-01-28  Eli Zaretskii  <eliz@gnu.org>
358
359         * config.h.W32.template: Update from config.h.in.
360
361         Support a Windows build with Guile.
362
363         * README.W32.template: Update with instructions for building with
364         Guile.
365
366         * build_w32.bat: Support building with Guile.
367
368         * make.h [HAVE_STDINT_H]: Include stdint.h.
369
370         * main.c (main, clean_jobserver): Move declarations of variables
371         not used in the WINDOWS32 build to the #else branch, to avoid
372         compiler warnings.
373
374         Fix failures on MS-Windows when Make's standard handles are invalid.
375         This can happen when Make is invoked from a GUI application.
376
377         * w32/subproc/sub_proc.c (process_init_fd): Don't dereference
378         pproc if it is a NULL pointer.
379         (process_begin, process_cleanup): Don't try to close pipe handles
380         whose value is INVALID_HANDLE_VALUE.
381         (process_easy): Initialize hIn, hOut, and hErr to
382         INVALID_HANDLE_VALUE.  If DuplicateHandle fails with
383         ERROR_INVALID_HANDLE, duplicate a handle for the null device
384         instead of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE or
385         STD_ERROR_HANDLE.  Don't try to close pipe handles whose value is
386         INVALID_HANDLE_VALUE.
387
388         * function.c (windows32_openpipe): Initialize hIn and hErr to
389         INVALID_HANDLE_VALUE.  If DuplicateHandle fails with
390         ERROR_INVALID_HANDLE, duplicate a handle for the null device
391         instead of STD_INPUT_HANDLE or STD_ERROR_HANDLE.  Fix indentation.
392         Don't try to close handles whose value is INVALID_HANDLE_VALUE.
393
394 2012-01-25  Eli Zaretskii  <eliz@gnu.org>
395
396         * function.c (define_new_function): Fix format strings in calls to
397         `fatal'.
398
399 2012-01-17  Paul Smith  <psmith@gnu.org>
400
401         * guile.c (func_guile): Handle NULL returns from Guile.
402
403 2012-01-16  Paul Smith  <psmith@gnu.org>
404
405         * make.h (PATH_SEPARATOR_CHAR): Allow resetting for crosscompiling
406         for Windows.  Patch by Chris Sutcliffe <ir0nh34d@gmail.com>
407         Fixes Savannah bug #34818.
408
409 2012-01-15  Paul Smith  <psmith@gnu.org>
410
411         * variable.h: Prototype an interface for defining new make functions.
412         * function.c (define_new_function): Define it.
413         (func_guile): Remove the "guile" function.
414         (function_table_init): Ditto.
415         * guile.c (func_guile): Add the "guile" function here.
416         (setup_guile): Call define_new_function() to define it.
417         (guile_eval_string): Obsolete.
418
419         * all: Update copyright notices.
420
421 2012-01-12  Paul Smith  <psmith@gnu.org>
422
423         Support GNU Guile as an embedded extension language for GNU make.
424
425         * NEWS: Note the new Guile capability.
426         * Makefile.am (EXTRA_DIST, make_SOURCES): Add new guile source files.
427         (AM_CFLAGS): Add Guile compiler flags.
428         (guile): Add a rule for converting default SCM into a C header.
429         * configure.in: Add support for --with-guile.
430         Also, convert the entire file to properly escaped autoconf m4, and
431         utilize newer features such as AS_IF() and AS_CASE().
432         * doc/make.texi (Guile Function): Document the GNU guile integration.
433         * make.h (guile_eval_string, guile_boot): Prototypes for Guile.
434         * main.c (main): Run guile_boot() to handle main().
435         (real_main): All the previous content of main() is here.
436         (real_main): Add "guile" to the .FEATURES variable.
437         * function.c (func_guile): Call Guile.
438         * guile.c: New file implementing GNU make integration with GNU Guile.
439         * gmk-default.scm: The integration of GNU make with Guile uses
440         Guile itself for much of the parsing and conversion of return
441         types, etc.  This implementation is embedded into GNU make.
442         * config.h-vms.template: Disable Guile support.
443         * config.h.W32.template: Ditto.
444         * configh.dos.template: Ditto.
445         * config.ami.template: Ditto.
446         * makefile.vms: Add new Guile files.
447         * Makefile.DOS.template: Ditto.
448         * Makefile.ami: Ditto.
449         * NMakefile.template: Ditto.
450         * SMakefile.template: Ditto.
451         * build_w32.bat: Ditto.
452         * dosbuild.bat: Ditto.
453         * make_msvc_net2001.vcproj: Ditto.
454
455 2011-11-15  Paul Smith  <psmith@gnu.org>
456
457         * main.c (main): Use %ld when printing DWORD values.
458         * job.c (new_job): Ditto.
459         * w32/include/sub_proc.h: Use const.
460         * w32/subproc/sub_proc.c (open_jobserver_semaphore): Use const.
461         Fixes Savannah bug #34830.  Changes suggested by Ozkan Sezer.
462
463         * configure.in (MAKE_JOBSERVER): Enable jobserver on W32 systems.
464         * config.h.W32.template (MAKE_JOBSERVER): Ditto.
465
466 2011-11-14  Paul Smith  <psmith@gnu.org>
467
468         * read.c (eval): parse_file_seq() might shorten the string due to
469         backslash removal.  Start parsing again at the colon.
470         Fixes Savannah bug #33399.
471
472 2011-11-13  Paul Smith  <psmith@gnu.org>
473
474         * file.c (file_timestamp_cons): Match up data types to avoid warnings.
475         * filedef.h: Ditto.
476         * misc.c (concat): Ditto.
477         * read.c (eval): Assign value to avoid warnings.
478         * function.c (func_shell_base): Use fork() instead of vfork() to
479         avoid warnings.
480         * make.h (INTEGER_TYPE_SIGNED): Use <=0 to avoid warnings.
481         Fixes Savannah bug #34608.
482
483         * job.c (construct_command_argv): Remove _p.
484         (construct_command_argv_internal): Remove _ptr.
485         Fixes Savannah bug #32567.
486
487         * main.c (clean_jobserver): Don't write the free token to the pipe.
488         Change suggested by Tim Newsome <tnewsome@aristanetworks.com>
489
490         * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add support for Darwin.
491         * filedef.h (FILE_TIMESTAMP_STAT_MODTIME): Ditto.
492         Patch provided by Troy Runkel <Troy.Runkel@mathworks.com>
493
494 2011-10-11  Troy Runkel  <Troy.Runkel@mathworks.com>
495
496         * config.h.W32: Enable job server support for Windows.
497         * main.c [WINDOWS32]: Include sub_proc.h
498         (main): Create a named semaphore to implement the job server.
499         (clean_jobserver): Free the job server semaphore when make is finished.
500         * job.c [WINDOWS32]: Define WAIT_NOHANG
501         (reap_children): Support non-blocking wait for child processes.
502         (free_child): Release job server semaphore when child process finished.
503         (job_noop): Don't define function on Windows.
504         (set_child_handler_action_flags): Don't define function on Windows.
505         (new_job): Wait for job server semaphore or child process termination.
506         (exec_command): Pass new parameters to process_wait_for_any.
507         * w32/include/sub_proc.h [WINDOWS32]: New/updated EXTERN_DECL entries.
508         * w32/subproc/sub_proc.c [WINDOWS32]: Added job server implementation.
509         (open_jobserver_semaphore): Open existing job server semaphore by name.
510         (create_jobserver_semaphore): Create new job server named semaphore.
511         (free_jobserver_semaphore): Close existing job server semaphore.
512         (acquire_jobserver_semaphore): Decrement job server semaphore count.
513         (release_jobserver_semaphore): Increment job server semaphore count.
514         (has_jobserver_semaphore): Returns whether job server semaphore exists.
515         (get_jobserver_semaphore_name): Returns name of job server semaphore.
516         (wait_for_semaphore_or_child_process): Wait for either the job server
517         semaphore to become signalled or a child process to terminate.
518         (process_wait_for_any_private): Support for non-blocking wait for child.
519         (process_wait_for_any): Added support for non-blocking wait for child.
520         (process_file_io): Pass new parameters to process_wait_for_any_private.
521
522 2011-09-18  Paul Smith  <psmith@gnu.org>
523
524         * main.c (main): If we're re-exec'ing and we're the master make,
525         then restore the job_slots value so it goes back into MAKEFLAGS
526         properly.  See Savannah bug #33873.
527
528         * remake.c (library_search): STD_DIRS is computed when other
529         static vars like buflen etc. are computed, so it must be static
530         as well.  See Savannah bug #32511.
531
532 2011-09-16  Paul Smith  <psmith@gnu.org>
533
534         * maintMakefile (do-po-update): Apparently we have to avoid
535         certificate checks on the http://translationproject.org site now.
536
537 2011-09-12  Paul Smith  <psmith@gnu.org>
538
539         * read.c (eval): Ensure exported variables are defined in the
540         global scope.  Fixes Savannah bug #32498.
541
542 2011-09-11  Paul Smith  <psmith@gnu.org>
543
544         * Makefile.am (dist-hook): Remove w32/Makefile and .deps/ from the
545         dist file.  Fixes Savannah bug #31489.
546
547         * doc/make.texi (Complex Makefile): Add a hint about using
548         #!/usr/bin/make (for Savannah support request #106459)
549
550 2011-09-02  Paul Smith  <psmith@gnu.org>
551
552         * remake.c (touch_file): If we have both -n and -t, -n takes
553         precedence.  Patch from Michael Witten <mfwitten@gmail.com>
554
555 2011-08-29  Paul Smith  <psmith@gnu.org>
556
557         * expand.c (variable_expand_string): Always allocate a new buffer
558         for a string we're expanding.  The string we're working on can get
559         freed while we work on it (for example if it's the value of a
560         variable which modifies itself using an eval operation).
561         See Savannah patch #7534 for the original report by Lubomir Rintel.
562
563 2011-06-12  Paul Smith  <psmith@gnu.org>
564
565         * read.c (parse_file_seq): Move the check for empty members out of
566         the loop so we can go to the next member properly.
567         Another fix for Savannah bug #30612.
568
569         * config.h-vms.template: Newer versions of VMS have strncasecmp()
570         Patch provided by: Hartmut Becker <becker.ismaning@freenet.de>
571
572 2011-05-07  Paul Smith  <psmith@gnu.org>
573
574         * expand.c (variable_append): Add a LOCAL argument to track
575         whether this is the first invocation or not.  If it's not and
576         private_var is set, then skip this variable and try the next one.
577         Fixes Savannah bug #32872.
578
579         * read.c (parse_file_seq): Ensure existence checks use glob().
580
581 2011-05-07  Eli Zaretskii  <eliz@gnu.org>
582
583         * job.c (construct_command_argv_internal): Don't assume shellflags
584         is always non-NULL.  Escape-protect characters special to the
585         shell when copying the value of SHELL into new_line.  Fixes
586         Savannah bug #23922.
587
588 2011-05-02  Paul Smith  <psmith@gnu.org>
589
590         * doc/make.texi (Special Variables): Add documentation for the new
591         words in .FEATURES.  Fixes Savannah bug #32058.
592         (Flavor Function): Rewrite the section on the flavor function.
593         Fixes Savannah bug #31582.
594
595         * function.c (func_sort): Use the same algorithm to count the
596         number of words we will get after the split, as we use to split.
597         Based on a patch from Matthias Hopf.  Fixes Savannah bug #33125.
598
599         * make.h: Make global variable stack_limit extern.
600         Fixes Savannah bug #32753.
601
602 2011-05-01  Paul Smith  <psmith@gnu.org>
603
604         * read.c (parse_file_seq): Don't try to invoke glob() unless there
605         are potential wildcard characters in the filename.  Performance
606         enhancement suggested by Michael Meeks <michael.meeks@novell.com>
607
608 2011-04-29 Boris Kolpackov  <boris@codesynthesis.com>
609
610         * read.c (eval_makefile): Delay caching of the file name until after
611         all the expansions and searches.
612
613 2011-04-17  David A. Wheeler  <dwheeler@dwheeler.com>
614
615         * doc/make.texi (Reading Makefiles): Document "!=".
616         (Setting): Ditto.
617         (Features): Ditto.
618         * variable.h (enum variable_flavor): New type "f_shell".
619         * variable.c (shell_result): Send a string to the shell and store
620         the output.
621         (do_variable_definition): Handle f_shell variables: expand the
622         value, then send it to the shell and store the result.
623         (parse_variable_definition): Parse "!=" shell assignments.
624         * read.c (get_next_mword): Treat "!=" as a varassign word.
625         * function.c (fold_newlines): If trim_newlines is set remove all
626         trailing newlines; otherwise remove only the last newline.
627         (func_shell_base): Move the guts of the shell function here.
628         (func_shell): Call func_shell_base().
629
630 2011-02-21  Paul Smith  <psmith@gnu.org>
631
632         * strcache.c (various): Increase performance based on comments
633         from Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.  Stop looking for
634         a buffer when we find the first one that fits, not the best fit.
635         If there is not enough free space in a buffer move it to a
636         separate list so we don't have to walk it again.
637         * make.h (NDEBUG): Turn off asserts unless maintainer mode is set.
638         (strcache_add_len, strcache_setbufsize): Use unsigned length/size.
639         * maintMakefile (AM_CPPFLAGS): Enable MAKE_MAINTAINER_MODE.
640
641         * remake.c (complain): Move translation lookups closer to use.
642
643 2011-02-13  Paul Smith  <psmith@gnu.org>
644
645         * doc/make.texi: Clean up references to "static" variables and
646         semicolon errors.  Patch from Michael Witten <mfwitten@gmail.com>.
647
648 2010-12-27  Paul Smith  <psmith@gnu.org>
649
650         * make.1: Update the header/footer info in the man page.
651
652 2010-11-28  Paul Smith  <psmith@gnu.org>
653
654         * read.c (record_target_var): Don't reset v if it's the same as
655         the global version.  Fixes Savannah bug #31743.
656
657 2010-11-06  Paul Smith  <psmith@gnu.org>
658
659         * variable.c (print_auto_variable): Print auto variables; ignore others.
660         (print_noauto_variable): Print non-auto variables; ignore others.
661         (print_variable_set): Allow the caller to select which type to print.
662         (print_target_variables): Show all the non-auto variables for a target.
663
664         * default.c (install_default_suffix_rules): Initialize recipe_prefix.
665         * rule.c (install_pattern_rule): Ditto.
666         * read.c (record_files): Pass in the current recipe prefix.  Remember
667         it in the struct command for these targets.
668         (eval): Remember the value of RECIPEPREFIX when we start parsing.
669         Do not remove recipe prefixes from the recipe here: we'll do it later.
670         * job.c (start_job_command): Remove recipe prefix characters early,
671         before we print the output or chop it up.
672         * file.c (print_file): If recipe_prefix is not standard, reset it
673         in -p output.  Assign target variables in -p output as well.
674
675         * commands.c (chop_commands): Max command lines is USHRT_MAX.
676         Set any_recurse as a bitfield.
677         * make.h (USHRT_MAX): Define if not set.
678
679 2010-10-27  Paul Smith  <psmith@gnu.org>
680
681         * commands.h (struct commands): Rearrange to make better use of
682         memory.  Add new recipe_prefix value.
683
684 2010-10-26  Paul Smith  <psmith@gnu.org>
685
686         * doc/make.texi (Setting): Document the treatment of
687         backslash-newline in variable values.
688         * misc.c (collapse_continuations): Do not collapse multiple
689         backslash-newlines into a single space.  Fixes Savannah bug #16670.
690
691 2010-08-29  Paul Smith  <psmith@gnu.org>
692
693         * doc/make.texi (Implicit Variables): Document LDLIBS and LOADLIBES.
694         Fixes Savannah bug #30807.
695         (Instead of Execution): Mention that included makefiles are still
696         rebuilt even with -n.  Fixes Savannah bug #30762.
697
698         * configure.in: Bump to 3.82.90.
699
700         * make.h: Add trace_flag variable.
701         * main.c (switches): Add --trace option.
702         (trace_flag): Declare variable.
703         * job.c (start_job_command): Show recipe if trace_flag is set.
704         (new_job): Show trace messages if trace_flag is set.
705         * doc/make.texi (Options Summary): Document the new --trace option.
706         * make.1: Add --trace documentation.
707         * NEWS: Mention --trace.
708
709         * job.c (child_error): Show recipe filename/linenumber on error.
710         Also show "(ignored)" when appropriate even for signals/coredumps.
711         * NEWS: Mention file/linenumber change.
712
713         * main.c (main): Print version info when DB_BASIC is set.
714
715         * job.c (construct_command_argv_internal): If shellflags is not
716         set, choose an appropriate default value.  Fixes Savannah bug #30748.
717
718 2010-08-27  Eli Zaretskii  <eliz@gnu.org>
719
720         * variable.c (define_automatic_variables) [__MSDOS__ || WINDOWS32]:
721         Remove trailing backslashes in $(@D), $(<D), etc., for consistency
722         with forward slashes.  Fixes Savannah bug #30795.
723
724 2010-08-13  Paul Smith  <psmith@gnu.org>
725
726         * NEWS: Accidentally forgot to back out the sorted wildcard
727         enhancement in 3.82, so update NEWS.
728         Also add NEWS about the error check for explicit and pattern
729         targets in the same rule, added to 3.82.
730
731         * main.c (main): Add "oneshell" to $(.FEATURES) (forgot to add
732         this in 3.82!)
733
734         * read.c (parse_file_seq): Fix various errors parsing archives
735         with multiple objects in the parenthesis, as well as wildcards.
736         Fixes Savannah bug #30612.
737
738 2010-08-10  Paul Smith  <psmith@gnu.org>
739
740         * main.c (main): Expand MAKEFLAGS before adding it to the
741         environment when re-exec'ing.  Fixes Savannah bug #30723.
742
743 2010-08-07  Eli Zaretskii  <eliz@gnu.org>
744
745         * w32/subproc/build.bat: Make all 3 cl.exe compile command lines
746         use the same /I switches.  Fixes Savannah bug #30662.
747
748         * function.c (func_shell) [WINDOWS32]: Reset just_print_flag
749         around the call to construct_command_argv, so that a temporary
750         batch file _is_ created when needed for $(shell).
751         Fixes Savannah bug #16362.
752
753 2010-08-07 Juan Manuel Guerrero  <juan.guerrero@gmx.de>
754
755         * configh.dos.template (HAVE_STRNCASECMP): Define.
756
757 2010-07-28  Paul Smith  <psmith@gnu.org>
758
759         Version 3.82 released.
760
761         * configure.in: Change release version.
762         * NEWS: Change the date.
763
764         * read.c (parse_file_seq): Remove GLOB_NOSORT for
765         backward-compatibility.  We'll add it back in next release.
766         * NEWS: Note it.
767
768 2010-07-24  Eli Zaretskii  <eliz@gnu.org>
769
770         * job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
771         format.
772
773 2010-07-18  Paul Smith  <psmith@gnu.org>
774
775         * configure.in: Switch bsd_signal to AC_CHECK_DECLS() to make sure
776         we have a declaration.  Fixes Savannah bug #25713 (maybe?)
777         * doc/make.texi (Complex Makefile): Cleanup variable assignments.
778         (One Shell): New subsection for the .ONESHELL special target.
779
780         Patches by Ozkan Sezer <sezeroz@gmail.com>:
781
782         * misc.c (strncasecmp): Local implementation for systems without.
783         * config.h.W32.template (HAVE_STRNICMP): Define on Windows.
784         * configure.in: Check for strncasecmp/strncmpi/strnicmp.
785         * job.c [WINDOWS32]: Don't define dup2 on Windows.
786         (pid2str): Use "%Id" even with MSVC
787         (exec_command): Cast to pid_t when calling pid2str().
788         * w32/subproc/sub_proc.c [WINDOWS32]: Include config.h first.
789         Use stddef.h on MSVC to get intptr_t.
790         * w32/subproc/misc.c [WINDOWS32]: Include config.h first.
791         * w32/compat/dirent.c [WINDOWS32]: Include config.h first.
792         (readdir): Cast -1 to correct type for d_ino.
793         * w32/pathstuff.c [WINDOWS32]: Ensure make.h is included first.
794         * make.h [WINDOWS32]: Don't prototype alloca() on Windows.
795         Add configuration for strncasecmp().
796         * main.c (ADD_SIG) [WINDOWS32]: Avoid warnings in MSVC.
797         * config.h.W32.template [WINDOWS32]: Don't warn on unsafe
798         functions or variables.
799         * NMakefile.template [WINDOWS32]: Remove /MACHINE:I386.
800         * main.c (clean_jobserver): Cast due to MSVC brokenness.
801         (decode_switches): Ditto.
802         * vpath.c (construct_vpath_list): Ditto.
803         * rule.c (freerule): Ditto.
804         * ar.c (ar_glob): Ditto.
805
806 2010-07-16  Boris Kolpackov  <boris@codesynthesis.com>
807
808         * misc.c (concat): Fix buffer overrun.
809
810 2010-07-12  Paul Smith  <psmith@gnu.org>
811
812         Update copyrights to add 2010.
813
814         * build_w32.bat: Support for MSVC Windows x86_64 builds.
815         * job.c: Don't define execve() on MSVC/64bit.
816         Patch by Viktor Szakats.  Fixes Savannah bug #27590.
817
818 2010-07-12  Eli Zaretskii  <eliz@gnu.org>
819
820         * make.h (alloca) [!__GNUC__]: Don't define prototype.
821         (int w32_kill): Use pid_t for process ID argument.
822         Fixes Savannah bug #27809.
823
824 2010-07-12  Paul Smith  <psmith@gnu.org>
825
826         Integrated new .ONESHELL feature.
827         Patch by David Boyce <dsb@boyski.com>.  Modified by me.
828
829         * NEWS: Add a note about the new feature.
830         * job.c (is_bourne_compatible_shell): Determine whether we're
831         using a standard POSIX shell or not.
832         (start_job_command): Accept '-ec' as POSIX shell flags.
833         (construct_command_argv_internal): If one_shell is set and we are
834         using a POSIX shell, remove "interior" prefix characters such as
835         "@", "+", "-".  Also treat "\n" as a special character when
836         choosing the slow path, if ONESHELL is set.
837         * job.h (is_bourne_compatible_argv): Define the new function.
838
839         * make.h (one_shell): New global variable to remember setting.
840         * main.c: Declare it.
841         * read.c (record_files): Set it.
842         * commands.c (chop_commands): If one_shell is set, don't chop
843         commands into multiple lines; just keep one line.
844
845 2010-07-09  Eli Zaretskii  <eliz@gnu.org>
846
847         * w32/subproc/sub_proc.c: Include stdint.h.
848         (sub_process_t): Use intptr_t for file handles and pid_t for
849         process ID.
850         (process_pipes, process_init_fd, process_begin): Use intptr_t for
851         file handles and pid_t for process ID.  Fixes Savannah bug #27809.
852         Patch by Ozkan Sezer <sezeroz@gmail.com>
853
854         * function.c (abspath): Support absolute file names in UNC format.
855         Fixes Savannah bug #30312.
856
857         * job.c (pid2str) [WINDOWS32]: Don't use %Id with GCC < 4.x.
858         (exec_command) [WINDOWS32]: Use pid2str instead of non-portable
859         %Id.
860
861         * main.c (handle_runtime_exceptions): Use %p to print addresses,
862         to DTRT on both 32-bit and 64-bit hosts.  Savannah bug #27809.
863
864         * job.c (w32_kill, start_job_command, create_batch_file): Use
865         pid_t for process IDs and intptr_t for the 1st arg of
866         _open_osfhandle.
867         * function.c (windows32_openpipe): Use pid_t for process IDs and
868         intptr_t for the 1st arg of _open_osfhandle.
869         (func_shell): Use pid_t for process IDs.
870         * main.c (main) [WINDOWS32]: Pacify the compiler.
871         * config.h.W32.template (pid_t): Add a definition for 64-bit
872         Windows builds that don't use GCC.  Fixes Savannah bug #27809.
873         Patch by Ozkan Sezer <sezeroz@gmail.com>
874
875 2010-07-07  Paul Smith  <psmith@gnu.org>
876
877         * configure.in: Bump to a new prerelease version 3.81.91.
878
879 2010-07-06  Paul Smith  <psmith@gnu.org>
880
881         * main.c (main): Set a default value of "-c" for .SHELLFLAGS.
882         * NEWS: Mention the new behavior of .POSIX and the new .SHELLFLAGS
883         variable.
884         * job.c (construct_command_argv): Retrieve the .SHELLFLAGS value
885         and pass it to construct_command_argv_internal().
886         (construct_command_argv_internal): If .SHELLFLAGS is non-standard
887         use the slow path.  Use that value instead of hard-coded "-c".
888
889 2010-07-05  Paul Smith  <psmith@gnu.org>
890
891         * implicit.c (pattern_search): lastslash can be const.
892         * dir.c (downcase): Remove unused variable.
893         * hash.c (hash_init): Cast sizeof for error message.
894         * arscan.c (ar_scan): Cast to char* for WINDOWS32.
895         (ar_member_touch): Ditto.
896         * ar.c (glob_pattern_p): Avoid symbol collision: open -> opened
897         * signame.c (strsignal): Ditto: signal -> sig
898         * job.c (create_batch_file): Ditto: error -> error_string
899         (pid2str): Portably convert a pid_t into a string
900         (reap_children): Use it.
901         (start_waiting_job): Use it.
902         Savannah bug #27809.  Patch by Ozkan Sezer <sezeroz@gmail.com>
903
904 2010-07-03  Paul Smith  <psmith@gnu.org>
905
906         * read.c (parse_file_seq): All archive groups must end with ')' as
907         the LAST character in a word.  If there is no word ending in ')'
908         then it's not an archive group.  Fixes Savannah bug #28525.
909
910 2010-07-01  Paul Smith  <psmith@gnu.org>
911
912         * main.c (main): Append optional features using separate calls.
913         Not as efficient but not all compilers allow conditionals inside
914         macro calls.  Fixes Savannah bug #29244.
915
916 2010-01-10  Paul Smith  <psmith@gnu.org>
917
918         * make.h (patheq): Rename strieq() to patheq() for clarity.
919         * dir.c (dir_contents_file_exists_p): Use it.
920
921         * dir.c (file_impossible): Convert xmalloc/memset to xcalloc.
922         * file.c (enter_file): Ditto.
923         * job.c (new_job): Ditto.
924
925 2009-12-11  Eli Zaretskii  <eliz@gnu.org>
926
927         * job.c (construct_command_argv_internal) <sh_cmds_dos>
928         [WINDOWS32]: Add "echo." and a few more commands that are built
929         into cmd.exe.  Fixes Savannah bug #28126.
930
931         * file.c (lookup_file) [HAVE_DOS_PATHS]: Treat '\\' like we do
932         with '/'.
933
934 2009-11-15  Paul Smith  <psmith@gnu.org>
935
936         Patches for VMS provided by Hartmut Becker <Hartmut.Becker@hp.com>
937
938         * vmsjobs.c (ctrlYPressed) [VMS]: Deal with CTRL-Y.
939         (vmsHandleChildTerm) [VMS]: Ditto.
940         (astYHandler) [VMS]: Ditto.
941         (tryToSetupYAst) [VMS]: Ditto.
942         (child_execute_job) [VMS]: Ditto.
943
944         * vmsify.c (trnlog) [VMS]: Fix const errors.
945         (vmsify) [VMS]: Ditto.
946
947         * readme.vms [VMS]: Update with notes for 3.82.
948
949         * job.h (comname) [VMS]: Remember the temporary command filename
950
951         * dir.c (vmsify) [VMS]: Fix const errors.
952         (vms_hash) [VMS]: Ditto.
953         (vmsstat_dir) [VMS]: Ditto.
954         (find_directory) [VMS]: Fix case-insensitive option for VMS
955         (dir_contents_file_exists_p) [VMS]: Ditto.
956         (file_impossible) [VMS]: Ditto.
957
958         * config.h-vms.template (HAVE_FDOPEN) [VMS]: Have it.
959         (HAVE_STRCASECMP) [VMS]: Ditto.
960
961         * arscan.c (VMS_get_member_info) [VMS]: Fix timezone computation.
962         (ar_scan) [VMS]: Fix const error.
963
964 2009-11-12  Boris Kolpackov  <boris@codesynthesis.com>
965
966         * vpath.c (vpath_search, selective_vpath_search): Add index arguments
967         which allows the caller to get the index of the matching directory.
968
969         * make.h (vpath_search): Update prototype.
970
971         * remake.c (library_search): Implement linker-compatible library
972         search. Use the new VPATH_SEARCH index functionality to keep track
973         of the directory index for each match. Select the match with the
974         lowest directory index.
975
976         * implicit.c (pattern_search): Pass NULL for the index arguments in
977         the VPATH_SEARCH call.
978
979         * doc/make.texi (Directory Search for Link Libraries): Describe the
980         new search behavior.
981
982         * NEWS: Add a note about the new behavior.
983
984 2009-10-25  Paul Smith  <psmith@gnu.org>
985
986         * AUTHORS, et.al.: Update copyright years.
987
988         * implicit.c (stemlen_compare): Fix qsort() compare bug that
989         caused implicit rules with equal stem lengths to be sorted
990         indeterminately.
991
992 2009-10-24  Paul Smith  <psmith@gnu.org>
993
994         * main.c (usage): Add --eval to the usage string.
995         (switches): Add the --eval switch.
996         (main): If --eval is given, add them to the simply-expanded variable
997         -*-eval-flags-*- (necessary to allow recursion to work properly).
998         (define_makeflags): Add -*-eval-flags-*- to MAKEFLAGS.
999
1000         * NEWS: Describe the new --eval command line argument.
1001         * doc/make.texi (Options Summary): Document --eval.
1002
1003         * dep.h: eval_buffer() returns void.
1004         * read.c (eval_buffer): Ditto.
1005         (eval): Ditto.
1006
1007         * variable.h (define_variable_cname): New macro for constant
1008         variable names.
1009         * default.c (set_default_suffixes): Use it.
1010         * main.c (main): Ditto.
1011         (handle_non_switch_argument): Ditto.
1012         (define_makeflags): Ditto.
1013         * read.c (read_all_makefiles): Ditto.
1014         * variable.c (define_automatic_variables): Ditto.
1015
1016         * commands.c (dep_hash_cmp): Avoid casts.
1017         (dep_hash_1): Ditto.
1018         (dep_hash_2): Ditto.
1019
1020 2009-10-22  Boris Kolpackov  <boris@codesynthesis.com>
1021
1022         * read.c (read_all_makefiles): Mark the default makefile dependency
1023         dontcare.
1024
1025 2009-10-07  Boris Kolpackov  <boris@codesynthesis.com>
1026
1027         * read.c (do_undefine): Free the expanded variable name.
1028
1029         * commands.c (dep_hash_cmp, set_file_variables): Move the order-only
1030         to normal upgrade logic from  dep_hash_cmp to set_file_variables.
1031
1032 2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
1033
1034         * dep.h (uniquize_deps): Remove.
1035
1036         * read.c (uniquize_deps): Merge into set_file_variables in
1037         commands.c.
1038         (dep_hash_1, dep_hash_2, dep_hash_cmp): Move to commands.c.
1039
1040         * commands.c (set_file_variables): Avoid modifying the dep
1041         chain to achieve uniqueness. Fixes savannah bug 25780.
1042
1043         * implicit.c (pattern_search): Instead of re-setting all automatic
1044         variables for each rule we try, just update $*.
1045
1046 2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
1047
1048         * variable.h (undefine_variable_in_set): New function declaration.
1049         (undefine_variable_global): New macro.
1050
1051         * variable.c (undefine_variable_in_set): New function implementation.
1052
1053         * read.c (vmodifiers): Add undefine_v modifier.
1054         (parse_var_assignment): Parse undefine.
1055         (do_undefine): Handle the undefine directive.
1056         (eval): Call do_undefine if undefine_v is set.
1057
1058         * main.c (.FEATURES): Add a keyword to indicate the new feature.
1059
1060         * doc/make.texi (Undefine Directive): Describe the new directive.
1061
1062         * NEWS: Add a note about the new directive.
1063
1064 2009-10-05  Boris Kolpackov  <boris@codesynthesis.com>
1065
1066         * implicit.c (pattern_search): Initialize file variables only
1067         if we need to parse a rule that requires the second expansion.
1068
1069 2009-10-03  Paul Smith  <psmith@gnu.org>
1070
1071         * make.h: Include <alloca.h> even on systems where __GNUC__ is
1072         defined.  Not sure why it was done the other way.
1073         Requested by David Boyce <dsb@boyski.com>.
1074
1075 2009-09-30  Boris Kolpackov  <boris@codesynthesis.com>
1076
1077         * dep.h (dep): Add the DONTCARE bitfield.
1078
1079         * filedef.h (file):Add the NO_DIAG bitfield.
1080
1081         * read.c (eval_makefile): Set the DONTCARE flag in struct dep,
1082         not struct file (a file can be a dependency of many targets,
1083         some don't care, some do).
1084
1085         * remake.c (update_goal_chain): Propagate DONTCARE from struct
1086         dep to struct file before updating the goal and restore it
1087         afterwards.
1088         (update_file): Don't prune the dependency graph if this target
1089         has failed but the diagnostics hasn't been issued.
1090         (complain): Scan the file's dependency graph to find the file
1091         that caused the failure.
1092         (update_file_1): Use NO_DIAG instead of DONTCARE to decide
1093         whether to print diagnostics.
1094
1095         Fixes Savannah bugs #15110, #25493, #12686, and #17740.
1096
1097 2009-09-28  Paul Smith  <psmith@gnu.org>
1098
1099         * doc/make.texi (Pattern Intro): Move the match algorithm
1100         discussion into the "Pattern Match" node.
1101         (Pattern Match): Expand on the pattern rule matching algorithm.
1102
1103 2009-09-28  Andreas Buening  <andreas.buening@nexgo.de>
1104
1105         * job.c (construct_command_argv_internal) [OS2]: Don't eat too
1106         much of the command line on a single pass.
1107
1108 2009-09-28  Boris Kolpackov  <boris@codesynthesis.com>
1109
1110         * varible.c (create_pattern_var): Insert variables into the
1111         PATTERN_VARS list in the shortest patterns first order.
1112
1113         * implicit.c (tryrule): Add STEMLEN and ORDER members. These are
1114         used to sort the rules.
1115         (stemlen_compare): Compare two tryrule elements.
1116         (pattern_search): Sort the rules so that they are in the shortest
1117         stem first order.
1118
1119         * main.c (.FEATURES): Add a keyword to indicate the new behavior.
1120
1121         * doc/make.texi (Pattern-specific Variable Values): Describe the
1122         new pattern-specific variables application order.
1123         (Introduction to Pattern Rules): Describe the new pattern rules
1124         search order.
1125
1126         * NEWS: Add a note about the new behavior.
1127
1128 2009-09-27  Paul Smith  <psmith@gnu.org>
1129
1130         * doc/make.texi (Double-Colon): Mention that pattern rules with
1131         double-colons have a different meaning.  Savannah bug #27497.
1132
1133 2009-09-27  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
1134
1135         * configh.dos.template: Remove unconditional definition of
1136         SYS_SIGLIST_DECLARED.
1137         Include <sys/version.h> because ports of GCC 4.3.0 and later no
1138         longer include it, so macros like __DJGPP_MINOR__ are no longer
1139         defined automatically.
1140
1141         * Makefile.DOS.template (INCLUDES): Use $(prefix) and the
1142         corresponding variables to define LIBDIR, INCLUDEDIR and LOCALEDIR
1143         instead of using the hardcoded ones.
1144         (SUBDIRS): doc subdir added.
1145         (INFO_DEPS, DVIS): Values changed to 'make.info' and 'make.dvi'.
1146         (TEXI2HTML, TEXI2HTML_FLAGS): Removed.  Use makeinfo --html to
1147         create html formated docs.  texi2html may not be ported to DOS.
1148         (make.info, make.dvi, make.ps, make.html): Make targets depend on
1149         'make.texi'.
1150         (.texi.info, .texi, .texi.dvi): Now invoked recursively.  Change
1151         -I switch to look in ./ instead of ./doc.
1152         (html): Target depend on html-recursive instead of make_1.html.
1153         (make_1.html): Removed.
1154         (mostlyclean-aminfo): Use $(srcdir)/doc instead of ./ as prefix.
1155         (all-recursive): Allow for more than one subdir in the build
1156         process.
1157         (mostlyclean-recursive, clean-recursive, distclean-recursive)
1158         (maintainer-clean-recursive, check-recursive): Enter in doc/ too.
1159         (tags-recursive): Allow for more than one subdir in the build
1160         process.
1161         (info-recursive, dvi-recursive, ps-recursive, html-recursive): New
1162         targets.  Enter into doc/ to produce the targets.
1163         (all-am): $(INFO_DEPS) replaced by info.
1164
1165 2009-09-26  Paul Smith  <psmith@gnu.org>
1166
1167         * read.c (record_files): Use free_ns() to free struct nameseq.
1168         (eval): Ditto.
1169
1170         * rule.c (freerule): Use free_dep_chain().
1171
1172         * read.c (record_files): Free FILENAMES chain for implicit rules.
1173         (eval): Static pattern targets go into the string cache.
1174
1175         * function.c (string_glob): Free NAME in the nameseq chain.
1176
1177 2009-09-25  Boris Kolpackov  <boris@codesynthesis.com>
1178
1179         * implicit.c (pattern_search): Terminate early if we haven't
1180         found any rules to try (performance improvement).
1181
1182 2009-09-25  Boris Kolpackov  <boris@codesynthesis.com>
1183
1184         * implicit.c (pattern_search): Merge three parallel arrays,
1185         TRYRULES, MATCHES, and CHECKED_LASTSLASH, into one array
1186         of struct TRYRULE. In the old version the latter two arrays
1187         had insufficient length.
1188
1189 2009-09-24  Paul Smith  <psmith@gnu.org>
1190
1191         * implicit.c (pattern_search): Add back support for order-only
1192         prerequisites for secondary expansion implicit rules, that were
1193         accidentally dropped.  If we find a "|", enable order-only mode
1194         and set IGNORE_MTIME on all deps that are seen afterward.
1195         (pattern_search): Fix memory leaks: for intermediate files where
1196         we've already set the file variable and pattern variable sets, be
1197         sure to either save or free them as appropriate.
1198
1199 2009-09-23  Paul Smith  <psmith@gnu.org>
1200
1201         Rework the way secondary expansion is stored, for efficiency.
1202         This changes secondary expansion so that ONLY WHEN we know we have
1203         a possibility of needing secondary expansion, do we defer the
1204         secondary expansion.  This means more parsing the deps but we use
1205         a lot less memory (due to the strcache).  Also, this fixes
1206         Savannah bug #18622.
1207
1208         * read.c (eval): Don't parse the dep string here anymore.
1209         (record_files): Take the dep argument as an unparsed string.  If
1210         secondary expansion is enabled AND the prereq string has a '$' in
1211         it, then set NEED_2ND_EXPANSION and keep the entire string.
1212         Otherwise, parse the dep string here to construct the dep list
1213         with the names in the strcache.
1214
1215         * misc.c (copy_dep_chain): For NEED_2ND_EXPANSION, we need to
1216         duplicate the name string (others are in the strcache).
1217
1218         * implicit.c: Remove struct idep and free_idep_chain(): unused.
1219         (struct patdeps): New structure to store prereq information.
1220         (pattern_search): Use the NEED_2ND_EXPANSION flag to determine
1221         which prerequisites need expansion, and expand only those.
1222
1223         * file.c (split_prereqs): Break parse_prereqs() into two parts: this
1224         and enter_prereqs().  split_prereqs() takes a fully-expanded string
1225         and splits it into a DEP list, handling order-only prereqs.
1226         (enter_prereqs): This function enters a list of DEPs into the file
1227         database.  If there's a stem defined, expand any pattern chars.
1228         (expand_deps): Only try to expand DEPs which have NEED_2ND_EXPANSION
1229         set.  Use the above functions.
1230         (snap_deps): Only perform second expansion on prereqs that need it,
1231         as defined by the NEED_2ND_EXPANSION flag.
1232         (print_prereqs): New function to print the prereqs
1233         (print_file): Call print_prereqs() rather than print inline.
1234
1235         * hash.h (STRING_COMPARE): Take advantage of strcache() by
1236         comparing pointers.
1237         (STRING_N_COMPARE): Ditto.
1238         (ISTRING_COMPARE): Ditto.
1239
1240         * dep.h (PARSE_FILE_SEQ): New macro to reduce casts.
1241         (parse_file_seq): Return void*
1242         * read.c (parse_file_seq): Return void*.
1243         (eval): Invoke macroized version of parse_file_seq()
1244         * default.c (set_default_suffixes): Ditto.
1245         * file.c (split_prereqs): Ditto.
1246         * function.c (string_glob): Ditto.
1247         * main.c (main): Ditto.
1248         * rule.c (install_pattern_rule): Ditto.
1249
1250         * filedef.h: Add split_prereqs(), enter_prereqs(), etc.
1251
1252 2009-09-16  Paul Smith  <psmith@gnu.org>
1253
1254         * misc.c (alloc_dep, free_dep): Now that we have xcalloc(),
1255         convert to macros.
1256         * dep.h: Create alloc_dep() / free_dep() macros.
1257
1258         * implicit.c (pattern_search): Take advantage of the new
1259         parse_file_seq() to add the directory prefix to each prereq.
1260
1261         * dep.h: Remove multi_glob() and enhance parse_file_seq() to do it
1262         all.  Avoid reversing chains.  Support adding prefixes.
1263         * read.c (parse_file_seq): Rewrite to support globbing.  Allow for
1264         cached/non-cached results.
1265         (eval): Remove multi_glob() & invoke new parse_file_seq().
1266         * rule.c (install_pattern_rule): Ditto.
1267         * main.c (main): Ditto.
1268         * implicit.c (pattern_search): Ditto.
1269         * function.c (string_glob): Ditto.
1270         * file.c (parse_prereqs): Ditto.
1271         * default.c (set_default_suffixes): Ditto.
1272
1273         * variable.c (parse_variable_definition): Don't run off the end of
1274         the string if it ends in whitespace (found with valgrind).
1275
1276         * commands.c (set_file_variables): Keep space for all targets in
1277         $? if -B is given (found with valgrind).
1278
1279 2009-09-15  Paul Smith  <psmith@gnu.org>
1280
1281         * misc.c (concat): Make concat() variadic so it takes >3 arguments.
1282         (xcalloc): Add new function.
1283         * make.h: New declarations.
1284
1285         * ar.c (ar_glob_match): New calling method for concat().
1286         * main.c (main): Ditto.
1287         (decode_env_switches): Ditto.
1288         * read.c (eval_makefile): Ditto.
1289         (tilde_expand): Ditto.
1290         (parse_file_seq): Ditto.
1291         * variable.c (target_environment): Ditto.
1292         (sync_Path_environment): Ditto.
1293
1294         * ar.c (ar_glob_match): Use xcalloc().
1295         * dir.c (file_impossible): Ditto.
1296         * file.c (enter_file): Ditto.
1297         * job.c (new_job): Ditto.
1298         * read.c (parse_file_seq): Ditto.
1299         * vmsfunctions.c (opendir): Ditto.
1300
1301 2009-09-14  Rafi Einstein  <rafi.einstein@gmail.com>  (tiny patch)
1302
1303         * w32/subproc/sub_proc.c (process_begin): Check *ep non-NULL
1304         inside the loop that looks up environment for PATH.
1305
1306 2009-08-31  Eli Zaretskii  <eliz@gnu.org>
1307
1308         * function.c (windows32_openpipe): Update envp after calling
1309         sync_Path_environment.
1310
1311 2009-08-02  Paul Smith  <psmith@gnu.org>
1312
1313         * remake.c (notice_finished_file): Ensure file->cmds is not null
1314         before looping through them.  Fixes Savannah bug #21824.
1315
1316         * doc/make.texi (Wildcard Examples): Clarify when objects is
1317         wildcard-expanded.  Fixes Savannah bug #24509.  Patch by Martin Dorey.
1318         (Include): Clarify the behavior of -include.
1319         Fixes Savannah bug #18963.
1320
1321 2009-08-01  Paul Smith  <psmith@gnu.org>
1322
1323         * doc/make.texi (Catalogue of Rules): Clarify where -c, -F,
1324         etc. come on the command line.  Fixes Savannah bug #27093.
1325
1326         * expand.c (expand_argument): If the argument is large enough use
1327         xmalloc() instead of alloca().  Fixes Savannah bug #27143.
1328
1329         * variable.c (do_variable_definition): Avoid using alloca() to
1330         hold values, which can be large.  Fixes Savannah bug #23960.
1331
1332         * job.c (new_job): Use memmove() instead of strcpy() since both
1333         pointers are in the same memory block.  Fixes Savannah bug #27148.
1334         Patch by Petr Machata.
1335
1336 2009-07-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1337
1338         * job.c (construct_command_argv_internal): Add "ulimit" and
1339         "unset" to the sh_cmds for Unixy shells.
1340
1341 2009-07-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1342
1343         * configure.in: Move side-effects outside AC_CACHE_VAL arguments
1344         that set make_cv_sys_gnu_glob, so they are also correctly set
1345         when the cache has been populated before.
1346
1347 2009-07-04  Eli Zaretskii  <eliz@gnu.org>
1348
1349         * function.c (func_realpath) [!HAVE_REALPATH]: Require the file to
1350         exist, as realpath(3) does where it's supported.
1351
1352 2006-07-04  Eli Zaretskii  <eliz@gnu.org>
1353
1354         * function.c (IS_ABSOLUTE, ROOT_LEN): New macros.
1355         (abspath): Support systems that define HAVE_DOS_PATHS (have
1356         drive letters in their file names).  Use IS_PATHSEP instead of a
1357         literal '/' comparison.  Fixes Savannah bug #26886.
1358
1359 2009-06-14  Paul Smith  <psmith@gnu.org>
1360
1361         * remake.c (update_file_1): Remember the original file we marked
1362         as updating, so we can clear that flag again.  If we find a target
1363         via vpath, FILE might change.
1364         (check_dep): Ditto.  Fixes Savannah bug #13529.
1365         Patch by Reid Madsen <reid.madsen@tek.com>.
1366
1367 2009-06-13  Paul Smith  <psmith@gnu.org>
1368
1369         * doc/make.texi (MAKEFILES Variable): Be explicit that files
1370         included by MAKEFILES cannot give default goals.
1371         * read.c (eval): If set_default is not set, pass the no-default-goal
1372         value when we read included makefiles.  Fixes Savannah bug #13401.
1373
1374         * ar.c (ar_name): Ensure that targets with empty parens aren't
1375         considered archive member references: archive members must have a
1376         non-empty "member" string.  Fixes Savannah bug #18435.
1377
1378         * function.c (string_glob): Rely on multi_glob() to determine
1379         whether files exist or not.  Remove call to file_exists_p() which
1380         is not always correct.  Fixes Savannah bug #21231.
1381         * read.c (multi_glob): Add a new argument EXISTS_ONLY; if true
1382         then only files that really exist will be returned.
1383         * dep.h: Add new argument to multi_glob().
1384         * rule.c (install_pattern_rule): Ditto.
1385         * read.c (eval): Ditto.
1386         * main.c (main): Ditto.
1387         * implicit.c (pattern_search): Ditto.
1388         * file.c (parse_prereqs): Ditto.
1389         * default.c (set_default_suffixes): Ditto.
1390
1391 2009-06-09  Paul Smith  <psmith@gnu.org>
1392
1393         * commands.c (set_file_variables): If always_make_flag is set,
1394         always add the prereq to $?.  Fixes Savannah bug #17825.
1395
1396         * remake.c (update_file_1): When rebuilding deps of FILE, also try
1397         to rebuild the deps of all the also_make targets for that file.
1398         Fixes Savannah bug #19108.
1399
1400         * implicit.c (pattern_search): Undo test for is_target, added by
1401         BorisK on 21 Sep 2004.  This goes against step 5c in the "Implicit
1402         Rule Search Algorithm".  Fixes Savannah bug #17752.
1403
1404         * main.c (clean_jobserver): Clear the jobserver_fds options and
1405         set job_slots to the default when we clean up.
1406         (define_makeflags): Return the new MAKEFLAGS value.
1407         (main): Reset MAKEFLAGS in the environment when we re-exec.
1408         Fixes Savannah bug #18124.
1409
1410 2009-06-08  Paul Smith  <psmith@gnu.org>
1411
1412         * read.c (eval): Collapse continuations post-semicolon on target-
1413         specific variables.  Fixes Savannah bug #17521.
1414
1415 2009-06-07  Paul Smith  <psmith@gnu.org>
1416
1417         * job.c (reap_children): For older systems without waitpid() (are
1418         there any of these left?) run wait(2) inside EINTRLOOP to handle
1419         EINTR errors.  Fixes Savannah bug #16401.
1420
1421         * (various): Debug message cleanup.  Fixes Savannah bug #16469.
1422
1423         * main.c: Fix bsd_signal() typedef.  Fixes Savannah bug #16473.
1424
1425         * file.c (snap_deps): Set SNAPPED_DEPS at the start of snapping,
1426         not the end, to catch second expansion $(eval ...) defining new
1427         target/prereq relationships during snap_deps.
1428         Fixes Savannah bug #24622.
1429
1430         * read.c (record_files): The second-expansion "f->updating" hack
1431         was not completely correct: if assumed that the target with
1432         commands always had prerequisites; if one didn't then the ordering
1433         was messed up.  Fixed for now to use f->updating to decide whether
1434         to preserve the last element in the deps list... but this whole
1435         area of constructing and reversing the deps list is too confusing
1436         and needs to be reworked.  Fixes Savannah bug #21198.
1437
1438 2009-06-06  Paul Smith  <psmith@gnu.org>
1439
1440         * hash.c (hash_insert): Remove useless test for NULL.
1441         Fixes Savannah bug #21823.
1442
1443         * make.h: Move SET_STACK_SIZE determination to make.h.
1444         * main.c (main): New global variable, STACK_LIMIT, holds the
1445         original stack limit when make was started.
1446         * job.c (start_job_command): Reset the stack limit, if we changed it.
1447         Fixes Savannah bug #22010.
1448
1449         * remake.c (check_dep): Only set the target's state to not-started
1450         if it's not already running.  Found this while testing -j10 builds
1451         of glibc: various targets were being rebuilt multiple times.
1452         Fix from Knut St. Osmundsen; fixes a problem reported in Savannah
1453         bug #15919.
1454
1455         * read.c (multi_glob): Don't pass GLOB_NOCHECK to glob(3); instead
1456         handle the GLOB_NOMATCH error.  This is to work around Sourceware.org
1457         Bugzilla bug 10246.
1458
1459 2009-06-04  Paul Smith  <psmith@gnu.org>
1460
1461         * read.c (eval): Skip initial whitespace (ffeed, vtab, etc.)
1462
1463         * maintMakefile: Modify access of config and gnulib Savannah
1464         modules to use GIT instead of CVS.
1465
1466         * main.c (main): Initialize the LENGTH field in SHELL_VAR.
1467         Fixes Savannah bug #24655.
1468
1469         * read.c (eval_buffer): Don't dereference reading_file if it's NULL;
1470         this can happen during some invocations of $(eval ...) for example.
1471         Fixes Savannah bug #24588.  Patch by Lars Jessen <ljessen@ljessen.dk>
1472
1473 2009-06-02  Paul Smith  <psmith@gnu.org>
1474
1475         * configure.in: Check for fileno()
1476         * read.c (eval_makefile): If fileno() is available, set CLOSE_ON_EXEC
1477         for the makefile file so invocations of $(shell ...) don't inherit it.
1478         Fixes Savannah bug #24277.
1479
1480 2009-06-01  Paul Smith  <psmith@gnu.org>
1481
1482         * main.c (main): The previous fix for .DEFAULT_GOAL had issues;
1483         expansion was handled incorrectly.  Rework the default goal
1484         handling to save the variable only.  Remove default_goal_file and
1485         default_goal_name.
1486         * read.c (eval): Check default_goal_var, not default_goal_name.
1487         * read.c (record_target_var): Don't check default_goal_file here.
1488
1489 2009-05-31  Paul Smith  <psmith@gnu.org>
1490
1491         * main.c (main): Expand the .DEFAULT_GOAL variable before using
1492         it, and if the multi_glob() returns nothing (say it expanded to
1493         nothing but spaces) then don't crash.  Fixes Savannah bug #25697.
1494
1495         * doc/make.texi (Quick Reference): Add $(if ..), $(or ..), and
1496         $(and ..) to the reference.  Fixes Savannah bug #25694.
1497
1498         * make.1: Be clear that some recipes will be executed even with -n.
1499         * doc/make.texi: Ditto.  Fixes Savannah bug #25460.
1500
1501         * doc/make.texi (Override Directive): Make more clear how
1502         overrides and appends interact.
1503         Elucidates part of Savannah bug #26207.
1504
1505         * read.c (record_target_var): Don't reset the origin on
1506         target-specific variables; try_variable_definition() will handle
1507         this correctly.  Fixes Savannah bug #26207.
1508
1509         * maintMakefile (do-po-update): Copy PO files into $(top_srcdir).
1510         Fixes Savannah bug #25712.
1511
1512         * implicit.c (pattern_search): Keep a pointer to the beginning of
1513         the filename and save that instead of the constructed pointer.
1514         Fixes Savannah bug #26593.
1515         Patch by Mark Seaborn <mrs@mythic-beasts.com>
1516
1517 2009-05-30  Paul Smith  <psmith@gnu.org>
1518
1519         * doc/make.texi (Multi-Line): Add a description of the new abilities
1520         of define/endef.  Rename "Sequences" to "Multi-Line" and fix some
1521         "command sequence" vs. "recipe" syntax.
1522         * read.c (do_define): Modify to allow assignment tokens (=, :=, etc.)
1523         after a define, to create variables with those flavors.
1524
1525 2009-05-25  Paul Smith  <psmith@gnu.org>
1526
1527         Reworked the parser for variable assignments to allow multiple
1528         modifiers, and in any order.  Also allows variable and
1529         prerequisites to be modifier names ('export', 'private', etc.)
1530
1531         * NEWS: Add notes about user-visible changes.
1532
1533         * read.c (struct vmodifiers): Remember what modifiers were seen.
1534         (parse_var_assignment): New function to parse variable assignments.
1535         (eval): Call the new function.  Handle variable assignments earlier.
1536
1537         * variable.c (parse_variable_definition): Only parse; don't create var.
1538         (assign_variable_definition): Call parse, then create the var.
1539
1540 2009-05-24  Paul Smith  <psmith@gnu.org>
1541
1542         * doc/make.texi: Fix the ISBN for the GNU make manual.  Incorrect
1543         value noticed by Hans Stol <hans.stol@nc3a.nato.int>.
1544
1545 2009-03-14  Eli Zaretskii  <eliz@gnu.org>
1546
1547         * w32/pathstuff.c (convert_Path_to_windows32): Fix last change.
1548         Fixes Savannah bug #25412.
1549
1550         * w32/subproc/sub_proc.c <top level>: Update Copyright years.  Add
1551         prototype for xmalloc.
1552         (find_file): Accept 3 arguments PATH_VAR, FULL_FNAME, and FULL_LEN
1553         instead of an LPOFSTRUCT pointer.  Use xmalloc instead of malloc.
1554         Loop over an array of extensions, instead of duplicating the same
1555         code inline.  Use SearchPath followed by CreateFile, instead of
1556         the obsolete OpenFile.  Fixes Savannah bug #17277.
1557         (process_begin): Find $(PATH) in `envp', and pass a pointer to it
1558         to `find_file'.  Fixes Savannah bug #25662.
1559
1560 2009-03-07  Eli Zaretskii  <eliz@gnu.org>
1561
1562         * function.c (func_shell): Don't close pipedes[1] if it is -1.
1563         Fixes Savannah bug #20495.
1564
1565 2009-02-28  Ralf Wildenhues  <address@hidden>
1566
1567         * doc/make.texi (Instead of Execution): Document interaction of
1568         -t with phony targets.
1569
1570 2009-02-23  Ramon Garcia  <ramon.garcia.f@gmail.com>
1571
1572         Introduce a new keyword "private" which applies to target-specific
1573         variables and prevents their values from being inherited.
1574
1575         * variable.h (struct variable): Add private_var flag to each variable.
1576         Add a flag to specify which list entry switches to the parent target.
1577         * variable.c (define_variable_in_set): Initialize private_var flag.
1578         (lookup_variable): Skip private variables in parent contexts.
1579         (initialize_file_variables): Set next_is_parent appropriately.
1580         (print_variable): Show the private_var flag.
1581         * read.c (eval): Recognize the private keyword.
1582         (record_target_var): Set private_var.
1583         * doc/make.texi (Suppressing Inheritance): Add documentation.
1584
1585 2008-10-26  Paul Smith  <psmith@gnu.org>
1586
1587         * configure.in: Check for strndup().
1588         * misc.c (xstrndup): Rename savestring to xstrndup.  Use strndup
1589         if it's available.
1590         * make.h: Rename savestring to xstrndup.
1591         * commands.c (chop_commands): Ditto.
1592         * function.c (func_foreach): Ditto.
1593         * read.c (eval, record_files): Ditto.
1594         * variable.c (define_variable_in_set): Ditto.
1595
1596 2008-09-30  Eli Zaretskii  <eliz@gnu.org>
1597
1598         * build_w32.bat (GCCBuild): Use "-gdwarf-2 -g3" instead of
1599         "-gstabs+ -ggdb3".
1600
1601         * w32/subproc/build.bat (GCCBuild): Likewise.
1602
1603 2008-09-30  David Russo  <d-russo@ti.com>  (tiny change)
1604
1605         * job.c (construct_command_argv_internal): Avoid extra backslash
1606         in batch-mode Unixy shells.  Under DB_JOBS, display the contents
1607         of the batch file.
1608
1609 2008-05-31  Eli Zaretskii  <eliz@gnu.org>
1610
1611         * README.W32.template: Remove obsolete text about non-support for
1612         -jN without Unixy shell.  Remove obsolete text about not supplying
1613         Visual Studio project files (we do supply them).  Modify text to
1614         prefer GCC builds to MSC builds.
1615
1616 2008-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1617
1618         * doc/make.texi (Empty Targets): Fix typo.
1619
1620 2008-03-27  Paul Smith  <psmith@gnu.org>
1621
1622         Fix Savannah bug #22379:
1623         * ar.c (ar_glob_match): Zero the allocated structure.
1624         * read.c (parse_file_seq): Ditto.
1625
1626 2008-03-08  Brian Dessent  <brian@dessent.net>
1627
1628         * maintMakefile: Update Translation Project location.
1629
1630 2008-01-26  Eli Zaretskii  <eliz@gnu.org>
1631
1632         * variable.c (target_environment): Don't use shell_var if its
1633         `value' field is NULL.
1634
1635 2007-12-22  Eli Zaretskii  <eliz@gnu.org>
1636
1637         Suggested by Juan Manuel Guerrero <juan.guerrero@gmx.de>:
1638
1639         * Makefile.DOS.template (info_TEXINFOS): Remove unused variable.
1640         (TEXINFOS): Value changed to `doc/make.texi'.
1641         (.SUFFIXES): Use .texi instead of .texinfo.
1642         (make.info, make.dvi): Depend on doc/make.texi.
1643         (.texi.info): New target, instead of ".texinfo.info".  Change -I
1644         switch to $(MAKEINFO) to look in doc/.  Use --no-split.
1645         (.texi): New target, instead of ".texinfo".  Change -I switch to
1646         $(MAKEINFO) to look in doc/.  Use --no-split.
1647         (.texi.dvi): New target, instead of ".texinfo.dvi".  Change -I
1648         switch to $(MAKEINFO) to look in doc/.
1649         (install-info-am, uninstall-info): Don't look for "*.i[0-9]" and
1650         "*.i[0-9][0-9]" (due to --no-split above).
1651         (noinst_TEXINFOS, TEXI2HTML, TEXI2HTML_FLAGS): New variables.
1652         (html, make_1.html): New targets.
1653         (.PHONY): Add "html".
1654         (.SUFFIXES): Add .html.
1655
1656 2007-12-22  Juan Manuel Guerrero  <juan.guerrero@gmx.de>  (tiny change)
1657
1658         * configh.dos.template [__DJGPP__]: Replace HAVE_SYS_SIGLIST with
1659         HAVE_DECL_SYS_SIGLIST.
1660
1661         * job.c (child_execute_job): Remove __MSDOS__ because MSDOS/DJGPP
1662         build does not use child_execute_job.
1663
1664         * variable.c (define_automatic_variables) [__MSDOS__]: Always
1665         export the SHELL environment variable to the child.
1666
1667 2007-12-22  Eli Zaretskii  <eliz@gnu.org>
1668
1669         * config.h.W32: Include sys/types.h.
1670         [!_PID_T_] (pid_t): Define only if not already defined by sys/types.h.
1671
1672         * vpath.c (construct_vpath_list) [HAVE_DOS_PATHS]: Support VPATH
1673         values that use `:' in drive letters, when PATH_SEPARATOR_CHAR is
1674         also `:'.
1675
1676 2007-11-04  Paul Smith  <psmith@gnu.org>
1677
1678         * doc/make.texi: Convert references to "commands", "command
1679         lines", and "command script" to "recipe".
1680         * NEWS: Ditto.
1681         * commands.c, file.c, job.c, remake.c, read.c, variable.c, main.c:
1682         Ditto.
1683
1684 2007-10-27  Bruno Haible  <bruno@clisp.org>
1685
1686         * remake.c (f_mtime): Print time difference values between 100 and
1687         ULONG_MAX in fixed-point notation rather than in exponention notation.
1688
1689 2007-10-12  Eli Zaretskii  <eliz@gnu.org>
1690
1691         * variable.c (do_variable_definition): Allow $(SHELL) to expand to
1692         a more complex value than a simple shell: if it's not a default
1693         shell now then expand it and see if is a default shell then.
1694
1695 2007-10-10  Eli Zaretskii  <eliz@gnu.org>
1696
1697         * dir.c (find_directory) [WINDOWS32]: Remove trailing slashes from
1698         pathnames, with const strings.
1699         * build_w32.bat [WINDOWS32]: If no config.h.W32 exists, create one
1700         from the template (used for building from CVS, not a dist).
1701
1702 2007-10-10  Paul Smith  <psmith@gnu.org>
1703
1704         * make.h: Add a prototype for w32_kill() (change suggested by
1705         Yongwei Wu <wuyongwei@gmail.com>).
1706
1707 2007-09-21  Eli Zaretskii  <eliz@gnu.org>
1708
1709         * w32/pathstuff.c (convert_Path_to_windows32): Handle quoted
1710         directories in Path.
1711
1712 2007-09-12  Paul Smith  <psmith@gnu.org>
1713
1714         * doc/make.texi: Applied wording cleanups from Savannah patch #6195.
1715         Provided by Diego Biurrun <diego@biurrun.de>
1716         (Complex Makefile): Remove .PHONY setting for tar: patch #6196.
1717         Provided by Diego Biurrun <diego@biurrun.de>
1718
1719 2007-09-11  Paul Smith  <psmith@gnu.org>
1720
1721         * doc/make.texi (Special Variables): Moved this into the "How to
1722         Use Variables" chapter.  Added a table entry for .RECIPEPREFIX.
1723         (MAKEFILE_LIST) No longer a section; this was added into the
1724         "Special Variables" section.
1725         (Rule Introduction): Reference .RECIPEPREFIX.
1726         (Simple Makefile): Ditto.
1727         (Rule Syntax): Ditto.
1728         (Command Syntax): Ditto.
1729         (Error Messages): Ditto.
1730
1731 2007-09-10  Paul Smith  <psmith@gnu.org>
1732
1733         * commands.c (print_commands): Don't print an extra line in the
1734         command scripts.  Prefix the command scripts with cmd_prefix, not \t.
1735
1736         * read.c (construct_include_path): Add the full string to the cache; we
1737         were chopping the last char.
1738
1739         * NEWS: Announce the .RECIPEPREFIX special variable.
1740         * variable.c (lookup_special_var): Rename from handle_special_var().
1741         (lookup_variable): Call the new name.
1742         (set_special_var): New function: handle setting of special variables.
1743         When setting .RECIPEPREFIX, reset the cmd_prefix global variable.
1744         (do_variable_definition): Call it.
1745         * make.h (RECIPEPREFIX_DEFAULT): Define the default command prefix char.
1746         (RECIPEPREFIX_NAME): Define the command prefix special variable name.
1747         * main.c (main): Create the .RECIPEPREFIX special variable.
1748         * read.c (eval): Remove the cmd_prefix characters from the command
1749         scripts here, so they're not stored in the commands array at all,
1750         rather than waiting and stripping them out during command construction.
1751         * job.c (construct_command_argv_internal): Don't skip cmd_prefix here.
1752
1753 2007-08-15  Paul Smith  <psmith@gnu.org>
1754
1755         * doc/make.texi (GNU Free Documentation License): The fdl.texi
1756         file has had the section info removed, so add some to make.texi
1757         before we include it.
1758
1759 2007-08-15  Icarus Sparry  <savannah@icarus.freeuk.com>
1760
1761         * remake.c (check_dep): Reset the target state for intermediate
1762         files.  They might have been considered before but not updated
1763         then (order-only for example) but they will be this time.
1764         Fixes Savannah bug #'s 3330 and 15919.
1765
1766 2007-07-21  Eli Zaretskii  <eliz@gnu.org>
1767
1768         Fix Savannah bug #20549:
1769         * function.c (func_shell): Call construct_command_argv with zero
1770         value of FLAGS.
1771         * job.c (construct_command_argv_internal): New argument FLAGS; all
1772         callers changed.
1773         [WINDOWS32]: If FLAGS has the COMMANDS_RECURSE bit set, ignore
1774         just_print_flag.
1775         * job.h (construct_command_argv_internal): Update prototype.
1776
1777 2007-07-13  Paul Smith  <psmith@gnu.org>
1778
1779         * file.c (expand_deps): Use variable_buffer as the start of the
1780         buffer, not the original pointer (in case it was reallocated).
1781         Fix suggested by Rafi Einstein <rafi.einstein@formalism-labs.com>.
1782         Fixes Savannah bug #20452.
1783
1784 2007-07-04  Paul Smith  <psmith@gnu.org>
1785
1786         * (ALL FILES): Update to GPLv3.
1787         * (ALL FILES): Update copyright for 2007.
1788
1789         * main.c (print_version): Move the host type info to the second line.
1790
1791 2007-06-29  Thiemo Seufer  <ths@mips.com>
1792
1793         * maintMakefile: Update Translation Project location.
1794
1795 2007-06-13  Paul Smith  <psmith@gnu.org>
1796
1797         * doc/make.texi (Reading Makefiles): "Expansion of deferred" ->
1798         "Expansion of a deferred"
1799         Fixes Savannah bug #20018.
1800
1801         * expand.c (variable_expand_for_file): Preserve the value of
1802         reading_file rather than setting it to 0 at the end.
1803         Fixes Savannah bug #20033.
1804
1805 2007-05-11  Paul Smith  <psmith@gnu.org>
1806
1807         * job.c (new_job): Add debug info to specify where make found the
1808         command script it is running to build a target.
1809         Fixes Savannah bug #18617.
1810
1811         * default.c (default_suffixes,default_suffix_rules,default_variables):
1812         Add support for Objective C.  Fixes Savannah bug #16389.
1813         Based on a patch provided by Peter O'Gorman <peter@pogma.com>.
1814
1815         * function.c (func_lastword): Initialize p.
1816
1817         * doc/make.texi (Eval Function, Implicit Variables, Special Targets):
1818         Doc fixes noticed by Bob <twobanjobob@sbcglobal.net>.  Patch from
1819         Dave Korn <dave.korn@artimi.com>
1820
1821 2007-05-08  Paul Smith  <psmith@gnu.org>
1822
1823         Fix Savannah bug #19656:
1824
1825         * configure.in: Check for strcasecmp(), strcmpi(), and stricmp().
1826
1827         * make.h: Change all case-insensitive string compares to use
1828         strcasecmp() (from POSIX).  If we don't have that but do have one
1829         of the others, define strcasecmp to be one of those instead.  If
1830         we don't have any, declare a prototype for our own version.
1831
1832         * misc.c (strcasecmp): Use this if we can't find any native
1833         case-insensitive string comparison function.
1834         * vmsfunctions.c: Remove strcmpi(); we'll use misc.c:strcasecmp().
1835         * main.c (find_and_set_default_shell): Use strcasecmp() instead of
1836         strcmpi().
1837         * job.c (_is_unixy_shell, construct_command_argv_internal): Use
1838         strcasecmp() instead of stricmp().
1839         * hash.h (ISTRING_COMPARE, return_ISTRING_COMPARE): Use strcasecmp()
1840         instead of strcmpi().
1841         * acinclude.m4: Remove the strcasecmp() check from here.
1842
1843 2007-03-21  Paul Smith  <psmith@gnu.org>
1844
1845         * configure.in: Don't turn on case-insensitive file system support
1846         if --disable-... is given.  Fixes Savannah bug #19348.
1847
1848 2007-03-19  Paul Smith  <psmith@gnu.org>
1849
1850         * ALL: Use the strcache for all file name strings, or other
1851         strings which we will never free.  The goal is to save memory by
1852         avoiding duplicate copies of strings.  However, at the moment this
1853         doesn't save much memory in most situations: due to secondary
1854         expansion we actually save prerequisite lists twice (once before
1855         the secondary expansion, and then again after it's been parsed
1856         into individual file names in the dep list).  We will resolve this
1857         in a future change, by doing the parsing up-front for targets
1858         where secondary expansion is not set.
1859
1860         Moving things into the strcache also allows us to use const
1861         pointers in many more places.
1862
1863 2007-01-03  Paul Smith  <psmith@gnu.org>
1864
1865         * make.h (ENULLLOOP): Reset errno after each failed invocation of
1866         the function, not just the first.  Fixes Savannah bug #18680.
1867
1868 2006-11-18  Paul Smith  <psmith@gnu.org>
1869
1870         * strcache.c (strcache_add_len): Don't allocate a new buffer
1871         unless the string is not already nil-terminated.  Technically this
1872         is a violation of the standard, since we may be passed an array
1873         that is not long enough to test one past.  However, in make this
1874         is never true since we only use nil-terminated strings or
1875         sub-strings thereof.
1876
1877         * read.c (eval, do_define): Use cmd_prefix instead of '\t'.
1878
1879         * main.c: New global cmd_prefix, defaults to '\t'.
1880         * job.c (construct_command_argv_internal): Use cmd_prefix instead
1881         of '\t'.
1882
1883         * dir.c: Constified.
1884         (dir_contents_file_exists_p): Check for an error return from
1885         readdir(), just in case.
1886
1887         * commands.c: Constified.
1888         * default.c: Constified.
1889         * expand.c: Constified.
1890         * function.c: Partial constification.
1891         * variable.c: Partial constification.
1892         * vmsify.c: Constification.  Hard to test this but I hope I didn't
1893         screw it up!
1894         * vpath.c: Partial constification.
1895         * w32/pathstuff.c: Partial constification.
1896
1897 2006-11-16  Eli Zaretskii  <eliz@gnu.org>
1898
1899         * main.c (main) [HAVE_DOS_PATHS]: Treat DOS style argv[0] with
1900         backslashes and drive letters as absolute.
1901
1902 2006-10-22  Paul Smith  <psmith@gnu.org>
1903
1904         * main.c (struct command_switch): Use const and void*.
1905
1906 2006-10-21  Paul Smith  <psmith@gnu.org>
1907
1908         * ar.c: Constified.
1909         * arscan.c: Constified.
1910
1911 2006-09-30  Paul Smith  <psmith@gnu.org>
1912
1913         * doc/make.texi (MAKEFILE_LIST Variable): Modify reference to
1914         point to lastword since the example was updated.
1915         Fixes Savannah bug #16304.
1916         (Secondary Expansion): Correct example description.
1917         Fixes Savannah bug #16468.
1918         (Makefile Contents): Clarify that comments cannot appear within
1919         variable references or function calls.
1920         Fixes Savannah bug #16577.
1921         (Special Targets): Clarify how .NOTPARALLEL works in recursion.
1922         Fixes Savannah bug #17701.
1923         Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
1924         (Prerequisite Types): Added an example of using order-only
1925         prerequisites.  Fixes Savannah bug #17880.
1926         (Rule Syntax): "lise" -> "list"
1927         (Multiple Rules): ... -> @dots{}
1928         (Splitting Lines): ditto.
1929
1930         * remake.c (update_file_1): Prereqs that don't exist should be
1931         considered changed, for the purposes of $?.
1932         Fixes Savannah bug #16051.
1933
1934         * make.1: Remove extraneous "+".
1935         Fixes Savannah bug #16652.
1936
1937 2006-09-06  Paul D. Smith  <psmith@gnu.org>
1938
1939         * configure.in: Include sys/types.h when checking for sys/wait.h.
1940
1941 2006-08-18  Eli Zaretskii  <eliz@gnu.org>
1942
1943         * configure.in (PATH_SEPARATOR_CHAR): Define to the value of
1944         $PATH_SEPARATOR.
1945
1946         * make.h (PATH_SEPARATOR_CHAR): Define only if still undefined.
1947         Normally, it is defined in config.h.
1948
1949         * config/dospaths.m4 <ac_cv_dos_paths>: Define to yes on Cygwin as
1950         well.
1951
1952         * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Define
1953         sh_chars_sh for Windows platforms that emulate Unix.
1954
1955 2006-05-07  Paul D. Smith  <psmith@gnu.org>
1956
1957         * README.OS2.template: Updates provided by Andreas Buening
1958         <andreas.buening@nexgo.de>.
1959
1960 2006-04-30  Paul D. Smith  <psmith@gnu.org>
1961
1962         * make.h: Include <direct.h> if HAVE_DIRECT_H.
1963         * config.h.W32.template (HAVE_DIRECT_H): Set it if it's available.
1964
1965 2006-04-26  Paul D. Smith  <psmith@gnu.org>
1966
1967         * README.cvs: Add a reminder to notify the GNU translation robot.
1968
1969         * doc/make.texi: Change @direcategory (requested by Karl Berry).
1970
1971 2006-04-20  Paul D. Smith  <psmith@gnu.org>
1972
1973         * maintMakefile (po-check): Use Perl instead of grep -E, for systems
1974         that don't have extended grep.
1975         (cvsclean): Use $(PERL) instead of perl.
1976
1977 2006-04-09  Paul D. Smith  <psmith@gnu.org>
1978
1979         * maintMakefile: Add some extra warning options (GCC 4.1 only?)
1980
1981         * expand.c, implicit.c, main.c, read.c: Rename variables so that
1982         inner-scope variables don't mask outer-scope variables.
1983
1984         * ar.c, arscan.c, commands.c, default.c, dir.c, expand.c, file.c:
1985         * function.c, getloadavg.c, implicit.c, job.c, main.c, misc.c, read.c:
1986         * remake.c, remote-cstms.c, rule.c, strcache.c, variable.c:
1987         * vmsfunctions.c, vmsify.c, vpath.c: Remove all casts of returned
1988         values from memory allocation functions: they return void* and so
1989         don't need to be cast.  Also remove (char *) casts of arguments to
1990         xrealloc().
1991
1992         * configure.in: Remove checks for memcpy/memmove/strchr.
1993
1994         * make.h: Remove bcmp/bcopy/bzero/strchr/strrchr macros.
1995
1996         * ar.c, arscan.c, commands.c, dir.c: Convert all bzero/bcopy/bcmp
1997         calls to memset/memcpy/memmove/memcmp calls.
1998         * expand.c, file.c, function.c, getloadavg.c, implicit.c: Ditto.
1999         * job.c, main.c, misc.c, read.c, remake.c, rule.c: Ditto.
2000         * variable.c, vpath.c: Ditto.
2001
2002         * make.h (EXIT_FAILURE): Should be 1, not 0.
2003
2004 2006-04-06  Paul D. Smith  <psmith@gnu.org>
2005
2006         * configure.in: Removed AM_C_PROTOTYPES.  Starting now on we
2007         require an ISO C 1989 standard compiler and runtime library.
2008
2009         * Makefile.am: Remove the ansi2knr feature.
2010
2011         * make.h: Remove the PARAMS() macro definition and all uses of it.
2012
2013         * amiga.h, ar.c, arscan.c: Remove all uses of the PARAMS() macro.
2014         * commands.c, commands.h, config.h-vms.template: Ditto.
2015         * dep.h, dir.c, expand.c, filedef.h, function.c: Ditto.
2016         * implicit.c, job.c, job.h, main.c, read.c, remake.c: Ditto.
2017         * rule.c, rule.h, variable.h, vmsdir.h, vmsjobs.c, vpath.c: Ditto.
2018
2019         * NEWS: Update.
2020
2021 2006-04-01  Paul D. Smith  <psmith@gnu.org>
2022
2023         Version 3.81 released.
2024
2025         * NEWS: Updated for 3.81.
2026
2027         * README.cvs: Mention that vpath builds are not supported out of
2028         CVS.  Fixes Savannah bug #16236.
2029         Remove update of make.texi from the list of things to do; we use
2030         version.texi now.
2031
2032 2006-03-26  Paul D. Smith  <psmith@gnu.org>
2033
2034         * doc/make.texi: Clean up licensing.  Use @copying and version.texi
2035         support from automake, as described in the Texinfo manual.
2036
2037 2006-03-25  Eli Zaretskii  <eliz@gnu.org>
2038
2039         * implicit.c (pattern_search) [HAVE_DOS_PATHS]: Don't compare b
2040         with lastslash, since the latter points to filename, not to
2041         target.
2042         * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]:
2043         Declare and define sh_chars_sh[].
2044
2045 2006-03-23  Paul D. Smith  <psmith@gnu.org>
2046
2047         * configure.in: Look for build.sh.in in $srcdir so it will be
2048         built for remote configurations as well.
2049
2050         * Makefile.am: Make sure to clean up build.sh during distclean.
2051         Fixes Savannah bug #16166.
2052
2053         * misc.c (log_access): Takes a const char *.
2054         * function.c (fold_newlines): Takes an unsigned int *.
2055         Both fixes for Savannah bug #16170.
2056
2057 2006-03-22  Boris Kolpackov  <boris@kolpackov.net>
2058
2059         * implicit.c (pattern_search): Call set_file_variables only
2060         if we have prerequisites that need second expansion. Fixes
2061         Savannah bug #16140.
2062
2063 2006-03-19  Paul D. Smith  <psmith@gnu.org>
2064
2065         * remake.c (update_file): Add alloca(0) to clean up alloca'd
2066         memory on hosts that don't support it directly.
2067
2068         * README.cvs: Add information on steps for making a release (to
2069         make sure I don't forget any).
2070
2071         * main.c (clean_jobserver): Move jobserver cleanup code into a new
2072         function.
2073         (die): Cleanup code was removed from here; call the new function.
2074         (main): If we are re-execing, clean up the jobserver first so we
2075         don't leak file descriptors.
2076         Reported by Craig Fithian <craig.fithian@citigroup.com>
2077
2078 2006-03-17  Paul D. Smith  <psmith@gnu.org>
2079
2080         * maintMakefile (do-po-update): Rewrite this rule to clean up and
2081         allow multiple concurrent runs.
2082         Patch from Joseph Myers <joseph@codesourcery.com>
2083
2084 2006-03-17  Boris Kolpackov  <boris@kolpackov.net>
2085
2086         * dep.h (struct dep): Add the stem field.
2087         * misc.c (alloc_dep, free_dep): New functions.
2088         (copy_dep_chain): Copy stem.
2089         (free_dep_chain): Use free_dep.
2090         * read.c (record_files): Store stem in the dependency line.
2091         * file.c (expand_deps): Use stem stored in the dependency line. Use
2092         free_dep_chain instead of free_ns_chain.
2093         * implicit.c (pattern_search): Use alloc_dep and free_dep.
2094         * read.c (read_all_makefiles, eval_makefile, eval): Ditto.
2095         * main.c (main, handle_non_switch_argument): Ditto.
2096         * remake.c (check_dep): Ditto.
2097         * rule.c (convert_suffix_rule, freerule): Ditto.
2098
2099 2006-03-14  Paul D. Smith  <psmith@gnu.org>
2100
2101         * expand.c (variable_append): Instead of appending everything then
2102         expanding the result, we expand (or not, if it's simple) each part
2103         as we add it.
2104         (allocated_variable_append): Don't expand the final result.
2105         Fixes Savannah bug #15913.
2106
2107 2006-03-09  Paul Smith  <psmith@gnu.org>
2108
2109         * remake.c (update_file_1): Revert the change of 3 Jan 2006 which
2110         listed non-existent files as changed.  Turns out there's a bug in
2111         the Linux kernel builds which means that this change causes
2112         everything to rebuild every time.  We will re-introduce this fix
2113         in the next release, to give them time to fix their build system.
2114         Fixes Savannah bug #16002.
2115         Introduces Savannah bug #16051.
2116
2117         * implicit.c (pattern_search) [DOS_PATHS]: Look for DOS paths if
2118         we *don't* find UNIX "/".
2119         Reported by David Ergo <david.ergo@alterface.com>
2120
2121 2006-03-04  Eli Zaretskii  <eliz@gnu.org>
2122
2123         * variable.c (do_variable_definition) [WINDOWS32]: Call the shell
2124         locator function find_and_set_default_shell if SHELL came from the
2125         command line.
2126
2127 2006-02-20  Paul D. Smith  <psmith@gnu.org>
2128
2129         * variable.c (merge_variable_set_lists): It's legal for *setlist0
2130         to be null; don't core in that case.
2131
2132 2006-02-19  Paul D. Smith  <psmith@gnu.org>
2133
2134         * commands.c (set_file_variables): Realloc, not malloc, the static
2135         string values to avoid memory leaks.
2136
2137         * expand.c (recursively_expand_for_file): Only set reading_file to
2138         an initialized value.
2139
2140         * implicit.c (pattern_search): We need to make a copy of the stem
2141         if we get it from an intermediate dep, since those get freed.
2142
2143         * file.c (lookup_file) [VMS]: Don't lowercase special targets that
2144         begin with ".".
2145         (enter_file) [VMS]: Ditto.
2146         Patch provided by Hartmut Becker <Hartmut.Becker@hp.com>.
2147
2148 2006-02-24  Eli Zaretskii  <eliz@gnu.org>
2149
2150         * job.c (construct_command_argv_internal): Fix last change.
2151
2152         * w32/subproc/sub_proc.c (process_pipe_io): Make dwStdin,
2153         dwStdout, and dwStderr unsigned int: avoids compiler warnings in
2154         the calls to _beginthreadex.
2155
2156         * expand.c (recursively_expand_for_file): Initialize `save' to
2157         prevent compiler warnings.
2158
2159 2006-02-18  Eli Zaretskii  <eliz@gnu.org>
2160
2161         * job.c (construct_command_argv_internal): Don't create a temporary
2162         script/batch file if we are under -n.  Call _setmode to switch the
2163         script file stream to text mode.
2164
2165 2006-02-17  Paul D. Smith  <psmith@gnu.org>
2166
2167         * variable.c (merge_variable_set_lists): Don't try to merge the
2168         global_setlist.  Not only is this useless, but it can lead to
2169         circularities in the linked list, if global_setlist->next in one
2170         list gets set to point to another list which also ends in
2171         global_setlist.
2172         Fixes Savannah bug #15757.
2173
2174 2006-02-15  Paul D. Smith  <psmith@gnu.org>
2175
2176         Fix for Savannah bug #106.
2177
2178         * expand.c (expanding_var): Keep track of which variable we're
2179         expanding.  If no variable is being expanded, it's the same as
2180         reading_file.
2181         * make.h (expanding_var): Declare it.
2182         * expand.c (recursively_expand_for_file): Set expanding_var to the
2183         current variable we're expanding, unless there's no file info in
2184         it (could happen if it comes from the command line or a default
2185         variable).  Restore it before we exit.
2186         * expand.c (variable_expand_string): Use the expanding_var file
2187         info instead of the reading_file info.
2188         * function.c (check_numeric): Ditto.
2189         (func_word): Ditto.
2190         (func_wordlist): Ditto.
2191         (func_error): Ditto.
2192         (expand_builtin_function): Ditto.
2193         (handle_function): Ditto.
2194
2195 2006-02-14  Paul D. Smith  <psmith@gnu.org>
2196
2197         * read.c (eval): Even if the included filenames expands to the
2198         empty string we still need to free the allocated buffer.
2199
2200         * implicit.c (pattern_search): If we allocated a variable set for
2201         an impossible file, free it.
2202         * variable.c (free_variable_set): New function.
2203         * variable.h: Declare it.
2204
2205         * read.c (read_all_makefiles): Makefile names are kept in the
2206         strcache, so there's never any need to alloc/free them.
2207         (eval): Ditto.
2208
2209         * main.c (main): Add "archives" to the .FEATURES variable if
2210         archive support is enabled.
2211         * doc/make.texi (Special Variables): Document it.
2212
2213 2006-02-13  Paul D. Smith  <psmith@gnu.org>
2214
2215         * implicit.c (pattern_search): Add checking for DOS pathnames to
2216         the pattern rule target LASTSLASH manipulation.
2217         Fixes Savannah bug #11183.
2218
2219 2006-02-11  Paul D. Smith  <psmith@gnu.org>
2220
2221         * (ALL FILES): Updated copyright and license notices.
2222
2223 2006-02-10  Paul D. Smith  <psmith@gnu.org>
2224
2225         A new internal capability: the string cache is a read-only cache
2226         of strings, with a hash table interface for fast lookup.  Nothing
2227         in the cache will ever be freed, so there's no need for reference
2228         counting, etc.  This is the beginning of a full solution for
2229         Savannah bug #15182, but for now we only store makefile names here.
2230
2231         * strcache.c: New file.  Implement a read-only string cache.
2232         * make.h: Add prototypes for new functions.
2233         * main.c (initialize_global_hash_tables): Initialize the string cache.
2234         (print_data_base): Print string cache stats.
2235         * read.c (eval_makefile): Use the string cache to store makefile
2236         names.  Rewrite the string allocation to be sure we free everything.
2237
2238 2006-02-10  Eli Zaretskii  <eliz@gnu.org>
2239
2240         * dir.c (dir_contents_file_exists_p): Don't opendir if the
2241         directory time stamp didn't change, except on FAT filesystems.
2242         Suggested by J. David Bryan <jdbryan@acm.org>.
2243
2244 2006-02-09  Paul D. Smith  <psmith@gnu.org>
2245
2246         * function.c (func_or): Implement a short-circuiting OR function.
2247         (func_and): Implement a short-circuiting AND function.
2248         (function_table_init): Update the table with the new functions.
2249         * doc/make.texi (Conditional Functions): Changed the "if" section
2250         to one on general conditional functions.  Added documentation for
2251         $(and ...) and $(or ...) functions.
2252         * NEWS: Note new $(and ...) and $(or ...) functions.
2253
2254 2006-02-08  Boris Kolpackov  <boris@kolpackov.net>
2255
2256         * job.h (struct child): Add the dontcare bitfield.
2257         * job.c (new_job): Cache dontcare flag.
2258         * job.c (reap_children): Use cached dontcare flag instead of the
2259         one in struct file. Fixes Savannah bug #15641.
2260
2261 2006-02-06  Paul D. Smith  <psmith@gnu.org>
2262
2263         * vpath.c (selective_vpath_search): If the file we find has a
2264         timestamp from -o or -W, use that instead of the real time.
2265         * remake.c (f_mtime): If the mtime is a special token from -o or
2266         -W, don't overwrite it with the real mtime.
2267         Fixes Savannah bug #15341.
2268
2269         Updates from Markus Mauhart <qwe123@chello.at>:
2270
2271         * w32/subproc/sub_proc.c (process_begin): Remove no-op tests.
2272         (process_signal, process_last_err, process_exit_code): Manage
2273         invalid handle values.
2274         (process_{outbuf,errbuf,outcnt,errcnt,pipes}): Unused and don't
2275         manage invalid handles; remove them.
2276         * job.c (start_job_command) [WINDOWS32]: Jump out on error.
2277         * config.h.W32.template [WINDOWS32]: Set flags for Windows builds.
2278         * README.cvs: Updates for building from CVS.
2279
2280 2006-02-05  Paul D. Smith  <psmith@gnu.org>
2281
2282         * file.c (enter_file): Keep track of the last double_colon entry,
2283         to avoid walking the list every time we want to add a new one.
2284         Fixes Savannah bug #15533.
2285         * filedef.h (struct file): Add a new LAST pointer.
2286
2287         * dir.c (directory_contents_hash_cmp): Don't use subtraction to do
2288         the comparison.  For 64-bits systems the result of the subtraction
2289         might not fit into an int.  Use comparison instead.
2290         Fixes Savannah bug #15534.
2291
2292         * doc/make.texi: Update the chapter on writing commands to reflect
2293         the changes made in 3.81 for backslash/newline and SHELL handling.
2294
2295 2006-02-01  Paul D. Smith  <psmith@gnu.org>
2296
2297         * dir.c (dir_contents_file_exists_p) [WINDOWS32]: Make sure
2298         variable st is not used when it's not initialized.
2299         Patch from Eli Zaretskii <eliz@gnu.org>.
2300
2301 2006-01-31  Paul D. Smith  <psmith@gnu.org>
2302
2303         * README.W32.template: Applied patch #4785 from
2304         Markus Mauhart <qwe123@chello.at>.
2305         * README.cvs: Applied patch #4786 from
2306         Markus Mauhart <qwe123@chello.at>.
2307         * make_msvc_net2003.vcproj [WINDOWS32]: New version from
2308         J. Grant <jg@jguk.org>.
2309
2310         * main.c: Update the copyright year in the version output.
2311         * prepare_w32.bat: Remove this file from the distribution.
2312
2313 2006-01-21  Eli Zaretskii  <eliz@gnu.org>
2314
2315         * remake.c (update_goal_chain): Set g->changed instead of
2316         incrementing it, as it is only 8-bit wide, and could overflow if
2317         many commands got started in update_file.
2318
2319         * w32/include/sub_proc.h: Add a prototype for process_used_slots.
2320
2321         * w32/subproc/sub_proc.c: Change dimension of proc_array[] to
2322         MAXIMUM_WAIT_OBJECTS.
2323         (process_wait_for_any_private): Change dimension of handles[]
2324         array to MAXIMUM_WAIT_OBJECTS.
2325         (process_used_slots): New function.
2326         (process_register): Don't register more processes than the
2327         available number of slots.
2328         (process_easy): Don't start new processes if all slots are used up.
2329
2330         * job.c (load_too_high, start_waiting_jobs) [WINDOWS32]: If there
2331         are already more children than sub_proc.c can handle, behave as if
2332         the load were too high.
2333         (start_job_command): Fix a typo in error message when process_easy
2334         fails.
2335
2336 2006-01-14  Eli Zaretskii  <eliz@gnu.org>
2337
2338         * main.c (main) [WINDOWS32]: Don't refuse to run with -jN, even if
2339         the shell is not sh.exe.
2340
2341         * job.c (create_batch_file): Renamed from create_batch_filename;
2342         all callers changed.  Don't close the temporary file; return its
2343         file descriptor instead.  New arg FD allows to return the file
2344         descriptor.
2345         (construct_command_argv_internal): Use _fdopen instead of fopen to
2346         open the batch file.
2347
2348 2006-01-04  Paul D. Smith  <psmith@gnu.org>
2349
2350         * readme.vms: Updates for case-insensitive VMS file systems from
2351         Hartmut Becker <Hartmut.Becker@hp.com>.
2352         * dir.c (vms_hash): Ditto.
2353         * vmsify.c (copyto): Ditto.
2354         * vmsfunctions.c (readdir): Ditto.
2355
2356         * make.1: Add a section on the exit codes for make.
2357
2358         * doc/make.texi: A number of minor updates to the documentation.
2359
2360 2006-01-03  Paul D. Smith  <psmith@gnu.org>
2361
2362         * remake.c (update_file_1): Mark a prerequisite changed if it
2363         doesn't exist.
2364
2365         * read.c (eval): Be sure to strip off trailing whitespace from the
2366         prerequisites list properly.  Also, initialize all fields in
2367         struct dep when creating a new one.
2368
2369 2005-12-28  Paul D. Smith  <psmith@gnu.org>
2370
2371         * config.h.W32.template [WINDOWS32]: Add in some pragmas to
2372         disable warnings for MSC.
2373         Patch by Rob Tulloh <rtulloh@yahoo.com>.
2374
2375 2005-12-17  Eli Zaretskii  <eliz@gnu.org>
2376
2377         * doc/make.texi (Execution): Add a footnote about changes in
2378         handling of backslash-newline sequences.  Mention the differences
2379         on MS-DOS and MS-Windows.
2380
2381         * NEWS: More details about building the MinGW port and a pointer
2382         to README.W32.  Fix the section name that describes the new
2383         backward-incompatible processing of backslash-newline sequences.
2384         The special processing of SHELL set to "cmd" is only relevant to
2385         MS-Windows, not MS-DOS.
2386
2387 2005-12-17  Eli Zaretskii  <eliz@gnu.org>
2388
2389         * main.c (handle_runtime_exceptions): Cast exrec->ExceptionAddress
2390         to DWORD, to avoid compiler warnings.
2391         * job.c (exec_command): Cast hWaitPID and hPID to DWORD, and
2392         use %ld in format, to avoid compiler warnings.
2393
2394         * doc/make.texi (Special Targets): Fix a typo.
2395         (Appending): Fix cross-reference to Setting.
2396         (Special Variables, Secondary Expansion, File Name Functions)
2397         (Flavor Function, Pattern Match, Quick Reference): Ensure two
2398         periods after a sentence.
2399         (Execution): Add @: after "e.g.".
2400         (Environment): Fix punctuation.
2401         (Target-specific, Call Function, Quick Reference): Add @: after "etc."
2402         (Shell Function, Target-specific): Add @: after "vs."
2403
2404 2005-12-14  Boris Kolpackov  <boris@kolpackov.net>
2405
2406         * read.c (record_target_var): Initialize variable's export field
2407         with v_default instead of leaving it "initialized" by whatever
2408         garbage happened to be on the heap.
2409
2410 2005-12-12  Paul D. Smith  <psmith@gnu.org>
2411
2412         * make.1: Fix some display errors and document all existing options.
2413         Patch by Mike Frysinger <vapier@gentoo.org>.
2414
2415 2005-12-11  Paul D. Smith  <psmith@gnu.org>
2416
2417         * implicit.c (pattern_search): If 2nd expansion is not set for
2418         this implicit rule, replace the pattern with the stem directly,
2419         and don't re-expand the variable list.  Along with the other
2420         .SECONDEXPANSION changes below, fixes bug #13781.
2421
2422 2005-12-09  Boris Kolpackov  <boris@kolpackov.net>
2423
2424         * implicit.c (pattern_search): Mark other files that this rule
2425         builds as targets so that they are not treated as intermediates
2426         by the pattern rule search algorithm. Fixes bug #13022.
2427
2428 2005-12-07  Boris Kolpackov  <boris@kolpackov.net>
2429
2430         * remake.c (notice_finished_file): Propagate the change of
2431         modification time to all the double-colon entries only if
2432         it is the last one to be updated. Fixes bug #14334.
2433
2434 2005-11-17  Boris Kolpackov  <boris@kolpackov.net>
2435
2436         * function.c (func_flavor): Implement the flavor function which
2437         returns the flavor of a variable.
2438         * doc/make.texi (Functions for Transforming Text): Document it.
2439         * NEWS: Add it to the list of new functions.
2440
2441 2005-11-14  Boris Kolpackov  <boris@kolpackov.net>
2442
2443         * read.c (construct_include_path): Set the .INCLUDE_DIRS special
2444         variable.
2445         * doc/make.texi (Special Variables): Document .INCLUDE_DIRS.
2446         * NEWS: Add .INCLUDE_DIRS to the list of new special variables.
2447
2448 2005-10-26  Paul Smith  <psmith@gnu.org>
2449
2450         * read.c (record_files): Don't set deps flags if there are no deps.
2451         * maintMakefile: We only need to build the templates when we are
2452         creating a distribution, so don't do it for "all".
2453
2454 2005-10-24  Paul D. Smith  <psmith@gnu.org>
2455
2456         Make secondary expansion optional: its enabled by declaring the
2457         special target .SECONDEXPANSION.
2458
2459         * NEWS: Update information on second expansion capabilities.
2460         * doc/make.texi (Secondary Expansion): Document the
2461         .SECONDEXPANSION special target and its behavior.
2462         * dep.h (struct dep): Add a flag STATICPATTERN, set to true if the
2463         prerequisite list was found in a static pattern rule.
2464         (free_dep_chain): Declare a prototype.
2465         * file.c (parse_prereqs): New function: break out some complexity
2466         from expand_deps().
2467         (expand_deps): If we aren't doing second expansion, replace % with
2468         the stem for static pattern rules.  Call the new function.
2469         * filedef.h (parse_prereqs): Declare a prototype.
2470         * implicit.c (pattern_search): Initialize the new staticpattern
2471         field.
2472         * main.c (second_expansion): Declare a global variable to remember
2473         if the special target has been seen.  Initialize the new
2474         staticpattern field for prerequisites.
2475         * make.h: Extern for second_expansion.
2476         * misc.c (free_dep_chain): New function: frees a struct dep list.
2477         * read.c (read_all_makefiles): Initialize the staticpattern field.
2478         (eval_makefile): Ditto.
2479         (record_files): Check for the .SECONDEXPANSION target and set
2480         second_expansion global if it's found.
2481         Use the new free_dep_chain() instead of doing it by hand.
2482         Set the staticpattern field for prereqs of static pattern targets.
2483
2484 2005-10-16  Paul D. Smith  <psmith@gnu.org>
2485
2486         * main.c (main): Set CURDIR to be a file variable instead of a
2487         default, so that values of CURDIR inherited from the environment
2488         won't override the make value.
2489
2490 2005-09-26  Paul D. Smith  <psmith@gnu.org>
2491
2492         * job.c (construct_command_argv_internal): If the line is empty
2493         remember to free the temporary argv strings.
2494         Fixes bug # 14527.
2495
2496 2005-09-16  Paul D. Smith  <psmith@gnu.org>
2497
2498         * job.c (start_job_command): The noerror flag is a boolean (single
2499         bit); set it appropriately.
2500         Reported by Mark Eichin <eichin@metacarta.com>
2501
2502 2005-08-29  Paul D. Smith  <psmith@gnu.org>
2503
2504         * function.c (func_error): On Windows, output from $(info ...)
2505         seems to come in the wrong order.  Try to force it with fflush().
2506
2507 2005-08-10  Boris Kolpackov  <boris@kolpackov.net>
2508
2509         * read.c (record_files): Move code that sets stem for static
2510         pattern rules out of the if (!two_colon) condition so it is
2511         also executed for two-colon rules. Fixes Savannah bug #13881.
2512
2513 2005-08-08  Paul D. Smith  <psmith@gnu.org>
2514
2515         * make.h: Don't test that __STDC__ is non-0.  Some compilers
2516         (Windows for example) set it to 0 to denote "ISO C + extensions".
2517         Fixes bug # 13594.
2518
2519 2005-08-07  Paul D. Smith  <psmith@gnu.org>
2520
2521         * w32/pathstuff.c (getcwd_fs): Fix warning about assignment in a
2522         conditional (slightly different version of a fix from Eli).
2523
2524         Fix a bug reported by Michael Matz <matz@suse.de>: patch included.
2525         If make is running in parallel without -k and two jobs die in a
2526         row, but not too close to each other, then make will quit without
2527         waiting for the rest of the jobs to die.
2528
2529         * main.c (die): Don't reset err before calling reap_children() the
2530         second time: we still want it to be in the error condition.
2531         * job.c (reap_children): Use a static variable, rather than err,
2532         to control whether or not the error message should be printed.
2533
2534 2005-08-06  Eli Zaretskii  <eliz@gnu.org>
2535
2536         * w32/subproc/sub_proc.c: Include signal.h.
2537         (process_pipe_io, process_file_io): Pass a pointer to a local
2538         DWORD variable to GetExitCodeProcess.  If the exit code is
2539         CONTROL_C_EXIT, put SIGINT into pproc->signal.
2540
2541         * job.c [WINDOWS32]: Include windows.h.
2542         (main_thread) [WINDOWS32]: New global variable.
2543         (reap_children) [WINDOWS32]: Get the handle for the main thread
2544         and store it in main_thread.
2545
2546         * commands.c [WINDOWS32]: Include windows.h and w32err.h.
2547         (fatal_error_signal) [WINDOWS32]: Suspend the main thread before
2548         doing anything else.  When we are done, close the main thread
2549         handle and exit with status 130.
2550
2551 2005-07-30  Eli Zaretskii  <eliz@gnu.org>
2552
2553         * w32/subproc/sub_proc.c (process_begin): Don't pass a NULL
2554         pointer to fprintf.
2555
2556         * main.c (find_and_set_default_shell): If found a DOSish shell,
2557         set sh_found and the value of default_shell, and report the
2558         findings in debug mode.
2559
2560         * job.c (construct_command_argv_internal): Check unixy_shell, not
2561         no_default_sh_exe, to decide whether to use Unixy or DOSish
2562         builtin commands.
2563
2564         * README.W32: Update with info about the MinGW build.
2565
2566         * build_w32.bat: Support MinGW.
2567
2568         * w32/subproc/build.bat: Likewise.
2569
2570         * w32/subproc/sub_proc.c (process_easy): Fix format strings for
2571         printing DWORD args.
2572
2573         * function.c (windows32_openpipe): Fix format strings for printing
2574         DWORD args.
2575
2576         * job.c (reap_children) [WINDOWS32]: Don't declare 'status' and
2577         'reap_mode'.
2578         (start_job_command): Fix format string for printing the result of
2579         process_easy.
2580         (start_job_command) [WINDOWS32]: Do not define.
2581         (exec_command): Fix format string for printing HANDLE args.
2582
2583         * main.c (handle_runtime_exceptions): Fix sprintf format strings
2584         to avoid compiler warnings.
2585         (open_tmpfile): Declare fd only if HAVE_FDOPEN is defined.
2586         (Note: some of these fixes were submitted independently by J. Grant)
2587
2588 2005-07-30  J. Grant <jg@jguk.org>
2589
2590         * prepare_w32.bat: Copy config.h.w32 to config.h if not exist.
2591         * make_msvc_net2003.vcproj, make_msvc_net2003.sln: MSVC Project files.
2592         * Makefile.am (EXTRA_DIST): Add MSVC Project files.
2593
2594 2005-07-15  Paul Smith  <psmith@gnu.org>
2595
2596         * job.c (construct_command_argv_internal) [DOS,WINDOWS32,OS/2]: If
2597         we don't have a POSIX shell, then revert to the old
2598         backslash-newline behavior (where they are stripped).
2599         Fixes bug #13665.
2600
2601 2005-07-08  Paul D. Smith  <psmith@gnu.org>
2602
2603         * config.h.W32.template: Reorder to match the standard config.h,
2604         for easier comparisons.
2605         From J. Grant <jg@jguk.org>
2606
2607         * maintMakefile: Remove .dep_segment before overwriting it, in
2608         case it's not writable or noclobber is set.
2609         * expand.c (variable_expand_string): Cast result of pointer
2610         arithmetic to avoid a warning.
2611         * main.c (switches): Add full-fledged final initializer.
2612
2613 2005-07-06  Paul D. Smith  <psmith@gnu.org>
2614
2615         * configure.in: IRIX has _sys_siglist.  Tru64 UNIX has __sys_siglist.
2616         * signame.c (strsignal): If we found _sys_siglist[] or
2617         __sys_siglist[] use those instead of sys_siglist[].
2618         From Albert Chin <china@thewrittenword.com>
2619
2620 2005-07-04  Paul D. Smith  <psmith@gnu.org>
2621
2622         * config.h-vms.template [VMS]: Latest VMS has its own glob() and
2623         globfree(); set up to use the GNU versions.
2624         From Martin Zinser <zinser@zinser.no-ip.info>
2625
2626 2005-07-03  Paul D. Smith  <psmith@gnu.org>
2627
2628         From J. Grant <jg@jguk.org>:
2629
2630         * README.W32.template: Update the Windows and tested MSVC versions.
2631         * NMakefile.template (CFLAGS_any): Change warning level from W3 to W4.
2632         * w32/subproc/NMakefile (CFLAGS_any): Ditto.
2633         * build_w32.bat: Ditto.
2634         * w32/subproc/build.bat: Ditto.
2635
2636 2005-06-28  Paul D. Smith  <psmith@gnu.org>
2637
2638         * signame.c: HAVE_DECL_* macros are set to 0, not undef, if the
2639         declaration was checked but not present.
2640
2641 2005-06-27  Paul D. Smith  <psmith@gnu.org>
2642
2643         * dir.c (find_directory): Change type of fs_serno/fs_flags/fs_len
2644         to unsigned long.  Fixes Savannah bug #13550.
2645
2646         * w32/subproc/sub_proc.c: Remove (HANDLE) casts on lvalues.
2647         (process_pipe_io): Initialize tStdin/tStdout/tStderr variables.
2648         Fixes Savannah bug #13551.
2649
2650 2005-06-26  Paul D. Smith  <psmith@gnu.org>
2651
2652         * make.h: Fix bug in ANSI_STRING/strerror() handling; only define
2653         it if ANSI_STRING is not set.
2654
2655 2005-06-25  Paul D. Smith  <psmith@gnu.org>
2656
2657         * read.c (eval): If no filenames are passed to any of the
2658         "include" variants, don't print an error.
2659         * doc/make.texi (Include): Document this.
2660         Fixes Savannah bug #1761.
2661
2662         * job.c (construct_command_argv_internal): Sanitize handling of
2663         backslash/newline pairs according to POSIX: that is, keep the
2664         backslash-newline in the command script, but remove a following
2665         TAB character, if present.  In the fast path, make sure that the
2666         behavior matches what the shell would do both inside and outside
2667         of quotes.  In the slow path, quote the backslash and put a
2668         literal newline in the string.
2669         Fixes Savannah bug #1332.
2670         * doc/make.texi (Execution): Document the new behavior and give
2671         some examples.
2672         * NEWS: Make a note of the new behavior.
2673
2674         * make.h [WINDOWS32]: #include <direct.h>.
2675         Fixes Savannah bug #13478.
2676
2677         * remake.c (name_mtime): If the stat() of a file fails and the -L
2678         option was given and the file is a symlink, take the best mtime of
2679         the symlink we can get as the mtime of the file and don't fail.
2680         Fixes Savannah bug #13280.
2681
2682         * read.c (find_char_unquote): Accept a new argument IGNOREVARS.
2683         If it's set, then don't stop on STOPCHARs or BLANKs if they're
2684         inside a variable reference.  Make this function static as it's
2685         only used here.
2686         (eval): Call find_char_unquote() with IGNOREVARS set when we're
2687         parsing an unexpanded line looking for semicolons.
2688         Fixes Savannah bug #1454.
2689         * misc.c (remove_comments): Move this to read.c and make it static
2690         as it's only used there.  Call find_char_unquote() with new arg.
2691         * make.h: Remove prototypes for find_char_unquote() and
2692         remove_comments() since they're static now.
2693
2694         * main.c (main): If we see MAKE_RESTARTS in the environment, unset
2695         its export flag and obtain its value.  When we need to re-exec,
2696         increment the value and add it into the environment.
2697         * doc/make.texi (Special Variables): Document MAKE_RESTARTS.
2698         * NEWS: Mention MAKE_RESTARTS.
2699         * main.c (always_make_set): New variable.  Change the -B option to
2700         set this one instead.
2701         (main): When checking makefiles, only set always_make_flag if
2702         always_make_set is set AND the restarts flag is 0.  When building
2703         normal targets, set it IFF always_make_set is set.
2704         (main): Avoid infinite recursion with -W, too: only set what-if
2705         files to NEW before we check makefiles if we've never restarted
2706         before.  If we have restarted, set what-if files to NEW _after_ we
2707         check makefiles.
2708         Fixes Savannah bug #7566:
2709
2710 2005-06-17  Paul D. Smith  <psmith@gnu.org>
2711
2712         * default.c: Change VMS implicit rules to use $$$$ instead of $$
2713         in the prerequisites list.
2714
2715 2005-06-12  Paul D. Smith  <psmith@gnu.org>
2716
2717         Fix Savannah bug # 1328.
2718
2719         * configure.in: Check for atexit().
2720         * misc.c (close_stdout): Test stdout to see if writes to it have
2721         failed.  If so, be sure to exit with a non-0 error code.  Based on
2722         code found in gnulib.
2723         * make.h: Prototype.
2724         * main.c (main): Install close_stdout() with atexit().
2725
2726 2005-06-10  Paul D. Smith  <psmith@gnu.org>
2727
2728         VMS build updates from Hartmut Becker <Hartmut.Becker@hp.com>:
2729
2730         * vmsjobs.c [VMS]: Updates to compile on VMS: add some missing
2731         headers; make vmsWaitForChildren() static; extern vmsify().
2732         * job.c [VMS]: Move vmsWaitForChildren() prototype to be global.
2733         Don't create child_execute_job() here (it's in vmsjobs.c).
2734         * makefile.vms (job.obj) [VMS]: Add vmsjobs.c as a prerequisite.
2735
2736 2005-06-09  Paul D. Smith  <psmith@gnu.org>
2737
2738         * variable.c (push_new_variable_scope): File variables point
2739         directly to the global_setlist variable.  So, inserting a new
2740         scope in front of that has no effect on those variables: they
2741         don't go through current_variable_set_list.  If we're pushing a
2742         scope and the current scope is global, push it "the other way" so
2743         that the new setlist is in the global_setlist variable, and
2744         next points to a new setlist with the global variable set.
2745         (pop_variable_scope): Properly undo a push with the new
2746         semantics.
2747         Fixes Savannah bug #11913.
2748
2749 2005-05-31  Boris Kolpackov  <boris@kolpackov.net>
2750
2751         * job.c (reap_children): Don't die of the command failed but
2752         the dontcare flag is set. Fixes Savannah bug #13216.
2753
2754         * implicit.c (pattern_search): When creating a target from
2755         an implicit rule match, lookup pattern target and set precious
2756         flag in a newly created target. Fixes Savannah bug #13218.
2757
2758 2005-05-13  Paul D. Smith  <psmith@gnu.org>
2759
2760         Implement "if... else if... endif" syntax.
2761
2762         * read.c (eval): Push all checks for conditional words ("ifeq",
2763         "else", etc.) down into the conditional_line() function.
2764         (conditional_line): Rework to allow "else if..." clause.  New
2765         return value -2 for lines which are not conditionals.  The
2766         ignoring flag can now also be 2, which means "already parsed a
2767         true branch".  If that value is seen no other branch of this
2768         conditional can be considered true.  In the else parsing if there
2769         is extra text after the else, invoke conditional_line()
2770         recursively to see if it's another conditional.  If not, it's an
2771         error.  If so, raise the conditional value to this level instead
2772         of creating a new conditional nesting level.  Special check for
2773         "else" and "endif", which aren't allowed on the "else" line.
2774         * doc/make.texi (Conditional Syntax): Document the new syntax.
2775
2776 2005-05-09  Paul D. Smith  <psmith@gnu.org>
2777
2778         * Makefile.am (EXTRA_make_SOURCES): Add vmsjobs.c
2779         (MAYBE_W32): Rework how SUBDIRS are handled so that "make dist"
2780         recurses to the w32 directory, even on non-Windows systems.  Use
2781         the method suggested in the automake manual.
2782         * configure.in: Add w32/Makefile to AC_CONFIG_FILES.
2783         * maintMakefile (gnulib-url): They moved the texinfo.tex files.
2784
2785 2005-05-07  Paul D. Smith  <psmith@gnu.org>
2786
2787         * main.c (die): If we're dying with a fatal error (not that a
2788         command has failed), write back any leftover tokens before we go.
2789
2790         * job.c (set_child_handler_action_flags): If there are jobs
2791         waiting for the load to go down, set an alarm to go off in 1
2792         second.  This allows us to wake up from a potentially long-lasting
2793         read() and start a new job if the load has gone down.  Turn it off
2794         after the read.
2795         (job_noop): Dummy signal handler function.
2796         (new_job): Invoke it with the new semantics.
2797
2798         * docs/make.texi: Document secondary expansion.  Various cleanups
2799         and random work.
2800
2801 2005-05-03  Paul D. Smith  <psmith@gnu.org>
2802
2803         Rename .DEFAULT_TARGET to .DEFAULT_GOAL: in GNU make terminology
2804         the targets which are to ultimately be made are called "goals";
2805         see the GNU make manual.  Also, MAKECMDGOALS, etc.
2806
2807         * filedef.h, read.c, main.c: Change .DEFAULT_TARGET to
2808         .DEFAULT_GOAL, and default_target_name to default_goal_name.
2809         * doc/make.texi (Special Variables): Document .DEFAULT_GOAL.
2810
2811 2005-05-02  Paul D. Smith  <psmith@gnu.org>
2812
2813         * job.c, vmsjobs.c (vmsWaitForChildren, vms_redirect,
2814         vms_handle_apos, vmsHandleChildTerm, reEnableAst, astHandler,
2815         tryToSetupYAst, child_execute_job) [VMS]: Move VMS-specific
2816         functions to vmsjobs.c.  #include it into jobs.c.
2817
2818         Grant Taylor <gtaylor@picante.com> reports that -j# can lose
2819         jobserver tokens.  I found that this happens when an exported
2820         recursive variable contains a $(shell ...) function reference: in
2821         this situation we could "forget" to write back a token.
2822
2823         * job.c, job.h: Add variable jobserver_tokens: counts the tokens
2824         we have.  It's not reliable to depend on the number of children in
2825         our linked list so keep a separate count.
2826         (new_job): Check jobserver_tokens rather than children &&
2827         waiting_jobs.  Increment jobserver_tokens when we get one.
2828         (free_child): If jobserver_tokens is 0, internal error.  If it's
2829         >1, write a token back to the jobserver pipe (we don't write a
2830         token for the "free" job).  Decrement jobserver_tokens.
2831
2832         * main.c: Add variable master_job_slots.
2833         (main): Set it to hold the number of jobs requested if we're the
2834         master process, when using the jobserver.
2835         (die): Sanity checks: first test jobserver_tokens to make sure
2836         this process isn't holding any tokens we didn't write back.
2837         Second, if master_job_slots is set count the tokens left in the
2838         jobserver pipe and ensure it's the same as master_job_slots (- 1).
2839
2840 2005-04-24  Paul D. Smith  <psmith@gnu.org>
2841
2842         Grant Taylor <gtaylor@picante.com> reports that -j# in conjunction
2843         with -l# can lose jobserver tokens, because waiting jobs are not
2844         consulted properly when checking for the "free" token.
2845
2846         * job.c (free_child): Count waiting_jobs as having tokens.
2847         * job.c (new_job): Ditto.  Plus, call start_waiting_jobs() here to
2848         handle jobs waiting for the load to drop.
2849
2850 2005-04-23  Paul D. Smith  <psmith@gnu.org>
2851
2852         * main.c (main): Be careful to not core if a variable setting in
2853         the environment doesn't contain an '='.  This is illegal but can
2854         happen in broken setups.
2855         Reported by Joerg Schilling <schilling@fokus.fraunhofer.de>.
2856
2857 2005-04-12  Paul D. Smith  <psmith@gnu.org>
2858
2859         The second expansion feature causes significant slowdown.  Timing
2860         a complex makefile (GCC 4.1) shows a slowdown from .25s to just
2861         read the makefile before the feature, to 11+s to do the same
2862         operations after the feature.  Additionally, memory usage
2863         increased drastically.  To fix this I added some intelligence that
2864         avoids the overhead of the second expansion unless it's required.
2865
2866         * dep.h: Add a new boolean field, need_2nd_expansion.
2867
2868         * read.c (eval): When creating the struct dep for the target,
2869         check if the name contains a "$"; if so set need_2nd_expansion to 1.
2870         (record_files): If there's a "%" in a static pattern rule, it gets
2871         converted to "$*" so set need_2nd_expansion to 1.
2872
2873         * file.c (expand_deps): Rework to be more efficient.  Only perform
2874         initialize_file_variables(), set_file_variables(), and
2875         variable_expand_for_file() if the need_2nd_expansion is set.
2876
2877         * implicit.c (pattern_search): Default need_2nd_expansion to 0.
2878         (pattern_search): Ditto.
2879         * main.c (handle_non_switch_argument): Ditto.
2880         (main): Ditto.
2881         * read.c (read_all_makefiles): Ditto.
2882         (eval_makefile): Ditto.
2883
2884 2005-04-07  Paul D. Smith  <psmith@gnu.org>
2885
2886         * main.c (main) [WINDOWS32]: Export PATH to sub-shells, not Path.
2887         * variable.c (sync_Path_environment): Ditto.
2888         Patch by Alessandro Vesely.  Fixes Savannah bug #12209.
2889
2890         * main.c (main): Define the .FEATURES variable.
2891         * NEWS: Announce .FEATURES.
2892         * doc/make.texi (Special Variables): Document .FEATURES.
2893
2894         * remake.c (check_dep): If a file is .PHONY, update it even if
2895         it's marked intermediate.  Fixes Savannah bug #12331.
2896
2897 2005-03-15  Boris Kolpackov  <boris@kolpackov.net>
2898
2899         * file.c (expand_deps): Factor out the second expansion and
2900         prerequisite line parsing logic from snap_deps().
2901
2902         * file.c (snap_deps): Use expand_deps(). Expand and parse
2903         prerequisites of the .SUFFIXES special target first. Fixes
2904         Savannah bug #12320.
2905
2906 2005-03-13  Paul D. Smith  <psmith@gnu.org>
2907
2908         * main.c (main) [MSDOS]: Export SHELL in MSDOS.  Requested by Eli
2909         Zaretskii.
2910
2911 2005-03-11  Paul D. Smith  <psmith@gnu.org>
2912
2913         * signame.c (strsignal): HAVE_DECL_SYS_SIGLIST is 0 when not
2914         available, not undefined (from Earnie Boyd).
2915
2916 2005-03-10  Boris Kolpackov  <boris@kolpackov.net>
2917
2918         * implicit.c (pattern_search): Mark an intermediate target as
2919         precious if it happened to be a prerequisite of some (other)
2920         target. Fixes Savannah bug #12267.
2921
2922 2005-03-09  Paul D. Smith  <psmith@gnu.org>
2923
2924         * read.c (eval_makefile): Add alloca(0).
2925         (eval_buffer): Ditto.
2926
2927 2005-03-09  Boris Kolpackov  <boris@kolpackov.net>
2928
2929         * main.c (main): Use o_file instead of o_default when defining
2930         the .DEFAULT_TARGET special variable.
2931         * read.c (eval): Use define_variable_global() instead of
2932         define_variable() when setting new value for the .DEFAULT_TARGET
2933         special variable.  Fixes Savannah bug #12266.
2934
2935 2005-03-04  Boris Kolpackov  <boris@kolpackov.net>
2936
2937         * imlicit.c (pattern_search): Mark files for which an implicit
2938         rule has been found as targets. Fixes Savannah bug #12202.
2939
2940 2005-03-04  Paul D. Smith  <psmith@gnu.org>
2941
2942         * AUTHORS: Update.
2943         * doc/make.texi (Automatic Variables): Document $|.
2944
2945 2005-03-03  Boris Kolpackov  <boris@kolpackov.net>
2946
2947         * read.c (record_files): Instead of substituting % with
2948         actual stem value in dependency list replace it with $*.
2949         This fixes stem triple expansion bug.
2950
2951         * implicit.c (pattern_search): Copy stem to a separate
2952         buffer and make it a properly terminated string. Assign
2953         this buffer instead of STEM (which is not terminated) to
2954         f->stem. Instead of substituting % with actual stem value
2955         in dependency list replace it with $*. This fixes stem
2956         triple expansion bug.
2957
2958 2005-03-01  Paul D. Smith  <psmith@gnu.org>
2959
2960         * commands.c (fatal_error_signal) [WINDOWS32]: Don't call kill()
2961         on Windows, as it takes a handle not a pid.  Just exit.
2962         Fix from patch #3679, provided by Alessandro Vesely.
2963
2964         * configure.in: Update check for sys_siglist[] from autoconf manual.
2965         * signame.c (strsignal): Update to use the new autoconf macro.
2966
2967 2005-03-01  Boris Kolpackov  <boris@kolpackov.net>
2968
2969         * read.c (record_files): Add a check for the list of prerequisites
2970         of a static pattern rule being empty. Fixes Savannah bug #12180.
2971
2972 2005-02-28  Paul D. Smith  <psmith@gnu.org>
2973
2974         * doc/make.texi (Text Functions): Update docs to allow the end
2975         ordinal for $(wordlist ...) to be 0.
2976         * function.c (func_wordlist): Fail if the start ordinal for
2977         $(wordlist ...) is <1.  Matches documentation.
2978         Resolves Savannah support request #103195.
2979
2980         * remake.c (update_goal_chain): Fix logic for stopping in -q:
2981         previously we were stopping when !-q, exactly the opposite.  This
2982         has been wrong since version 1.34, in 1994!
2983         (update_file): If we got an error don't break out to run more
2984         double-colon rules: just return immediately.
2985         Fixes Savannah bug #7144.
2986
2987 2005-02-27  Paul D. Smith  <psmith@gnu.org>
2988
2989         * misc.c (end_of_token): Make argument const.
2990         * make.h: Update prototype.
2991
2992         * function.c (abspath, func_realpath, func_abspath): Use
2993         PATH_VAR() and GET_PATH_MAX instead of PATH_MAX.
2994         * dir.c (downcase): Use PATH_VAR() instead of PATH_MAX.
2995         * read.c (record_files): Ditto.
2996         * variable.c (do_variable_definition): Ditto.
2997
2998         * function.c (func_error): Create a new function $(info ...) that
2999         simply prints the message to stdout with no extras.
3000         (function_table_init): Add new function to the table.
3001         * NEWS: Add $(info ...) reference.
3002         * doc/make.texi (Make Control Functions): Document it.
3003
3004         New feature: if the system supports symbolic links, and the user
3005         provides the -L/--check-symlink-time flag, then use the latest
3006         mtime between the symlink(s) and the target file.
3007
3008         * configure.in (MAKE_SYMLINKS): Check for lstat() and
3009         readlink().  If both are available, define MAKE_SYMLINKS.
3010         * main.c: New variable: check_symlink_flag.
3011         (usage): Add a line for -L/--check-symlink-times to the help string.
3012         (switches): Add -L/--check-symlink-times command line argument.
3013         (main): If MAKE_SYMLINKS is not defined but the user specified -L,
3014         print a warning and disable it again.
3015         * make.h: Declare check_symlink_flag.
3016         * remake.c (name_mtime): If MAKE_SYMLINKS and check_symlink_flag,
3017         if the file is a symlink then check each link in the chain and
3018         choose the NEWEST mtime we find as the mtime for the file.  The
3019         newest mtime might be the file itself!
3020         * NEWS: Add information about this new feature.
3021         * doc/make.texi (Options Summary): Add -L/--check-symlink-times docs.
3022
3023         Avoid core dumps described in Savannah bug # 12124:
3024
3025         * file.c: New variable snapped_deps remember whether we've run
3026         snap_deps().
3027         (snap_deps): Set it.
3028         * filedef.h: Extern it.
3029         * read.c (record_files): Check snapped_deps; if it's set then
3030         we're trying to eval a new target/prerequisite relationship from
3031         within a command script, which we don't support.  Fatal.
3032
3033 2005-02-28  Boris Kolpackov  <boris@kolpackov.net>
3034
3035         Implementation of the .DEFAULT_TARGET special variable.
3036
3037         * read.c (eval): If necessary, update default_target_name when
3038         reading rules.
3039         * read.c (record_files): Update default_target_file if
3040         default_target_name has changed.
3041         * main.c (default_target_name): Define.
3042         * main.c (main): Enter .DEFAULT_TARGET as make variable. If
3043         default_target_name is set use default_target_file as a root
3044         target to make.
3045         * filedef.h (default_target_name): Declare.
3046         * dep.h (free_dep_chain):
3047         * misc.c (free_dep_chain): Change to operate on struct nameseq
3048         and change name to free_ns_chain.
3049         * file.c (snap_deps): Update to use free_ns_chain.
3050
3051 2005-02-27  Boris Kolpackov  <boris@kolpackov.net>
3052
3053         Implementation of the second expansion in explicit rules,
3054         static pattern rules and implicit rules.
3055
3056         * read.c (eval): Refrain from chopping up rule's dependencies.
3057         Store them in a struct dep as a single dependency line. Remove
3058         the code that implements SySV-style automatic variables.
3059
3060         * read.c (record_files): Adjust the code that handles static
3061         pattern rules to expand all percents instead of only the first
3062         one. Reverse the order in which dependencies are stored so that
3063         when the second expansion reverses them again they appear in
3064         the makefile order (with some exceptions, see comments in
3065         the code). Remove the code that implements SySV-style automatic
3066         variables.
3067
3068         * file.c (snap_deps): Implement the second expansion and chopping
3069         of dependency lines for explicit rules.
3070
3071         * implicit.c (struct idep): Define an auxiliary data type to hold
3072         implicit rule's dependencies after stem substitution and
3073         expansion.
3074
3075         * implicit.c (free_idep_chain): Implement.
3076
3077         * implicit.c (get_next_word): Implement helper function for
3078         parsing implicit rule's dependency lines into words taking
3079         into account variable expansion requests. Used in the stem
3080         splitting code.
3081
3082         * implicit.c (pattern_search): Implement the second expansion
3083         for implicit rules. Also fixes bug #12091.
3084
3085         * commands.h (set_file_variables): Declare.
3086         * commands.c (set_file_variables): Remove static specifier.
3087
3088         * dep.h (free_dep_chain): Declare.
3089         * misc.c (free_dep_chain): Implement.
3090
3091         * variable.h (variable_expand_for_file): Declare.
3092         * expand.c (variable_expand_for_file): Remove static specifier.
3093
3094         * make.h (strip_whitespace): Declare.
3095         * function.c (strip_whitespace): Remove static specifier.
3096
3097 2005-02-26  Paul D. Smith  <psmith@gnu.org>
3098
3099         * main.c (main): Check for ferror() when reading makefiles from stdin.
3100         Apparently some shells in Windows don't close pipes properly and
3101         require this check.
3102
3103 2005-02-24  Jonathan Grant  <jg@jguk.org>
3104
3105         * configure.in: Add MinGW configuration options, and extra w32 code
3106         directory.
3107         * Makefile.am: Add MinGW configuration options, and extra w32 code
3108         directory.
3109         * main.c: Determine correct program string (after last \ without .exe).
3110         * subproc/sub_proc.c: `GetExitCodeProcess' from incompatible pointer
3111         type fix x2
3112         * w32/Makefile.am: Import to build win32 lib of sub_proc etc.
3113         * subproc/w32err.c: MSVC thread directive not applied to MinGW builds.
3114         * tests/run_make_tests.pl, tests/test_driver.pl: MSYS testing
3115         environment support.
3116
3117 2004-04-16  Dmitry V. Levin  <ldv@altlinux.org>
3118
3119         * function.c (func_shell): When initializing error_prefix, check
3120         that reading file name is not null.  This fixes long-standing
3121         segfault in cases like "make 'a1=$(shell :)' 'a2:=$(a1)'".
3122
3123 2005-02-09  Paul D. Smith  <psmith@gnu.org>
3124
3125         * maintMakefile: Update the CVS download URL to simplify them.
3126         Also, the ftp://ftp.gnu.org/GNUinfo site was removed so I'm
3127         downloading the .texi files from Savannah now.
3128
3129         Fixed these issues reported by Markus Mauhart <qwe123@chello.at>:
3130
3131         * main.c (handle_non_switch_argument): Only add variables to
3132         command_variables if they're not already there: duplicate settings
3133         waste space and can be confusing to read.
3134
3135         * w32/include/sub_proc.h: Remove WINDOWS32.  It's not needed since
3136         this header is never included by non-WINDOWS32 code, and it
3137         requires <config.h> to define which isn't always included first.
3138
3139         * dir.c (read_dirstream) [MINGW]: Use proper macro names when
3140         testing MINGW32 versions.
3141
3142         * main.c (log_working_directory): flush stdout to be sure the WD
3143         change is printed before any stderr messages show up.
3144
3145 2005-02-01  Paul D. Smith  <psmith@gnu.org>
3146
3147         * maintMakefile (po_repo): Update the GNU translation site URL.
3148
3149 2004-12-01  Paul D. Smith  <psmith@gnu.org>
3150
3151         * main.c (main): Change char* env_shell to struct variable shell_var.
3152         * variable.c (target_environment): Use new shell_var.
3153
3154 2004-11-30  Paul D. Smith  <psmith@gnu.org>
3155
3156         * configure.in: The old way we avoided creating build.sh from
3157         build.sh.in before build.sh.in exists doesn't work anymore; we
3158         have to use raw M4 (thanks to Andreas Schwab <schwab@suse.de> for
3159         the help!).  This also keeps automake from complaining.
3160         * Makefile.am (README): Add a dummy target so automake won't
3161         complain that this file doesn't exist when we checkout from CVS.
3162         * maintMakefile (.dep_segment): Rewrite this rule since newer
3163         versions of automake don't provide DEP_FILES.
3164
3165 2004-11-30  Boris Kolpackov  <boris@kolpackov.net>
3166
3167         Implementation of `realpath' and `abspath' built-in functions.
3168
3169         * configure.in: Check for realpath.
3170         * function.c (abspath): Return an absolute file name that does
3171         not contain any `.' or `..' components, nor repeated `/'.
3172         * function.c (func_abspath): For each name call abspath.
3173         * function.c (func_realpath): For each name call realpath
3174         from libc or delegate to abspath if realpath is not available.
3175         * doc/make.texi (Functions for File Names): Document new functions.
3176         * doc/make.texi (Quick Reference): Ditto.
3177
3178 2004-11-28  Paul D. Smith  <psmith@gnu.org>
3179
3180         * main.c (main) [WINDOWS32]: Remove any trailing slashes from -C
3181         arguments.  Fixes bug #10252.
3182
3183         Fix for bug #1276: Handle SHELL according to POSIX requirements.
3184
3185         * main.c (main): Set SHELL to v_noexport by default.  Remember the
3186         original environment setting of SHELL in the env_shell variable.
3187         * main.h: Export new env_shell variable.
3188         * variable.c (target_environment): If we find a v_noexport
3189         variable for SHELL, add a SHELL variable with the env_shell value.
3190         * doc/make.texi (Quick Reference): Document the POSIX behavior.
3191         * doc/make.texi (Variables/Recursion): Ditto.
3192
3193 2004-11-28  Paul D. Smith  <psmith@gnu.org>
3194
3195         * main.c (find_and_set_default_shell) [WINDOWS32]: check for