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