Imported Upstream version 4.0
[platform/upstream/make.git] / ChangeLog
1 2013-10-09  Paul Smith  <psmith@gnu.org>
2
3         Version 4.0 released.
4
5         * configure.ac: Updated for the release.
6         * NEWS: Updated for the release.
7
8         * maintMakefile (tag-release): New target to add a Git tag.
9         * read.c (eval): Typo fix.
10         * ChangeLog.1: Typo fixes.
11         * w32/subproc/sub_proc.c (process_cleanup): Typo fix.
12
13 2013-10-07  Eli Zaretskii  <eliz@gnu.org>
14
15         * w32/compat/posixfcn.c (tmpfile): Move declaration of h before
16         the first executable statement.  Reported by Gisle Vanem
17         <gvanem@yahoo.no>.
18
19 2013-10-05  Paul Smith  <psmith@gnu.org>
20
21         * makeint.h (MAP_USERFUNC): A new map type for function names.
22         * main.c (initialize_stopchar_map): Set up the function name map.
23
24         * gnumake.h (gmk_func_ptr): Define a type for function pointers.
25         (gmk_add_function): Convert the last argument to FLAGS.
26         (GMK_FUNC_*): Define flags for the function.  Change the default
27         behavior to "expand" since that's the most common one.
28
29         * function.c (function_table_entry): Use new function pointer type.
30         (lookup_function): Accept any valid function name character based
31         on the MAP_USERFUNC values.
32         (define_new_function): Use the new calling signature.  Verify that
33         registered functions have valid names.
34
35         * guile.c (guile_gmake_setup): Use new calling signatures.
36         * loadapi.c (gmk_add_function): Ditto.
37         * variable.h (define_new_function): Ditto.
38
39         * doc/make.texi (Loaded Object API): Make the registered function
40         API documentation more clear.
41
42 2013-10-03  Eli Zaretskii  <eliz@gnu.org>
43
44         * function.c (abspath): Reset root_len to one for Cygwin only when
45         HAVE_DOS_PATHS is defined.  Suggested by Christopher Faylor.
46
47 2013-10-02  Eli Zaretskii  <eliz@gnu.org>
48
49         * w32/compat/posixfcn.c (tmpfile): New function, a replacement for
50         the Windows libc version.
51
52         Fix $abspath on Cygwin when HAVE_DOS_PATHS is in effect.
53         * function.c (IS_ABSOLUTE) [__CYGWIN__]: Special definition for
54         Cygwin.
55         (abspath) [__CYGWIN__]: Reset root_len to 1 if the absolute file
56         name has the Posix /foo/bar form.
57         [HAVE_DOS_PATHS]: Use root_len instead of hard-coded 2.
58
59 2013-10-01  Paul Smith  <psmith@gnu.org>
60
61         * configure.ac: Update version to 3.99.93.
62         * NEWS: Ditto.
63
64 2013-09-30  Paul Smith  <psmith@gnu.org>
65
66         * guile.c: Portability fixes for Guile 1.8.
67
68 2013-09-29  Paul Smith  <psmith@gnu.org>
69
70         * output.c (output_dump): Always write Enter/Leave messages to stdio.
71         (log_working_directory): This now always writes to stdio, so we
72         don't need the struct output parameter anymore.
73         (output_start): Show the working directory when output_sync is not
74         set or is recursive.
75         * main.c (main): Ensure the special "already shown Enter message"
76         token is removed from MAKE_RESTARTS before the user can see it.
77         * function.c (func_shell_base): If the output_context stderr
78         exists but is invalid, write to the real stderr.
79         Fixes suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
80
81         * output.c: Guard unistd.h inclusion, add io.h.
82         * gnumake.h: Move GMK_EXPORT before the declarations.
83         * make_msvc_net2003.vcproj: Add missing files.
84         Changes for MSVC suggested by Gerte Hoogewerf <g.hoogewerf@gmail.com>
85
86         * function.c (func_shell_base) [EMX]: Fix EMX support for output-sync.
87         * job.c (child_execute_job) [EMX]: Ditto.
88         * job.h (child_execute_job) [EMX]: Ditto.
89         * w32/compat/posixfcn.c: Invert the test for NO_OUTPUT_SYNC.
90
91         * guile.c (GSUBR_TYPE): Pre-2.0 Guile doesn't provide a typedef
92         for gsubr pointers.  Create one.
93         (guile_define_module): Use it.
94         (internal_guile_eval): Force UTF-8 encoding for Guile strings.
95
96         * main.c (main): Clear GNUMAKEFLAGS after parsing, to avoid
97         proliferation of options.
98         * NEWS: Document it.
99         * doc/make.texi (Options/Recursion): Ditto.
100
101 2013-09-23  Eli Zaretskii  <eliz@gnu.org>
102
103         * w32/compat/posixfcn.c: Fix the forgotten OUTPUT_SYNC conditional.
104
105         * job.h: Ditto, but in a comment.
106
107 2013-09-22  Paul Smith  <psmith@gnu.org>
108
109         * configure.ac: Update version to 3.99.92.
110         * NEWS: Ditto.
111
112         * implicit.c (pattern_search): After second expansion be sure to
113         handle order-only markers inside the expansion properly.
114         Fixes Savannah bug #31155.
115
116         * guile.c (guile_define_module): Technically a void* cannot
117         contain a pointer-to-function and some compilers warn about this.
118         Cast the function pointers.
119         * load.c (load_object): Ditto.
120
121         * read.c (eval): If load_file() returns -1, don't add this to the
122         "to be rebuilt" list.
123         * doc/make.texi (load Directive): Document it.
124
125         * guile.c (guile_gmake_setup): Don't initialize Guile so early.
126         (func_guile): Lazily initialize Guile the first time the $(guile ..)
127         function is invoked.  Guile can steal file descriptors which
128         confuses our jobserver FD checking, so we don't want to initialize
129         it before we have to.
130
131         VMS port updates by Hartmut Becker <becker.ismaning@freenet.de>
132
133         * makefile.com: Add output to the filelist.
134         * output.c (va_copy): Add an implementation of this macro for VMS.
135         * commands.c: Ensure filedef.h is #included before dep.h.
136         * dir.c: Ditto.
137         * file.c: Ditto.
138         * guile.c: Ditto.
139         * main.c: Ditto.
140         * misc.c: Ditto.
141         * read.c: Ditto.
142         * rule.c: Ditto.
143         * variable.c: Ditto.
144         * readme.vms: Renamed to README.VMS and updates for this release.
145         * Makefile.am: Ditto.
146         * NEWS: Ditto.
147         * README.template: Ditto.
148         * Makefile.DOS.template: Ditto.
149
150 2013-09-21  Paul Smith  <psmith@gnu.org>
151
152         * maintMakefile (check-alt-config): Create a target to test
153         alternative configurations.  Each one will build make with a
154         different configuration then run the test suite.
155
156         Invert the output-sync #define to NO_OUTPUT_SYNC
157
158         * configure.ac: Don't set OUTPUT_SYNC.
159         * makeint.h: Ditto.
160         * main.c: Use NO_OUTPUT_SYNC instead of OUTPUT_SYNC.
161         * output.c: Ditto.
162         * output.h: Ditto.
163         * job.h: Ditto.
164         * job.c: Ditto.
165         * config.ami.template: Set NO_OUTPUT_SYNC.
166         * config.h-vms.template: Ditto.
167         * config.h.W32.template: Ditto.
168         * configh.dos.template: Ditto.
169
170         Output generated while reading makefiles should be synced.
171
172         * main.c (make_sync): Define a context for syncing while reading
173         makefiles and other top-level operations.
174         (main): If we request syncing, enable it while we are parsing
175         options, reading makefiles, etc. to capture that output.  Just
176         before we start to run rules, dump the output if any.
177         (die): Dump any output we've been syncing before we die
178         * output.h (OUTPUT_SET): Disable output_context if not syncout.
179
180         Stderr generated from shell functions in recipes should be synced.
181
182         * job.h (FD_STDIN, FD_STDOUT, FD_STDERR): Create new macros to
183         avoid magic numbers.
184         (child_execute_job): Take a FD for stderr.
185         * job.c (child_execute_job): Handle STDERR FD's in addition to
186         stdin and stdout.
187         (start_job_command): Call child_execute_job() with the new STDERR
188         parameter.  Instead of performing the dup() here, send it to
189         child_execute_job() where it's already being done.
190         * function.c (func_shell_base): Pass the OUTPUT_CONTEXT stderr to
191         child_execute_job() if it's set, otherwise FD_STDERR.
192         * main.c (main): Pass FD_STDERR to child_execute_job().
193
194 2013-09-19  Paul Smith  <psmith@gnu.org>
195
196         * main.c (main): Set MAKE_RESTARTS to negative before re-exec if
197         we've already generated an "Entering" message.  If we are started
198         and notice that MAKE_RESTARTS is negative, assume we already wrote
199         "Entering" and don't write it again.
200
201 2013-09-18  Paul Smith  <psmith@gnu.org>
202
203         * main.c (main): Set starting_directory before we write any
204         errors.  Fixes Savannah bug #40043.
205
206 2013-09-16  Eli Zaretskii  <eliz@gnu.org>
207
208         * output.c [WINDOWS32]: Include windows.h and sub_proc.h, to avoid
209         compiler warnings for CLOSE_ON_EXEC.
210
211 2013-09-16  Paul Smith  <psmith@gnu.org>
212
213         * configure.ac: Update version to 3.99.91.
214         * NEWS: Ditto.
215
216 2013-09-15  Paul Smith  <psmith@gnu.org>
217
218         * doc/make.texi (Error Messages): Add a bit more info to the
219         section on static pattern errors, since they're common.
220         Fixes Savannah bug #31326.
221
222         * read.c (eval_makefile): If the file open fails with an
223         unrecoverable error, stop now rather than trying to make it.
224         Fixes Savannah bug #27374.
225
226         * main.c (main): Perform the validation of the jobserver FDs
227         early, before we read makefiles, to ensure that something hasn't
228         opened and used those FDs for some other reason.
229         Fixes Savannah bug #39934.
230
231         * main.c (main): Don't set MAKEFLAGS in the environment when we
232         restart.  We have the original command line flags so keep the
233         original MAKEFLAGS settings as well.
234         Fixes Savannah bug #39203.
235
236 2013-09-14  Paul Smith  <psmith@gnu.org>
237
238         * main.c (decode_debug_flags): Add support for the "n" flag to
239         disable all debugging.
240         * make.1: Document the "n" (none) flag.
241         * doc/make.texi (Options Summary): Ditto.
242         * NEWS: Ditto.
243         Fixes Savannah bug #35248.
244
245         * misc.c (close_stdout): Move to output.c.
246         * main.c (main): Move atexit call to output_init().
247         * makeint.h: Remove close_stdout() declaration.
248         * output.c (output_init): Add close_stdout at exit only if it's open.
249         Fixes Savannah bug #33134.  Suggested by David Boyce <dsb@boyski.com>.
250
251 2013-09-14  Paul Smith  <psmith@gnu.org>
252
253         * misc.c (set_append_mode, open_tmpfd, open_tmpfile): Move to output.c.
254         * misc.h: Ditto.
255         * output.h: Ditto.
256         * main.c (main): Move stdio init into output.c:output_init().
257         Change open_tmpfile() to output_tmpfile().
258         * output.c: Rename open_*() to output_*().  set_append_mode() and
259         open_tmpfd() are static.
260         (_outputs, log_working_directory): Accept a struct output and
261         print to that rather than the global context.
262         (output_dump): In recurse mode print enter/leave once for the
263         whole makefile.
264         (output_init): Initialize this processes stdio as well as child's.
265
266         * vmsjobs.c: Reformat to be closer to convention.
267
268 2013-09-12  Paul Smith  <psmith@gnu.org>
269
270         Rework output to handle synchronization and directory logging more
271         reliably.
272
273         * output.c: New file.  Implement lazy synchronization and
274         directory logging so that we manage them "just in time", and the
275         destination of the output is set via a global state variable.
276         * output.h: New file.
277         * function.c (func_shell_base): Ensure the output is set up before
278         running a shell command, in case it writes to stderr.
279         (func_error): Use outputs() to generate output.
280         * job.h (struct child): Add struct output to track the child's output.
281         * job.c: Use struct output in the child structure to track output.
282         (child_out, sync_init, assign_child_tempfiles, pump_from_tmp)
283         (acquire_semaphore, release_semaphore, sync_output): Move most of
284         the output_sync handling to output.c.
285         (child_error): Set output, then use simple message() and error()
286         not _s versions.
287         * main.c (log_working_directory): Moved to output.c
288         (trace_option, decode_trace_flags) Remove.  Remove support for
289         different trace modes; we don't use it anymore.
290         (die) Invoke output_close() before we exit.
291         * misc.c (message_s, error_s): Removed; no longer needed.
292         (message, error, fatal, perror_with_name, pfatal_with_name): Moved
293         to output.c.
294         * makeint.h: Remove message_s(), error_s(), and
295         log_working_directory().  Remove the TRACE_* macros.
296         * doc/make.texi: Enhance documentation for output sync, and remove
297         MODE assignment for --trace.
298         * make.1: Remove MODE assignment for --trace.
299         * Makefile.am: Add new files.
300         * NMakefile.template: Ditto.
301         * SMakefile.template: Ditto.
302         * build_w32.bat: Ditto.
303         * dosbuild.bat: Ditto.
304         * make.lnk: Ditto.
305         * make_nsvc_net2003.vcproj: Ditto.
306         * makefile.vms: Ditto.
307         * po/POTFILES.in: Ditto.
308
309 2013-08-22  Petr Machata  <pmachata@redhat.com>
310
311         * function.c (func_shell_base): Get rid of any avoidable limit on
312         stack size for processes spawned via $(shell).
313
314 2013-07-22  Paul Smith  <psmith@gnu.org>
315
316         * implicit.c (pattern_search): Use PARSE_SIMPLE_SEQ() even for
317         non-second expansion prerequisites, to handle globbing in patterns.
318         Fixes Savannah bug #39310.
319
320         * dep.h (PARSE_SIMPLE_SEQ): Macro for simple file sequence parsing.
321         * default.c (set_default_suffixes): Use it.
322         * file.c (split_prereqs): Ditto.
323         * main.c (main): Ditto.
324         * read.c (eval): Ditto.
325         * rule.c (install_pattern_rule): Ditto.
326         * file.c (split_prereqs): Use PARSEFS_NONE instead of 0.
327
328 2013-07-21  Paul Smith  <psmith@gnu.org>
329
330         Cleanups detected by cppcheck.  Fixes Savannah bug #39158.
331         * arscan.c (ar_scan): Reduce the scope of local variables.
332         * dir.c (vms_hash): Ditto.
333         (find_directory): Ditto.
334         (file_impossible_p): Ditto.
335         * expand.c (variable_expand_string): Ditto.
336         * function.c (func_sort): Ditto.
337         (func_and): Ditto.
338         * job.c (reap_children): Ditto.
339         (exec_command): Ditto.
340         * main.c (main): Ditto.
341         * misc.c (collapse_continuations): Ditto.
342         * read.c (eval): Ditto.
343         (parse_file_seq): Ditto.
344         * vpath.c (gpath_search): Ditto.
345         (selective_vpath_search): Ditto.
346         * job.c (is_bourne_compatible_shell): Simplify for non-Windows systems.
347         * remake.c (f_mtime): Remove duplicate test.
348         * signame.c (strsignal): Fix bogus conditional.
349
350         * job.c (assign_child_tempfiles): Assign OUTFD to -1 for safety.
351         (start_job_command): Don't test output_sync and sync_cmd: redundant.
352         Changes suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
353
354 2013-07-14  Paul Smith  <psmith@gnu.org>
355
356         * filedef.h (update_status): Convert UPDATE_STATUS from a char to
357         an enumeration.  Some systems declare "char" to be "unsigned"
358         which broke the code (which expected to be able to use -1 as a
359         flag).  Using magic values was unpleasant, so rather than just
360         force "signed char" I reworked it to use an enum.
361
362         * dep.h (update_goal_chain): Return an update_status value not int.
363         * remake.c (touch_file): Ditto.
364         (update_goal_chain): Track the update_status enum.
365
366         * file.c (enter_file): Use new enumeration values with update_status.
367         (remove_intermediates): Ditto.
368         (print_file): Ditto.
369         * commands.c (execute_file_commands): Ditto.
370         * job.c (reap_children): Ditto.
371         (start_job_command): Ditto.
372         (start_waiting_job): Ditto.
373         * main.c (main): Ditto.
374         * remake.c (update_file): Ditto.
375         (complain): Ditto.
376         (update_file_1): Ditto.
377         (notice_finished_file): Ditto.
378         (remake_file): Ditto.
379         * vmsjobs.c (vmsHandleChildTerm): Ditto.
380
381 2013-07-09  Paul Smith  <psmith@gnu.org>
382
383         * implicit.c (pattern_search): Keep a local copy of the number of
384         deps in deplist: the global max might change due to recursion.
385         Fixes a bug reported by Martin d'Anjou <martin.danjou14@gmail.com>.
386
387 2013-06-28  Paul Smith  <psmith@gnu.org>
388
389         * misc.c (set_append_mode): Set the O_APPEND flag on a file descriptor.
390         (open_tmpfd): Set append mode on the temporary file descriptor.
391         * main.c (main): Set append mode on stdout and stderr.
392         * makeint.h (set_append_mode): Declare it.
393
394 2013-06-22  Eli Zaretskii  <eliz@gnu.org>
395
396         * build_w32.bat (LinkGCC): Prevent a comment from being displayed
397         at build time.
398
399         * job.c (construct_command_argv_internal) [WINDOWS32]: Use
400         case-insensitive comparison with internal commands of non-Unix
401         shells.
402
403         * main.c (find_and_set_default_shell): Don't use file_exists_p or
404         dir_file_exists_p, as those call readdir, which can fail if PATH
405         includes directories with non-ASCII characters, and that would
406         cause Make to fail at startup with confusing diagnostics.  See
407         https://sourceforge.net/mailarchive/message.php?msg_id=30846737
408         for the details.
409
410 2013-06-22  Paul Smith  <psmith@gnu.org>
411
412         Improve performance by using a character map to determine where we
413         want to stop searching strings, rather than discrete comparisons.
414
415         * read.c (find_char_unquote): Pass a stop map instead of various
416         flags and use that to check when to stop parsing the string.
417         (eval): Use the new find_char_unquote() calling signature.
418         (remove_comments): Ditto.
419         (unescape_char): Ditto.
420         (find_percent_cached): Ditto.
421         (parse_file_seq): Use a stop-map flag.
422         * main.c (stopchar_map): Character map definition.
423         (initialize_stopchar_map): Initialize the map definition.
424         (main): Invoke the map initialization function.
425         * misc.c (end_of_token_w32): Remove unused function.
426         * dir.c (dosify): Use STOP_SET to check for stop chars.
427         * main.c (main): Ditto.
428         * misc.c (end_of_token): Ditto.
429         * function.c (subst_expand): Ditto.
430         (func_notdir_suffix): Ditto.
431         (func_basename_dir): Ditto.
432         (abspath): Ditto.
433         * job.c (is_bourne_compatible_shell): Ditto.
434         * variable.c (parse_variable_definition): Ditto.
435         * read.c (eval): Ditto.
436         (conditional_line): Ditto.
437         (find_percent_cached): Ditto.
438         * dep.h (PARSE_FILE_SEQ): Update function declaration.
439         * default.c (set_default_suffixes): Update PARSE_FILE_SEQ() call.
440         * file.c (split_prereqs): Ditto.
441         * function.c (string_glob): Ditto.
442         * implicit.c (pattern_search): Ditto.
443         * rule.c (install_pattern_rule): Ditto.
444         * main.c (main): Ditto.
445
446 2013-06-21  Paul Smith  <psmith@gnu.org>
447
448         * main.c (verify_flag): Global variable to determine whether to
449         verify the database or not.
450         (decode_debug_flags): If debug mode, enable verify_flag.
451         (main): If MAKE_MAINTAINER_MODE, enable verify_flag, otherwise not.
452         (die): Only verify the database if verify_flag is set.
453         * file.c (enter_file): Don't check caching unless verify_flag.
454         * makeint.h: Export verify_flag.
455
456 2013-05-27  Paul Smith  <psmith@gnu.org>
457
458         * variable.c (define_automatic_variables): Create a new variable
459         MAKE_HOST.
460
461 2013-05-27  Hartmut Becker  <becker.ismaning@freenet.de>
462
463         * function.c (func_shell_base) [VMS]: Support VMS.
464         * makefile.com [VMS]: Ditto.
465         * makefile.vms [VMS]: Ditto.
466         * makeint.h [VMS]: Ditto.
467         * vmsjobs.c [VMS]: Ditto.
468         * job.h: Define RECORD_SYNC_MUTEX() when OUTPUT_SYNC is not set.
469         * load.c (unload_file): Fix signature if MAKE_LOAD is not set.
470
471 2013-05-26  Paul Smith  <psmith@gnu.org>
472
473         * remake.c (f_mtime): Ensure that archive file names are in the
474         string cache.  Fixes Savannah bug #38442.
475
476         * read.c (readline): To be safe, move the entire buffer if we
477         detect a CR.  Fixes Savannah bug #38945.
478
479         * job.c (new_job): Compare OUT to the beginning of the OUT
480         var/function, not IN.  Fixes Savannah bug #39035.
481
482 2013-05-22  Paul Smith  <psmith@gnu.org>
483
484         * main.c (switches[]): Order switches so simple flags all come first.
485         (define_makeflags): Rework to make option passing more
486         reliable and the code less tricksy.  Ensure simple flags are kept
487         in the initial batch of flags.  Do not allow any flags with
488         options in that batch.  If there are only non-simple flags MAKEFLAGS
489         begins with ' '.
490         (print_data_base): Print the version.  Fixes part of Savannah #35336.
491
492         * read.c (eval_buffer): Initialize lineno.
493
494 2013-05-18  Alexey Pavlov  <alexpux@gmail.com>  (tiny change)
495
496         * w32/Makefile.am (libw32_a_SOURCES): Add compat/posixfcn.c.
497
498         * configure.ac (OUTPUT_SYNC): Define for mingw32 target.
499
500         * job.c (construct_command_argv_internal) <sh_cmds_dos>
501         [WINDOWS32]: Add "move".  Fixes Savannah bug #30714.
502
503         * guile.c: Move inclusion of makeint.h before gnumake.h.  This
504         order must be observed when building Make, because gnumake.h must
505         be included with GMK_BUILDING_MAKE defined, which makeint.h
506         already does.  Otherwise, the linker will look for, and fail to
507         find, gmk_* functions in some external dynamic library.
508
509 2013-05-17  Benno Schulenberg  <bensberg@justemail.net>
510
511         * main.c (decode_output_sync_flags): Fix output message.
512         * read.c (EXTRANEOUS): Ditto.
513         (record_files): Ditto.
514         * remake.c (update_file_1): Ditto.
515
516 2013-05-17  Eli Zaretskii  <eliz@gnu.org>
517
518         * main.c (prepare_mutex_handle_string): Define conditioned on
519         OUTPUT_SYNC.
520
521         * build_w32.bat: Copy config.h.W32 to config.h regardless of
522         whether or not we are building from SCM.
523
524 2013-05-17  Paul Smith  <psmith@gnu.org>
525
526         * configure.ac: Update version to 3.99.90.
527         * NEWS: Ditto.
528
529         * Source (*.[ch]): Remove TABs, use GNU coding styles.
530
531         * ALL: Update copyright.
532
533         * hash.c (CALLOC): Use xcalloc() to handle out of memory errors.
534
535         * makeint.h: Prototype new unload_file() function.
536         * load.c (unload_file): Create a function to unload a file.
537         (struct load_list): Type to remember loaded objects.
538         (loaded_syms): Global variable of remembered loaded objects so we
539         can unload them later.  We don't have to remove from the list
540         because the only time we unload is if we're about to re-exec.
541         (load_object): Remove unneeded extra DLP argument.
542         (load_file): Remove unneeded extra DLP argument.
543         * filedef.h (struct file): Remove the DLP pointer and add the
544         LOADED bit flag.  Saves 32/64 bytes per file, as this pointer is
545         almost never needed.
546         * read.c (eval): Set the new LOADED bit flag on the file.
547         * file.c (rehash_file): Merge the loaded bitfield.
548         * commands.c (execute_file_commands): Call unload_file() instead
549         of dlclose() directly.
550
551 2013-05-14  Paul Smith  <psmith@gnu.org>
552
553         * doc/make.texi (Loaded Object API): Document the requirement for
554         the plugin_is_GPL_compatible symbol.
555         * load.c (load_object): Check for plugin_is_GPL_compatible symbol.
556
557 2013-05-13  Paul Smith  <psmith@gnu.org>
558
559         * filedef.h (struct file): Add a builtin flag.
560         * file.c (enter_file): Unset the builtin flag.
561         (rehash_file): Ditto.
562         (print_file): Don't print builtin files if we've omitted them.
563         * default.c (undefine_default_variables): New function: go through
564         the default variables and undefine them.
565         (set_default_suffixes): Mark these suffix rules as builtin.
566         * makeint.h: Prototype.
567         * main.c (main): Handle addition of -r and -R to MAKEFLAGS in the
568         makefile.  Fixes Savannah bug #20501.
569
570         * main.c (define_makeflags): Assign o_env_override level to
571         MAKEFLAGS to ensure it's set even in the presence of -e.
572         Fixes Savannah bug #2216.
573
574         * makeint.h (TRACE_NONE, TRACE_RULE, TRACE_DIRECTORY): Define
575         constants for the trace mode.
576         * main.c: Add new --trace mode parsing.
577         (decode_trace_flags): New function.
578         (decode_switches): Call it.
579         (define_makeflags): Fix a bug with long-name options.
580         * misc.c (fatal): Remove special output-sync handling.
581         * make.1: Document new --trace mode flags.
582         * doc/make.texi (Options Summary): Ditto.
583
584 2013-05-11  Eli Zaretskii  <eliz@gnu.org>
585
586         * job.c (child_out): Output the newline following the message
587         before fllush-ing the stream.  Avoids displaying the following
588         failure message, which goes to stderr, on the same line.
589
590 2013-05-06  Eli Zaretskii  <eliz@gnu.org>
591
592         * gnumake.h (GMK_EXPORT) [_WIN32]: Move the dllexport declaration
593         here from makeint.h.
594
595         * makeint.h (GMK_BUILDING_MAKE) [WINDOWS32]: Define before
596         including gnumake.h.
597
598         * doc/make.texi (Loaded Object Example): Add a note about building
599         shared objects on MS-Windows.
600
601 2013-05-05  Paul Smith  <psmith@gnu.org>
602
603         * makeint.h (OUTPUT_SYNC_LINE, OUTPUT_SYNC_RECURSE): Rename
604         output-sync options "job" to "line" and "make" to "recurse".
605         * main.c (decode_output_sync_flags): Ditto.
606         * job.c (reap_children): Ditto.
607         (start_job_command): Ditto.
608         * make.1: Ditto.
609         * doc/make.texi (Parallel Output): Ditto.
610
611         * job.c (child_out): Write newlines explicitly, and don't do
612         anything if the message is empty.
613         (sync_output): Put working dir messages around stdout AND stderr.
614         (start_job_command): Move the tmp file assignment earlier.  After
615         we do it, write the command line to the temp file to get the order
616         correct.
617
618         * misc.c (message): Remove special handling for output_sync.
619         (error): Ditto.
620
621 2013-05-04  Paul Smith  <psmith@gnu.org>
622
623         * loadapi.c (gmk_alloc): New function.
624         * gnumake.h: Add gmk_alloc().  Clean GMK_EXPORT a bit to avoid MAIN.
625         * makeint.h (GMK_EXPORT): New handling, vs. MAIN.
626         * doc/make.texi (Loaded Object API): Add information on the memory
627         handling functions.
628         (Loaded Object Example): Create an example.
629
630         * job.c (pump_from_tmp): (Rename) Write to stdout/stderr using
631         FILE* rather than fd.  It's not a good idea to mix and match.
632
633 2013-05-04  Eli Zaretskii  <eliz@gnu.org>
634
635         * makeint.h (ftruncate) [_MSC_VER]: Redirect to _chsize.
636         (_S_ISDIR): If not defined (MinGW64), define to S_ISDIR.
637
638 2013-05-04  Paul Smith  <psmith@gnu.org>
639
640         * job.c (child_out): Handle EINTR and incomplete write scenarios.
641         (sync_init): New function: separate the initialization code.
642         (assign_child_tempfiles): Remove truncation from this function,
643         (sync_output): and add it here after output is generated.
644         (reap_children): Always call sync_output() in case output_sync was
645         reset after the child started, due to error.
646         (start_job_command): Create new sync_cmd variable.  Use new method
647         for initializing the handle.
648         If we're not syncing the output be sure any output we've saved is
649         dumped immediately before starting the child.
650
651 2013-05-04  Eli Zaretskii  <eliz@gnu.org>
652
653         * job.c (start_job_command): Make the condition for creating a
654         temporary output file be identical to the Posix code branch.
655         Suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
656
657 2013-05-03  Eli Zaretskii  <eliz@gnu.org>
658
659         * w32/subproc/sub_proc.c: Include makeint.h.  Remove a private
660         incompatible prototype of xmalloc.
661         (batch_file_with_spaces): New function, detects Windows batch
662         files whose names include whitespace characters.
663         (process_begin): If exec_name is a batch file with whitespace
664         characters in its name, pass NULL as the first argument to
665         CreateProcess.  This avoids weird failures due to buggy quoting by
666         CreateProcess.  For the details, see the discussion starting at
667         http://lists.gnu.org/archive/html/make-w32/2013-04/msg00008.html.
668
669         * load.c (load_object, load_file): Accept an additional argument
670         DLP and return in it a pointer that can be used to unload the
671         dynamic object.
672
673         * read.c (eval): Call load_file with an additional argument, and
674         record the pointer returned there in the 'struct file' object of
675         dynamic objects in that object's 'struct file'.
676
677         * commands.c (execute_file_commands): Unload dynamic objects
678         before remaking them, to avoid failure to remake if the OS doesn't
679         allow overwriting objects that are in use.
680
681         * filedef.h (struct file): New member dlopen_ptr.
682
683         * gnumake.h (GMK_EXPORT): Define to dllexport/dllimport
684         decorations for Windows and to nothing on other platforms.
685         (gmk_eval, gmk_expand, gmk_add_function): Add GMK_EXPORT qualifier
686         to prototypes.
687
688         * makeint.h (MAIN): Define before including gnumake.h, to give
689         correct dllexport decorations to exported functions.
690         (load_file): Adjust prototype.
691
692         * loadapi.c: Don't include gnumake.h, since makeint.h already
693         includes it, and takes care of defining MAIN before doing so.
694
695         * build_w32.bat (LinkGCC): Produce an import library for functions
696         exported by Make for loadable dynamic objects.
697
698         * w32/compat/posixfcn.c (dlclose): New function.
699
700         * w32/include/dlfcn.h (dlclose): Add prototype.
701
702 2013-05-01  Eli Zaretskii  <eliz@gnu.org>
703
704         * job.c (start_job_command) [WINDOWS32]: Make the same fix for
705         MS-Windows as the previous commit did for Posix platforms.
706         (construct_command_argv_internal): Don't treat a backslash as an
707         escape character before whitespace, if the shell is not a Posix
708         shell.   For the description of the problem, see
709         http://lists.gnu.org/archive/html/make-w32/2013-04/msg00014.html.
710
711 2013-05-01  Paul Smith  <psmith@gnu.org>
712
713         * job.c (start_job_command): Don't redirect output for recursive
714         make jobs, unless we're in makefile synchronization mode.
715
716 2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
717
718         build: enable the 'silent-rules' automake options
719
720         * configure.ac (AM_INIT_AUTOMAKE): Here.  The future major Automake
721         version 2.0 (ETA about one, one and half year from now) will enable
722         it by default, so better prepare ourselves.
723
724 2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
725
726         build: require Autoconf >= 2.62 and Automake >= 1.11.1
727
728         Older versions of those tools should be considered fully obsolete.
729         Also, GNU make already requires Gettext >= 0.18.1, which has been
730         released six months after Automake 1.11.1 and two years after
731         Autoconf 2.62; so the new requirement shouldn't be problematic
732         for people already bootstrapping GNU make from the Git repository.
733
734         * configure.ac (AC_PREREQ): Require Autoconf 2.62 or later.
735         (AM_INIT_AUTOMAKE): Require Automake 1.11.1 or later (1.11 had
736         some serious bugs, and should not be used).
737
738 2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
739
740         build: get rid of 'HAVE_ANSI_COMPILER' C preprocessor conditional
741
742         GNU make already assume C89 or later throughout the codebase, and
743         that preprocessor conditional was no longer used anyway.
744
745         * configure.ac: Remove AC_DEFINE of HAVE_ANSI_COMPILER.
746         * config.ami.template: Remove #define of HAVE_ANSI_COMPILER.
747         * config.h-vms.template: Likewise.
748         * config.h.W32.template: Likewise.
749         * configh.dos.template: Likewise.
750
751 2013-04-30  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
752
753         cosmetics: fix few innocuous typos
754
755         Most of these were found using Lucas De Marchi's 'codespell' tool.
756
757         * ChangeLog: Fix minor typos.
758         * ChangeLog.2: Likewise.
759         * README.Amiga: Likewise.
760         * TODO.private: Likewise.
761         * function.c: Likewise.
762         * glob/glob.h: Likewise.
763         * job.c: Likewise.
764         * main.c: Likewise.
765         * readme.vms: Likewise.
766         * remake.c: Likewise.
767         * tests/ChangeLog: Likewise.
768         * tests/NEWS: Likewise.
769         * tests/README: Likewise.
770         * tests/scripts/variables/private: Likewise.
771         * vmsdir.h: Likewise.
772         * signame.c: Likewise.  While at it, improve line wrapping in the
773         touched comment.
774
775 2013-04-29  Eli Zaretskii  <eliz@gnu.org>
776
777         * w32/include/dlfcn.h: New file.
778
779         * w32/compat/posixfcn.c: Include dlfcn.h.
780         (dlopen, dlerror, dlsym) [MAKE_LOAD]: New functions, in support of
781         dynamic loading.
782
783         * config.h.W32.template (MAKE_LOAD): Define.
784
785         * load.c (load_object) [HAVE_DOS_PATHS]: Support backslashes and
786         drive letters in file names of dynamic objects.
787
788         * job.c (construct_command_argv_internal) [WINDOWS32]: Return
789         right after generating new_argv for one_shell case.  This fixes
790         the Windows build for both Unixy shell and stock Windows shells.
791
792 2013-04-28  Eli Zaretskii  <eliz@gnu.org>
793
794         * dir.c (local_stat) [WINDOWS32]: Use the wrapper on MS-Windows.
795         If the argument ends in "dir/.", make sure the parent dir exists
796         and is indeed a directory.  Fixes Savannah bug #37065.
797
798 2013-04-28  Paul Smith  <psmith@gnu.org>
799
800         * makeint.h (message_s, error_s): Functions that print to strings
801         rather than directly to files.
802         * misc.c (message_s, error_s): Create them.
803         * job.c (child_error): Print error messages to the output sync
804         logs, if one exists, rather then directly to the terminal.
805         (reap_children): Move the per-line sync after child_error().
806
807         * configure.ac: Remove support for pre-ANSI variadic function calls.
808         * makeint.h: Ditto.
809         * misc.c: Ditto.
810         * config.ami.template: Ditto.
811         * config.h-vms.template: Ditto.
812         * config.h.W32.template: Ditto.
813         * configh.dos.template: Ditto.
814
815         Implement a "per-job" output synchronization option.
816
817         * main.c (decode_output_sync_flags): Recognize the new option.
818         * makeint.h (OUTPUT_SYNC_JOB): Add new values for "job"
819         * job.c (assign_child_tempfiles): In per-job mode, truncate the
820         temp file for re-use by the next job.
821         (sync_output): Don't close the temp files as we may still use them.
822         (free_child): Close the temp files here as we definitely don't
823         need them.
824         (new_job): In per-job output mode, sync_output() after each job.
825         * job.h (struct child): Avoid ifdefs.
826         * make.1: Add new options to the man page.
827         * doc/make.texi (Parallel Output): Break documentation on input
828         and output into separate sections for readability.  Document the
829         new "job" and "none" modes.
830
831 2013-04-27  Paul Smith  <psmith@gnu.org>
832
833         * job.c (construct_command_argv_internal): Fix oneshell support
834         for non-POSIX-sh shells.
835
836         * load.c (load_object): Extract all POSIX-isms into a separate
837         function for portability.
838         (load_file): Check the .LOADED variable first and don't invoke
839         load_object() if it's already been loaded.
840
841 2013-04-27  Eli Zaretskii  <eliz@gnu.org>
842
843         * read.c (record_files): Pay attention to .ONESHELL in MS-Windows.
844
845         * job.c (construct_command_argv_internal): Support .ONESHELL on
846         MS-Windows, when the shell is not a Unixy shell.
847
848 2013-04-27  Eli Zaretskii  <eliz@gnu.org>
849
850         * job.c: Fix compilation error on GNU/Linux due to "label at end
851         of compound statement".
852
853 2013-04-27  Frank Heckenbach <f.heckenbach@fh-soft.de>  (tiny change)
854
855         * job.c (sync_output): Don't discard the output if
856         acquire_semaphore fails; instead, dump the output unsynchronized.
857
858 2013-04-27  Eli Zaretskii  <eliz@gnu.org>
859
860         Support --output-sync on MS-Windows.
861         * w32/compat/posixfcn.c: New file, with emulations of Posix
862         functions and Posix functionality for MS-Windows.
863
864         * w32/subproc/sub_proc.c: Include io.h.
865         (process_noinherit): New function, forces a file descriptor to not
866         be inherited by child processes.
867         (process_easy): Accept two additional arguments, and use them to
868         set up the standard output and standard error handles of the child
869         process.
870
871         * w32/include/sub_proc.h (process_easy): Adjust prototype.
872         (process_noinherit): Add prototype.
873
874         * read.c [WINDOWS32]: Include windows.h and sub_proc.h.
875
876         * makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not
877         defined.  This is needed because the MS-Windows build doesn't have
878         a canonical place for LOCALEDIR.
879         (WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from
880         windows.h header too much stuff that could conflict with the code.
881
882         * main.c <sync_mutex>: New static variable.
883         <switches>: Add support for "--sync-mutex" switch.
884         (decode_output_sync_flags): Decode the --sync-mutex= switch.
885         (prepare_mutex_handle_string) [WINDOWS32]: New function.
886         (main): Add "output-sync" to .FEATURES.
887
888         * job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call
889         process_noinherit.
890         (F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]:
891         New macros.
892         (RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms.
893         (sync_handle_t): New typedef.
894
895         * job.c <sync_handle>: Change type to sync_handle_t.
896         (FD_NOT_EMPTY): Seek to the file's end.  Suggested by Frank
897         Heckenbach <f.heckenbach@fh-soft.de>.
898         (pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for
899         the duration of this function, and then change back before
900         returning.
901         (start_job_command) [WINDOWS32]: Support output_sync mode on
902         MS-Windows.  Use a system-wide mutex instead of locking
903         stdout/stderr.  Call process_easy with two additional arguments:
904         child->outfd and child->errfd.
905         (exec_command) [WINDOWS32]: Pass two additional arguments, both
906         -1, to process_easy, to adjust for the changed function signature.
907
908         * function.c (windows32_openpipe) [WINDOWS32]: This function now
909         returns an int, which is -1 if it fails and zero otherwise.  It
910         also calls 'error' instead of 'fatal', to avoid exiting
911         prematurely.
912         (func_shell_base) [WINDOWS32]: Call perror_with_name if
913         windows32_openpipe fails, now that it always returns.  This avoids
914         a compiler warning that error_prefix is not used in the MS-Windows
915         build.
916
917         * config.h.W32.template (OUTPUT_SYNC): Define.
918
919         * build_w32.bat: Add w32/compat/posixfcn.c to compilation and
920         linking commands.
921
922 2013-04-20  Stefano Lattarini <stefano.lattarini@gmail.com>  (tiny change)
923
924         * README.git: Our autoconf input file is 'configure.ac', not
925         'configure.in'.  Adjust accordingly.
926         * build_w32.bat: Likewise.
927         * config.h-vms.template: Likewise.
928         * Makefile.DOS.template: Likewise.
929
930 2013-04-16  Paul Smith  <psmith@gnu.org>
931
932         * misc.c (open_tmpfd): Add a new function that returns a temporary
933         file by file descriptor.
934         (open_tmpfile): Move here from main.c.
935         * job.c (assign_child_tempfiles): Use the new open_tmpfd().
936
937 2013-04-15  Paul Smith  <psmith@gnu.org>
938
939         * makeint.h (OUTPUT_SYNC_TARGET, OUTPUT_SYNC_MAKE): Rename.
940         * job.c (start_job_command): Use new constants.
941         * main.c: New -O argument format.
942
943         * doc/make.texi (Options Summary): Document the argument to -O.
944         * make.1: Ditto.
945
946         * main.c (define_makeflags): Don't add space between a single-char
947         option and its argument.
948
949 2013-04-06  Paul Smith  <psmith@gnu.org>
950
951         * doc/make.texi (Implicit Variables): Clarify LDFLAGS vs. LDLIBS.
952         Fixes Savannah bug #37970.
953
954         * remake.c (check_dep): Reconsider files waiting on prerequisites,
955         as they may have finished.  Fixes Savannah bug #37703.
956
957 2013-02-28  Paul Smith  <psmith@gnu.org>
958
959         * function.c (func_realpath): On Solaris (at least) realpath() can
960         fail due to EINTR, so loop it.  Fixes Savannah bug #38420.
961
962 2013-02-25  Paul Smith  <psmith@gnu.org>
963
964         Add a proposed supported API for GNU make loaded objects.
965
966         * doc/make.texi (Loaded Object API): Document it.
967         * Makefile.am (make_SOURCES): Add new loadapi.c.
968         * dep.h: Remove eval_buffer(); moved to loadapi.c:gmk_eval().
969         * read.c (eval_buffer): Change eval_buffer() signature.
970         * main.c (main): Change eval_buffer() signature.
971         * variable.h (define_new_function): Change func_ptr signature.
972         * load.c (SYMBOL_EXTENSION): Change the extension.
973         * loadapi.c: Implement the new API.
974         * gnumake.h (gmk_eval): New function prototype.
975         (gmk_expand) Ditto.
976         (gmk_add_function) Ditto.
977         * gmk-default.scm (gmk-eval): Remove: now implemented in guile.c.
978         * guile.c (guile_expand_wrapper): Use gmk_expand()
979         (guile_eval_wrapper): Implement eval here to avoid double-expansion.
980         (guile_define_module): Define gmk-eval.
981         (func_guile): Use new func_ptr calling model.
982         (guile_gmake_setup): Use gmk_add_function() to declare $(guile ...)
983         * function.c (function_table_entry): Provide alternative func_ptr.
984         (func_eval): New signature for eval_buffer();
985         (function_table_init): New initialization for function_table_entry.
986         (expand_builtin_function): Support alternative invocation signature.
987         (define_new_function): Ditto.
988
989 2013-01-20  Paul Smith  <psmith@gnu.org>
990
991         * gnumake.h: New file to contain externally-visible content.
992         * makeint.h: Include gnumake.h.  Move gmk_floc type to gnumake.h.
993         * Makefile.am (include_HEADERS): Install the gnumake.h header.
994
995         * makeint.h: Change struct floc to gmk_floc typedef.
996         * Many: Use the new typedef.
997
998         * make.h: Rename to makeint.h.
999         * Many: Use the new name makeint.h.
1000
1001 2013-01-19  Paul Smith  <psmith@gnu.org>
1002
1003         * doc/make.texi (load Directive): Update to discuss location of
1004         loaded object file.
1005         (Remaking Loaded Objects): Document remaking of loaded objects.
1006
1007         * main.c (main): Rename READ_MAKEFILES to READ_FILES.
1008         * read.c: Change READ_MAKEFILES to READ_FILES since it now
1009         contains loaded object files as well.
1010         (read_all_makefiles): Ditto.
1011         (eval_makefile): Ditto.
1012         (eval): Add any loaded file to the READ_FILES list, so that it
1013         will be considered for re-build.
1014
1015         * load.c (load_file): Return the simple filename (no symbol) in
1016         the LDNAME argument (now a const char **).
1017         This filename should no longer have "./" prepended: modify the
1018         function to always check the current directory if the name has no
1019         "/", before using the normal methods.
1020         * make.h: Change the load_file() prototype.
1021
1022         * README.git: Add a bit more documentation on Git workflow & rules.
1023
1024 2013-01-13  Paul Smith  <psmith@gnu.org>
1025
1026         * main.c (main): Restore all make flags after re-exec is complete.
1027         Fixes Savannah bug #38051.
1028
1029 2013-01-12  Paul Smith  <psmith@gnu.org>
1030
1031         Convert CVS archive to Git.
1032
1033         * configure.in: Rename to configure.ac.
1034         * README.cvs: Rename to README.git and rework for Git.
1035         * maintMakefile: Use git clean for cleanup.
1036         * ChangeLog: Use new Git repository URL.
1037         * ChangeLog.2: Ditto.
1038         * Makefile.am: Change documentation for Git
1039         * Makefile.DOS.template: Ditto.
1040         * README.template: Ditto.
1041         * build_w32.bat: Ditto.
1042         * prepare_w32.bat: Ditto.
1043         * .cvsignore: Rename to .gitignore, and change to Git format.
1044
1045 2012-12-08  Eli Zaretskii  <eliz@gnu.org>
1046
1047         * job.c (create_batch_file): Fix last change: always increment the
1048         counter of batch files before trying to use it.
1049
1050 2012-12-07  Eli Zaretskii  <eliz@gnu.org>
1051
1052         * job.c (construct_command_argv_internal): Remove " from
1053         sh_chars_dos[].  Ignore an escaped backslash inside a string
1054         quoted with "..".  This lifts the 4KB or 8KB command-line length
1055         limitation imposed by the Windows shells when a command uses quoted
1056         strings, because we now don't call the shell in that case.
1057
1058         * job.c (create_batch_file): Declare the counter of batch files
1059         static, to avoid having 2 jobs using the same file name and
1060         stepping on each other's toes.  When all 64K names are used up,
1061         make one more loop looking for slots that became vacant.  This
1062         avoids leaving behind temporary batch files in the temporary
1063         directory, which happens frequently on a fast machine when using
1064         parallel builds.
1065         (reap_children): Add debug message for when removal of a temporary
1066         batch file fails.
1067
1068 2012-10-29  Paul Smith  <psmith@gnu.org>
1069
1070         New feature: "load" directive for dynamically-loaded objects.
1071
1072         * NEWS: Document new "load" directive.
1073         * doc/make.texi (Extending make): New chapter on extensions to make.
1074         * configure.in: Check for dlopen/dlsym/dlerror and -ldl.
1075         * Makefile.am (make_SOURCES): Add new file load.c.
1076         * make.h: Prototype for load_file().
1077         * main.c (main): Add "load" to .FEATURES if it's available.
1078         * read.c (eval): Parse "load" and "-load" directives.
1079
1080 2012-09-29  Paul Smith  <psmith@gnu.org>
1081
1082         * configure.in: Require a new version of gettext (1.18.1).
1083         Fixes Savannah bug #37307.
1084
1085 2012-09-09  Paul Smith  <psmith@gnu.org>
1086
1087         * configure.in (bsd_signal): Define _GNU_SOURCE, a la make.h.
1088         Fixes Savannah bug #32247.
1089
1090         * remake.c (update_file_1): Force intermediate files to be
1091         considered, not pruned, if their non-intermediate parent needs to
1092         be remade.  Fixes Savannah bug #30653.
1093
1094         * job.c (construct_command_argv_internal): Keep the command line
1095         on the heap for very long lines.  Fixes Savannah bug #36451.
1096
1097         * function.c (func_realpath): BSD realpath(3) doesn't fail if the
1098         file does not exist: use stat.  Fixes Savannah bug #35919.
1099
1100         * file.c (expand_deps): Duplicate the current variable buffer, not
1101         the old pointer.  Fixes Savannah bug #36925.
1102
1103         * read.c (eval): If we detect an initial UTF-8 BOM, skip it.
1104         Fixes Savannah bug #36529.
1105         (record_target_var): Remove unused variable "fname".
1106         (eval): Use the correct pointer when adding to the variable buffer.
1107         Fixes Savannah bug #36106.
1108
1109 2012-09-09  Eli Zaretskii  <eliz@gnu.org>
1110
1111         * read.c (unescape_char): Fix a thinko in the last change.
1112
1113 2012-09-09  Paul Smith  <psmith@gnu.org>
1114
1115         * default.c (default_variables): Use a correct default LIBPPATERNS
1116         for MacOS.  Fixes Savannah bug #37197.
1117
1118         * read.c (record_files): Reset the default macro values if .POSIX
1119         is set.  Fixes Savannah bug #37069.
1120         (parse_file_seq): Break out of an infinite loop if we're not
1121         making progress when parsing archive references.
1122
1123 2012-09-01  Eli Zaretskii  <eliz@gnu.org>
1124
1125         * README.W32.template: Update for job-server and Guile support.
1126
1127         * read.c (unescape_char): Advance 'p' after copying the unescaped
1128         characters.  Otherwise the backslashes are incorrectly erased from
1129         the original string.
1130
1131 2012-03-05  Paul Smith  <psmith@gnu.org>
1132
1133         Update copyright notices to use year ranges, as allowed by
1134         clarifications in the GNU Maintainer's Manual.
1135
1136 2012-03-04  Paul Smith  <psmith@gnu.org>
1137
1138         * read.c (unescape_char): New function to remove escapes from a char.
1139         (record_files): Call it on the dependency string to unescape ":".
1140         Fixes Savannah bug #12126 and bug #16545.
1141
1142         * make.h (CSTRLEN): Determine the length of a constant string.
1143         * main.c: Use the new macro.
1144         * read.c: Ditto.
1145         * variable.h: Ditto.
1146         * function.c: Simplify checks for function alternatives.
1147
1148         * expand.c (variable_append): If the current set is local and the
1149         next one is not a parent, then treat the next set as
1150         local as well.  Fixes Savannah bug #35468.
1151
1152 2012-03-03  Paul Smith  <psmith@gnu.org>
1153
1154         * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add support for AIX 5.2+
1155         nanosecond timestamps.  Fixes Savannah bug #32485.
1156
1157         Convert uses of `foo' for quoting to 'foo' to reflect changes in
1158         the GNU Coding Standards.  Fixes Savannah bug #34530.
1159
1160         * job.c (construct_command_argv_internal): In oneshell we need to
1161         break the SHELLFLAGS up for argv.  Fixes Savannah bug #35397.
1162
1163         * function.c (func_filter_filterout): Recompute the length of each
1164         filter word in case it was compressed due to escape chars.  Don't
1165         reset the string as it's freed.  Fixes Savannah bug #35410.
1166
1167         * misc.c (collapse_continuations): Only use POSIX-style
1168         backslash/newline handling if the .POSIX target is set.
1169         Addresses Savannah bug #16670 without backward-incompatibility.
1170         * NEWS: Document behavior change.
1171         * doc/make.texi (Splitting Lines): New section describing how to
1172         use backslash/newline to split long lines.
1173
1174 2012-02-26  Paul Smith  <psmith@gnu.org>
1175
1176         * implicit.c (pattern_search): Check the stem length to avoid
1177         stack overflows in stem_str.  Fixes Savannah bug #35525.
1178
1179 2012-02-03  Eli Zaretskii  <eliz@gnu.org>
1180
1181         * w32/subproc/sub_proc.c (proc_stdin_thread, proc_stdout_thread)
1182         (proc_stderr_thread, process_pipe_io): Ifdef away unused
1183         functions.
1184
1185         * w32/subproc/w32err.c (map_windows32_error_to_string) [_MSC_VER]:
1186         Don't use TLS storage for szMessageBuffer.  Ifdef away special
1187         code for handling Winsock error codes.  Make the function return a
1188         `const char *'.  Suggested by Ozkan Sezer.  Fixes Savannah bug #34832.
1189
1190 2012-01-29  Paul Smith  <psmith@gnu.org>
1191
1192         * gmk-default.scm (to-string-maybe): Variables map to empty strings.
1193         In Guile 2.0, (define ...) results in a variable object so make
1194         sure that maps to an empty string in make.
1195
1196         * variable.c (parse_variable_definition): New POSIX assignment ::=
1197         Take a struct variable to return more information after parsing.
1198         (assign_variable_definition): New parse_variable_definition() call.
1199         * variable.h: New declaration of parse_variable_definition().
1200         * read.c (do_define): New parse_variable_definition() call.
1201         (parse_var_assignment): Ditto.
1202         (get_next_mword): Parse ::= as a variable assignment.
1203         * doc/make.texi (Flavors): Describe the new ::= syntax.
1204         * NEWS: Mention the ::= operator.
1205
1206         * variable.h (struct variable): Rearrange elts to reduce struct size.
1207
1208         * function.c (func_file): Create a new function, $(file ...)
1209         * doc/make.texi (File Function): Document the $(file ..) function.
1210         * NEWS: Announce it.
1211
1212         * gmk-default.scm (to-string-maybe): Use a more portable way to
1213         test for unprintable characters.
1214         * configure.in [GUILE]: Guile 1.6 doesn't have pkg-config
1215         * build_w32.bat: Ditto.
1216
1217 2012-01-28  Eli Zaretskii  <eliz@gnu.org>
1218
1219         * config.h.W32.template: Update from config.h.in.
1220
1221         Support a Windows build with Guile.
1222
1223         * README.W32.template: Update with instructions for building with
1224         Guile.
1225
1226         * build_w32.bat: Support building with Guile.
1227
1228         * make.h [HAVE_STDINT_H]: Include stdint.h.
1229
1230         * main.c (main, clean_jobserver): Move declarations of variables
1231         not used in the WINDOWS32 build to the #else branch, to avoid
1232         compiler warnings.
1233
1234         Fix failures on MS-Windows when Make's standard handles are invalid.
1235         This can happen when Make is invoked from a GUI application.
1236
1237         * w32/subproc/sub_proc.c (process_init_fd): Don't dereference
1238         pproc if it is a NULL pointer.
1239         (process_begin, process_cleanup): Don't try to close pipe handles
1240         whose value is INVALID_HANDLE_VALUE.
1241         (process_easy): Initialize hIn, hOut, and hErr to
1242         INVALID_HANDLE_VALUE.  If DuplicateHandle fails with
1243         ERROR_INVALID_HANDLE, duplicate a handle for the null device
1244         instead of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE or
1245         STD_ERROR_HANDLE.  Don't try to close pipe handles whose value is
1246         INVALID_HANDLE_VALUE.
1247
1248         * function.c (windows32_openpipe): Initialize hIn and hErr to
1249         INVALID_HANDLE_VALUE.  If DuplicateHandle fails with
1250         ERROR_INVALID_HANDLE, duplicate a handle for the null device
1251         instead of STD_INPUT_HANDLE or STD_ERROR_HANDLE.  Fix indentation.
1252         Don't try to close handles whose value is INVALID_HANDLE_VALUE.
1253
1254 2012-01-25  Eli Zaretskii  <eliz@gnu.org>
1255
1256         * function.c (define_new_function): Fix format strings in calls to
1257         `fatal'.
1258
1259 2012-01-17  Paul Smith  <psmith@gnu.org>
1260
1261         * guile.c (func_guile): Handle NULL returns from Guile.
1262
1263 2012-01-16  Paul Smith  <psmith@gnu.org>
1264
1265         * make.h (PATH_SEPARATOR_CHAR): Allow resetting for crosscompiling
1266         for Windows.  Patch by Chris Sutcliffe <ir0nh34d@gmail.com>
1267         Fixes Savannah bug #34818.
1268
1269 2012-01-15  Paul Smith  <psmith@gnu.org>
1270
1271         * variable.h: Prototype an interface for defining new make functions.
1272         * function.c (define_new_function): Define it.
1273         (func_guile): Remove the "guile" function.
1274         (function_table_init): Ditto.
1275         * guile.c (func_guile): Add the "guile" function here.
1276         (setup_guile): Call define_new_function() to define it.
1277         (guile_eval_string): Obsolete.
1278
1279         * all: Update copyright notices.
1280
1281 2012-01-12  Paul Smith  <psmith@gnu.org>
1282
1283         Support GNU Guile as an embedded extension language for GNU make.
1284
1285         * NEWS: Note the new Guile capability.
1286         * Makefile.am (EXTRA_DIST, make_SOURCES): Add new guile source files.
1287         (AM_CFLAGS): Add Guile compiler flags.
1288         (guile): Add a rule for converting default SCM into a C header.
1289         * configure.in: Add support for --with-guile.
1290         Also, convert the entire file to properly escaped autoconf m4, and
1291         utilize newer features such as AS_IF() and AS_CASE().
1292         * doc/make.texi (Guile Function): Document the GNU guile integration.
1293         * make.h (guile_eval_string, guile_boot): Prototypes for Guile.
1294         * main.c (main): Run guile_boot() to handle main().
1295         (real_main): All the previous content of main() is here.
1296         (real_main): Add "guile" to the .FEATURES variable.
1297         * function.c (func_guile): Call Guile.
1298         * guile.c: New file implementing GNU make integration with GNU Guile.
1299         * gmk-default.scm: The integration of GNU make with Guile uses
1300         Guile itself for much of the parsing and conversion of return
1301         types, etc.  This implementation is embedded into GNU make.
1302         * config.h-vms.template: Disable Guile support.
1303         * config.h.W32.template: Ditto.
1304         * configh.dos.template: Ditto.
1305         * config.ami.template: Ditto.
1306         * makefile.vms: Add new Guile files.
1307         * Makefile.DOS.template: Ditto.
1308         * Makefile.ami: Ditto.
1309         * NMakefile.template: Ditto.
1310         * SMakefile.template: Ditto.
1311         * build_w32.bat: Ditto.
1312         * dosbuild.bat: Ditto.
1313         * make_msvc_net2001.vcproj: Ditto.
1314
1315 2011-11-15  Paul Smith  <psmith@gnu.org>
1316
1317         * main.c (main): Use %ld when printing DWORD values.
1318         * job.c (new_job): Ditto.
1319         * w32/include/sub_proc.h: Use const.
1320         * w32/subproc/sub_proc.c (open_jobserver_semaphore): Use const.
1321         Fixes Savannah bug #34830.  Changes suggested by Ozkan Sezer.
1322
1323         * configure.in (MAKE_JOBSERVER): Enable jobserver on W32 systems.
1324         * config.h.W32.template (MAKE_JOBSERVER): Ditto.
1325
1326 2011-11-14  Paul Smith  <psmith@gnu.org>
1327
1328         * read.c (eval): parse_file_seq() might shorten the string due to
1329         backslash removal.  Start parsing again at the colon.
1330         Fixes Savannah bug #33399.
1331
1332 2011-11-13  Paul Smith  <psmith@gnu.org>
1333
1334         * file.c (file_timestamp_cons): Match up data types to avoid warnings.
1335         * filedef.h: Ditto.
1336         * misc.c (concat): Ditto.
1337         * read.c (eval): Assign value to avoid warnings.
1338         * function.c (func_shell_base): Use fork() instead of vfork() to
1339         avoid warnings.
1340         * make.h (INTEGER_TYPE_SIGNED): Use <=0 to avoid warnings.
1341         Fixes Savannah bug #34608.
1342
1343         * job.c (construct_command_argv): Remove _p.
1344         (construct_command_argv_internal): Remove _ptr.
1345         Fixes Savannah bug #32567.
1346
1347         * main.c (clean_jobserver): Don't write the free token to the pipe.
1348         Change suggested by Tim Newsome <tnewsome@aristanetworks.com>
1349
1350         * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add support for Darwin.
1351         * filedef.h (FILE_TIMESTAMP_STAT_MODTIME): Ditto.
1352         Patch provided by Troy Runkel <Troy.Runkel@mathworks.com>
1353
1354 2011-10-11  Troy Runkel  <Troy.Runkel@mathworks.com>
1355
1356         * config.h.W32: Enable job server support for Windows.
1357         * main.c [WINDOWS32]: Include sub_proc.h
1358         (main): Create a named semaphore to implement the job server.
1359         (clean_jobserver): Free the job server semaphore when make is finished.
1360         * job.c [WINDOWS32]: Define WAIT_NOHANG
1361         (reap_children): Support non-blocking wait for child processes.
1362         (free_child): Release job server semaphore when child process finished.
1363         (job_noop): Don't define function on Windows.
1364         (set_child_handler_action_flags): Don't define function on Windows.
1365         (new_job): Wait for job server semaphore or child process termination.
1366         (exec_command): Pass new parameters to process_wait_for_any.
1367         * w32/include/sub_proc.h [WINDOWS32]: New/updated EXTERN_DECL entries.
1368         * w32/subproc/sub_proc.c [WINDOWS32]: Added job server implementation.
1369         (open_jobserver_semaphore): Open existing job server semaphore by name.
1370         (create_jobserver_semaphore): Create new job server named semaphore.
1371         (free_jobserver_semaphore): Close existing job server semaphore.
1372         (acquire_jobserver_semaphore): Decrement job server semaphore count.
1373         (release_jobserver_semaphore): Increment job server semaphore count.
1374         (has_jobserver_semaphore): Returns whether job server semaphore exists.
1375         (get_jobserver_semaphore_name): Returns name of job server semaphore.
1376         (wait_for_semaphore_or_child_process): Wait for either the job server
1377         semaphore to become signalled or a child process to terminate.
1378         (process_wait_for_any_private): Support for non-blocking wait for child.
1379         (process_wait_for_any): Added support for non-blocking wait for child.
1380         (process_file_io): Pass new parameters to process_wait_for_any_private.
1381
1382 2011-09-18  Paul Smith  <psmith@gnu.org>
1383
1384         * main.c (main): If we're re-exec'ing and we're the master make,
1385         then restore the job_slots value so it goes back into MAKEFLAGS
1386         properly.  See Savannah bug #33873.
1387
1388         * remake.c (library_search): STD_DIRS is computed when other
1389         static vars like buflen etc. are computed, so it must be static
1390         as well.  See Savannah bug #32511.
1391
1392 2011-09-16  Paul Smith  <psmith@gnu.org>
1393
1394         * maintMakefile (do-po-update): Apparently we have to avoid
1395         certificate checks on the http://translationproject.org site now.
1396
1397 2011-09-12  Paul Smith  <psmith@gnu.org>
1398
1399         * read.c (eval): Ensure exported variables are defined in the
1400         global scope.  Fixes Savannah bug #32498.
1401
1402 2011-09-11  Paul Smith  <psmith@gnu.org>
1403
1404         * Makefile.am (dist-hook): Remove w32/Makefile and .deps/ from the
1405         dist file.  Fixes Savannah bug #31489.
1406
1407         * doc/make.texi (Complex Makefile): Add a hint about using
1408         #!/usr/bin/make (for Savannah support request #106459)
1409
1410 2011-09-02  Paul Smith  <psmith@gnu.org>
1411
1412         * remake.c (touch_file): If we have both -n and -t, -n takes
1413         precedence.  Patch from Michael Witten <mfwitten@gmail.com>
1414
1415 2011-08-29  Paul Smith  <psmith@gnu.org>
1416
1417         * expand.c (variable_expand_string): Always allocate a new buffer
1418         for a string we're expanding.  The string we're working on can get
1419         freed while we work on it (for example if it's the value of a
1420         variable which modifies itself using an eval operation).
1421         See Savannah patch #7534 for the original report by Lubomir Rintel.
1422
1423 2011-06-12  Paul Smith  <psmith@gnu.org>
1424
1425         * read.c (parse_file_seq): Move the check for empty members out of
1426         the loop so we can go to the next member properly.
1427         Another fix for Savannah bug #30612.
1428
1429         * config.h-vms.template: Newer versions of VMS have strncasecmp()
1430         Patch provided by: Hartmut Becker <becker.ismaning@freenet.de>
1431
1432 2011-05-07  Paul Smith  <psmith@gnu.org>
1433
1434         * expand.c (variable_append): Add a LOCAL argument to track
1435         whether this is the first invocation or not.  If it's not and
1436         private_var is set, then skip this variable and try the next one.
1437         Fixes Savannah bug #32872.
1438
1439         * read.c (parse_file_seq): Ensure existence checks use glob().
1440
1441 2011-05-07  Eli Zaretskii  <eliz@gnu.org>
1442
1443         * job.c (construct_command_argv_internal): Don't assume shellflags
1444         is always non-NULL.  Escape-protect characters special to the
1445         shell when copying the value of SHELL into new_line.  Fixes
1446         Savannah bug #23922.
1447
1448 2011-05-02  Paul Smith  <psmith@gnu.org>
1449
1450         * doc/make.texi (Special Variables): Add documentation for the new
1451         words in .FEATURES.  Fixes Savannah bug #32058.
1452         (Flavor Function): Rewrite the section on the flavor function.
1453         Fixes Savannah bug #31582.
1454
1455         * function.c (func_sort): Use the same algorithm to count the
1456         number of words we will get after the split, as we use to split.
1457         Based on a patch from Matthias Hopf.  Fixes Savannah bug #33125.
1458
1459         * make.h: Make global variable stack_limit extern.
1460         Fixes Savannah bug #32753.
1461
1462 2011-05-01  Paul Smith  <psmith@gnu.org>
1463
1464         * read.c (parse_file_seq): Don't try to invoke glob() unless there
1465         are potential wildcard characters in the filename.  Performance
1466         enhancement suggested by Michael Meeks <michael.meeks@novell.com>
1467
1468 2011-04-29 Boris Kolpackov  <boris@codesynthesis.com>
1469
1470         * read.c (eval_makefile): Delay caching of the file name until after
1471         all the expansions and searches.
1472
1473 2011-04-17  David A. Wheeler  <dwheeler@dwheeler.com>
1474
1475         * doc/make.texi (Reading Makefiles): Document "!=".
1476         (Setting): Ditto.
1477         (Features): Ditto.
1478         * variable.h (enum variable_flavor): New type "f_shell".
1479         * variable.c (shell_result): Send a string to the shell and store
1480         the output.
1481         (do_variable_definition): Handle f_shell variables: expand the
1482         value, then send it to the shell and store the result.
1483         (parse_variable_definition): Parse "!=" shell assignments.
1484         * read.c (get_next_mword): Treat "!=" as a varassign word.
1485         * function.c (fold_newlines): If trim_newlines is set remove all
1486         trailing newlines; otherwise remove only the last newline.
1487         (func_shell_base): Move the guts of the shell function here.
1488         (func_shell): Call func_shell_base().
1489
1490 2011-02-21  Paul Smith  <psmith@gnu.org>
1491
1492         * strcache.c (various): Increase performance based on comments
1493         from Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.  Stop looking for
1494         a buffer when we find the first one that fits, not the best fit.
1495         If there is not enough free space in a buffer move it to a
1496         separate list so we don't have to walk it again.
1497         * make.h (NDEBUG): Turn off asserts unless maintainer mode is set.
1498         (strcache_add_len, strcache_setbufsize): Use unsigned length/size.
1499         * maintMakefile (AM_CPPFLAGS): Enable MAKE_MAINTAINER_MODE.
1500
1501         * remake.c (complain): Move translation lookups closer to use.
1502
1503 2011-02-13  Paul Smith  <psmith@gnu.org>
1504
1505         * doc/make.texi: Clean up references to "static" variables and
1506         semicolon errors.  Patch from Michael Witten <mfwitten@gmail.com>.
1507
1508 2010-12-27  Paul Smith  <psmith@gnu.org>
1509
1510         * make.1: Update the header/footer info in the man page.
1511
1512 2010-11-28  Paul Smith  <psmith@gnu.org>
1513
1514         * read.c (record_target_var): Don't reset v if it's the same as
1515         the global version.  Fixes Savannah bug #31743.
1516
1517 2010-11-06  Paul Smith  <psmith@gnu.org>
1518
1519         * variable.c (print_auto_variable): Print auto variables; ignore others.
1520         (print_noauto_variable): Print non-auto variables; ignore others.
1521         (print_variable_set): Allow the caller to select which type to print.
1522         (print_target_variables): Show all the non-auto variables for a target.
1523
1524         * default.c (install_default_suffix_rules): Initialize recipe_prefix.
1525         * rule.c (install_pattern_rule): Ditto.
1526         * read.c (record_files): Pass in the current recipe prefix.  Remember
1527         it in the struct command for these targets.
1528         (eval): Remember the value of RECIPEPREFIX when we start parsing.
1529         Do not remove recipe prefixes from the recipe here: we'll do it later.
1530         * job.c (start_job_command): Remove recipe prefix characters early,
1531         before we print the output or chop it up.
1532         * file.c (print_file): If recipe_prefix is not standard, reset it
1533         in -p output.  Assign target variables in -p output as well.
1534
1535         * commands.c (chop_commands): Max command lines is USHRT_MAX.
1536         Set any_recurse as a bitfield.
1537         * make.h (USHRT_MAX): Define if not set.
1538
1539 2010-10-27  Paul Smith  <psmith@gnu.org>
1540
1541         * commands.h (struct commands): Rearrange to make better use of
1542         memory.  Add new recipe_prefix value.
1543
1544 2010-10-26  Paul Smith  <psmith@gnu.org>
1545
1546         * doc/make.texi (Setting): Document the treatment of
1547         backslash-newline in variable values.
1548         * misc.c (collapse_continuations): Do not collapse multiple
1549         backslash-newlines into a single space.  Fixes Savannah bug #16670.
1550
1551 2010-08-29  Paul Smith  <psmith@gnu.org>
1552
1553         * doc/make.texi (Implicit Variables): Document LDLIBS and LOADLIBES.
1554         Fixes Savannah bug #30807.
1555         (Instead of Execution): Mention that included makefiles are still
1556         rebuilt even with -n.  Fixes Savannah bug #30762.
1557
1558         * configure.in: Bump to 3.82.90.
1559
1560         * make.h: Add trace_flag variable.
1561         * main.c (switches): Add --trace option.
1562         (trace_flag): Declare variable.
1563         * job.c (start_job_command): Show recipe if trace_flag is set.
1564         (new_job): Show trace messages if trace_flag is set.
1565         * doc/make.texi (Options Summary): Document the new --trace option.
1566         * make.1: Add --trace documentation.
1567         * NEWS: Mention --trace.
1568
1569         * job.c (child_error): Show recipe filename/linenumber on error.
1570         Also show "(ignored)" when appropriate even for signals/coredumps.
1571         * NEWS: Mention file/linenumber change.
1572
1573         * main.c (main): Print version info when DB_BASIC is set.
1574
1575         * job.c (construct_command_argv_internal): If shellflags is not
1576         set, choose an appropriate default value.  Fixes Savannah bug #30748.
1577
1578 2010-08-27  Eli Zaretskii  <eliz@gnu.org>
1579
1580         * variable.c (define_automatic_variables) [__MSDOS__ || WINDOWS32]:
1581         Remove trailing backslashes in $(@D), $(<D), etc., for consistency
1582         with forward slashes.  Fixes Savannah bug #30795.
1583
1584 2010-08-13  Paul Smith  <psmith@gnu.org>
1585
1586         * NEWS: Accidentally forgot to back out the sorted wildcard
1587         enhancement in 3.82, so update NEWS.
1588         Also add NEWS about the error check for explicit and pattern
1589         targets in the same rule, added to 3.82.
1590
1591         * main.c (main): Add "oneshell" to $(.FEATURES) (forgot to add
1592         this in 3.82!)
1593
1594         * read.c (parse_file_seq): Fix various errors parsing archives
1595         with multiple objects in the parenthesis, as well as wildcards.
1596         Fixes Savannah bug #30612.
1597
1598 2010-08-10  Paul Smith  <psmith@gnu.org>
1599
1600         * main.c (main): Expand MAKEFLAGS before adding it to the
1601         environment when re-exec'ing.  Fixes Savannah bug #30723.
1602
1603 2010-08-07  Eli Zaretskii  <eliz@gnu.org>
1604
1605         * w32/subproc/build.bat: Make all 3 cl.exe compile command lines
1606         use the same /I switches.  Fixes Savannah bug #30662.
1607
1608         * function.c (func_shell) [WINDOWS32]: Reset just_print_flag
1609         around the call to construct_command_argv, so that a temporary
1610         batch file _is_ created when needed for $(shell).
1611         Fixes Savannah bug #16362.
1612
1613 2010-08-07 Juan Manuel Guerrero  <juan.guerrero@gmx.de>
1614
1615         * configh.dos.template (HAVE_STRNCASECMP): Define.
1616
1617 2010-07-28  Paul Smith  <psmith@gnu.org>
1618
1619         Version 3.82 released.
1620
1621         * configure.in: Change release version.
1622         * NEWS: Change the date.
1623
1624         * read.c (parse_file_seq): Remove GLOB_NOSORT for
1625         backward-compatibility.  We'll add it back in next release.
1626         * NEWS: Note it.
1627
1628 2010-07-24  Eli Zaretskii  <eliz@gnu.org>
1629
1630         * job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
1631         format.
1632
1633 2010-07-18  Paul Smith  <psmith@gnu.org>
1634
1635         * configure.in: Switch bsd_signal to AC_CHECK_DECLS() to make sure
1636         we have a declaration.  Fixes Savannah bug #25713 (maybe?)
1637         * doc/make.texi (Complex Makefile): Cleanup variable assignments.
1638         (One Shell): New subsection for the .ONESHELL special target.
1639
1640         Patches by Ozkan Sezer <sezeroz@gmail.com>:
1641
1642         * misc.c (strncasecmp): Local implementation for systems without.
1643         * config.h.W32.template (HAVE_STRNICMP): Define on Windows.
1644         * configure.in: Check for strncasecmp/strncmpi/strnicmp.
1645         * job.c [WINDOWS32]: Don't define dup2 on Windows.
1646         (pid2str): Use "%Id" even with MSVC
1647         (exec_command): Cast to pid_t when calling pid2str().
1648         * w32/subproc/sub_proc.c [WINDOWS32]: Include config.h first.
1649         Use stddef.h on MSVC to get intptr_t.
1650         * w32/subproc/misc.c [WINDOWS32]: Include config.h first.
1651         * w32/compat/dirent.c [WINDOWS32]: Include config.h first.
1652         (readdir): Cast -1 to correct type for d_ino.
1653         * w32/pathstuff.c [WINDOWS32]: Ensure make.h is included first.
1654         * make.h [WINDOWS32]: Don't prototype alloca() on Windows.
1655         Add configuration for strncasecmp().
1656         * main.c (ADD_SIG) [WINDOWS32]: Avoid warnings in MSVC.
1657         * config.h.W32.template [WINDOWS32]: Don't warn on unsafe
1658         functions or variables.
1659         * NMakefile.template [WINDOWS32]: Remove /MACHINE:I386.
1660         * main.c (clean_jobserver): Cast due to MSVC brokenness.
1661         (decode_switches): Ditto.
1662         * vpath.c (construct_vpath_list): Ditto.
1663         * rule.c (freerule): Ditto.
1664         * ar.c (ar_glob): Ditto.
1665
1666 2010-07-16  Boris Kolpackov  <boris@codesynthesis.com>
1667
1668         * misc.c (concat): Fix buffer overrun.
1669
1670 2010-07-12  Paul Smith  <psmith@gnu.org>
1671
1672         Update copyrights to add 2010.
1673
1674         * build_w32.bat: Support for MSVC Windows x86_64 builds.
1675         * job.c: Don't define execve() on MSVC/64bit.
1676         Patch by Viktor Szakats.  Fixes Savannah bug #27590.
1677
1678 2010-07-12  Eli Zaretskii  <eliz@gnu.org>
1679
1680         * make.h (alloca) [!__GNUC__]: Don't define prototype.
1681         (int w32_kill): Use pid_t for process ID argument.
1682         Fixes Savannah bug #27809.
1683
1684 2010-07-12  Paul Smith  <psmith@gnu.org>
1685
1686         Integrated new .ONESHELL feature.
1687         Patch by David Boyce <dsb@boyski.com>.  Modified by me.
1688
1689         * NEWS: Add a note about the new feature.
1690         * job.c (is_bourne_compatible_shell): Determine whether we're
1691         using a standard POSIX shell or not.
1692         (start_job_command): Accept '-ec' as POSIX shell flags.
1693         (construct_command_argv_internal): If one_shell is set and we are
1694         using a POSIX shell, remove "interior" prefix characters such as
1695         "@", "+", "-".  Also treat "\n" as a special character when
1696         choosing the slow path, if ONESHELL is set.
1697         * job.h (is_bourne_compatible_argv): Define the new function.
1698
1699         * make.h (one_shell): New global variable to remember setting.
1700         * main.c: Declare it.
1701         * read.c (record_files): Set it.
1702         * commands.c (chop_commands): If one_shell is set, don't chop
1703         commands into multiple lines; just keep one line.
1704
1705 2010-07-09  Eli Zaretskii  <eliz@gnu.org>
1706
1707         * w32/subproc/sub_proc.c: Include stdint.h.
1708         (sub_process_t): Use intptr_t for file handles and pid_t for
1709         process ID.
1710         (process_pipes, process_init_fd, process_begin): Use intptr_t for
1711         file handles and pid_t for process ID.  Fixes Savannah bug #27809.
1712         Patch by Ozkan Sezer <sezeroz@gmail.com>
1713
1714         * function.c (abspath): Support absolute file names in UNC format.
1715         Fixes Savannah bug #30312.
1716
1717         * job.c (pid2str) [WINDOWS32]: Don't use %Id with GCC < 4.x.
1718         (exec_command) [WINDOWS32]: Use pid2str instead of non-portable
1719         %Id.
1720
1721         * main.c (handle_runtime_exceptions): Use %p to print addresses,
1722         to DTRT on both 32-bit and 64-bit hosts.  Savannah bug #27809.
1723
1724         * job.c (w32_kill, start_job_command, create_batch_file): Use
1725         pid_t for process IDs and intptr_t for the 1st arg of
1726         _open_osfhandle.
1727         * function.c (windows32_openpipe): Use pid_t for process IDs and
1728         intptr_t for the 1st arg of _open_osfhandle.
1729         (func_shell): Use pid_t for process IDs.
1730         * main.c (main) [WINDOWS32]: Pacify the compiler.
1731         * config.h.W32.template (pid_t): Add a definition for 64-bit
1732         Windows builds that don't use GCC.  Fixes Savannah bug #27809.
1733         Patch by Ozkan Sezer <sezeroz@gmail.com>
1734
1735 2010-07-07  Paul Smith  <psmith@gnu.org>
1736
1737         * configure.in: Bump to a new prerelease version 3.81.91.
1738
1739 2010-07-06  Paul Smith  <psmith@gnu.org>
1740
1741         * main.c (main): Set a default value of "-c" for .SHELLFLAGS.
1742         * NEWS: Mention the new behavior of .POSIX and the new .SHELLFLAGS
1743         variable.
1744         * job.c (construct_command_argv): Retrieve the .SHELLFLAGS value
1745         and pass it to construct_command_argv_internal().
1746         (construct_command_argv_internal): If .SHELLFLAGS is non-standard
1747         use the slow path.  Use that value instead of hard-coded "-c".
1748
1749 2010-07-05  Paul Smith  <psmith@gnu.org>
1750
1751         * implicit.c (pattern_search): lastslash can be const.
1752         * dir.c (downcase): Remove unused variable.
1753         * hash.c (hash_init): Cast sizeof for error message.
1754         * arscan.c (ar_scan): Cast to char* for WINDOWS32.
1755         (ar_member_touch): Ditto.
1756         * ar.c (glob_pattern_p): Avoid symbol collision: open -> opened
1757         * signame.c (strsignal): Ditto: signal -> sig
1758         * job.c (create_batch_file): Ditto: error -> error_string
1759         (pid2str): Portably convert a pid_t into a string
1760         (reap_children): Use it.
1761         (start_waiting_job): Use it.
1762         Savannah bug #27809.  Patch by Ozkan Sezer <sezeroz@gmail.com>
1763
1764 2010-07-03  Paul Smith  <psmith@gnu.org>
1765
1766         * read.c (parse_file_seq): All archive groups must end with ')' as
1767         the LAST character in a word.  If there is no word ending in ')'
1768         then it's not an archive group.  Fixes Savannah bug #28525.
1769
1770 2010-07-01  Paul Smith  <psmith@gnu.org>
1771
1772         * main.c (main): Append optional features using separate calls.
1773         Not as efficient but not all compilers allow conditionals inside
1774         macro calls.  Fixes Savannah bug #29244.
1775
1776 2010-01-10  Paul Smith  <psmith@gnu.org>
1777
1778         * make.h (patheq): Rename strieq() to patheq() for clarity.
1779         * dir.c (dir_contents_file_exists_p): Use it.
1780
1781         * dir.c (file_impossible): Convert xmalloc/memset to xcalloc.
1782         * file.c (enter_file): Ditto.
1783         * job.c (new_job): Ditto.
1784
1785 2009-12-11  Eli Zaretskii  <eliz@gnu.org>
1786
1787         * job.c (construct_command_argv_internal) <sh_cmds_dos>
1788         [WINDOWS32]: Add "echo." and a few more commands that are built
1789         into cmd.exe.  Fixes Savannah bug #28126.
1790
1791         * file.c (lookup_file) [HAVE_DOS_PATHS]: Treat '\\' like we do
1792         with '/'.
1793
1794 2009-11-15  Paul Smith  <psmith@gnu.org>
1795
1796         Patches for VMS provided by Hartmut Becker <Hartmut.Becker@hp.com>
1797
1798         * vmsjobs.c (ctrlYPressed) [VMS]: Deal with CTRL-Y.
1799         (vmsHandleChildTerm) [VMS]: Ditto.
1800         (astYHandler) [VMS]: Ditto.
1801         (tryToSetupYAst) [VMS]: Ditto.
1802         (child_execute_job) [VMS]: Ditto.
1803
1804         * vmsify.c (trnlog) [VMS]: Fix const errors.
1805         (vmsify) [VMS]: Ditto.
1806
1807         * readme.vms [VMS]: Update with notes for 3.82.
1808
1809         * job.h (comname) [VMS]: Remember the temporary command filename
1810
1811         * dir.c (vmsify) [VMS]: Fix const errors.
1812         (vms_hash) [VMS]: Ditto.
1813         (vmsstat_dir) [VMS]: Ditto.
1814         (find_directory) [VMS]: Fix case-insensitive option for VMS
1815         (dir_contents_file_exists_p) [VMS]: Ditto.
1816         (file_impossible) [VMS]: Ditto.
1817
1818         * config.h-vms.template (HAVE_FDOPEN) [VMS]: Have it.
1819         (HAVE_STRCASECMP) [VMS]: Ditto.
1820
1821         * arscan.c (VMS_get_member_info) [VMS]: Fix timezone computation.
1822         (ar_scan) [VMS]: Fix const error.
1823
1824 2009-11-12  Boris Kolpackov  <boris@codesynthesis.com>
1825
1826         * vpath.c (vpath_search, selective_vpath_search): Add index arguments
1827         which allows the caller to get the index of the matching directory.
1828
1829         * make.h (vpath_search): Update prototype.
1830
1831         * remake.c (library_search): Implement linker-compatible library
1832         search. Use the new VPATH_SEARCH index functionality to keep track
1833         of the directory index for each match. Select the match with the
1834         lowest directory index.
1835
1836         * implicit.c (pattern_search): Pass NULL for the index arguments in
1837         the VPATH_SEARCH call.
1838
1839         * doc/make.texi (Directory Search for Link Libraries): Describe the
1840         new search behavior.
1841
1842         * NEWS: Add a note about the new behavior.
1843
1844 2009-10-25  Paul Smith  <psmith@gnu.org>
1845
1846         * AUTHORS, et.al.: Update copyright years.
1847
1848         * implicit.c (stemlen_compare): Fix qsort() compare bug that
1849         caused implicit rules with equal stem lengths to be sorted
1850         indeterminately.
1851
1852 2009-10-24  Paul Smith  <psmith@gnu.org>
1853
1854         * main.c (usage): Add --eval to the usage string.
1855         (switches): Add the --eval switch.
1856         (main): If --eval is given, add them to the simply-expanded variable
1857         -*-eval-flags-*- (necessary to allow recursion to work properly).
1858         (define_makeflags): Add -*-eval-flags-*- to MAKEFLAGS.
1859
1860         * NEWS: Describe the new --eval command line argument.
1861         * doc/make.texi (Options Summary): Document --eval.
1862
1863         * dep.h: eval_buffer() returns void.
1864         * read.c (eval_buffer): Ditto.
1865         (eval): Ditto.
1866
1867         * variable.h (define_variable_cname): New macro for constant
1868         variable names.
1869         * default.c (set_default_suffixes): Use it.
1870         * main.c (main): Ditto.
1871         (handle_non_switch_argument): Ditto.
1872         (define_makeflags): Ditto.
1873         * read.c (read_all_makefiles): Ditto.
1874         * variable.c (define_automatic_variables): Ditto.
1875
1876         * commands.c (dep_hash_cmp): Avoid casts.
1877         (dep_hash_1): Ditto.
1878         (dep_hash_2): Ditto.
1879
1880 2009-10-22  Boris Kolpackov  <boris@codesynthesis.com>
1881
1882         * read.c (read_all_makefiles): Mark the default makefile dependency
1883         dontcare.
1884
1885 2009-10-07  Boris Kolpackov  <boris@codesynthesis.com>
1886
1887         * read.c (do_undefine): Free the expanded variable name.
1888
1889         * commands.c (dep_hash_cmp, set_file_variables): Move the order-only
1890         to normal upgrade logic from  dep_hash_cmp to set_file_variables.
1891
1892 2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
1893
1894         * dep.h (uniquize_deps): Remove.
1895
1896         * read.c (uniquize_deps): Merge into set_file_variables in
1897         commands.c.
1898         (dep_hash_1, dep_hash_2, dep_hash_cmp): Move to commands.c.
1899
1900         * commands.c (set_file_variables): Avoid modifying the dep
1901         chain to achieve uniqueness. Fixes savannah bug 25780.
1902
1903         * implicit.c (pattern_search): Instead of re-setting all automatic
1904         variables for each rule we try, just update $*.
1905
1906 2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>
1907
1908         * variable.h (undefine_variable_in_set): New function declaration.
1909         (undefine_variable_global): New macro.
1910
1911         * variable.c (undefine_variable_in_set): New function implementation.
1912
1913         * read.c (vmodifiers): Add undefine_v modifier.
1914         (parse_var_assignment): Parse undefine.
1915         (do_undefine): Handle the undefine directive.
1916         (eval): Call do_undefine if undefine_v is set.
1917
1918         * main.c (.FEATURES): Add a keyword to indicate the new feature.
1919
1920         * doc/make.texi (Undefine Directive): Describe the new directive.
1921
1922         * NEWS: Add a note about the new directive.
1923
1924 2009-10-05  Boris Kolpackov  <boris@codesynthesis.com>
1925
1926         * implicit.c (pattern_search): Initialize file variables only
1927         if we need to parse a rule that requires the second expansion.
1928
1929 2009-10-03  Paul Smith  <psmith@gnu.org>
1930
1931         * make.h: Include <alloca.h> even on systems where __GNUC__ is
1932         defined.  Not sure why it was done the other way.
1933         Requested by David Boyce <dsb@boyski.com>.
1934
1935 2009-09-30  Boris Kolpackov  <boris@codesynthesis.com>
1936
1937         * dep.h (dep): Add the DONTCARE bitfield.
1938
1939         * filedef.h (file):Add the NO_DIAG bitfield.
1940
1941         * read.c (eval_makefile): Set the DONTCARE flag in struct dep,
1942         not struct file (a file can be a dependency of many targets,
1943         some don't care, some do).
1944
1945         * remake.c (update_goal_chain): Propagate DONTCARE from struct
1946         dep to struct file before updating the goal and restore it
1947         afterwards.
1948         (update_file): Don't prune the dependency graph if this target
1949         has failed but the diagnostics hasn't been issued.
1950         (complain): Scan the file's dependency graph to find the file
1951         that caused the failure.
1952         (update_file_1): Use NO_DIAG instead of DONTCARE to decide
1953         whether to print diagnostics.
1954
1955         Fixes Savannah bugs #15110, #25493, #12686, and #17740.
1956
1957 2009-09-28  Paul Smith  <psmith@gnu.org>
1958
1959         * doc/make.texi (Pattern Intro): Move the match algorithm
1960         discussion into the "Pattern Match" node.
1961         (Pattern Match): Expand on the pattern rule matching algorithm.
1962
1963 2009-09-28  Andreas Buening  <andreas.buening@nexgo.de>
1964
1965         * job.c (construct_command_argv_internal) [OS2]: Don't eat too
1966         much of the command line on a single pass.
1967
1968 2009-09-28  Boris Kolpackov  <boris@codesynthesis.com>
1969
1970         * varible.c (create_pattern_var): Insert variables into the
1971         PATTERN_VARS list in the shortest patterns first order.
1972
1973         * implicit.c (tryrule): Add STEMLEN and ORDER members. These are
1974         used to sort the rules.
1975         (stemlen_compare): Compare two tryrule elements.
1976         (pattern_search): Sort the rules so that they are in the shortest
1977         stem first order.
1978
1979         * main.c (.FEATURES): Add a keyword to indicate the new behavior.
1980
1981         * doc/make.texi (Pattern-specific Variable Values): Describe the
1982         new pattern-specific variables application order.
1983         (Introduction to Pattern Rules): Describe the new pattern rules
1984         search order.
1985
1986         * NEWS: Add a note about the new behavior.
1987
1988 2009-09-27  Paul Smith  <psmith@gnu.org>
1989
1990         * doc/make.texi (Double-Colon): Mention that pattern rules with
1991         double-colons have a different meaning.  Savannah bug #27497.
1992
1993 2009-09-27  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
1994
1995         * configh.dos.template: Remove unconditional definition of
1996         SYS_SIGLIST_DECLARED.
1997         Include <sys/version.h> because ports of GCC 4.3.0 and later no
1998         longer include it, so macros like __DJGPP_MINOR__ are no longer
1999         defined automatically.
2000
2001         * Makefile.DOS.template (INCLUDES): Use $(prefix) and the
2002         corresponding variables to define LIBDIR, INCLUDEDIR and LOCALEDIR
2003         instead of using the hardcoded ones.
2004         (SUBDIRS): doc subdir added.
2005         (INFO_DEPS, DVIS): Values changed to 'make.info' and 'make.dvi'.
2006         (TEXI2HTML, TEXI2HTML_FLAGS): Removed.  Use makeinfo --html to
2007         create html formated docs.  texi2html may not be ported to DOS.
2008         (make.info, make.dvi, make.ps, make.html): Make targets depend on
2009         'make.texi'.
2010         (.texi.info, .texi, .texi.dvi): Now invoked recursively.  Change
2011         -I switch to look in ./ instead of ./doc.
2012         (html): Target depend on html-recursive instead of make_1.html.
2013         (make_1.html): Removed.
2014         (mostlyclean-aminfo): Use $(srcdir)/doc instead of ./ as prefix.
2015         (all-recursive): Allow for more than one subdir in the build
2016         process.
2017         (mostlyclean-recursive, clean-recursive, distclean-recursive)
2018         (maintainer-clean-recursive, check-recursive): Enter in doc/ too.
2019         (tags-recursive): Allow for more than one subdir in the build
2020         process.
2021         (info-recursive, dvi-recursive, ps-recursive, html-recursive): New
2022         targets.  Enter into doc/ to produce the targets.
2023         (all-am): $(INFO_DEPS) replaced by info.
2024
2025 2009-09-26  Paul Smith  <psmith@gnu.org>
2026
2027         * read.c (record_files): Use free_ns() to free struct nameseq.
2028         (eval): Ditto.
2029
2030         * rule.c (freerule): Use free_dep_chain().
2031
2032         * read.c (record_files): Free FILENAMES chain for implicit rules.
2033         (eval): Static pattern targets go into the string cache.
2034
2035         * function.c (string_glob): Free NAME in the nameseq chain.
2036
2037 2009-09-25  Boris Kolpackov  <boris@codesynthesis.com>
2038
2039         * implicit.c (pattern_search): Terminate early if we haven't
2040         found any rules to try (performance improvement).
2041
2042 2009-09-25  Boris Kolpackov  <boris@codesynthesis.com>
2043
2044         * implicit.c (pattern_search): Merge three parallel arrays,
2045         TRYRULES, MATCHES, and CHECKED_LASTSLASH, into one array
2046         of struct TRYRULE. In the old version the latter two arrays
2047         had insufficient length.
2048
2049 2009-09-24  Paul Smith  <psmith@gnu.org>
2050
2051         * implicit.c (pattern_search): Add back support for order-only
2052         prerequisites for secondary expansion implicit rules, that were
2053         accidentally dropped.  If we find a "|", enable order-only mode
2054         and set IGNORE_MTIME on all deps that are seen afterward.
2055         (pattern_search): Fix memory leaks: for intermediate files where
2056         we've already set the file variable and pattern variable sets, be
2057         sure to either save or free them as appropriate.
2058
2059 2009-09-23  Paul Smith  <psmith@gnu.org>
2060
2061         Rework the way secondary expansion is stored, for efficiency.
2062         This changes secondary expansion so that ONLY WHEN we know we have
2063         a possibility of needing secondary expansion, do we defer the
2064         secondary expansion.  This means more parsing the deps but we use
2065         a lot less memory (due to the strcache).  Also, this fixes
2066         Savannah bug #18622.
2067
2068         * read.c (eval): Don't parse the dep string here anymore.
2069         (record_files): Take the dep argument as an unparsed string.  If
2070         secondary expansion is enabled AND the prereq string has a '$' in
2071         it, then set NEED_2ND_EXPANSION and keep the entire string.
2072         Otherwise, parse the dep string here to construct the dep list
2073         with the names in the strcache.
2074
2075         * misc.c (copy_dep_chain): For NEED_2ND_EXPANSION, we need to
2076         duplicate the name string (others are in the strcache).
2077
2078         * implicit.c: Remove struct idep and free_idep_chain(): unused.
2079         (struct patdeps): New structure to store prereq information.
2080         (pattern_search): Use the NEED_2ND_EXPANSION flag to determine
2081         which prerequisites need expansion, and expand only those.
2082
2083         * file.c (split_prereqs): Break parse_prereqs() into two parts: this
2084         and enter_prereqs().  split_prereqs() takes a fully-expanded string
2085         and splits it into a DEP list, handling order-only prereqs.
2086         (enter_prereqs): This function enters a list of DEPs into the file
2087         database.  If there's a stem defined, expand any pattern chars.
2088         (expand_deps): Only try to expand DEPs which have NEED_2ND_EXPANSION
2089         set.  Use the above functions.
2090         (snap_deps): Only perform second expansion on prereqs that need it,
2091         as defined by the NEED_2ND_EXPANSION flag.
2092         (print_prereqs): New function to print the prereqs
2093         (print_file): Call print_prereqs() rather than print inline.
2094
2095         * hash.h (STRING_COMPARE): Take advantage of strcache() by
2096         comparing pointers.
2097         (STRING_N_COMPARE): Ditto.
2098         (ISTRING_COMPARE): Ditto.
2099
2100         * dep.h (PARSE_FILE_SEQ): New macro to reduce casts.
2101         (parse_file_seq): Return void*
2102         * read.c (parse_file_seq): Return void*.
2103         (eval): Invoke macroized version of parse_file_seq()
2104         * default.c (set_default_suffixes): Ditto.
2105         * file.c (split_prereqs): Ditto.
2106         * function.c (string_glob): Ditto.
2107         * main.c (main): Ditto.
2108         * rule.c (install_pattern_rule): Ditto.
2109
2110         * filedef.h: Add split_prereqs(), enter_prereqs(), etc.
2111
2112 2009-09-16  Paul Smith  <psmith@gnu.org>
2113
2114         * misc.c (alloc_dep, free_dep): Now that we have xcalloc(),
2115         convert to macros.
2116         * dep.h: Create alloc_dep() / free_dep() macros.
2117
2118         * implicit.c (pattern_search): Take advantage of the new
2119         parse_file_seq() to add the directory prefix to each prereq.
2120
2121         * dep.h: Remove multi_glob() and enhance parse_file_seq() to do it
2122         all.  Avoid reversing chains.  Support adding prefixes.
2123         * read.c (parse_file_seq): Rewrite to support globbing.  Allow for
2124         cached/non-cached results.
2125         (eval): Remove multi_glob() & invoke new parse_file_seq().
2126         * rule.c (install_pattern_rule): Ditto.
2127         * main.c (main): Ditto.
2128         * implicit.c (pattern_search): Ditto.
2129         * function.c (string_glob): Ditto.
2130         * file.c (parse_prereqs): Ditto.
2131         * default.c (set_default_suffixes): Ditto.
2132
2133         * variable.c (parse_variable_definition): Don't run off the end of
2134         the string if it ends in whitespace (found with valgrind).
2135
2136         * commands.c (set_file_variables): Keep space for all targets in
2137         $? if -B is given (found with valgrind).
2138
2139 2009-09-15  Paul Smith  <psmith@gnu.org>
2140
2141         * misc.c (concat): Make concat() variadic so it takes >3 arguments.
2142         (xcalloc): Add new function.
2143         * make.h: New declarations.
2144
2145         * ar.c (ar_glob_match): New calling method for concat().
2146         * main.c (main): Ditto.
2147         (decode_env_switches): Ditto.
2148         * read.c (eval_makefile): Ditto.
2149         (tilde_expand): Ditto.
2150         (parse_file_seq): Ditto.
2151         * variable.c (target_environment): Ditto.
2152         (sync_Path_environment): Ditto.
2153
2154         * ar.c (ar_glob_match): Use xcalloc().
2155         * dir.c (file_impossible): Ditto.
2156         * file.c (enter_file): Ditto.
2157         * job.c (new_job): Ditto.
2158         * read.c (parse_file_seq): Ditto.
2159         * vmsfunctions.c (opendir): Ditto.
2160
2161 2009-09-14  Rafi Einstein  <rafi.einstein@gmail.com>  (tiny patch)
2162
2163         * w32/subproc/sub_proc.c (process_begin): Check *ep non-NULL
2164         inside the loop that looks up environment for PATH.
2165
2166 2009-08-31  Eli Zaretskii  <eliz@gnu.org>
2167
2168         * function.c (windows32_openpipe): Update envp after calling
2169         sync_Path_environment.
2170
2171 2009-08-02  Paul Smith  <psmith@gnu.org>
2172
2173         * remake.c (notice_finished_file): Ensure file->cmds is not null
2174         before looping through them.  Fixes Savannah bug #21824.
2175
2176         * doc/make.texi (Wildcard Examples): Clarify when objects is
2177         wildcard-expanded.  Fixes Savannah bug #24509.  Patch by Martin Dorey.
2178         (Include): Clarify the behavior of -include.
2179         Fixes Savannah bug #18963.
2180
2181 2009-08-01  Paul Smith  <psmith@gnu.org>
2182
2183         * doc/make.texi (Catalogue of Rules): Clarify where -c, -F,
2184         etc. come on the command line.  Fixes Savannah bug #27093.
2185
2186         * expand.c (expand_argument): If the argument is large enough use
2187         xmalloc() instead of alloca().  Fixes Savannah bug #27143.
2188
2189         * variable.c (do_variable_definition): Avoid using alloca() to
2190         hold values, which can be large.  Fixes Savannah bug #23960.
2191
2192         * job.c (new_job): Use memmove() instead of strcpy() since both
2193         pointers are in the same memory block.  Fixes Savannah bug #27148.
2194         Patch by Petr Machata.
2195
2196 2009-07-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2197
2198         * job.c (construct_command_argv_internal): Add "ulimit" and
2199         "unset" to the sh_cmds for Unixy shells.
2200
2201 2009-07-29  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2202
2203         * configure.in: Move side-effects outside AC_CACHE_VAL arguments
2204         that set make_cv_sys_gnu_glob, so they are also correctly set
2205         when the cache has been populated before.
2206
2207 2009-07-04  Eli Zaretskii  <eliz@gnu.org>
2208
2209         * function.c (func_realpath) [!HAVE_REALPATH]: Require the file to
2210         exist, as realpath(3) does where it's supported.
2211
2212 2006-07-04  Eli Zaretskii  <eliz@gnu.org>
2213
2214         * function.c (IS_ABSOLUTE, ROOT_LEN): New macros.
2215         (abspath): Support systems that define HAVE_DOS_PATHS (have
2216         drive letters in their file names).  Use IS_PATHSEP instead of a
2217         literal '/' comparison.  Fixes Savannah bug #26886.
2218
2219 2009-06-14  Paul Smith  <psmith@gnu.org>
2220
2221         * remake.c (update_file_1): Remember the original file we marked
2222         as updating, so we can clear that flag again.  If we find a target
2223         via vpath, FILE might change.
2224         (check_dep): Ditto.  Fixes Savannah bug #13529.
2225         Patch by Reid Madsen <reid.madsen@tek.com>.
2226
2227 2009-06-13  Paul Smith  <psmith@gnu.org>
2228
2229         * doc/make.texi (MAKEFILES Variable): Be explicit that files
2230         included by MAKEFILES cannot give default goals.
2231         * read.c (eval): If set_default is not set, pass the no-default-goal
2232         value when we read included makefiles.  Fixes Savannah bug #13401.
2233
2234         * ar.c (ar_name): Ensure that targets with empty parens aren't
2235         considered archive member references: archive members must have a
2236         non-empty "member" string.  Fixes Savannah bug #18435.
2237
2238         * function.c (string_glob): Rely on multi_glob() to determine
2239         whether files exist or not.  Remove call to file_exists_p() which
2240         is not always correct.  Fixes Savannah bug #21231.
2241         * read.c (multi_glob): Add a new argument EXISTS_ONLY; if true
2242         then only files that really exist will be returned.
2243         * dep.h: Add new argument to multi_glob().
2244         * rule.c (install_pattern_rule): Ditto.
2245         * read.c (eval): Ditto.
2246         * main.c (main): Ditto.
2247         * implicit.c (pattern_search): Ditto.
2248         * file.c (parse_prereqs): Ditto.
2249         * default.c (set_default_suffixes): Ditto.
2250
2251 2009-06-09  Paul Smith  <psmith@gnu.org>
2252
2253         * commands.c (set_file_variables): If always_make_flag is set,
2254         always add the prereq to $?.  Fixes Savannah bug #17825.
2255
2256         * remake.c (update_file_1): When rebuilding deps of FILE, also try
2257         to rebuild the deps of all the also_make targets for that file.
2258         Fixes Savannah bug #19108.
2259
2260         * implicit.c (pattern_search): Undo test for is_target, added by
2261         BorisK on 21 Sep 2004.  This goes against step 5c in the "Implicit
2262         Rule Search Algorithm".  Fixes Savannah bug #17752.
2263
2264         * main.c (clean_jobserver): Clear the jobserver_fds options and
2265         set job_slots to the default when we clean up.
2266         (define_makeflags): Return the new MAKEFLAGS value.
2267         (main): Reset MAKEFLAGS in the environment when we re-exec.
2268         Fixes Savannah bug #18124.
2269
2270 2009-06-08  Paul Smith  <psmith@gnu.org>
2271
2272         * read.c (eval): Collapse continuations post-semicolon on target-
2273         specific variables.  Fixes Savannah bug #17521.
2274
2275 2009-06-07  Paul Smith  <psmith@gnu.org>
2276
2277         * job.c (reap_children): For older systems without waitpid() (are
2278         there any of these left?) run wait(2) inside EINTRLOOP to handle
2279         EINTR errors.  Fixes Savannah bug #16401.
2280
2281         * (various): Debug message cleanup.  Fixes Savannah bug #16469.
2282
2283         * main.c: Fix bsd_signal() typedef.  Fixes Savannah bug #16473.
2284
2285         * file.c (snap_deps): Set SNAPPED_DEPS at the start of snapping,
2286         not the end, to catch second expansion $(eval ...) defining new
2287         target/prereq relationships during snap_deps.
2288         Fixes Savannah bug #24622.
2289
2290         * read.c (record_files): The second-expansion "f->updating" hack
2291         was not completely correct: if assumed that the target with
2292         commands always had prerequisites; if one didn't then the ordering
2293         was messed up.  Fixed for now to use f->updating to decide whether
2294         to preserve the last element in the deps list... but this whole
2295         area of constructing and reversing the deps list is too confusing
2296         and needs to be reworked.  Fixes Savannah bug #21198.
2297
2298 2009-06-06  Paul Smith  <psmith@gnu.org>
2299
2300         * hash.c (hash_insert): Remove useless test for NULL.
2301         Fixes Savannah bug #21823.
2302
2303         * make.h: Move SET_STACK_SIZE determination to make.h.
2304         * main.c (main): New global variable, STACK_LIMIT, holds the
2305         original stack limit when make was started.
2306         * job.c (start_job_command): Reset the stack limit, if we changed it.
2307         Fixes Savannah bug #22010.
2308
2309         * remake.c (check_dep): Only set the target's state to not-started
2310         if it's not already running.  Found this while testing -j10 builds
2311         of glibc: various targets were being rebuilt multiple times.
2312         Fix from Knut St. Osmundsen; fixes a problem reported in Savannah
2313         bug #15919.
2314
2315         * read.c (multi_glob): Don't pass GLOB_NOCHECK to glob(3); instead
2316         handle the GLOB_NOMATCH error.  This is to work around Sourceware.org
2317         Bugzilla bug 10246.
2318
2319 2009-06-04  Paul Smith  <psmith@gnu.org>
2320
2321         * read.c (eval): Skip initial whitespace (ffeed, vtab, etc.)
2322
2323         * maintMakefile: Modify access of config and gnulib Savannah
2324         modules to use GIT instead of CVS.
2325
2326         * main.c (main): Initialize the LENGTH field in SHELL_VAR.
2327         Fixes Savannah bug #24655.
2328
2329         * read.c (eval_buffer): Don't dereference reading_file if it's NULL;
2330         this can happen during some invocations of $(eval ...) for example.
2331         Fixes Savannah bug #24588.  Patch by Lars Jessen <ljessen@ljessen.dk>
2332
2333 2009-06-02  Paul Smith  <psmith@gnu.org>
2334
2335         * configure.in: Check for fileno()
2336         * read.c (eval_makefile): If fileno() is available, set CLOSE_ON_EXEC
2337         for the makefile file so invocations of $(shell ...) don't inherit it.
2338         Fixes Savannah bug #24277.
2339
2340 2009-06-01  Paul Smith  <psmith@gnu.org>
2341
2342         * main.c (main): The previous fix for .DEFAULT_GOAL had issues;
2343         expansion was handled incorrectly.  Rework the default goal
2344         handling to save the variable only.  Remove default_goal_file and
2345         default_goal_name.
2346         * read.c (eval): Check default_goal_var, not default_goal_name.
2347         * read.c (record_target_var): Don't check default_goal_file here.
2348
2349 2009-05-31  Paul Smith  <psmith@gnu.org>
2350
2351         * main.c (main): Expand the .DEFAULT_GOAL variable before using
2352         it, and if the multi_glob() returns nothing (say it expanded to
2353         nothing but spaces) then don't crash.  Fixes Savannah bug #25697.
2354
2355         * doc/make.texi (Quick Reference): Add $(if ..), $(or ..), and
2356         $(and ..) to the reference.  Fixes Savannah bug #25694.
2357
2358         * make.1: Be clear that some recipes will be executed even with -n.
2359         * doc/make.texi: Ditto.  Fixes Savannah bug #25460.
2360
2361         * doc/make.texi (Override Directive): Make more clear how
2362         overrides and appends interact.
2363         Elucidates part of Savannah bug #26207.
2364
2365         * read.c (record_target_var): Don't reset the origin on
2366         target-specific variables; try_variable_definition() will handle
2367         this correctly.  Fixes Savannah bug #26207.
2368
2369         * maintMakefile (do-po-update): Copy PO files into $(top_srcdir).
2370         Fixes Savannah bug #25712.
2371
2372         * implicit.c (pattern_search): Keep a pointer to the beginning of
2373         the filename and save that instead of the constructed pointer.
2374         Fixes Savannah bug #26593.
2375         Patch by Mark Seaborn <mrs@mythic-beasts.com>
2376
2377 2009-05-30  Paul Smith  <psmith@gnu.org>
2378
2379         * doc/make.texi (Multi-Line): Add a description of the new abilities
2380         of define/endef.  Rename "Sequences" to "Multi-Line" and fix some
2381         "command sequence" vs. "recipe" syntax.
2382         * read.c (do_define): Modify to allow assignment tokens (=, :=, etc.)
2383         after a define, to create variables with those flavors.
2384
2385 2009-05-25  Paul Smith  <psmith@gnu.org>
2386
2387         Reworked the parser for variable assignments to allow multiple
2388         modifiers, and in any order.  Also allows variable and
2389         prerequisites to be modifier names ('export', 'private', etc.)
2390
2391         * NEWS: Add notes about user-visible changes.
2392
2393         * read.c (struct vmodifiers): Remember what modifiers were seen.
2394         (parse_var_assignment): New function to parse variable assignments.
2395         (eval): Call the new function.  Handle variable assignments earlier.
2396
2397         * variable.c (parse_variable_definition): Only parse; don't create var.
2398         (assign_variable_definition): Call parse, then create the var.
2399
2400 2009-05-24  Paul Smith  <psmith@gnu.org>
2401
2402         * doc/make.texi: Fix the ISBN for the GNU make manual.  Incorrect
2403         value noticed by Hans Stol <hans.stol@nc3a.nato.int>.
2404
2405 2009-03-14  Eli Zaretskii  <eliz@gnu.org>
2406
2407         * w32/pathstuff.c (convert_Path_to_windows32): Fix last change.
2408         Fixes Savannah bug #25412.
2409
2410         * w32/subproc/sub_proc.c <top level>: Update Copyright years.  Add
2411         prototype for xmalloc.
2412         (find_file): Accept 3 arguments PATH_VAR, FULL_FNAME, and FULL_LEN
2413         instead of an LPOFSTRUCT pointer.  Use xmalloc instead of malloc.
2414         Loop over an array of extensions, instead of duplicating the same
2415         code inline.  Use SearchPath followed by CreateFile, instead of
2416         the obsolete OpenFile.  Fixes Savannah bug #17277.
2417         (process_begin): Find $(PATH) in `envp', and pass a pointer to it
2418         to `find_file'.  Fixes Savannah bug #25662.
2419
2420 2009-03-07  Eli Zaretskii  <eliz@gnu.org>
2421
2422         * function.c (func_shell): Don't close pipedes[1] if it is -1.
2423         Fixes Savannah bug #20495.
2424
2425 2009-02-28  Ralf Wildenhues  <address@hidden>
2426
2427         * doc/make.texi (Instead of Execution): Document interaction of
2428         -t with phony targets.
2429
2430 2009-02-23  Ramon Garcia  <ramon.garcia.f@gmail.com>
2431
2432         Introduce a new keyword "private" which applies to target-specific
2433         variables and prevents their values from being inherited.
2434
2435         * variable.h (struct variable): Add private_var flag to each variable.
2436         Add a flag to specify which list entry switches to the parent target.
2437         * variable.c (define_variable_in_set): Initialize private_var flag.
2438         (lookup_variable): Skip private variables in parent contexts.
2439         (initialize_file_variables): Set next_is_parent appropriately.
2440         (print_variable): Show the private_var flag.
2441         * read.c (eval): Recognize the private keyword.
2442         (record_target_var): Set private_var.
2443         * doc/make.texi (Suppressing Inheritance): Add documentation.
2444
2445 2008-10-26  Paul Smith  <psmith@gnu.org>
2446
2447         * configure.in: Check for strndup().
2448         * misc.c (xstrndup): Rename savestring to xstrndup.  Use strndup
2449         if it's available.
2450         * make.h: Rename savestring to xstrndup.
2451         * commands.c (chop_commands): Ditto.
2452         * function.c (func_foreach): Ditto.
2453         * read.c (eval, record_files): Ditto.
2454         * variable.c (define_variable_in_set): Ditto.
2455
2456 2008-09-30  Eli Zaretskii  <eliz@gnu.org>
2457
2458         * build_w32.bat (GCCBuild): Use "-gdwarf-2 -g3" instead of
2459         "-gstabs+ -ggdb3".
2460
2461         * w32/subproc/build.bat (GCCBuild): Likewise.
2462
2463 2008-09-30  David Russo  <d-russo@ti.com>  (tiny change)
2464
2465         * job.c (construct_command_argv_internal): Avoid extra backslash
2466         in batch-mode Unixy shells.  Under DB_JOBS, display the contents
2467         of the batch file.
2468
2469 2008-05-31  Eli Zaretskii  <eliz@gnu.org>
2470
2471         * README.W32.template: Remove obsolete text about non-support for
2472         -jN without Unixy shell.  Remove obsolete text about not supplying
2473         Visual Studio project files (we do supply them).  Modify text to
2474         prefer GCC builds to MSC builds.
2475
2476 2008-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2477
2478         * doc/make.texi (Empty Targets): Fix typo.
2479
2480 2008-03-27  Paul Smith  <psmith@gnu.org>
2481
2482         Fix Savannah bug #22379:
2483         * ar.c (ar_glob_match): Zero the allocated structure.
2484         * read.c (parse_file_seq): Ditto.
2485
2486 2008-03-08  Brian Dessent  <brian@dessent.net>
2487
2488         * maintMakefile: Update Translation Project location.
2489
2490 2008-01-26  Eli Zaretskii  <eliz@gnu.org>
2491
2492         * variable.c (target_environment): Don't use shell_var if its
2493         `value' field is NULL.
2494
2495 2007-12-22  Eli Zaretskii  <eliz@gnu.org>
2496
2497         Suggested by Juan Manuel Guerrero <juan.guerrero@gmx.de>:
2498
2499         * Makefile.DOS.template (info_TEXINFOS): Remove unused variable.
2500         (TEXINFOS): Value changed to `doc/make.texi'.
2501         (.SUFFIXES): Use .texi instead of .texinfo.
2502         (make.info, make.dvi): Depend on doc/make.texi.
2503         (.texi.info): New target, instead of ".texinfo.info".  Change -I
2504         switch to $(MAKEINFO) to look in doc/.  Use --no-split.
2505         (.texi): New target, instead of ".texinfo".  Change -I switch to
2506         $(MAKEINFO) to look in doc/.  Use --no-split.
2507         (.texi.dvi): New target, instead of ".texinfo.dvi".  Change -I
2508         switch to $(MAKEINFO) to look in doc/.
2509         (install-info-am, uninstall-info): Don't look for "*.i[0-9]" and
2510         "*.i[0-9][0-9]" (due to --no-split above).
2511         (noinst_TEXINFOS, TEXI2HTML, TEXI2HTML_FLAGS): New variables.
2512         (html, make_1.html): New targets.
2513         (.PHONY): Add "html".
2514         (.SUFFIXES): Add .html.
2515
2516 2007-12-22  Juan Manuel Guerrero  <juan.guerrero@gmx.de>  (tiny change)
2517
2518         * configh.dos.template [__DJGPP__]: Replace HAVE_SYS_SIGLIST with
2519         HAVE_DECL_SYS_SIGLIST.
2520
2521         * job.c (child_execute_job): Remove __MSDOS__ because MSDOS/DJGPP
2522         build does not use child_execute_job.
2523
2524         * variable.c (define_automatic_variables) [__MSDOS__]: Always
2525         export the SHELL environment variable to the child.
2526
2527 2007-12-22  Eli Zaretskii  <eliz@gnu.org>
2528
2529         * config.h.W32: Include sys/types.h.
2530         [!_PID_T_] (pid_t): Define only if not already defined by sys/types.h.
2531
2532         * vpath.c (construct_vpath_list) [HAVE_DOS_PATHS]: Support VPATH
2533         values that use `:' in drive letters, when PATH_SEPARATOR_CHAR is
2534         also `:'.
2535
2536 2007-11-04  Paul Smith  <psmith@gnu.org>
2537
2538         * doc/make.texi: Convert references to "commands", "command
2539         lines", and "command script" to "recipe".
2540         * NEWS: Ditto.
2541         * commands.c, file.c, job.c, remake.c, read.c, variable.c, main.c:
2542         Ditto.
2543
2544 2007-10-27  Bruno Haible  <bruno@clisp.org>
2545
2546         * remake.c (f_mtime): Print time difference values between 100 and
2547         ULONG_MAX in fixed-point notation rather than in exponention notation.
2548
2549 2007-10-12  Eli Zaretskii  <eliz@gnu.org>
2550
2551         * variable.c (do_variable_definition): Allow $(SHELL) to expand to
2552         a more complex value than a simple shell: if it's not a default
2553         shell now then expand it and see if is a default shell then.
2554
2555 2007-10-10  Eli Zaretskii  <eliz@gnu.org>
2556
2557         * dir.c (find_directory) [WINDOWS32]: Remove trailing slashes from
2558         pathnames, with const strings.
2559         * build_w32.bat [WINDOWS32]: If no config.h.W32 exists, create one
2560         from the template (used for building from CVS, not a dist).
2561
2562 2007-10-10  Paul Smith  <psmith@gnu.org>
2563
2564         * make.h: Add a prototype for w32_kill() (change suggested by
2565         Yongwei Wu <wuyongwei@gmail.com>).
2566
2567 2007-09-21  Eli Zaretskii  <eliz@gnu.org>
2568
2569         * w32/pathstuff.c (convert_Path_to_windows32): Handle quoted
2570         directories in Path.
2571
2572 2007-09-12  Paul Smith  <psmith@gnu.org>
2573
2574         * doc/make.texi: Applied wording cleanups from Savannah patch #6195.
2575         Provided by Diego Biurrun <diego@biurrun.de>
2576         (Complex Makefile): Remove .PHONY setting for tar: patch #6196.
2577         Provided by Diego Biurrun <diego@biurrun.de>
2578
2579 2007-09-11  Paul Smith  <psmith@gnu.org>
2580
2581         * doc/make.texi (Special Variables): Moved this into the "How to
2582         Use Variables" chapter.  Added a table entry for .RECIPEPREFIX.
2583         (MAKEFILE_LIST) No longer a section; this was added into the
2584         "Special Variables" section.
2585         (Rule Introduction): Reference .RECIPEPREFIX.
2586         (Simple Makefile): Ditto.
2587         (Rule Syntax): Ditto.
2588         (Command Syntax): Ditto.
2589         (Error Messages): Ditto.
2590
2591 2007-09-10  Paul Smith  <psmith@gnu.org>
2592
2593         * commands.c (print_commands): Don't print an extra line in the
2594         command scripts.  Prefix the command scripts with cmd_prefix, not \t.
2595
2596         * read.c (construct_include_path): Add the full string to the cache; we
2597         were chopping the last char.
2598
2599         * NEWS: Announce the .RECIPEPREFIX special variable.
2600         * variable.c (lookup_special_var): Rename from handle_special_var().
2601         (lookup_variable): Call the new name.
2602         (set_special_var): New function: handle setting of special variables.
2603         When setting .RECIPEPREFIX, reset the cmd_prefix global variable.
2604         (do_variable_definition): Call it.
2605         * make.h (RECIPEPREFIX_DEFAULT): Define the default command prefix char.
2606         (RECIPEPREFIX_NAME): Define the command prefix special variable name.
2607         * main.c (main): Create the .RECIPEPREFIX special variable.
2608         * read.c (eval): Remove the cmd_prefix characters from the command
2609         scripts here, so they're not stored in the commands array at all,
2610         rather than waiting and stripping them out during command construction.
2611         * job.c (construct_command_argv_internal): Don't skip cmd_prefix here.
2612
2613 2007-08-15  Paul Smith  <psmith@gnu.org>
2614
2615         * doc/make.texi (GNU Free Documentation License): The fdl.texi
2616         file has had the section info removed, so add some to make.texi
2617         before we include it.
2618
2619 2007-08-15  Icarus Sparry  <savannah@icarus.freeuk.com>
2620
2621         * remake.c (check_dep): Reset the target state for intermediate
2622         files.  They might have been considered before but not updated
2623         then (order-only for example) but they will be this time.
2624         Fixes Savannah bug #'s 3330 and 15919.
2625
2626 2007-07-21  Eli Zaretskii  <eliz@gnu.org>
2627
2628         Fix Savannah bug #20549:
2629         * function.c (func_shell): Call construct_command_argv with zero
2630         value of FLAGS.
2631         * job.c (construct_command_argv_internal): New argument FLAGS; all
2632         callers changed.
2633         [WINDOWS32]: If FLAGS has the COMMANDS_RECURSE bit set, ignore
2634         just_print_flag.
2635         * job.h (construct_command_argv_internal): Update prototype.
2636
2637 2007-07-13  Paul Smith  <psmith@gnu.org>
2638
2639         * file.c (expand_deps): Use variable_buffer as the start of the
2640         buffer, not the original pointer (in case it was reallocated).
2641         Fix suggested by Rafi Einstein <rafi.einstein@formalism-labs.com>.
2642         Fixes Savannah bug #20452.
2643
2644 2007-07-04  Paul Smith  <psmith@gnu.org>
2645
2646         * (ALL FILES): Update to GPLv3.
2647         * (ALL FILES): Update copyright for 2007.
2648
2649         * main.c (print_version): Move the host type info to the second line.
2650
2651 2007-06-29  Thiemo Seufer  <ths@mips.com>
2652
2653         * maintMakefile: Update Translation Project location.
2654
2655 2007-06-13  Paul Smith  <psmith@gnu.org>
2656
2657         * doc/make.texi (Reading Makefiles): "Expansion of deferred" ->
2658         "Expansion of a deferred"
2659         Fixes Savannah bug #20018.
2660
2661         * expand.c (variable_expand_for_file): Preserve the value of
2662         reading_file rather than setting it to 0 at the end.
2663         Fixes Savannah bug #20033.
2664
2665 2007-05-11  Paul Smith  <psmith@gnu.org>
2666
2667         * job.c (new_job): Add debug info to specify where make found the
2668         command script it is running to build a target.
2669         Fixes Savannah bug #18617.
2670
2671         * default.c (default_suffixes,default_suffix_rules,default_variables):
2672         Add support for Objective C.  Fixes Savannah bug #16389.
2673         Based on a patch provided by Peter O'Gorman <peter@pogma.com>.
2674
2675         * function.c (func_lastword): Initialize p.
2676
2677         * doc/make.texi (Eval Function, Implicit Variables, Special Targets):
2678         Doc fixes noticed by Bob <twobanjobob@sbcglobal.net>.  Patch from
2679         Dave Korn <dave.korn@artimi.com>
2680
2681 2007-05-08  Paul Smith  <psmith@gnu.org>
2682
2683         Fix Savannah bug #19656:
2684
2685         * configure.in: Check for strcasecmp(), strcmpi(), and stricmp().
2686
2687         * make.h: Change all case-insensitive string compares to use
2688         strcasecmp() (from POSIX).  If we don't have that but do have one
2689         of the others, define strcasecmp to be one of those instead.  If
2690         we don't have any, declare a prototype for our own version.
2691
2692         * misc.c (strcasecmp): Use this if we can't find any native
2693         case-insensitive string comparison function.
2694         * vmsfunctions.c: Remove strcmpi(); we'll use misc.c:strcasecmp().
2695         * main.c (find_and_set_default_shell): Use strcasecmp() instead of
2696         strcmpi().
2697         * job.c (_is_unixy_shell, construct_command_argv_internal): Use
2698         strcasecmp() instead of stricmp().
2699         * hash.h (ISTRING_COMPARE, return_ISTRING_COMPARE): Use strcasecmp()
2700         instead of strcmpi().
2701         * acinclude.m4: Remove the strcasecmp() check from here.
2702
2703 2007-03-21  Paul Smith  <psmith@gnu.org>
2704
2705         * configure.in: Don't turn on case-insensitive file system support
2706         if --disable-... is given.  Fixes Savannah bug #19348.
2707
2708 2007-03-19  Paul Smith  <psmith@gnu.org>
2709
2710         * ALL: Use the strcache for all file name strings, or other
2711         strings which we will never free.  The goal is to save memory by
2712         avoiding duplicate copies of strings.  However, at the moment this
2713         doesn't save much memory in most situations: due to secondary
2714         expansion we actually save prerequisite lists twice (once before
2715         the secondary expansion, and then again after it's been parsed
2716         into individual file names in the dep list).  We will resolve this
2717         in a future change, by doing the parsing up-front for targets
2718         where secondary expansion is not set.
2719
2720         Moving things into the strcache also allows us to use const
2721         pointers in many more places.
2722
2723 2007-01-03  Paul Smith  <psmith@gnu.org>
2724
2725         * make.h (ENULLLOOP): Reset errno after each failed invocation of
2726         the function, not just the first.  Fixes Savannah bug #18680.
2727
2728 2006-11-18  Paul Smith  <psmith@gnu.org>
2729
2730         * strcache.c (strcache_add_len): Don't allocate a new buffer
2731         unless the string is not already nil-terminated.  Technically this
2732         is a violation of the standard, since we may be passed an array
2733         that is not long enough to test one past.  However, in make this
2734         is never true since we only use nil-terminated strings or
2735         sub-strings thereof.
2736
2737         * read.c (eval, do_define): Use cmd_prefix instead of '\t'.
2738
2739         * main.c: New global cmd_prefix, defaults to '\t'.
2740         * job.c (construct_command_argv_internal): Use cmd_prefix instead
2741         of '\t'.
2742
2743         * dir.c: Constified.
2744         (dir_contents_file_exists_p): Check for an error return from
2745         readdir(), just in case.
2746
2747         * commands.c: Constified.
2748         * default.c: Constified.
2749         * expand.c: Constified.
2750         * function.c: Partial constification.
2751         * variable.c: Partial constification.
2752         * vmsify.c: Constification.  Hard to test this but I hope I didn't
2753         screw it up!
2754         * vpath.c: Partial constification.
2755         * w32/pathstuff.c: Partial constification.
2756
2757 2006-11-16  Eli Zaretskii  <eliz@gnu.org>
2758
2759         * main.c (main) [HAVE_DOS_PATHS]: Treat DOS style argv[0] with
2760         backslashes and drive letters as absolute.
2761
2762 2006-10-22  Paul Smith  <psmith@gnu.org>
2763
2764         * main.c (struct command_switch): Use const and void*.
2765
2766 2006-10-21  Paul Smith  <psmith@gnu.org>
2767
2768         * ar.c: Constified.
2769         * arscan.c: Constified.
2770
2771 2006-09-30  Paul Smith  <psmith@gnu.org>
2772
2773         * doc/make.texi (MAKEFILE_LIST Variable): Modify reference to
2774         point to lastword since the example was updated.
2775         Fixes Savannah bug #16304.
2776         (Secondary Expansion): Correct example description.
2777         Fixes Savannah bug #16468.
2778         (Makefile Contents): Clarify that comments cannot appear within
2779         variable references or function calls.
2780         Fixes Savannah bug #16577.
2781         (Special Targets): Clarify how .NOTPARALLEL works in recursion.
2782         Fixes Savannah bug #17701.
2783         Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
2784         (Prerequisite Types): Added an example of using order-only
2785         prerequisites.  Fixes Savannah bug #17880.
2786         (Rule Syntax): "lise" -> "list"
2787         (Multiple Rules): ... -> @dots{}
2788         (Splitting Lines): ditto.
2789
2790         * remake.c (update_file_1): Prereqs that don't exist should be
2791         considered changed, for the purposes of $?.
2792         Fixes Savannah bug #16051.
2793
2794         * make.1: Remove extraneous "+".
2795         Fixes Savannah bug #16652.
2796
2797 2006-09-06  Paul D. Smith  <psmith@gnu.org>
2798
2799         * configure.in: Include sys/types.h when checking for sys/wait.h.
2800
2801 2006-08-18  Eli Zaretskii  <eliz@gnu.org>
2802
2803         * configure.in (PATH_SEPARATOR_CHAR): Define to the value of
2804         $PATH_SEPARATOR.
2805
2806         * make.h (PATH_SEPARATOR_CHAR): Define only if still undefined.
2807         Normally, it is defined in config.h.
2808
2809         * config/dospaths.m4 <ac_cv_dos_paths>: Define to yes on Cygwin as
2810         well.
2811
2812         * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Define
2813         sh_chars_sh for Windows platforms that emulate Unix.
2814
2815 2006-05-07  Paul D. Smith  <psmith@gnu.org>
2816
2817         * README.OS2.template: Updates provided by Andreas Buening
2818         <andreas.buening@nexgo.de>.
2819
2820 2006-04-30  Paul D. Smith  <psmith@gnu.org>
2821
2822         * make.h: Include <direct.h> if HAVE_DIRECT_H.
2823         * config.h.W32.template (HAVE_DIRECT_H): Set it if it's available.
2824
2825 2006-04-26  Paul D. Smith  <psmith@gnu.org>
2826
2827         * README.cvs: Add a reminder to notify the GNU translation robot.
2828
2829         * doc/make.texi: Change @direcategory (requested by Karl Berry).
2830
2831 2006-04-20  Paul D. Smith  <psmith@gnu.org>
2832
2833         * maintMakefile (po-check): Use Perl instead of grep -E, for systems
2834         that don't have extended grep.
2835         (cvsclean): Use $(PERL) instead of perl.
2836
2837 2006-04-09  Paul D. Smith  <psmith@gnu.org>
2838
2839         * maintMakefile: Add some extra warning options (GCC 4.1 only?)
2840
2841         * expand.c, implicit.c, main.c, read.c: Rename variables so that
2842         inner-scope variables don't mask outer-scope variables.
2843
2844         * ar.c, arscan.c, commands.c, default.c, dir.c, expand.c, file.c:
2845         * function.c, getloadavg.c, implicit.c, job.c, main.c, misc.c, read.c:
2846         * remake.c, remote-cstms.c, rule.c, strcache.c, variable.c:
2847         * vmsfunctions.c, vmsify.c, vpath.c: Remove all casts of returned
2848         values from memory allocation functions: they return void* and so
2849         don't need to be cast.  Also remove (char *) casts of arguments to
2850         xrealloc().
2851
2852         * configure.in: Remove checks for memcpy/memmove/strchr.
2853
2854         * make.h: Remove bcmp/bcopy/bzero/strchr/strrchr macros.
2855
2856         * ar.c, arscan.c, commands.c, dir.c: Convert all bzero/bcopy/bcmp
2857         calls to memset/memcpy/memmove/memcmp calls.
2858         * expand.c, file.c, function.c, getloadavg.c, implicit.c: Ditto.
2859         * job.c, main.c, misc.c, read.c, remake.c, rule.c: Ditto.
2860         * variable.c, vpath.c: Ditto.
2861
2862         * make.h (EXIT_FAILURE): Should be 1, not 0.
2863
2864 2006-04-06  Paul D. Smith  <psmith@gnu.org>
2865
2866         * configure.in: Removed AM_C_PROTOTYPES.  Starting now on we
2867         require an ISO C 1989 standard compiler and runtime library.
2868
2869         * Makefile.am: Remove the ansi2knr feature.
2870
2871         * make.h: Remove the PARAMS() macro definition and all uses of it.
2872
2873         * amiga.h, ar.c, arscan.c: Remove all uses of the PARAMS() macro.
2874         * commands.c, commands.h, config.h-vms.template: Ditto.
2875         * dep.h, dir.c, expand.c, filedef.h, function.c: Ditto.
2876         * implicit.c, job.c, job.h, main.c, read.c, remake.c: Ditto.
2877         * rule.c, rule.h, variable.h, vmsdir.h, vmsjobs.c, vpath.c: Ditto.
2878
2879         * NEWS: Update.
2880
2881 2006-04-01  Paul D. Smith  <psmith@gnu.org>
2882
2883         Version 3.81 released.
2884
2885         * NEWS: Updated for 3.81.
2886
2887         * README.cvs: Mention that vpath builds are not supported out of
2888         CVS.  Fixes Savannah bug #16236.
2889         Remove update of make.texi from the list of things to do; we use
2890         version.texi now.
2891
2892 2006-03-26  Paul D. Smith  <psmith@gnu.org>
2893
2894         * doc/make.texi: Clean up licensing.  Use @copying and version.texi
2895         support from automake, as described in the Texinfo manual.
2896
2897 2006-03-25  Eli Zaretskii  <eliz@gnu.org>
2898
2899         * implicit.c (pattern_search) [HAVE_DOS_PATHS]: Don't compare b
2900         with lastslash, since the latter points to filename, not to
2901         target.
2902         * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]:
2903         Declare and define sh_chars_sh[].
2904
2905 2006-03-23  Paul D. Smith  <psmith@gnu.org>
2906
2907         * configure.in: Look for build.sh.in in $srcdir so it will be
2908         built for remote configurations as well.
2909
2910         * Makefile.am: Make sure to clean up build.sh during distclean.
2911         Fixes Savannah bug #16166.
2912
2913         * misc.c (log_access): Takes a const char *.
2914         * function.c (fold_newlines): Takes an unsigned int *.
2915         Both fixes for Savannah bug #16170.
2916
2917 2006-03-22  Boris Kolpackov  <boris@kolpackov.net>
2918
2919         * implicit.c (pattern_search): Call set_file_variables only
2920         if we have prerequisites that need second expansion. Fixes
2921         Savannah bug #16140.
2922
2923 2006-03-19  Paul D. Smith  <psmith@gnu.org>
2924
2925         * remake.c (update_file): Add alloca(0) to clean up alloca'd
2926         memory on hosts that don't support it directly.
2927
2928         * README.cvs: Add information on steps for making a release (to
2929         make sure I don't forget any).
2930
2931         * main.c (clean_jobserver): Move jobserver cleanup code into a new
2932         function.
2933         (die): Cleanup code was removed from here; call the new function.
2934         (main): If we are re-execing, clean up the jobserver first so we
2935         don't leak file descriptors.
2936         Reported by Craig Fithian <craig.fithian@citigroup.com>
2937
2938 2006-03-17  Paul D. Smith  <psmith@gnu.org>
2939
2940         * maintMakefile (do-po-update): Rewrite this rule to clean up and
2941         allow multiple concurrent runs.
2942         Patch from Joseph Myers <joseph@codesourcery.com>
2943
2944 2006-03-17  Boris Kolpackov  <boris@kolpackov.net>
2945
2946         * dep.h (struct dep): Add the stem field.
2947         * misc.c (alloc_dep, free_dep): New functions.
2948         (copy_dep_chain): Copy stem.
2949         (free_dep_chain): Use free_dep.
2950         * read.c (record_files): Store stem in the dependency line.
2951         * file.c (expand_deps): Use stem stored in the dependency line. Use
2952         free_dep_chain instead of free_ns_chain.
2953         * implicit.c (pattern_search): Use alloc_dep and free_dep.
2954         * read.c (read_all_makefiles, eval_makefile, eval): Ditto.
2955         * main.c (main, handle_non_switch_argument): Ditto.
2956         * remake.c (check_dep): Ditto.
2957         * rule.c (convert_suffix_rule, freerule): Ditto.
2958
2959 2006-03-14  Paul D. Smith  <psmith@gnu.org>
2960
2961         * expand.c (variable_append): Instead of appending everything then
2962         expanding the result, we expand (or not, if it's simple) each part
2963         as we add it.
2964         (allocated_variable_append): Don't expand the final result.
2965         Fixes Savannah bug #15913.
2966
2967 2006-03-09  Paul Smith  <psmith@gnu.org>
2968
2969         * remake.c (update_file_1): Revert the change of 3 Jan 2006 which
2970         listed non-existent files as changed.  Turns out there's a bug in
2971         the Linux kernel builds which means that this change causes
2972         everything to rebuild every time.  We will re-introduce this fix
2973         in the next release, to give them time to fix their build system.
2974         Fixes Savannah bug #16002.
2975         Introduces Savannah bug #16051.
2976
2977         * implicit.c (pattern_search) [DOS_PATHS]: Look for DOS paths if
2978         we *don't* find UNIX "/".
2979         Reported by David Ergo <david.ergo@alterface.com>
2980
2981 2006-03-04  Eli Zaretskii  <eliz@gnu.org>
2982
2983         * variable.c (do_variable_definition) [WINDOWS32]: Call the shell
2984         locator function find_and_set_default_shell if SHELL came from the
2985         command line.
2986
2987 2006-02-20  Paul D. Smith  <psmith@gnu.org>
2988
2989         * variable.c (merge_variable_set_lists): It's legal for *setlist0
2990         to be null; don't core in that case.
2991
2992 2006-02-19  Paul D. Smith  <psmith@gnu.org>
2993
2994         * commands.c (set_file_variables): Realloc, not malloc, the static
2995         string values to avoid memory leaks.
2996
2997         * expand.c (recursively_expand_for_file): Only set reading_file to
2998         an initialized value.
2999
3000         * implicit.c (pattern_search): We need to make a copy of the stem
3001         if we get it from an intermediate dep, since those get freed.
3002
3003         * file.c (lookup_file) [VMS]: Don't lowercase special targets that
3004         begin with ".".
3005         (enter_file) [VMS]: Ditto.
3006         Patch provided by Hartmut Becker <Hartmut.Becker@hp.com>.
3007
3008 2006-02-24  Eli Zaretskii  <eliz@gnu.org>
3009
3010         * job.c (construct_command_argv_internal): Fix last change.
3011
3012         * w32/subproc/sub_proc.c (process_pipe_io): Make dwStdin,
3013         dwStdout, and dwStderr unsigned int: avoids compiler warnings in
3014         the calls to _beginthreadex.
3015
3016         * expand.c (recursively_expand_for_file): Initialize `save' to
3017         prevent compiler warnings.
3018
3019 2006-02-18  Eli Zaretskii  <eliz@gnu.org>
3020
3021         * job.c (construct_command_argv_internal): Don't create a temporary
3022         script/batch file if we are under -n.  Call _setmode to switch the
3023         script file stream to text mode.
3024
3025 2006-02-17  Paul D. Smith  <psmith@gnu.org>
3026
3027         * variable.c (merge_variable_set_lists): Don't try to merge the
3028         global_setlist.  Not only is this useless, but it can lead to
3029         circularities in the linked list, if global_setlist->next in one
3030         list gets set to point to another list which also ends in
3031         global_setlist.
3032         Fixes Savannah bug #15757.
3033
3034 2006-02-15  Paul D. Smith  <psmith@gnu.org>
3035
3036         Fix for Savannah bug #106.
3037
3038         * expand.c (expanding_var): Keep track of which variable we're
3039         expanding.  If no variable is being expanded, it's the same as
3040         reading_file.
3041         * make.h (expanding_var): Declare it.
3042         * expand.c (recursively_expand_for_file): Set expanding_var to the
3043         current variable we're expanding, unless there's no file info in
3044         it (could happen if it comes from the command line or a default
3045         variable).  Restore it before we exit.
3046         * expand.c (variable_expand_string): Use the expanding_var file
3047         info instead of the reading_file info.
3048         * function.c (check_numeric): Ditto.
3049         (func_word): Ditto.
3050         (func_wordlist): Ditto.
3051         (func_error): Ditto.
3052         (expand_builtin_function): Ditto.
3053         (handle_function): Ditto.
3054
3055 2006-02-14  Paul D. Smith  <psmith@gnu.org>
3056
3057         * read.c (eval): Even if the included filenames expands to the
3058         empty string we still need to free the allocated buffer.
3059
3060         * implicit.c (pattern_search): If we allocated a variable set for
3061         an impossible file, free it.
3062         * variable.c (free_variable_set): New function.
3063         * variable.h: Declare it.
3064
3065         * read.c (read_all_makefiles): Makefile names are kept in the
3066         strcache, so there's never any need to alloc/free them.
3067         (eval): Ditto.
3068
3069         * main.c (main): Add "archives" to the .FEATURES variable if
3070         archive support is enabled.
3071         * doc/make.texi (Special Variables): Document it.
3072
3073 2006-02-13  Paul D. Smith  <psmith@gnu.org>
3074
3075         * implicit.c (pattern_search): Add checking for DOS pathnames to
3076         the pattern rule target LASTSLASH manipulation.
3077         Fixes Savannah bug #11183.
3078
3079 2006-02-11  Paul D. Smith  <psmith@gnu.org>
3080
3081         * (ALL FILES): Updated copyright and license notices.
3082
3083 2006-02-10  Paul D. Smith  <psmith@gnu.org>
3084
3085         A new internal capability: the string cache is a read-only cache
3086         of strings, with a hash table interface for fast lookup.  Nothing
3087         in the cache will ever be freed, so there's no need for reference
3088         counting, etc.  This is the beginning of a full solution for
3089         Savannah bug #15182, but for now we only store makefile names here.
3090
3091         * strcache.c: New file.  Implement a read-only string cache.
3092         * make.h: Add prototypes for new functions.
3093         * main.c (initialize_global_hash_tables): Initialize the string cache.
3094         (print_data_base): Print string cache stats.
3095         * read.c (eval_makefile): Use the string cache to store makefile
3096         names.  Rewrite the string allocation to be sure we free everything.
3097
3098 2006-02-10  Eli Zaretskii  <eliz@gnu.org>
3099
3100         * dir.c (dir_contents_file_exists_p): Don't opendir if the
3101         directory time stamp didn't change, except on FAT filesystems.
3102         Suggested by J. David Bryan <jdbryan@acm.org>.
3103
3104 2006-02-09  Paul D. Smith  <psmith@gnu.org>
3105
3106         * function.c (func_or): Implement a short-circuiting OR function.
3107         (func_and): Implement a short-circuiting AND function.
3108         (function_table_init): Update the table with the new functions.
3109         * doc/make.texi (Conditional Functions): Changed the "if" section
3110         to one on general conditional functions.  Added documentation for
3111         $(and ...) and $(or ...) functions.
3112         * NEWS: Note new $(and ...) and $(or ...) functions.
3113
3114 2006-02-08  Boris Kolpackov  <boris@kolpackov.net>
3115
3116         * job.h (struct child): Add the dontcare bitfield.
3117         * job.c (new_job): Cache dontcare flag.
3118         * job.c (reap_children): Use cached dontcare flag instead of the
3119         one in struct file. Fixes Savannah bug #15641.
3120
3121 2006-02-06  Paul D. Smith  <psmith@gnu.org>
3122
3123         * vpath.c (selective_vpath_search): If the file we find has a
3124         timestamp from -o or -W, use that instead of the real time.
3125         * remake.c (f_mtime): If the mtime is a special token from -o or
3126         -W, don't overwrite it with the real mtime.
3127         Fixes Savannah bug #15341.
3128
3129         Updates from Markus Mauhart <qwe123@chello.at>:
3130
3131         * w32/subproc/sub_proc.c (process_begin): Remove no-op tests.
3132         (process_signal, process_last_err, process_exit_code): Manage
3133         invalid handle values.
3134         (process_{outbuf,errbuf,outcnt,errcnt,pipes}): Unused and don't
3135         manage invalid handles; remove them.
3136         * job.c (start_job_command) [WINDOWS32]: Jump out on error.
3137         * config.h.W32.template [WINDOWS32]: Set flags for Windows builds.
3138         * README.cvs: Updates for building from CVS.
3139
3140 2006-02-05  Paul D. Smith  <psmith@gnu.org>
3141
3142         * file.c (enter_file): Keep track of the last double_colon entry,
3143         to avoid walking the list every time we want to add a new one.
3144         Fixes Savannah bug #15533.
3145         * filedef.h (struct file): Add a new LAST pointer.
3146
3147         * dir.c (directory_contents_hash_cmp): Don't use subtraction to do
3148         the comparison.  For 64-bits systems the result of the subtraction
3149         might not fit into an int.  Use comparison instead.
3150         Fixes Savannah bug #15534.
3151
3152         * doc/make.texi: Update the chapter on writing commands to reflect
3153         the changes made in 3.81 for backslash/newline and SHELL handling.
3154
3155 2006-02-01  Paul D. Smith  <psmith@gnu.org>
3156
3157         * dir.c (dir_contents_file_exists_p) [WINDOWS32]: Make sure
3158         variable st is not used when it's not initialized.
3159         Patch from Eli Zaretskii <eliz@gnu.org>.
3160
3161 2006-01-31  Paul D. Smith  <psmith@gnu.org>
3162
3163         * README.W32.template: Applied patch #4785 from
3164         Markus Mauhart <qwe123@chello.at>.
3165         * README.cvs: Applied patch #4786 from
3166         Markus Mauhart <qwe123@chello.at>.
3167         * make_msvc_net2003.vcproj [WINDOWS32]: New version from
3168         J. Grant <jg@jguk.org>.
3169
3170         * main.c: Update the copyright year in the version output.
3171         * prepare_w32.bat: Remove this file from the distribution.
3172
3173 2006-01-21  Eli Zaretskii  <eliz@gnu.org>
3174
3175         * remake.c (update_goal_chain): Set g->changed instead of
3176         incrementing it, as it is only 8-bit wide, and could overflow if
3177         many commands got started in update_file.
3178
3179         * w32/include/sub_proc.h: Add a prototype for process_used_slots.
3180
3181         * w32/subproc/sub_proc.c: Change dimension of proc_array[] to
3182         MAXIMUM_WAIT_OBJECTS.
3183         (process_wait_for_any_private): Change dimension of handles[]
3184         array to MAXIMUM_WAIT_OBJECTS.
3185         (process_used_slots): New function.
3186         (process_register): Don't register more processes than the
3187         available number of slots.
3188         (process_easy): Don't start new processes if all slots are used up.
3189
3190         * job.c (load_too_high, start_waiting_jobs) [WINDOWS32]: If there
3191         are already more children than sub_proc.c can handle, behave as if
3192         the load were too high.
3193         (start_job_command): Fix a typo in error message when process_easy
3194         fails.
3195
3196 2006-01-14  Eli Zaretskii  <eliz@gnu.org>
3197
3198         * main.c (main) [WINDOWS32]: Don't refuse to run with -jN, even if
3199         the shell is not sh.exe.
3200
3201         * job.c (create_batch_file): Renamed from create_batch_filename;
3202         all callers changed.  Don't close the temporary file; return its
3203         file descriptor instead.  New arg FD allows to return the file
3204         descriptor.
3205         (construct_command_argv_internal): Use _fdopen instead of fopen to
3206         open the batch file.
3207
3208 2006-01-04  Paul D. Smith  <psmith@gnu.org>
3209
3210         * readme.vms: Updates for case-insensitive VMS file systems from
3211         Hartmut Becker <Hartmut.Becker@hp.com>.
3212         * dir.c (vms_hash): Ditto.
3213         * vmsify.c (copyto): Ditto.
3214         * vmsfunctions.c (readdir): Ditto.
3215
3216         * make.1: Add a section on the exit codes for make.
3217
3218         * doc/make.texi: A number of minor updates to the documentation.
3219
3220 2006-01-03  Paul D. Smith  <psmith@gnu.org>
3221
3222         * remake.c (update_file_1): Mark a prerequisite changed if it
3223         doesn't exist.
3224
3225         * read.c (eval): Be sure to strip off trailing whitespace from the
3226         prerequisites list properly.  Also, initialize all fields in
3227         struct dep when creating a new one.
3228
3229 2005-12-28  Paul D. Smith  <psmith@gnu.org>
3230
3231         * config.h.W32.template [WINDOWS32]: Add in some pragmas to
3232         disable warnings for MSC.
3233         Patch by Rob Tulloh <rtulloh@yahoo.com>.
3234
3235 2005-12-17  Eli Zaretskii  <eliz@gnu.org>
3236
3237         * doc/make.texi (Execution): Add a footnote about changes in
3238         handling of backslash-newline sequences.  Mention the differences
3239         on MS-DOS and MS-Windows.
3240
3241         * NEWS: More details about building the MinGW port and a pointer
3242         to README.W32.  Fix the section name that describes the new
3243         backward-incompatible processing of backslash-newline sequences.
3244         The special processing of SHELL set to "cmd" is only relevant to
3245         MS-Windows, not MS-DOS.
3246
3247 2005-12-17  Eli Zaretskii  <eliz@gnu.org>
3248
3249         * main.c (handle_runtime_exceptions): Cast exrec->ExceptionAddress
3250         to DWORD, to avoid compiler warnings.
3251         * job.c (exec_command): Cast hWaitPID and hPID to DWORD, and
3252         use %ld in format, to avoid compiler warnings.
3253
3254         * doc/make.texi (Special Targets): Fix a typo.
3255         (Appending): Fix cross-reference to Setting.
3256         (Special Variables, Secondary Expansion, File Name Functions)
3257         (Flavor Function, Pattern Match, Quick Reference): Ensure two
3258         periods after a sentence.
3259         (Execution): Add @: after "e.g.".
3260         (Environment): Fix punctuation.
3261         (Target-specific, Call Function, Quick Reference): Add @: after "etc."
3262         (Shell Function, Target-specific): Add @: after "vs."
3263
3264 2005-12-14  Boris Kolpackov  <boris@kolpackov.net>
3265
3266         * read.c (record_target_var): Initialize variable's export field
3267         with v_default instead of leaving it "initialized" by whatever
3268         garbage happened to be on the heap.
3269
3270 2005-12-12  Paul D. Smith  <psmith@gnu.org>
3271
3272         * make.1: Fix some display errors and document all existing options.
3273         Patch by Mike Frysinger <vapier@gentoo.org>.
3274
3275 2005-12-11  Paul D. Smith  <psmith@gnu.org>
3276
3277         * implicit.c (pattern_search): If 2nd expansion is not set for
3278         this implicit rule, replace the pattern with the stem directly,
3279         and don't re-expand the variable list.  Along with the other
3280         .SECONDEXPANSION changes below, fixes bug #13781.
3281
3282 2005-12-09  Boris Kolpackov  <boris@kolpackov.net>
3283
3284         * implicit.c (pattern_search): Mark other files that this rule
3285         builds as targets so that they are not treated as intermediates
3286         by the pattern rule search algorithm. Fixes bug #13022.
3287
3288 2005-12-07  Boris Kolpackov  <boris@kolpackov.net>
3289
3290         * remake.c (notice_finished_file): Propagate the change of
3291         modification time to all the double-colon entries only if
3292         it is the last one to be updated. Fixes bug #14334.
3293
3294 2005-11-17  Boris Kolpackov  <boris@kolpackov.net>
3295
3296         * function.c (func_flavor): Implement the flavor function which
3297         returns the flavor of a variable.
3298         * doc/make.texi (Functions for Transforming Text): Document it.
3299         * NEWS: Add it to the list of new functions.
3300
3301 2005-11-14  Boris Kolpackov  <boris@kolpackov.net>
3302
3303         * read.c (construct_include_path): Set the .INCLUDE_DIRS special
3304         variable.
3305         * doc/make.texi (Special Variables): Document .INCLUDE_DIRS.
3306         * NEWS: Add .INCLUDE_DIRS to the list of new special variables.
3307
3308 2005-10-26  Paul Smith  <psmith@gnu.org>
3309
3310         * read.c (record_files): Don't set deps flags if there are no deps.
3311         * maintMakefile: We only need to build the templates when we are
3312         creating a distribution, so don't do it for "all".
3313
3314 2005-10-24  Paul D. Smith  <psmith@gnu.org>
3315
3316         Make secondary expansion optional: its enabled by declaring the
3317         special target .SECONDEXPANSION.
3318
3319         * NEWS: Update information on second expansion capabilities.
3320         * doc/make.texi (Secondary Expansion): Document the
3321         .SECONDEXPANSION special target and its behavior.
3322         * dep.h (struct dep): Add a flag STATICPATTERN, set to true if the
3323         prerequisite list was found in a static pattern rule.
3324         (free_dep_chain): Declare a prototype.
3325         * file.c (parse_prereqs): New function: break out some complexity
3326         from expand_deps().
3327         (expand_deps): If we aren't doing second expansion, replace % with
3328         the stem for static pattern rules.  Call the new function.
3329         * filedef.h (parse_prereqs): Declare a prototype.
3330         * implicit.c (pattern_search): Initialize the new staticpattern
3331         field.
3332         * main.c (second_expansion): Declare a global variable to remember
3333         if the special target has been seen.  Initialize the new
3334         staticpattern field for prerequisites.
3335         * make.h: Extern for second_expansion.
3336         * misc.c (free_dep_chain): New function: frees a struct dep list.
3337         * read.c (read_all_makefiles): Initialize the staticpattern field.
3338         (eval_makefile): Ditto.
3339         (record_files): Check for the .SECONDEXPANSION target and set
3340         second_expansion global if it's found.
3341         Use the new free_dep_chain() instead of doing it by hand.
3342         Set the staticpattern field for prereqs of static pattern targets.
3343
3344 2005-10-16  Paul D. Smith  <psmith@gnu.org>
3345
3346         * main.c (main): Set CURDIR to be a file variable instead of a
3347         default, so that values of CURDIR inherited from the environment
3348         won't override the make value.
3349
3350 2005-09-26  Paul D. Smith  <psmith@gnu.org>
3351
3352         * job.c (construct_command_argv_internal): If the line is empty
3353         remember to free the temporary argv strings.
3354         Fixes bug # 14527.
3355
3356 2005-09-16  Paul D. Smith  <psmith@gnu.org>
3357
3358         * job.c (start_job_command): The noerror flag is a boolean (single
3359         bit); set it appropriately.
3360         Reported by Mark Eichin <eichin@metacarta.com>
3361
3362 2005-08-29  Paul D. Smith  <psmith@gnu.org>
3363
3364         * function.c (func_error): On Windows, output from $(info ...)
3365         seems to come in the wrong order.  Try to force it with fflush().
3366
3367 2005-08-10  Boris Kolpackov  <boris@kolpackov.net>
3368
3369         * read.c (record_files): Move code that sets stem for static
3370         pattern rules out of the if (!two_colon) condition so it is
3371         also executed for two-colon rules. Fixes Savannah bug #13881.
3372
3373 2005-08-08  Paul D. Smith  <psmith@gnu.org>
3374
3375         * make.h: Don't test that __STDC__ is non-0.  Some compilers
3376         (Windows for example) set it to 0 to denote "ISO C + extensions".
3377         Fixes bug # 13594.
3378
3379 2005-08-07  Paul D. Smith  <psmith@gnu.org>
3380
3381         * w32/pathstuff.c (getcwd_fs): Fix warning about assignment in a
3382         conditional (slightly different version of a fix from Eli).
3383
3384         Fix a bug reported by Michael Matz <matz@suse.de>: patch included.
3385         If make is running in parallel without -k and two jobs die in a
3386         row, but not too close to each other, then make will quit without
3387         waiting for the rest of the jobs to die.
3388
3389         * main.c (die): Don't reset err before calling reap_children() the
3390         second time: we still want it to be in the error condition.
3391         * job.c (reap_children): Use a static variable, rather than err,
3392         to control whether or not the error message should be printed.
3393
3394 2005-08-06  Eli Zaretskii  <eliz@gnu.org>
3395
3396         * w32/subproc/sub_proc.c: Include signal.h.
3397         (process_pipe_io, process_file_io): Pass a pointer to a local
3398         DWORD variable to GetExitCodeProcess.  If the exit code is
3399         CONTROL_C_EXIT, put SIGINT into pproc->signal.
3400
3401         * job.c [WINDOWS32]: Include windows.h.
3402         (main_thread) [WINDOWS32]: New global variable.
3403         (reap_children) [WINDOWS32]: Get the handle for the main thread
3404         and store it in main_thread.
3405
3406         * commands.c [WINDOWS32]: Include windows.h and w32err.h.
3407         (fatal_error_signal) [WINDOWS32]: Suspend the main thread before
3408         doing anything else.  When we are done, close the main thread
3409         handle and exit with status 130.
3410
3411 2005-07-30  Eli Zaretskii  <eliz@gnu.org>
3412
3413         * w32/subproc/sub_proc.c (process_begin): Don't pass a NULL
3414         pointer to fprintf.
3415
3416         * main.c (find_and_set_default_shell): If found a DOSish shell,
3417         set sh_found and the value of default_shell, and report the
3418         findings in debug mode.
3419
3420         * job.c (construct_command_argv_internal): Check unixy_shell, not
3421         no_default_sh_exe, to decide whether to use Unixy or DOSish
3422         builtin commands.
3423
3424         * README.W32: Update with info about the MinGW build.
3425
3426         * build_w32.bat: Support MinGW.
3427
3428         * w32/subproc/build.bat: Likewise.
3429
3430         * w32/subproc/sub_proc.c (process_easy): Fix format strings for
3431         printing DWORD args.
3432
3433         * function.c (windows32_openpipe): Fix format strings for printing
3434         DWORD args.
3435
3436         * job.c (reap_children) [WINDOWS32]: Don't declare 'status' and
3437         'reap_mode'.
3438         (start_job_command): Fix format string for printing the result of
3439         process_easy.
3440         (start_job_command) [WINDOWS32]: Do not define.
3441         (exec_command): Fix format string for printing HANDLE args.
3442
3443         * main.c (handle_runtime_exceptions): Fix sprintf format strings
3444         to avoid compiler warnings.
3445         (open_tmpfile): Declare fd only if HAVE_FDOPEN is defined.
3446         (Note: some of these fixes were submitted independently by J. Grant)
3447
3448 2005-07-30  J. Grant <jg@jguk.org>
3449
3450         * prepare_w32.bat: Copy config.h.w32 to config.h if not exist.
3451         * make_msvc_net2003.vcproj, make_msvc_net2003.sln: MSVC Project files.
3452         * Makefile.am (EXTRA_DIST): Add MSVC Project files.
3453
3454 2005-07-15  Paul Smith  <psmith@gnu.org>
3455
3456         * job.c (construct_command_argv_internal) [DOS,WINDOWS32,OS/2]: If
3457         we don't have a POSIX shell, then revert to the old
3458         backslash-newline behavior (where they are stripped).
3459         Fixes bug #13665.
3460
3461 2005-07-08  Paul D. Smith  <psmith@gnu.org>
3462
3463         * config.h.W32.template: Reorder to match the standard config.h,
3464         for easier comparisons.
3465         From J. Grant <jg@jguk.org>
3466
3467         * maintMakefile: Remove .dep_segment before overwriting it, in
3468         case it's not writable or noclobber is set.
3469         * expand.c (variable_expand_string): Cast result of pointer
3470         arithmetic to avoid a warning.
3471         * main.c (switches): Add full-fledged final initializer.
3472
3473 2005-07-06  Paul D. Smith  <psmith@gnu.org>
3474
3475         * configure.in: IRIX has _sys_siglist.  Tru64 UNIX has __sys_siglist.
3476         * signame.c (strsignal): If we found _sys_siglist[] or
3477         __sys_siglist[] use those instead of sys_siglist[].
3478         From Albert Chin <china@thewrittenword.com>
3479
3480 2005-07-04  Paul D. Smith  <psmith@gnu.org>
3481
3482         * config.h-vms.template [VMS]: Latest VMS has its own glob() and
3483         globfree(); set up to use the GNU versions.
3484         From Martin Zinser <zinser@zinser.no-ip.info>
3485
3486 2005-07-03  Paul D. Smith  <psmith@gnu.org>
3487
3488         From J. Grant <jg@jguk.org>:
3489
3490         * README.W32.template: Update the Windows and tested MSVC versions.
3491         * NMakefile.template (CFLAGS_any): Change warning level from W3 to W4.
3492         * w32/subproc/NMakefile (CFLAGS_any): Ditto.
3493         * build_w32.bat: Ditto.
3494         * w32/subproc/build.bat: Ditto.
3495
3496 2005-06-28  Paul D. Smith  <psmith@gnu.org>
3497
3498         * signame.c: HAVE_DECL_* macros are set to 0, not undef, if the
3499         declaration was checked but not present.
3500
3501 2005-06-27  Paul D. Smith  <psmith@gnu.org>
3502
3503         * dir.c (find_directory): Change type of fs_serno/fs_flags/fs_len
3504         to unsigned long.  Fixes Savannah bug #13550.
3505
3506         * w32/subproc/sub_proc.c: Remove (HANDLE) casts on lvalues.
3507         (process_pipe_io): Initialize tStdin/tStdout/tStderr variables.
3508         Fixes Savannah bug #13551.
3509
3510 2005-06-26  Paul D. Smith  <psmith@gnu.org>
3511
3512         * make.h: Fix bug in ANSI_STRING/strerror() handling; only define
3513         it if ANSI_STRING is not set.
3514
3515 2005-06-25  Paul D. Smith  <psmith@gnu.org>
3516
3517         * read.c (eval): If no filenames are passed to any of the
3518         "include" variants, don't print an error.
3519         * doc/make.texi (Include): Document this.
3520         Fixes Savannah bug #1761.
3521
3522         * job.c (construct_command_argv_internal): Sanitize handling of
3523         backslash/newline pairs according to POSIX: that is, keep the
3524         backslash-newline in the command script, but remove a following
3525         TAB character, if present.  In the fast path, make sure that the
3526         behavior matches what the shell would do both inside and outside
3527         of quotes.  In the slow path, quote the backslash and put a
3528         literal newline in the string.
3529         Fixes Savannah bug #1332.
3530         * doc/make.texi (Execution): Document the new behavior and give
3531         some examples.
3532         * NEWS: Make a note of the new behavior.
3533
3534         * make.h [WINDOWS32]: #include <direct.h>.
3535         Fixes Savannah bug #13478.
3536
3537         * remake.c (name_mtime): If the stat() of a file fails and the -L
3538         option was given and the file is a symlink, take the best mtime of
3539         the symlink we can get as the mtime of the file and don't fail.
3540         Fixes Savannah bug #13280.
3541
3542         * read.c (find_char_unquote): Accept a new argument IGNOREVARS.
3543         If it's set, then don't stop on STOPCHARs or BLANKs if they're
3544         inside a variable reference.  Make this function static as it's
3545         only used here.
3546         (eval): Call find_char_unquote() with IGNOREVARS set when we're
3547         parsing an unexpanded line looking for semicolons.
3548         Fixes Savannah bug #1454.
3549         * misc.c (remove_comments): Move this to read.c and make it static
3550         as it's only used there.  Call find_char_unquote() with new arg.
3551         * make.h: Remove prototypes for find_char_unquote() and
3552         remove_comments() since they're static now.
3553
3554         * main.c (main): If we see MAKE_RESTARTS in the environment, unset
3555         its export flag and obtain its value.  When we need to re-exec,
3556         increment the value and add it into the environment.
3557         * doc/make.texi (Special Variables): Document MAKE_RESTARTS.
3558         * NEWS: Mention MAKE_RESTARTS.
3559         * main.c (always_make_set): New variable.  Change the -B option to
3560         set this one instead.
3561         (main): When checking makefiles, only set always_make_flag if
3562         always_make_set is set AND the restarts flag is 0.  When building
3563         normal targets, set it IFF always_make_set is set.
3564         (main): Avoid infinite recursion with -W, too: only set what-if
3565         files to NEW before we check makefiles if we've never restarted
3566         before.  If we have restarted, set what-if files to NEW _after_ we
3567         check makefiles.
3568         Fixes Savannah bug #7566:
3569
3570 2005-06-17  Paul D. Smith  <psmith@gnu.org>
3571
3572         * default.c: Change VMS implicit rules to use $$$$ instead of $$
3573         in the prerequisites list.
3574
3575 2005-06-12  Paul D. Smith  <psmith@gnu.org>
3576
3577         Fix Savannah bug # 1328.
3578
3579         * configure.in: Check for atexit().
3580         * misc.c (close_stdout): Test stdout to see if writes to it have
3581         failed.  If so, be sure to exit with a non-0 error code.  Based on
3582         code found in gnulib.
3583         * make.h: Prototype.
3584         * main.c (main): Install close_stdout() with atexit().
3585
3586 2005-06-10  Paul D. Smith  <psmith@gnu.org>
3587
3588         VMS build updates from Hartmut Becker <Hartmut.Becker@hp.com>:
3589
3590         * vmsjobs.c [VMS]: Updates to compile on VMS: add some missing
3591         headers; make vmsWaitForChildren() static; extern vmsify().
3592         * job.c [VMS]: Move vmsWaitForChildren() prototype to be global.
3593         Don't create child_execute_job() here (it's in vmsjobs.c).
3594         * makefile.vms (job.obj) [VMS]: Add vmsjobs.c as a prerequisite.
3595
3596 2005-06-09  Paul D. Smith  <psmith@gnu.org>
3597
3598         * variable.c (push_new_variable_scope): File variables point
3599         directly to the global_setlist variable.  So, inserting a new
3600         scope in front of that has no effect on those variables: they
3601         don't go through current_variable_set_list.  If we're pushing a
3602         scope and the current scope is global, push it "the other way" so
3603         that the new setlist is in the global_setlist variable, and
3604         next points to a new setlist with the global variable set.
3605         (pop_variable_scope): Properly undo a push with the new
3606         semantics.
3607         Fixes Savannah bug #11913.
3608
3609 2005-05-31  Boris Kolpackov  <boris@kolpackov.net>
3610
3611         * job.c (reap_children): Don't die of the command failed but
3612         the dontcare flag is set. Fixes Savannah bug #13216.
3613
3614         * implicit.c (pattern_search): When creating a target from
3615         an implicit rule match, lookup pattern target and set precious
3616         flag in a newly created target. Fixes Savannah bug #13218.
3617
3618 2005-05-13  Paul D. Smith  <psmith@gnu.org>
3619
3620         Implement "if... else if... endif" syntax.
3621
3622         * read.c (eval): Push all checks for conditional words ("ifeq",
3623         "else", etc.) down into the conditional_line() function.
3624         (conditional_line): Rework to allow "else if..." clause.  New
3625         return value -2 for lines which are not conditionals.  The
3626         ignoring flag can now also be 2, which means "already parsed a
3627         true branch".  If that value is seen no other branch of this
3628         conditional can be considered true.  In the else parsing if there
3629         is extra text after the else, invoke conditional_line()
3630         recursively to see if it's another conditional.  If not, it's an
3631         error.  If so, raise the conditional value to this level instead
3632         of creating a new conditional nesting level.  Special check for
3633         "else" and "endif", which aren't allowed on the "else" line.
3634         * doc/make.texi (Conditional Syntax): Document the new syntax.
3635
3636 2005-05-09  Paul D. Smith  <psmith@gnu.org>
3637
3638         * Makefile.am (EXTRA_make_SOURCES): Add vmsjobs.c
3639         (MAYBE_W32): Rework how SUBDIRS are handled so that "make dist"
3640         recurses to the w32 directory, even on non-Windows systems.  Use
3641         the method suggested in the automake manual.
3642         * configure.in: Add w32/Makefile to AC_CONFIG_FILES.
3643         * maintMakefile (gnulib-url): They moved the texinfo.tex files.
3644
3645 2005-05-07  Paul D. Smith  <psmith@gnu.org>
3646
3647         * main.c (die): If we're dying with a fatal error (not that a
3648         command has failed), write back any leftover tokens before we go.
3649
3650         * job.c (set_child_handler_action_flags): If there are jobs
3651         waiting for the load to go down, set an alarm to go off in 1
3652         second.  This allows us to wake up from a potentially long-lasting
3653         read() and start a new job if the load has gone down.  Turn it off
3654         after the read.
3655         (job_noop): Dummy signal handler function.
3656         (new_job): Invoke it with the new semantics.
3657
3658         * docs/make.texi: Document secondary expansion.  Various cleanups
3659         and random work.
3660
3661 2005-05-03  Paul D. Smith  <psmith@gnu.org>
3662
3663         Rename .DEFAULT_TARGET to .DEFAULT_GOAL: in GNU make terminology
3664         the targets which are to ultimately be made are called "goals";
3665         see the GNU make manual.  Also, MAKECMDGOALS, etc.
3666
3667         * filedef.h, read.c, main.c: Change .DEFAULT_TARGET to
3668         .DEFAULT_GOAL, and default_target_name to default_goal_name.
3669         * doc/make.texi (Special Variables): Document .DEFAULT_GOAL.
3670
3671 2005-05-02  Paul D. Smith  <psmith@gnu.org>
3672
3673         * job.c, vmsjobs.c (vmsWaitForChildren, vms_redirect,
3674         vms_handle_apos, vmsHandleChildTerm, reEnableAst, astHandler,
3675         tryToSetupYAst, child_execute_job) [VMS]: Move VMS-specific
3676         functions to vmsjobs.c.  #include it into jobs.c.
3677
3678         Grant Taylor <gtaylor@picante.com> reports that -j# can lose
3679         jobserver tokens.  I found that this happens when an exported
3680         recursive variable contains a $(shell ...) function reference: in
3681         this situation we could "forget" to write back a token.
3682
3683         * job.c, job.h: Add variable jobserver_tokens: counts the tokens
3684         we have.  It's not reliable to depend on the number of children in
3685         our linked list so keep a separate count.
3686         (new_job): Check jobserver_tokens rather than children &&
3687         waiting_jobs.  Increment jobserver_tokens when we get one.
3688         (free_child): If jobserver_tokens is 0, internal error.  If it's
3689         >1, write a token back to the jobserver pipe (we don't write a
3690         token for the "free" job).  Decrement jobserver_tokens.
3691
3692         * main.c: Add variable master_job_slots.
3693         (main): Set it to hold the number of jobs requested if we're the
3694         master process, when using the jobserver.
3695         (die): Sanity checks: first test jobserver_tokens to make sure
3696         this process isn't holding any tokens we didn't write back.
3697         Second, if master_job_slots is set count the tokens left in the
3698         jobserver pipe and ensure it's the same as master_job_slots (- 1).
3699
3700 2005-04-24  Paul D. Smith  <psmith@gnu.org>
3701
3702         Grant Taylor <gtaylor@picante.com> reports that -j# in conjunction
3703         with -l# can lose jobserver tokens, because waiting jobs are not
3704         consulted properly when checking for the "free" token.
3705
3706         * job.c (free_child): Count waiting_jobs as having tokens.
3707         * job.c (new_job): Ditto.  Plus, call start_waiting_jobs() here to
3708         handle jobs waiting for the load to drop.
3709
3710 2005-04-23  Paul D. Smith  <psmith@gnu.org>
3711
3712         * main.c (main): Be careful to not core if a variable setting in
3713         the environment doesn't contain an '='.  This is illegal but can
3714         happen in broken setups.
3715         Reported by Joerg Schilling <schilling@fokus.fraunhofer.de>.
3716
3717 2005-04-12  Paul D. Smith  <psmith@gnu.org>
3718
3719         The second expansion feature causes significant slowdown.  Timing
3720         a complex makefile (GCC 4.1) shows a slowdown from .25s to just
3721         read the makefile before the feature, to 11+s to do the same
3722         operations after the feature.  Additionally, memory usage
3723         increased drastically.  To fix this I added some intelligence that
3724         avoids the overhead of the second expansion unless it's required.
3725
3726         * dep.h: Add a new boolean field, need_2nd_expansion.
3727
3728         * read.c (eval): When creating the struct dep for the target,
3729         check if the name contains a "$"; if so set need_2nd_expansion to 1.
3730         (record_files): If there's a "%" in a static pattern rule, it gets
3731         converted to "$*" so set need_2nd_expansion to 1.
3732
3733         * file.c (expand_deps): Rework to be more efficient.  Only perform
3734         initialize_file_variables(), set_file_variables(), and
3735         variable_expand_for_file() if the need_2nd_expansion is set.
3736
3737         * implicit.c (pattern_search): Default need_2nd_expansion to 0.
3738         (pattern_search): Ditto.
3739         * main.c (handle_non_switch_argument): Ditto.
3740         (main): Ditto.
3741         * read.c (read_all_makefiles): Ditto.
3742         (eval_makefile): Ditto.
3743
3744 2005-04-07  Paul D. Smith  <psmith@gnu.org>
3745
3746         * main.c (main) [WINDOWS32]: Export PATH to sub-shells, not Path.
3747         * variable.c (sync_Path_environment): Ditto.
3748         Patch by Alessandro Vesely.  Fixes Savannah bug #12209.
3749
3750         * main.c (main): Define the .FEATURES variable.
3751         * NEWS: Announce .FEATURES.
3752         * doc/make.texi (Special Variables): Document .FEATURES.
3753
3754         * remake.c (check_dep): If a file is .PHONY, update it even if
3755         it's marked intermediate.  Fixes Savannah bug #12331.
3756
3757 2005-03-15  Boris Kolpackov  <boris@kolpackov.net>
3758
3759         * file.c (expand_deps): Factor out the second expansion and
3760         prerequisite line parsing logic from snap_deps().
3761
3762         * file.c (snap_deps): Use expand_deps(). Expand and parse
3763         prerequisites of the .SUFFIXES special target first. Fixes
3764         Savannah bug #12320.
3765
3766 2005-03-13  Paul D. Smith  <psmith@gnu.org>
3767
3768         * main.c (main) [MSDOS]: Export SHELL in MSDOS.  Requested by Eli
3769         Zaretskii.
3770
3771 2005-03-11  Paul D. Smith  <psmith@gnu.org>
3772
3773         * signame.c (strsignal): HAVE_DECL_SYS_SIGLIST is 0 when not
3774         available, not undefined (from Earnie Boyd).
3775
3776 2005-03-10  Boris Kolpackov  <boris@kolpackov.net>
3777
3778         * implicit.c (pattern_search): Mark an intermediate target as
3779         precious if it happened to be a prerequisite of some (other)
3780         target. Fixes Savannah bug #12267.
3781
3782 2005-03-09  Paul D. Smith  <psmith@gnu.org>
3783
3784         * read.c (eval_makefile): Add alloca(0).
3785         (eval_buffer): Ditto.
3786
3787 2005-03-09  Boris Kolpackov  <boris@kolpackov.net>
3788
3789         * main.c (main): Use o_file instead of o_default when defining
3790         the .DEFAULT_TARGET special variable.
3791         * read.c (eval): Use define_variable_global() instead of
3792         define_variable() when setting new value for the .DEFAULT_TARGET
3793         special variable.  Fixes Savannah bug #12266.
3794
3795 2005-03-04  Boris Kolpackov  <boris@kolpackov.net>
3796
3797         * imlicit.c (pattern_search): Mark files for which an implicit
3798         rule has been found as targets. Fixes Savannah bug #12202.
3799
3800 2005-03-04  Paul D. Smith  <psmith@gnu.org>
3801
3802         * AUTHORS: Update.
3803         * doc/make.texi (Automatic Variables): Document $|.
3804
3805 2005-03-03  Boris Kolpackov  <boris@kolpackov.net>
3806
3807         * read.c (record_files): Instead of substituting % with
3808         actual stem value in dependency list replace it with $*.
3809         This fixes stem triple expansion bug.
3810
3811         * implicit.c (pattern_search): Copy stem to a separate
3812         buffer and make it a properly terminated string. Assign
3813         this buffer instead of STEM (which is not terminated) to
3814         f->stem. Instead of substituting % with actual stem value
3815         in dependency list replace it with $*. This fixes stem
3816         triple expansion bug.
3817
3818 2005-03-01  Paul D. Smith  <psmith@gnu.org>
3819
3820         * commands.c (fatal_error_signal) [WINDOWS32]: Don't call kill()
3821         on Windows, as it takes a handle not a pid.  Just exit.
3822         Fix from patch #3679, provided by Alessandro Vesely.
3823
3824         * configure.in: Update check for sys_siglist[] from autoconf manual.
3825         * signame.c (strsignal): Update to use the new autoconf macro.
3826
3827 2005-03-01  Boris Kolpackov  <boris@kolpackov.net>
3828
3829         * read.c (record_files): Add a check for the list of prerequisites
3830         of a static pattern rule being empty. Fixes Savannah bug #12180.
3831
3832 2005-02-28  Paul D. Smith  <psmith@gnu.org>
3833
3834         * doc/make.texi (Text Functions): Update docs to allow the end
3835         ordinal for $(wordlist ...) to be 0.
3836         * function.c (func_wordlist): Fail if the start ordinal for
3837         $(wordlist ...) is <1.  Matches documentation.
3838         Resolves Savannah support request #103195.
3839
3840         * remake.c (update_goal_chain): Fix logic for stopping in -q:
3841         previously we were stopping when !-q, exactly the opposite.  This
3842         has been wrong since version 1.34, in 1994!
3843         (update_file): If we got an error don't break out to run more
3844         double-colon rules: just return immediately.
3845         Fixes Savannah bug #7144.
3846
3847 2005-02-27  Paul D. Smith  <psmith@gnu.org>
3848
3849         * misc.c (end_of_token): Make argument const.
3850         * make.h: Update prototype.
3851
3852         * function.c (abspath, func_realpath, func_abspath): Use
3853         PATH_VAR() and GET_PATH_MAX instead of PATH_MAX.
3854         * dir.c (downcase): Use PATH_VAR() instead of PATH_MAX.
3855         * read.c (record_files): Ditto.
3856         * variable.c (do_variable_definition): Ditto.
3857
3858         * function.c (func_error): Create a new function $(info ...) that
3859         simply prints the message to stdout with no extras.
3860         (function_table_init): Add new function to the table.
3861         * NEWS: Add $(info ...) reference.
3862         * doc/make.texi (Make Control Functions): Document it.
3863
3864         New feature: if the system supports symbolic links, and the user
3865         provides the -L/--check-symlink-time flag, then use the latest
3866         mtime between the symlink(s) and the target file.
3867
3868         * configure.in (MAKE_SYMLINKS): Check for lstat() and
3869         readlink().  If both are available, define MAKE_SYMLINKS.
3870         * main.c: New variable: check_symlink_flag.
3871         (usage): Add a line for -L/--check-symlink-times to the help string.
3872         (switches): Add -L/--check-symlink-times command line argument.
3873         (main): If MAKE_SYMLINKS is not defined but the user specified -L,
3874         print a warning and disable it again.
3875         * make.h: Declare check_symlink_flag.
3876         * remake.c (name_mtime): If MAKE_SYMLINKS and check_symlink_flag,
3877         if the file is a symlink then check each link in the chain and
3878         choose the NEWEST mtime we find as the mtime for the file.  The
3879         newest mtime might be the file itself!
3880         * NEWS: Add information about this new feature.
3881         * doc/make.texi (Options Summary): Add -L/--check-symlink-times docs.
3882
3883         Avoid core dumps described in Savannah bug # 12124:
3884
3885         * file.c: New variable snapped_deps remember whether we've run
3886         snap_deps().
3887         (snap_deps): Set it.
3888         * filedef.h: Extern it.
3889         * read.c (record_files): Check snapped_deps; if it's set then
3890         we're trying to eval a new target/prerequisite relationship from
3891         within a command script, which we don't support.  Fatal.
3892
3893 2005-02-28  Boris Kolpackov  <boris@kolpackov.net>
3894
3895         Implementation of the .DEFAULT_TARGET special variable.
3896
3897         * read.c (eval): If necessary, update default_target_name when
3898         reading rules.
3899         * read.c (record_files): Update default_target_file if
3900         default_target_name has changed.
3901         * main.c (default_target_name): Define.
3902         * main.c (main): Enter .DEFAULT_TARGET as make variable. If
3903         default_target_name is set use default_target_file as a root
3904         target to make.
3905         * filedef.h (default_target_name): Declare.
3906         * dep.h (free_dep_chain):
3907         * misc.c (free_dep_chain): Change to operate on struct nameseq
3908         and change name to free_ns_chain.
3909         * file.c (snap_deps): Update to use free_ns_chain.
3910
3911 2005-02-27  Boris Kolpackov  <boris@kolpackov.net>
3912
3913         Implementation of the second expansion in explicit rules,
3914         static pattern rules and implicit rules.
3915
3916         * read.c (eval): Refrain from chopping up rule's dependencies.
3917         Store them in a struct dep as a single dependency line. Remove
3918         the code that implements SySV-style automatic variables.
3919
3920         * read.c (record_files): Adjust the code that handles static
3921         pattern rules to expand all percents instead of only the first
3922         one. Reverse the order in which dependencies are stored so that
3923         when the second expansion reverses them again they appear in
3924         the makefile order (with some exceptions, see comments in
3925         the code). Remove the code that implements SySV-style automatic
3926         variables.
3927
3928         * file.c (snap_deps): Implement the second expansion and chopping
3929         of dependency lines for explicit rules.
3930
3931         * implicit.c (struct idep): Define an auxiliary data type to hold
3932         implicit rule's dependencies after stem substitution and
3933         expansion.
3934
3935         * implicit.c (free_idep_chain): Implement.
3936
3937         * implicit.c (get_next_word): Implement helper function for
3938         parsing implicit rule's dependency lines into words taking
3939         into account variable expansion requests. Used in the stem
3940         splitting code.
3941
3942         * implicit.c (pattern_search): Implement the second expansion
3943         for implicit rules. Also fixes bug #12091.
3944
3945         * commands.h (set_file_variables): Declare.
3946         * commands.c (set_file_variables): Remove static specifier.
3947
3948         * dep.h (free_dep_chain): Declare.
3949         * misc.c (free_dep_chain): Implement.
3950
3951         * variable.h (variable_expand_for_file): Declare.
3952         * expand.c (variable_expand_for_file): Remove static specifier.
3953
3954         * make.h (strip_whitespace): Declare.
3955         * function.c (strip_whitespace): Remove static specifier.
3956
3957 2005-02-26  Paul D. Smith  <psmith@gnu.org>
3958
3959         * main.c (main): Check for ferror() when reading makefiles from stdin.
3960         Apparently some shells in Windows don't close pipes properly and
3961         require this check.
3962
3963 2005-02-24  Jonathan Grant  <jg@jguk.org>
3964
3965         * configure.in: Add MinGW configuration options, and extra w32 code
3966         directory.
3967         * Makefile.am: Add MinGW configuration options, and extra w32 code
3968         directory.
3969         * main.c: Determine correct program string (after last \ without .exe).
3970         * subproc/sub_proc.c: `GetExitCodeProcess' from incompatible pointer
3971         type fix x2
3972         * w32/Makefile.am: Import to build win32 lib of sub_proc etc.
3973         * subproc/w32err.c: MSVC thread directive not applied to MinGW builds.
3974         * tests/run_make_tests.pl, tests/test_driver.pl: MSYS testing
3975         environment support.
3976
3977 2004-04-16  Dmitry V. Levin  <ldv@altlinux.org>
3978
3979         * function.c (func_shell): When initializing error_prefix, check
3980         that reading file name is not null.  This fixes long-standing
3981         segfault in cases like "make 'a1=$(shell :)' 'a2:=$(a1)'".
3982
3983 2005-02-09  Paul D. Smith  <psmith@gnu.org>
3984
3985         * maintMakefile: Update the CVS download URL to simplify them.
3986         Also, the ftp://ftp.gnu.org/GNUinfo site was removed so I'm
3987         downloading the .texi files from Savannah now.
3988
3989         Fixed these issues reported by Markus Mauhart <qwe123@chello.at>:
3990
3991         * main.c (handle_non_switch_argument): Only add variables to
3992         command_variables if they're not already there: duplicate settings
3993         waste space and can be confusing to read.
3994
3995         * w32/include/sub_proc.h: Remove WINDOWS32.  It's not needed since
3996         this header is never included by non-WINDOWS32 code, and it
3997         requires <config.h> to define which isn't always included first.
3998
3999         * dir.c (read_dirstream) [MINGW]: Use proper macro names when
4000         testing MINGW32 versions.
4001
4002         * main.c (log_working_directory): flush stdout to be sure the WD
4003         change is printed before any stderr messages show up.
4004
4005 2005-02-01  Paul D. Smith  <psmith@gnu.org>
4006
4007         * maintMakefile (po_repo): Update the GNU translation site URL.
4008
4009 2004-12-01  Paul D. Smith  <psmith@gnu.org>
4010
4011         * main.c (main): Change char* env_shell to struct variable shell_var.
4012         * variable.c (target_environment): Use new shell_var.
4013
4014 2004-11-30  Paul D. Smith  <psmith@gnu.org>
4015
4016         * configure.in: The old way we avoided creating build.sh from
4017         build.sh.in before build.sh.in exists doesn't work anymore; we
4018         have to use raw M4 (thanks to Andreas Schwab <schwab@suse.de> for
4019         the help!).  This also keeps automake from complaining.
4020         * Makefile.am (README): Add a dummy target so automake won't
4021         complain that this file doesn't exist when we checkout from CVS.
4022         * maintMakefile (.dep_segment): Rewrite this rule since newer
4023         versions of automake don't provide DEP_FILES.
4024
4025 2004-11-30  Boris Kolpackov  <boris@kolpackov.net>
4026
4027         Implementation of `realpath' and `abspath' built-in functions.
4028
4029         * configure.in: Check for realpath.
4030         * function.c (abspath): Return an absolute file name that does
4031         not contain any `.' or `..' components, nor repeated `/'.
4032         * function.c (func_abspath): For each name call abspath.
4033         * function.c (func_realpath): For each name call realpath
4034         from libc or delegate to abspath if realpath is not available.
4035         * doc/make.texi (Functions for File Names): Document new functions.
4036         * doc/make.texi (Quick Reference): Ditto.
4037
4038 2004-11-28  Paul D. Smith  <psmith@gnu.org>
4039
4040         * main.c (main) [WINDOWS32]: Remove any trailing slashes from -C
4041         arguments.  Fixes bug #10252.
4042
4043         Fix for bug #1276: Handle SHELL according to POSIX requirements.
4044
4045         * main.c (main): Set SHELL to v_noexport by default.  Remember the
4046         original environment setting of SHELL in the env_shell variable.
4047         * main.h: Export new env_shell variable.
4048         * variable.c (target_environment): If we find a v_noexport
4049         variable for SHELL, add a SHELL variable with the env_shell value.
4050         * doc/make.texi (Quick Reference): Document the POSIX behavior.
4051         * doc/make.texi (Variables/Recursion): Ditto.
4052
4053 2004-11-28  Paul D. Smith  <psmith@gnu.org>
4054
4055         * main.c (find_and_set_default_shell) [WINDOWS32]: check for
4056         equality of "cmd"/"cmd.exe", not inequality.  Fixes bug #11155.
4057         Patch by Alessandro Vesely.
4058
4059 2004-11-12  Paul D. Smith  <psmith@gnu.org>
4060
4061         * job.c (child_execute_job) [VMS]: Don't treat "#" as a comment on
4062         the command line if it's inside a string.
4063         Patch by: Hartmut Becker <Hartmut.Becker@hp.com>
4064
4065 2004-10-21  Boris Kolpackov  <boris@kolpackov.net>
4066
4067         * function.c (func_lastword): New function: return last word
4068         from the list of words.
4069         * doc/make.texi: Document $(lastword ). Fix broken links in
4070         Quick Reference section.
4071
4072 2004-10-06  Paul D. Smith  <psmith@gnu.org>
4073
4074         Apply patch from Alessandro Vesely, provided with bug # 9748.
4075         Fix use of tmpnam() to work with Borland C.
4076
4077         * job.c (construct_command_argv_internal) [WINDOWS32]: Remove
4078         construction of a temporary filename, and call new function
4079         create_batch_filename().
4080         (create_batch_filename) [WINDOWS32]: New function to create a
4081         temporary filename.
4082
4083 2004-10-05  Boris Kolpackov  <boris@kolpackov.net>
4084
4085         * read.c (record_target_var): Expand simple pattern-specific
4086         variable.
4087         * variable.c (initialize_file_variables): Do not expand simple
4088         pattern-specific variable.
4089
4090 2004-09-28  Boris Kolpackov  <boris@kolpackov.net>
4091
4092         * remake.c (update_file_1): When rebuilding makefiles inherit
4093         dontcare flag from a target that triggered update.
4094
4095 2004-09-27  Boris Kolpackov  <boris@kolpackov.net>
4096
4097         * variable.c (initialize_file_variables): Mark pattern-specific
4098         variable as a per-target and copy export status.
4099
4100 2004-09-21  Boris Kolpackov  <boris@kolpackov.net>
4101
4102         * file.c (snap_deps): Mark .PHONY prerequisites as targets.
4103
4104         * implicit.c (pattern_search): When considering an implicit rule's
4105         prerequisite check that it is actually a target rather then
4106         just an entry in the file hashtable.
4107
4108 2004-09-21  Paul D. Smith  <psmith@gnu.org>
4109
4110         * read.c (readstring): Fix some logic errors in backslash handling.
4111         (eval): Remove some unnecessary processing in buffer handling.
4112         (record_target_var): Assert that parse_variable_definition() succeeded.
4113         Reported by: Markus Mauhart <qwe123@chello.at>.
4114
4115         * misc.c: Removed the sindex() function.  All instances of this
4116         function were trivially replaceable by the standard strstr()
4117         function, and that function will always have better (or certainly
4118         no worse) performance than the very simple-minded algorithm
4119         sindex() used.  This can matter with complex makefiles.
4120         * make.h: Remove the prototype for sindex().
4121         * function.c (subst_expand): Convert sindex() call to strstr().
4122         This means we no longer need to track the TLEN value so remove that.
4123         (func_findstring): Convert sindex() to strstr().
4124         * commands.c (chop_commands): Convert sindex() calls to strstr().
4125         Suggested by: Markus Mauhart <qwe123@chello.at>.
4126
4127         * main.c (find_and_set_default_shell) [WINDOWS32]: Implement the
4128         idea behind Savannah Patch #3144 from david.baird@homemail.com.
4129         If SHELL is set to CMD.EXE then assume it's batch-mode and
4130         non-unixy.  I wrote the code differently from the patch, though,
4131         to make it safer.  This also resolves bug #9174.
4132
4133 2004-09-20  Paul D. Smith  <psmith@gnu.org>
4134
4135         * expand.c (variable_expand_string): Modify to invoke
4136         patsubst_expand() instead of subst_expand(); the latter didn't
4137         handle suffix patterns correctly.
4138         * function.c (subst_expand): Remove the SUFFIX_ONLY parameter; it
4139         was used only from variable_expand_string() and is no longer used
4140         there.
4141         (func_subst): Ditto, on call to subst_expand().
4142         (patsubst_expand): Require the percent pointers to point to the
4143         character after the %, not to the % itself.
4144         * read.c (record_files): New call criteria for patsubst_expand().
4145         * variable.h: Remove SUFFIX_ONLY from subst_expand() prototype.
4146         This is to fix a bug reported by Markus Mauhart <qwe123@chello.at>.
4147
4148 2004-09-19  Paul D. Smith  <psmith@gnu.org>
4149
4150         * function.c (subst_expand): Fix a check in by_word: look for a
4151         previous blank if we're beyond the beginning of the string, not
4152         the beginning of the word.
4153         Bugs reported by Markus Mauhart <qwe123@chello.at>.
4154
4155 2004-05-16  Paul D. Smith  <psmith@gnu.org>
4156
4157         * remake.c (update_goal_chain): Change the argument specifying
4158         whether we're rebuilding makefiles to be a global variable,
4159         REBUILDING_MAKEFILES.
4160         (complain): Extract the code that complains about no rules to make
4161         a target into a separate function.
4162         (update_file_1): If we tried to rebuild a file during the makefile
4163         rebuild phase and it was dontcare, then no message was printed.
4164         If we then try to build the same file during the normal build,
4165         print a message this time.
4166         (remake_file): Don't complain about un-remake-able files when
4167         we're rebuilding makefiles.
4168
4169 2004-05-11  Paul D. Smith  <psmith@gnu.org>
4170
4171         * job.c (construct_command_argv_internal): OS/2 patches from
4172         Andreas Buening <andreas.buening@nexgo.de>.
4173
4174 2004-05-10  Paul D. Smith  <psmith@gnu.org>
4175
4176         * remake.c (update_file): Don't walk the double-colon chain unless
4177         this is a double-colon rule.  Fix suggested by Boris Kolpackov
4178         <boris@kolpackov.net>.
4179
4180         * makefile.vms (CFLAGS): Remove glob/globfree (see readme.vms docs)
4181         * readme.vms: New section describing OpenVMS support and issues.
4182         * default.c (default_variables): Add support for IA64.
4183         * job.c (tryToSetupYAst) [VMS]: On VMS running make in batch mode
4184         without some privilege aborts make with the error
4185         %SYSTEM-F-NOPRIV. It happens when setting up a handler for
4186         pressing Ctrl+Y and the input device is no terminal. The change
4187         catches this error and just continues.
4188
4189         Patches by Hartmut Becker <Hartmut.Becker@hp.com>
4190
4191 2004-04-25  Paul D. Smith  <psmith@gnu.org>
4192
4193         * commands.c (set_file_variables): Set $< properly in the face of
4194         order-only prerequisites.
4195         Patch from Boris Kolpackov <boris@kolpackov.net>
4196
4197 2004-04-21  Bob Byrnes  <byrnes@curl.com>
4198
4199         * main.c (main): Notice failures to remake makefiles.
4200
4201 2004-03-28  Paul D. Smith  <psmith@gnu.org>
4202
4203         Patches for Acorn RISC OS by Peter Naulls <peter@chocky.org>
4204
4205         * job.c: No default shell for RISC OS.
4206         (load_too_high): Hard-code the return to 1.
4207         (construct_command_argv_internal): No sh_chars or sh_cmds.
4208         * getloadavg.c: Don't set LOAD_AVE_TYPE on RISC OS.
4209
4210 2004-03-20  Paul D. Smith  <psmith@gnu.org>
4211
4212         * variable.c (do_variable_definition): Don't append from the
4213         global set if a previous non-appending target-specific variable
4214         definition exists.  Reported by Oliver Schmidt <oschmidt@gmx.net>
4215         (with fix).
4216
4217         * expand.c (reference_variable): Don't give up on variables with
4218         no value that have the target-specific append flag set: they might
4219         have a value after all.  Reported by Oliver Schmidt
4220         <oschmidt@gmx.net> (with fix) and also by Maksim A. Nikulin
4221         <nikulin@dx1cmd.inp.nsk.su>.
4222
4223         * rule.c (count_implicit_rule_limits): Don't delete patterns which
4224         refer to absolute pathnames in directories that don't exist: some
4225         portion of the makefile could create those directories before we
4226         match the pattern.  Fixes bugs #775 and #108.
4227
4228         Fixes from Jonathan R. Grant  <jg-make@jguk.org>:
4229
4230         * main.c (main): Free makefile_mtimes if we have any.
4231         * README.W32.template: Update documentation for the current status
4232         of the MS-Windows port.
4233         * NMakefile.template (MAKE): Add "MAKE = nmake".  A conflicting
4234         environment variable is sometimes already defined which causes the
4235         build to fail.
4236         * main.c (debug_signal_handler): Only define this function if
4237         SIGUSR1 is available.
4238
4239         Fixes for OS/2 from Andreas Beuning <andreas.buening@nexgo.de>:
4240
4241         * configure.in [OS/2]: Relocate setting of HAVE_SA_RESTART for OS/2.
4242         * README.OS2.template: Documentation updates.
4243         * build.template: Add LIBINTL into LOADLIBES.  Add $CFLAGS to the
4244         link line for safety.
4245         * maintMakefile (build.sh.in): Remove an extraneous ")".
4246         * job.c (child_execute_job): Close saved FDs.
4247         * job.c (exec_command) [OS/2]: exec_command(): If the command
4248         can't be exec'ed and if the shell is not Unix-sh, then try again
4249         with argv = { "cmd", "/c", ... }. Normally, this code is never
4250         reached for the cmd shell unless the command really doesn't exist.
4251         (construct_command_argv_internal) [OS/2]: The code for cmd
4252         handling now uses new_argv = { "cmd", "/c", "original line", NULL}.
4253         The CMD builtin commands are case insensitive so use strcasecmp().
4254
4255 2004-03-19  Paul D. Smith  <psmith@gnu.org>
4256
4257         * read.c (do_define): Re-order line counter increment so the count
4258         is accurate (we were losing one line per define).  Reported by
4259         Dave Yost <Dave@Yost.com>.
4260
4261 2004-03-06  Paul D. Smith  <psmith@gnu.org>
4262
4263         * configure.in (HAVE_ANSI_COMPILER): Define if we have an ANSI/ISO
4264         compiler.
4265         * make.h: Convert uses of __STDC__ to HAVE_ANSI_COMPILER.
4266         * misc.c (message,error,fatal): Ditto.
4267         * configh.dos.template: Define HAVE_ANSI_COMPILER.
4268         * config.h.W32.template: Ditto.
4269         * config.h-vms.template: Ditto.
4270         * config.ami.template: Ditto.
4271
4272 2004-03-04  Paul D. Smith  <psmith@gnu.org>
4273
4274         * README.template: Add a note about broken /bin/sh on SunOS
4275         4.1.3_U1 & 4.1.4.  Fix up Savannah links.
4276
4277         * misc.c (message, error, fatal): Don't use "..." if we're using
4278         varargs.  ansi2knr should handle this but it doesn't work: it
4279         translates "..." to va_dcl etc. but _AFTER_ the preprocessor is
4280         done.  On many systems (SunOS for example) va_dcl is a #define.
4281         So, force the use of the non-"..." version on pre-ANSI compilers.
4282
4283         * maintMakefile (sign-dist): Create some rules to help automate
4284         the new GNU ftp upload method.
4285
4286 2004-02-24  Paul D. Smith  <psmith@gnu.org>
4287
4288         * config.h.W32.template: Add HAVE_STDARG_H
4289         * config.h-vms.template: Ditto.
4290         * config.ami.template: Ditto.
4291
4292 2004-02-23  Jonathan Grant  <jg-make@jguk.org>
4293
4294         * README.W32.template: Add a notation about -j with BATCH_MODE_ONLY.
4295         * build_w32.bat: Remove extra "+".
4296
4297 2004-02-23  Paul D. Smith  <psmith@gnu.org>
4298
4299         * make.h: Create an UNUSED macro to mark unused parameters.
4300         * (many): Clean up warnings by applying UNUSED, fixing
4301         signed/unsigned incompatibilities, etc.
4302
4303         * acinclude.m4 (AC_STRUCT_ST_MTIM_NSEC): Add quoting to silence
4304         autoconf warnings.
4305         * filedef.h: Name the command_state enumeration.
4306         * file.c (set_command_state): Use the enumeration in the function
4307         argument.
4308
4309         * configure.in: Explicitly set SET_MAKE to empty, to disable
4310         MAKE=make even when no make already exists.  Fix bug #3823.
4311
4312 2004-02-22  Paul D. Smith  <psmith@gnu.org>
4313
4314         * maintMakefile: Perl script to clean up all non-CVS files.  Use
4315         it on all the subdirectories for the cvs-clean target.
4316
4317         * main.c (decode_switches): Require non-empty strings for all our
4318         string command-line options.  Fixes Debian bug # 164165.
4319
4320         * configure.in: Check for stdarg.h and varargs.h.
4321         * make.h (USE_VARIADIC): Set this if we can use variadic functions
4322         for printing messages.
4323         * misc.c: Check USE_VARIADIC instead of (obsolete) HAVE_STDVARARGS.
4324         (message): Ditto.
4325         (error): Ditto.
4326         (fatal): Ditto.
4327
4328         A number of patches for OS/2 support from Andreas Buening
4329         <andreas.buening@nexgo.de>:
4330
4331         * job.c (child_handler) [OS/2]: Allow this on OS/2 but we have to
4332         disable the SIGCHLD handler.
4333         (reap_children) [OS/2]: Remove special handling of job_rfd.
4334         (set_child_handler_action_flags) [OS/2]: Use this function in OS/2.
4335         (new_job) [OS/2]: Disable the SIGCHLD handler on OS/2.
4336         * main.c (main) [OS/2]: Special handling for paths in OS/2.
4337         * configure.in [OS/2]: Force SA_RESTART for OS/2.
4338         * Makefile.am (check-regression): Use $(EXEEXT) for Windows-type
4339         systems.
4340
4341 2004-02-21  Paul D. Smith  <psmith@gnu.org>
4342
4343         * w32/subproc/sub_proc.c (process_easy) [W32]: Christoph Schulz
4344         <mail@kristov.de> reports that if process_begin() fails we don't
4345         handle the error condition correctly in all cases.
4346         * w32/subproc/w32err.c (map_windows32_error_to_string): Make sure
4347         to have a newline on the message.
4348
4349         * job.c (construct_command_argv_internal): Add "test" to UNIX
4350         sh_cmds[].  Fixes Savannah bug # 7606.
4351
4352 2004-02-04  Paul D. Smith  <psmith@gnu.org>
4353
4354         * job.c (vms_handle_apos) [VMS]: Fix various string handling
4355         situations in VMS DCL.  Fixes Savannah bug #5533.  Fix provided by
4356         Hartmut Becker <Hartmut.Becker@hp.com>.
4357
4358 2004-01-21  Paul D. Smith  <psmith@gnu.org>
4359
4360         * job.c (load_too_high): Implement an algorithm to control the
4361         "thundering herd" problem when using -l to control job creation
4362         via the load average.  The system only recomputes the load once a
4363         second but we can start many jobs in a second.  To solve this we
4364         keep track of the number of jobs started in the last second and
4365         apply a weight to try to guess what a correct load would be.
4366         The algorithm was provided by Thomas Riedl <thomas.riedl@siemens.com>.
4367         Also fixes bug #4693.
4368         (reap_children): Decrease the job count for this second.
4369         (start_job_command): Increase the job count for this second.
4370
4371         * read.c (conditional_line): Expand the text after ifn?def before
4372         checking to see if it's a single word.  Fixes bug #7257.
4373
4374 2004-01-09  Paul D. Smith  <psmith@gnu.org>
4375
4376         * file.c (print_file): Recurse to print all targets in
4377         double-colon rules.  Fixes bug #4518, reported (with patch) by
4378         Andrew Chatham <chatham@google.com>.
4379
4380 2004-01-07  Paul D. Smith  <psmith@gnu.org>
4381
4382         * acinclude.m4: Remove make_FUNC_SETVBUF_REVERSED.
4383         * configure.in: Change make_FUNC_SETVBUF_REVERSED to
4384         AC_FUNC_SETVBUF_REVERSED.
4385
4386         * doc/make.texi (Target-specific): Fix Savannah bug #1772.
4387         (MAKE Variable): Fix Savannah bug #4898.
4388
4389         * job.c (construct_command_argv_internal): Add "!" to the list of
4390         shell escape chars.  POSIX sh allows it to appear before a
4391         command, to negate the exit code.  Fixes bug #6404.
4392
4393         * implicit.c (pattern_search): When matching an implicit rule,
4394         remember which dependencies have the ignore_mtime flag set.
4395         Original fix provided in Savannah patch #2349, by Benoit
4396         Poulot-Cazajous <Benoit.Poulot-Cazajous@jaluna.com>.
4397
4398 2003-11-22  Paul D. Smith  <psmith@gnu.org>
4399
4400         * README.W32.template (Outputs): Clarification on -j with
4401         BATCH_MODE_ONLY_SEHLL suggested by Jonathan R. Grant
4402         <jg-make@jguk.org>.
4403
4404 2003-11-02  Paul D. Smith  <psmith@gnu.org>
4405
4406         * function.c (func_if): Strip all the trailing whitespace from the
4407         condition, then don't expand it.  Fixed bug # 5798.
4408
4409         * expand.c (recursively_expand_for_file): If we're expanding a
4410         variable with no file context, then use the variable's context.
4411         Fixes bug # 6195.
4412
4413 2003-10-21  Paul D. Smith  <psmith@gnu.org>
4414
4415         * main.c (log_working_directory): Add newlines to printf()s.
4416
4417         * README.cvs: Add a note to ignore warnings during autoreconf.
4418
4419         * maintMakefile (po_repo): Set a new URL for PO file updates.
4420         (get-config/config.guess get-config/config.sub): Get these files
4421         from the Savannah config project instead of ftp.gnu.org.
4422
4423 2003-10-05  Paul Eggert  <eggert@twinsun.com>
4424
4425         * main.c (main): Avoid potential subscript error if environ has
4426         short strings.
4427
4428 2003-08-22  Paul D. Smith  <psmith@gnu.org>
4429
4430         * misc.c (xmalloc, xrealloc): Add one to 0 sizes, to cater to
4431         systems which don't yet implement the C89 standard :-/.
4432
4433 2003-07-18  Paul D. Smith  <psmith@gnu.org>
4434
4435         * dir.c (directory_contents_hash_1, directory_contents_hash_1)
4436         [WINDOWS32]: Initialize hash.
4437
4438 2003-06-19  Earnie Boyd  <earnie@uses.sf.net>
4439
4440         * dir.c (read_dirstream): Provide a workaround for broken versions of
4441         the MinGW dirent structure.
4442
4443 2003-05-30  Earnie Boyd  <earnie@users.sf.net>
4444
4445         * w32/include/dirent.h: Add __MINGW32__ filter.
4446
4447 2003-05-30  Earnie Boyd  <earnie@users.sf.net>
4448
4449         * make.h: Add global declaration of *make_host.
4450         * main.c (print_usage): Remove local declaration of *make_host.
4451         (print_version): Display "This program built for ..." after Copyright
4452         notice.
4453
4454 2003-05-30  Earnie Boyd  <earnie@users.sf.net>
4455
4456         * doc/make.texi: Change "ifinfo" to "ifnottex" as suggested by the
4457         execution of "makeinfo --html make.texi".
4458
4459 2003-04-30  Paul D. Smith  <psmith@gnu.org>
4460
4461         * build.template: Make some changes to maybe allow this script to
4462         work on DOS/Windows/OS2 systems.  Suggested by Andreas Buening.
4463
4464         * README.OS2.template: New file for OS/2 support.  Original
4465         contributed by Andreas Buening.
4466         * configure.in: Invoke new pds_AC_DOS_PATHS macro to test for
4467         DOS-style paths.
4468
4469 2003-04-19  Paul D. Smith  <psmith@gnu.org>
4470
4471         Fix bug #1405: allow a target to match multiple pattern-specific
4472         variables.
4473
4474         * rule.c (create_pattern_var, lookup_pattern_var): Move these to
4475         variable.c, where they've always belonged.
4476         * rule.h: Move the prototypes and struct pattern_var as well.
4477         * variable.c (initialize_file_variables): Invoke
4478         lookup_pattern_var() in a loop, until no more matches are found.
4479         If a match is found, create a new variable set for the target's
4480         pattern variables.  Then merge the contents of each matching
4481         pattern variable set into the target's pattern variable set.
4482         (lookup_pattern_var): Change this function to be usable
4483         in a loop.  It takes a starting position: if NULL, start at the
4484         beginning; if non-NULL, start with the pattern variable after that
4485         position, and return the next matching pattern.
4486         (create_pattern_var): Create a unique instance of
4487         pattern-specific variables for every definition in the makefile.
4488         Don't combine the same pattern together.  This allows us to
4489         process the variable handling properly even when the same pattern
4490         is used multiple times.
4491         (parse_variable_definition): New function: break out the parsing
4492         of a variable definition line from try_variable_definition.
4493         (try_variable_definition): Call parse_variable_definition to
4494         parse.
4495         (print_variable_data_base): Print out pattern-specific variables.
4496         * variable.h (struct variable): Remember when a variable is
4497         conditional.  Also remember its flavor.
4498         (struct pattern_var): Instead of keeping a variable set, we just
4499         keep a single variable for each pattern.
4500         * read.c (record_target_var): Each pattern variable contains only a
4501         single variable, not a set, so create it properly.
4502         * doc/make.texi (Pattern-specific): Document the new behavior.
4503
4504 2003-04-17  Paul D. Smith  <psmith@gnu.org>
4505
4506         * dir.c (file_exists_p) [VMS]: Patch provided with Bug #3018 by
4507         Jean-Pierre Portier <portierjp2@free.fr>.  I don't understand the
4508         file/directory naming rules for VMS so I can't tell whether this
4509         is correct or not.
4510
4511 2003-04-09  Paul D. Smith  <psmith@gnu.org>
4512
4513         * configure.in (HAVE_DOS_PATHS): Define this on systems that need
4514         DOS-style pathnames: backslash separators and drive specifiers.
4515
4516 2003-03-28  Paul D. Smith  <psmith@gnu.org>
4517
4518         * file.c (snap_deps): If .SECONDARY with no targets is given, set
4519         the intermediate flag on all targets.  Fixes bug #2515.
4520
4521 2003-03-24  Paul D. Smith  <psmith@gnu.org>
4522
4523         * configure.in, Makefile.am, glob/Makefile.am, doc/Makefile.am:
4524         Upgrade to autoconf 2.57 and automake 1.7.3.
4525
4526         * job.c: More OS/2 changes from Andreas Buening.
4527
4528         * file.c (print_file): Fix variable initialization.
4529         Fixes bug #2892.
4530
4531         * remake.c (notice_finished_file):
4532
4533         * make.h (ENULLLOOP): Set errno = 0 before invoking the command;
4534         some calls (like readdir()) return NULL in valid situations
4535         without resetting errno.  Fixes bug #2846.
4536
4537 2003-02-25  Paul D. Smith  <psmith@gnu.org>
4538
4539         Port to OS/2 (__EMX__) by Andreas Buening <andreas.buening@nexgo.de>.
4540
4541         * job.c (_is_unixy_shell) [OS/2]: New function.
4542         Set default shell to /bin/sh.
4543         (reap_children): Close the job_rfd pipe here since we don't use a
4544         SIGCHLD handler.
4545         (set_child_handler_action_flags): define this to empty on OS/2.
4546         (start_job_command): Close the jobserver pipe and use
4547         child_execute_job() instead of fork/exec.
4548         (child_execute_job): Rewrite to handle stdin/stdout FDs and spawn
4549         rather than exec'ing, then reconfigure stdin/stdout.
4550         (exec_command): Rewrite to use spawn instead of exec.  Return the
4551         PID of the child.
4552
4553         * main.c (main) [OS/2]: Call initialize_main().  Handle argv[0] as
4554         in DOS.  Handle the TEMP environment variable as in DOS.  Don't
4555         use a SIGCHLD handler on OS/2.  Choose a shell as in DOS.  Don't
4556         use -j in DOS mode.  Use child_execute_job() instead of
4557         exec_command().
4558
4559         * function.c (func_shell) [OS/2]: Can't use fork/exec on OS/2: use
4560         spawn() instead.
4561
4562         * job.h [OS/2]: Move CLOSE_ON_EXEC here from job.c.  Add
4563         prototypes that return values.
4564
4565         * remake.c (f_mtime) [OS/2]: Handle FAT timestamp offsets for OS/2.
4566
4567         * read.c (readline) [OS/2]: Don't handle CRLF specially on OS/2.
4568         * default.c (default_suffixes) [OS/2]: Set proper default suffixes
4569         for OS/2.
4570         * vpath.c (construct_vpath_list) [OS/2]: Handle OS/2 paths like
4571         DOS paths.
4572
4573 2003-02-24  Paul D. Smith  <psmith@gnu.org>
4574
4575         * default.c [VMS]: New default rules for .cxx -> .obj compiles.
4576         * job.c (child_execute_job) [VMS]: New code for handling spawn().
4577         (child_execute_job) [VMS]: Handle error status properly.
4578         Patches provided by Hartmut Becker <Hartmut.Becker@compaq.com>.
4579
4580         * function.c (func_shell): Use EINTRLOOP() while reading from the
4581         subshell pipe (Fixes bug #2502).
4582         * job.c (free_child): Use EINTRLOOP() while writing tokens to the
4583         jobserver pipe.
4584         * main.c (main): Ditto.
4585
4586 2003-01-30  Paul D. Smith  <psmith@gnu.org>
4587
4588         * read.c (eval): eval() was not fully reentrant, because the
4589         collapsed buffer was static.  Change it to be an automatic
4590         variable so that eval() can be invoked recursively.
4591         Fixes bug # 2238.
4592         (eval): Apply patch # 1022: fix memory reference error on long
4593         target-specific variable lines.
4594         Patch provided by Steve Brown <Steve.Brown@macquarie.com>.
4595
4596         * function.c (check_numeric): Combine the is_numeric() function
4597         into this function, since it's only called from one place.
4598         Constify this function.  Have it print the incorrect string in the
4599         error message.  Fixes bug #2407.
4600         (strip_whitespace): Constify.
4601         (func_if): Constify.
4602         * expand.c (expand_argument): Constify.
4603
4604 2003-01-29  Paul D. Smith  <psmith@gnu.org>
4605
4606         Fix bug # 2169, also reported by other people on various systems.
4607
4608         * make.h: Some systems, such as Solaris and PTX, do not fully
4609         implement POSIX-compliant SA_RESTART functionality; important
4610         system calls like stat() and readdir() can still fail with EINTR
4611         even if SA_RESTART has been set on the signal handler.  So,
4612         introduce macros EINTRLOOP() and ENULLLOOP() which can loop on
4613         EINTR for system calls which return -1 or 0 (NULL), respectively,
4614         on error.
4615         Also, remove the old atomic_stat()/atomic_readdir() and
4616         HAVE_BROKEN_RESTART handling.
4617
4618         * configure.in: Remove setting of HAVE_BROKEN_RESTART.
4619
4620         * arscan.c (ar_member_touch): Use EINTRLOOP() to wrap fstat().
4621         * remake.c (touch_file): Ditto.
4622
4623         * commands.c (delete_target): Use EINTRLOOP() to wrap stat().
4624         * read.c (construct_include_path): Ditto.
4625         * remake.c (name_mtime): Ditto.
4626         * vpath.c (selective_vpath_search): Ditto.
4627         * dir.c (find_directory): Ditto.
4628         (local_stat): Ditto.
4629         (find_directory): Use ENULLLOOP() to wrap opendir().
4630         (dir_contents_file_exists_p): Use ENULLLOOP() to wrap readdir().
4631
4632         * misc.c: Remove HAVE_BROKEN_RESTART, atomic_stat(), and
4633         atomic_readdir() handling.
4634
4635 2003-01-22  Paul D. Smith  <psmith@gnu.org>
4636
4637         * function.c (func_call): Fix Bug #1744.  If we're inside a
4638         recursive invocation of $(call ...), mask any of the outer
4639         invocation's arguments that aren't used by this one, so that this
4640         invocation doesn't "inherit" them accidentally.
4641
4642 2002-12-05  Paul D. Smith  <psmith@gnu.org>
4643
4644         * function.c (subst_expand): Valery Khamenia reported a
4645         pathological performance hit when doing substitutions on very
4646         large values with lots of words: turns out we were invoking
4647         strlen() a ridiculous number of times.  Instead of having each
4648         call to sindex() call strlen() again, keep track of how much of
4649         the text we've seen and pass the length to sindex().
4650
4651 2002-11-19  Paul D. Smith  <psmith@gnu.org>
4652
4653         * README.cvs, configure.in: Upgrade to require autoconf 2.56.
4654
4655
4656 2002-11-16  Paul D. Smith  <psmith@gnu.org>
4657
4658         * NMakefile.template (OBJS): Add hash.c object file.
4659         * SMakefile.template (srcs): Ditto.
4660         * Makefile.ami (objs): Ditto.
4661         * build_w32.bat: Ditto.
4662
4663         * Makefile.DOS.template: Remove extra dependencies.
4664
4665 2002-10-25  Paul D. Smith  <psmith@gnu.org>
4666
4667         * expand.c (install_variable_buffer): New function.  Install a new
4668         variable_buffer context and return the previous one.
4669         (restore_variable_buffer): New function.  Free the current
4670         variable_buffer context and put a previously saved one back.
4671         * variable.h: Prototypes for {install,restore}_variable_buffer.
4672         * function.c (func_eval): Push a new variable_buffer context
4673         before we eval, then restore the old one when we're done.
4674         Fixes Bug #1517.
4675
4676         * read.c (install_conditionals): New function.  Install a new
4677         conditional context and return the previous one.
4678         (restore_conditionals): New function.  Free the current
4679         conditional context and put a previously saved one back.
4680         (eval): Use the {install,restore}_conditionals for "include"
4681         handling.
4682         (eval_buffer): Use {install,restore}_conditionals to preserve the
4683         present conditional state before we evaluate the buffer.
4684         Fixes Bug #1516.
4685
4686         * doc/make.texi (Quick Reference): Add references to $(eval ...)
4687         and $(value ...).
4688         (Recursion): Add a variable index entry for CURDIR.
4689
4690         * README.cvs: Update to appropriate versions.
4691         * Makefile.am (nodist_loadavg_SOURCES): automake gurus point out I
4692         don't need to copy loadavg.c: automake is smart enough to create
4693         it for me.  Still have a bug in automake related to ansi2knr tho.
4694
4695 2002-10-14  Paul D. Smith  <psmith@gnu.org>
4696
4697         * remake.c (notice_finished_file): Only touch targets if they have
4698         at least one command (as per POSIX).  Resolve Bug #1418.
4699
4700         * *.c: Convert to using ANSI C-style function definitions.
4701         * Makefile.am: Enable the ansi2knr feature of automake.
4702         * configure.in: ditto.
4703
4704 2002-10-13  Paul D. Smith  <psmith@gnu.org>
4705
4706         * commands.c (set_file_variables): Bug #1379: Don't use alloca()
4707         for automatic variable values like $^, etc.  In the case of very
4708         large lists of prerequisites this causes problems.  Instead reuse
4709         a static buffer (resizeable) for each variable.
4710
4711         * read.c (eval): Fix Bug #1391: allow "export" keyword in
4712         target-specific variable definitions.  Check for it and set an
4713         "exported" flag.
4714         (record_target_var): Set the export field to v_export if the
4715         "exported" flag is set.
4716         * doc/make.texi (Target-specific): Document the ability to use
4717         "export".
4718
4719         * doc/make.texi: Change the name of the section on automatic
4720         variables from "Automatic" to "Automatic Variables".  Added text
4721         clarifying the scope of automatic variables.
4722
4723 2002-10-04  Paul D. Smith  <psmith@gnu.org>
4724
4725         * read.c (eval): Allow SysV $$@ variables to use {} braces as well
4726         as () braces.
4727         (record_files): Ditto.
4728
4729         * expand.c (variable_expand_string): In $(A:x=y) expansion limit
4730         the search for the '=' to only within the enclosing parens.
4731
4732 2002-10-03  Paul D. Smith  <psmith@gnu.org>
4733
4734         Version 3.80 released.
4735
4736         * dir.c: Change hash functions to use K&R function definition style.
4737         * function.c: Ditto.
4738         * read.c: Ditto.
4739         * variable.c: Ditto.
4740
4741         Update to automake 1.7.
4742
4743         * Makefile.am (AUTOMAKE_OPTIONS): Update to require 1.7.
4744         (pdf): Remove this target as automake now provides one.
4745
4746         * configure.in: Change AM_CONFIG_HEADER to AC_CONFIG_HEADERS.
4747
4748 2002-09-30  Martin P.J. Zinser  <zinser@decus.de>
4749
4750         * makefile.com: Updates for GNU make 3.80.
4751         * makefile.vms: Ditto.
4752
4753 2002-09-23  Paul D. Smith  <psmith@gnu.org>
4754
4755         * read.c (enum make_word_type): Remove w_comment.
4756         (get_next_mword): Don't treat comment characters as special; where
4757         this function is used we will never see a comment (it's stripped
4758         before we get here) and treating comments specially means that
4759         targets like "foo\#bar" aren't handled properly.
4760
4761 2002-09-18  Paul D. Smith  <psmith@gnu.org>
4762
4763         * doc/make.texi (Bugs): Update with some info on Savannah, etc.
4764
4765         * read.c (eval): Expansion of arguments to export/unexport was
4766         ignoring all arguments after the first one.  Change the algorithm
4767         to expand the whole line once, then parse the results.
4768
4769 2002-09-17  Paul D. Smith  <psmith@gnu.org>
4770
4771         Fix Bug #940 (plus another bug I found while looking at this):
4772
4773         * read.c (record_target_var): enter_file() will add a new entry if
4774         it's a double-colon target: we don't want to do that in this
4775         situation.  Invoke lookup_file() and only enter_file() if it does
4776         not already exist.  If the file we get back is a double-colon then
4777         add this variable to the "root" double-colon target.
4778
4779         * variable.c (initialize_file_variables): If this file is a
4780         double-colon target but is not the "root" target, then initialize
4781         the root and make the root's variable list the parent of our
4782         variable list.
4783
4784 2002-09-13  Paul D. Smith  <psmith@gnu.org>
4785
4786         * doc/make.texi (MAKE Variable): Add some indexing for "+".
4787
4788         * hash.c (round_up_2): Get rid of a warning.
4789
4790 2002-09-12  Paul D. Smith  <psmith@gnu.org>
4791
4792         * Makefile.am (loadavg_SOURCES, loadavg.c): Tiptoe around automake
4793         so it doesn't complain about getloadavg.c.
4794
4795         * commands.c (set_file_variables): Make sure we always alloca() at
4796         least 1 character for the value of $? (for '\0').
4797
4798 2002-09-11  Paul D. Smith  <psmith@gnu.org>
4799
4800         * hash.h (STRING_COMPARE, ISTRING_COMPARE, STRING_N_COMPARE): Fix
4801         macro to use RESULT instead of the incorrect _RESULT_.
4802
4803         * make.h (HAVE_BROKEN_RESTART): Add prototypes for atomic_stat()
4804         and atomic_readdir().  We need to #include dirent.h to get this to
4805         work.
4806         * misc.c (atomic_readdir): Fix typos.
4807
4808 2002-09-10  Paul D. Smith  <psmith@gnu.org>
4809
4810         * read.c (eval): Expand variable lists given to export and
4811         unexport, so that "export $(LIST_OF_VARIABLES)" (etc.) works.
4812         (conditional_line): Ditto for "ifdef".  Fixes bug #103.
4813
4814         * doc/make.texi (Variables/Recursion): Document this.
4815         (Conditional Syntax): And here.
4816
4817 2002-09-09  Paul D. Smith  <psmith@gnu.org>
4818
4819         * configure.in: Check for memmove().
4820
4821 2002-09-07  Paul D. Smith  <psmith@gnu.org>
4822
4823         * configure.in (HAVE_BROKEN_RESTART): Define this on PTX systems;
4824         Michael Sterrett <msterret@coat.com> reports that while it has
4825         SA_RESTART, it does not work properly.
4826
4827         * misc.c (atomic_stat): If HAVE_BROKEN_RESTART, create a function
4828         that invokes stat() and loops to do it again if it returns EINTR.
4829         (atomic_readdir): Ditto, with readdir().
4830
4831         * make.h (stat, readdir): If HAVE_BROKEN_RESTART, alias stat()
4832         and readdir() to atomic_stat() and atomic_readdir().
4833
4834 2002-09-04  Paul D. Smith  <psmith@gnu.org>
4835
4836         * implicit.c (pattern_search): Daniel <barkalow@reputation.com>
4837         reports that GNU make sometimes doesn't recognize that targets can
4838         be made, when directories can be created as prerequisites.  He
4839         reports that changing the order of predicates in the DEP->changed
4840         flag test so that lookup_file() is always performed, solves this
4841         problem.
4842
4843 2002-08-08  Paul D. Smith  <psmith@gnu.org>
4844
4845         * configure.in: Require a newer version of gettext.
4846
4847         * misc.c (perror_with_name): Translate the format string (for
4848         right-to-left language support).
4849         (pfatal_with_name): Ditto.
4850
4851         * main.c: Create a static array of strings to store the usage
4852         text.  This is done to facilitate translations.
4853         (struct command_switch): Remove argdesc and description fields.
4854         (switches): Remove values for obsolete fields.
4855         (print_usage): Print each element of the usage array.
4856
4857         * hash.c: Change function definitions to be K&R style.
4858
4859 2002-08-02  Paul D. Smith  <psmith@gnu.org>
4860
4861         * NEWS: Remove the mention of .TARGETS; we aren't going to publish
4862         this one because it's too hard to get right.  We'll look at it for
4863         a future release.
4864         * main.c (main): Don't create the .TARGETS variable.
4865         * variable.c (handle_special_var): Don't handle .TARGETS.
4866
4867 2002-08-01  Paul D. Smith  <psmith@gnu.org>
4868
4869         * main.c (switches): Add a new option, -B (--always-make).  If
4870         specified, make will rebuild all targets that it encounters even
4871         if they don't appear to be out of date.
4872         (always_make_flag): New flag.
4873         * make.h: Extern always_make_flag.
4874         * remake.c (update_file_1): Check always_make_flag; if it's set we
4875         will always rebuild any target we can, even if none of its
4876         prerequisites are newer.
4877         * NEWS: Mention it.
4878
4879         * doc/make.texi (Shell Function): Make it clear that make
4880         variables marked as "export" are not passed to instances of the
4881         shell function.
4882
4883         Add new introspection variable .VARIABLES and .TARGETS.
4884
4885         * variable.c (handle_special_var): New function.  If the variable
4886         reference passed in is "special" (.VARIABLES or .TARGETS),
4887         calculate the new value if necessary.  .VARIABLES is handled here:
4888         walk through the hash of defined variables and construct a value
4889         which is a list of the names.  .TARGETS is handled by
4890         build_target_list().
4891         (lookup_variable): Invoke handle_special_var().
4892         * file.c (build_target_list): Walk through the hask of known files
4893         and construct a list of the names of all the ones marked as
4894         targets.
4895         * main.c (main): Initialize them to empty (and as simple variables).
4896         * doc/make.texi (Special Variables): Document them.
4897         * NEWS: Mention them.
4898
4899         * variable.h (struct variable): Add a new flag "exportable" which
4900         is true if the variable name is valid for export.
4901         * variable.c (define_variable_in_set): Set "exportable" when a new
4902         variable is defined.
4903         (target_environment): Use the "exportable" flag instead of
4904         re-checking the name here... an efficiency improvement.
4905
4906 2002-07-31  Paul D. Smith  <psmith@gnu.org>
4907
4908         * config.h-vms.template: Updates to build on VMS.  Thanks to
4909         Brian_Benning@aksteel.com for helping verify the build.
4910         * makefile.com: Build the new hash.c file.
4911         * hash.h: Use strcpmi(), not stricmp(), in the
4912         HAVE_CASE_INSENSITIVE_FS case.
4913
4914 2002-07-30  Paul D. Smith  <psmith@gnu.org>
4915
4916         * hash.h (ISTRING_COMPARE, return_ISTRING_COMPARE): Add missing
4917         backslashes to the HAVE_CASE_INSENSITIVE_FS case.
4918         Reported by <Brian_Benning@aksteel.com>.
4919
4920 2002-07-10  Paul D. Smith  <psmith@gnu.org>
4921
4922         * variable.c (pop_variable_scope): Remove variable made unused by
4923         new hash infrastructure.
4924         * read.c (dep_hash_cmp): Rewrite this to handle ignore_mtime
4925         comparisons as well as name comparisons.
4926         * variable.h: Add a prototype for new hash_init_function_table().
4927         * file.c (lookup_file): Remove variables made unused by new hash
4928         infrastructure.
4929         * dir.c (directory_contents_hash_2): Missing return of hash value.
4930         (dir_contents_file_exists_p): Remove variables made unused by new
4931         hash infrastructure.
4932
4933
4934         Installed Greg McGary's integration of the hash functions from the
4935         GNU id-utils package:
4936
4937 2002-07-10  Greg McGary  <greg@mcgary.org>
4938
4939         * scripts/functions/filter-out: Add literals to to the
4940         pattern space in order to add complexity, and trigger
4941         use of an internal hash table.  Fix documentation strings.
4942         * scripts/targets/INTERMEDIATE: Reverse order of files
4943         passed to expected `rm' command.
4944
4945 2002-07-10  Greg McGary  <greg@mcgary.org>
4946
4947         * Makefile.am (SRCS): Add hash.c (noinst_HEADERS): Add hash.h
4948         * hash.c: New file, taken from id-utils.
4949         * hash.h: New file, taken from id-utils.
4950
4951         * make.h (HASH, HASHI): Remove macros.
4952         (find_char_unquote): Change arglist in decl.
4953         (hash_init_directories): New function decl.
4954         * variable.h (hash.h): New #include.
4955         (MAKELEVEL_NAME, MAKELEVEL_LENGTH): New constants.
4956         * filedef.h (hash.h): New #include.
4957         (struct file) [next]: Remove member.
4958         (file_hash_enter): Remove function decl.
4959         (init_hash_files): New function decl.
4960
4961         * ar.c (ar_name): Delay call to strlen until needed.
4962         * main.c (initialize_global_hash_tables): New function.
4963         (main): Call it.  Use MAKELEVEL_NAME & MAKELEVEL_LENGTH.
4964         * misc.c (remove_comments): Pass char constants to find_char_unquote.
4965         * remake.c (notice_finished_file): Update last_mtime on `prev' chain.
4966
4967         * dir.c (hash.h): New #include.
4968         (struct directory_contents) [next, files]: Remove members.
4969         [ctime]: Add member for VMS.  [dirfiles]: Add hash-table member.
4970         (directory_contents_hash_1, directory_contents_hash_2,
4971         directory_contents_hash_cmp): New functions.
4972         (directories_contents): Change type to `struct hash_table'.
4973         (struct directory) [next]: Remove member.
4974         (directory_hash_1, directory_hash_2, directory_hash_cmp): New funcs.
4975         (directory): Change type to `struct hash_table'.
4976         (struct dirfile) [next]: Remove member.
4977         [length]: Add member.  [impossible]: widen type to fill alignment gap.
4978         (dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp): New functions.
4979         (find_directory): Use new hash table package.
4980         (dir_contents_file_exists_p): Likewise.
4981         (file_impossible): Likewise.
4982         (file_impossible_p): Likewise.
4983         (print_dir_data_base): Likewise.
4984         (open_dirstream): Likewise.
4985         (read_dirstream): Likewise.
4986         (hash_init_directories): New function.
4987
4988         * file.c (hash.h): New #include.
4989         (file_hash_1, file_hash_2, file_hash_cmp): New functions.
4990         (files): Change type to `struct hash_table'.
4991         (lookup_file): Use new hash table package.
4992         (enter_file): Likewise.
4993         (remove_intermediates): Likewise.
4994         (snap_deps): Likewise.
4995         (print_file_data_base): Likewise.
4996
4997         * function.c
4998         (function_table_entry_hash_1, function_table_entry_hash_2,
4999         function_table_entry_hash_cmp): New functions.
5000         (lookup_function): Remove `table' argument.
5001         Use new hash table package.
5002         (struct a_word) [chain, length]: New members.
5003         (a_word_hash_1, a_word_hash_2, a_word_hash_cmp): New functions.
5004         (struct a_pattern): New struct.
5005         (func_filter_filterout): Pass through patterns noting boundaries
5006         and '%', if present.  Note a_word length.  Use a hash table if
5007         arglists are large enough to justify cost.
5008         (function_table_init): Renamed from function_table.
5009         (function_table): Declare as `struct hash_table'.
5010         (FUNCTION_TABLE_ENTRIES): New constant.
5011         (hash_init_function_table): New function.
5012
5013         * read.c (hash.h): New #include.
5014         (read_makefile): Pass char constants to find_char_unquote.
5015         (dep_hash_1, dep_hash_2, dep_hash_cmp): New functions.
5016         (uniquize_deps): Use hash table to efficiently identify duplicates.
5017         (find_char_unquote): Accept two char-constant stop chars, rather
5018         than a string constant, avoiding zillions of calls to strchr.
5019         Tighten inner search loops to test only for desired delimiters.
5020
5021         * variable.c (variable_hash_1, variable_hash_2,
5022         variable_hash_cmp): New functions.
5023         (variable_table): Declare as `struct hash_table'.
5024         (global_variable_set): Remove initialization.
5025         (init_hash_global_variable_set): New function.
5026         (define_variable_in_set): Use new hash table package.
5027         (lookup_variable): Likewise.
5028         (lookup_variable_in_set): Likewise.
5029         (initialize_file_variables): Likewise.
5030         (pop_variable_scope): Likewise.
5031         (create_new_variable_set): Likewise.
5032         (merge_variable_sets): Likewise.
5033         (define_automatic_variables): Likewise.
5034         (target_environment): Likewise.
5035         (print_variable_set): Likewise.
5036
5037 2002-07-10  Paul D. Smith  <psmith@gnu.org>
5038
5039         Implement the SysV make syntax $$@, $$(@D), and $$(@F) in the
5040         prerequisite list.  A real SysV make will expand the entire
5041         prerequisites list _twice_: we don't do that as it's a big
5042         backward-compatibility problem.  We only replace those specific
5043         variables.
5044
5045         * read.c (record_files): Replace any $@, $(@D), and $(@F) variable
5046         references left in the list of prerequisites.  Check for .POSIX as
5047         we record targets, so we can disable non-POSIX behavior while
5048         reading makefiles as well as running them.
5049         (eval): Check the prerequisite list to see if we have anything
5050         that looks like a SysV prerequisite variable reference.
5051
5052 2002-07-09  Paul D. Smith  <psmith@gnu.org>
5053
5054         * doc/make.texi (Prerequisite Types): Add a new section describing
5055         order-only prerequisites.
5056
5057         * read.c (uniquize_deps): If we have the same file as both a
5058         normal and order-only prereq, get rid of the order-only prereq,
5059         since the normal one supersedes it.
5060
5061 2002-07-08  Paul D. Smith  <psmith@gnu.org>
5062
5063         * AUTHORS: Added Greg McGary to the AUTHORS file.
5064         * NEWS: Blurbed order-only prerequisites.
5065         * file.c (print_file): Show order-only deps properly when printing
5066         the database.
5067
5068         * maintMakefile: Add "update" targets for wget'ing the latest
5069         versions of various external files.  Taken from Makefile.maint in
5070         autoconf, etc.
5071
5072         * dosbuild.bat: Somehow we got _double_ ^M's.  Remove them.
5073         Reported by Eli Zaretskii <eliz@is.elta.co.il>.
5074
5075 2002-07-07  Paul D. Smith  <psmith@gnu.org>
5076
5077         * po/*.po: Remove.  We'll use wget to retrieve them at release
5078         time.
5079
5080         * variable.c (do_variable_definition) [W32]: On W32 using cmd
5081         rather than a shell you get an exception.  Make sure we look up
5082         the variable.  Patch provided by Eli Zaretskii <eliz@is.elta.co.il>.
5083
5084         * remake.c (notice_finished_file): Fix handling of -t flag.
5085         Patch provided by Henning Makholm <henning@makholm.net>.
5086
5087         * implicit.c (pattern_search): Some systems apparently run short
5088         of stack space, and using alloca() in this function caused an
5089         overrun.  I modified it to use xmalloc() on the two variables
5090         which seemed like they might get large.  Fixes Bug #476.
5091
5092         * main.c (print_version): Update copyright notice to conform with
5093         GNU standards.
5094         (print_usage): Update help output.
5095
5096         * function.c (func_eval): Create a new make function, $(eval
5097         ...).  Expand the arguments, put them into a buffer, then invoke
5098         eval_buffer() on the resulting string.
5099         (func_quote): Create a new function, $(quote VARNAME).  Inserts
5100         the value of the variable VARNAME without expanding it any
5101         further.
5102
5103         * read.c (struct ebuffer): Change the linebuffer structure to an
5104         "eval buffer", which can be either a file or a buffer.
5105         (eval_makefile): Move the code in the old read_makefile() which
5106         located a makefile into here: create a struct ebuffer with that
5107         information.  Have it invoke the new function eval() with that
5108         ebuffer.
5109         (eval_buffer): Create a new function that creates a struct ebuffer
5110         that holds a string buffer instead of a file.  Have it invoke
5111         eval() with that ebuffer.
5112         (eval): New function that contains the guts of the old
5113         read_makefile() function: this function parses makefiles.  Obtains
5114         data to parse from the provided ebuffer.  Some modifications to
5115         make the flow of the function cleaner and clearer.  Still could
5116         use some work here...
5117         (do_define): Takes a struct ebuffer instead of a FILE*.  Read the
5118         contents of the define/endef variable from the ebuffer.
5119         (readstring): Read the next line from a string-style ebuffer.
5120         (readline): Read the next line from an ebuffer.  If it's a string
5121         ebuffer, invoke readstring().  If it's a FILE* ebuffer, read it
5122         from the file.
5123
5124         * dep.h (eval_buffer): Prototype eval_buffer();
5125
5126         * variable.c (do_variable_definition): Make sure that all
5127         non-target-specific variables are registered in the global set.
5128         If we're invoked from an $(eval ...) we might be inside a $(call
5129         ...) or other function which has pushed a variable scope; we still
5130         want to define our variables from evaluated makefile code in the
5131         global scope.
5132
5133 2002-07-03  Greg McGary  <greg@mcgary.org>
5134
5135         * dep.h (struct dep) [ignore_mtime]: New member.
5136         [changed]: convert to a bitfield.
5137         * implicit.c (pattern_search): Zero ignore_mtime.
5138         * main.c (main, handle_non_switch_argument): Likewise.
5139         * rule.c (convert_suffix_rule): Likewise.
5140         * read.c (read_all_makefiles, read_makefile, multi_glob): Likewise.
5141         (read_makefile): Parse '|' in prerequisite list.
5142         (uniquize_deps): Consider ignore_mtime when comparing deps.
5143         * remake.c (update_file_1, check_dep): Don't force remake for
5144         dependencies that have d->ignore_mtime.
5145         * commands.c (FILE_LIST_SEPARATOR): New constant.
5146         (set_file_variables): Don't include a
5147         prerequisite in $+, $^ or $? if d->ignore_mtime.
5148         Define $|.
5149
5150 2002-06-18  Paul D. Smith  <psmith@gnu.org>
5151
5152         * make.texinfo: Updates for next revision.  New date/rev/etc.
5153         Recreate all Info menus.  Change license on the manual to the GNU
5154         Free Documentation License.  A number of typos.
5155         (Variables Simplify): Don't use "-" before it's defined.
5156         (Automatic Prerequisites): Rewrite the target example to work
5157         properly if the compile fails.  Remove incorrect comments about
5158         how "set -e" behaves.
5159         (Text Functions): Move the "word", "wordlist", "words", and
5160         "firstword" functions here, from "File Name Functions".
5161         * make-stds.texi: Update from latest GNU version.
5162         * fdl.texi: (created) Import the latest GNU version.
5163
5164 2002-06-06  Paul D. Smith  <psmith@gnu.org>
5165
5166         * variable.c (do_variable_definition): New function: extract the
5167         part of try_variable_definition() that actually sets the value
5168         into a separate function.
5169         (try_variable_definition): Call do_variable_definition() after
5170         parsing the variable definition string.
5171         (define_variable_in_set): Make the name argument const.
5172
5173         * variable.h (enum variable_flavor): Make public.
5174         (do_variable_definition): Create prototype.
5175
5176         * read.c (read_all_makefiles): Create a new built-in variable,
5177         MAKEFILE_LIST.
5178         (read_makefile): Add each makefile read in to this variable value.
5179
5180 2002-05-18  Eli Zaretskii  <eliz@is.elta.co.il>
5181
5182         * Makefile.DOS.template: Tweak according to changes in the
5183         distribution.  Add back the dependencies of *.o files.
5184
5185         * configh.dos.template: Synchronize with config.h.in.
5186
5187 2002-05-09  Paul D. Smith  <psmith@gnu.org>
5188
5189         * file.c (file_timestamp_now): Use K&R function declaration.
5190
5191         * getloadavg.c (getloadavg): Merge setlocale() fix from sh-utils
5192         getloadavg.c.  Autoconf thinks QNX is SVR4-like, but it isn't, so
5193         #undef it.  Remove predefined setup of NLIST_STRUCT.  Decide
5194         whether to include nlist.h based on HAVE_NLIST_H.  Change obsolete
5195         NLIST_NAME_UNION to new HAVE_STRUCT_NLIST_N_UN_N_NAME.
5196         * configure.in (NLIST_STRUCT): Define this if we have nlist.h and
5197         nlist.n_name is a pointer rather than an array.
5198
5199         * acinclude.m4 (make_FUNC_SETVBUF_REVERSED): Grab the latest
5200         version of AC_FUNC_SETVBUF_REVERSED from autoconf CVS.
5201         * configure.in: Use it instead of the old version.
5202
5203         * main.c (main): Prefer setvbuf() to setlinebuf().
5204
5205 2002-05-08  Paul D. Smith  <psmith@gnu.org>
5206
5207         * Makefile.am (make_LDADD): Add GETLOADAVG_LIBS.
5208         (loadavg_LDADD): Ditto.
5209
5210 2002-04-29  Paul D. Smith  <psmith@gnu.org>
5211
5212         * expand.c (recursively_expand_for_file): Rename
5213         recursively_expand() to recursively_expand_for_file() and provide
5214         an extra argument, struct file.  If the argument is provided, set
5215         the variable scope to that of the file before expanding.
5216         * variable.h (recursively_expand): Make this a macro that invokes
5217         recursively_expand_for_file() with a NULL file pointer.
5218         * variable.c (target_environment): Call the renamed function and
5219         provide the current file context.
5220         Fixes Debian bug #144306.
5221
5222 2002-04-28  Paul D. Smith  <psmith@gnu.org>
5223
5224         Allow $(call ...) user-defined variables to be self-referencing
5225         without throwing an error.  Allows implementation of transitive
5226         closures, among other possibly useful things.
5227         Requested by: Philip Guenther <guenther@sendmail.com>
5228
5229         * variable.h (struct variable): Add a new field: exp_count, and
5230         new macros to hold its size and maximum value.
5231         (warn_undefined): Make this a macro.
5232         * variable.c (define_variable_in_set): Initialize it.
5233         * expand.c (recursively_expand): If we detect recursive expansion
5234         of a variable, check the exp_count field.  If it's greater than 0
5235         allow the recursion and decrement the count.
5236         (warn_undefined): Remove this (now a macro in variable.h).
5237         * function.c (func_call): Before we expand the user-defined
5238         function, modify its exp_count field to contain the maximum
5239         number of recursive calls we'll allow.  After the call, reset it
5240         to 0.
5241
5242 2002-04-21  Paul D. Smith  <psmith@gnu.org>
5243
5244         Modified to use latest autoconf (2.53), automake (1.6.1), and
5245         gettext (0.11.1).  We're using gettext's new "external" support,
5246         to avoid including libintl source with GNU make.
5247
5248         * README.cvs: New file.  Explain how to build GNU make from CVS.
5249
5250         * configure.in: Modify checking for the system glob library.
5251         Use AC_EGREP_CPP instead of AC_TRY_CPP.  Remove the setting of
5252         GLOBDIR (we will always put "glob" in SUBDIRS, so automake
5253         etc. will manage it correctly).  Set an automake conditional
5254         USE_LOCAL_GLOB to decide whether to compile the glob library.
5255
5256         * getloadavg.c (main): Include make.h in the "TEST" program to
5257         avoid warnings.
5258
5259         * Makefile.am: Remove special rules for loadavg.  Replace them
5260         with Automake capabilities for building extra programs.
5261
5262         * signame.c: This file does nothing if the system provide
5263         strsignal().  If not, it implements strsignal().  If the system
5264         doesn't define sys_siglist, then we make our own; otherwise we use
5265         the system version.
5266         * signame.h: Removed.
5267
5268         * main.c (main): No need to invoke signame_init().  Update copyright.
5269
5270         * ABOUT-NLS: Removed.
5271         * gettext.c: Removed.
5272         * gettext.h: Get a simplified copy from the gettext package.
5273         * po/*: Created.
5274         * i18n/*.po: Moved to po/.
5275         * i18n/: Removed.
5276
5277         * config/*: Created.  Contains package configuration helper files.
5278         * config.guess, config.sub: Moved to config directory.
5279
5280         * configure.in (AC_CONFIG_FILES): Add po/Makefile.in, config/Makefile.
5281         Rework to use new-style autoconf features.  Use the "external"
5282         mode for gettext.  Make the build.sh config file conditional on
5283         whether build.sh.in exists, to avoid autoconf errors.
5284         * acinclude.m4: Removed almost all macros as being obsolete.
5285         Rewrote remaining macros to use AC_DEFINE.
5286         * acconfig.h: Removed.
5287
5288         * Makefile.am (EXTRA_DIST): Add config/config.rpath.  Use a
5289         conditional to handle customs support.  Remove special handling
5290         for i18n features.
5291
5292 2002-04-20  Paul D. Smith  <psmith@gnu.org>
5293
5294         * function.c (func_call): Don't mark the argument variables $1,
5295         etc. as recursive.  They've already been fully expanded so
5296         there's no need to do it again, and doing so strips escaped $'s.
5297         Reported by Sebastian Glita <glseba@yahoo.com>.
5298
5299         * remake.c (notice_finished_file): Walk through double-colon
5300         entries via the prev field, not the next field!
5301         Reported by Greg McGary <greg@mcgary.org>.
5302
5303         * main.c (main): If the user specifies -q and asks for a specific
5304         target which is a makefile, we got an assert.  In that case it
5305         turns out we should continue normally instead.
5306
5307         * i18n/de.po, i18n/fr.po: Installed an updated translation.
5308
5309         * i18n/he.po: Installed a new translation.
5310
5311 2002-01-07  Paul D. Smith  <psmith@gnu.org>
5312
5313         * i18n/es.po, i18n/ru.po: Installed an updated translation.
5314
5315 2001-12-04  Paul D. Smith  <psmith@gnu.org>
5316
5317         * i18n/ja.po: Installed an updated translation.
5318
5319 2001-09-06  Paul Eggert  <eggert@twinsun.com>
5320
5321         * configure.in (AC_CHECK_HEADERS): Add sys/resource.h.
5322         (AC_CHECK_FUNCS): Add getrlimit, setrlimit.
5323
5324         * main.c: Include <sys/resource.h> if it, getrlimit, and setrlimit
5325         are available.
5326         (main): Get rid of any avoidable limit on stack size.
5327
5328 2001-09-04  Paul D. Smith  <psmith@gnu.org>
5329
5330         * i18n/da.po: Installed an updated translation.
5331
5332 2001-08-03  Paul D. Smith  <psmith@gnu.org>
5333
5334         * i18n/fr.po: Installed an updated translation.
5335         Resolves Debian bug #106720.
5336
5337 2001-06-13  Paul D. Smith  <psmith@gnu.org>
5338
5339         * i18n/da.po, configure.in (ALL_LINGUAS): Installed a new
5340         translation.
5341
5342 2001-06-11  Paul D. Smith  <psmith@gnu.org>
5343
5344         * i18n/ko.po: Installed a new translation.
5345
5346 2001-05-06  Paul D. Smith  <psmith@gnu.org>
5347
5348         Modify the EINTR handling.
5349
5350         * job.c (new_job): Reorganize the jobserver algorithm.  Reorder
5351         the way in which we manage the file descriptor/signal handler race
5352         trap to be more efficient.
5353
5354 2001-05-06  Paul Eggert  <eggert@twinsun.com>
5355
5356         Restart almost all system calls that are interrupted, instead
5357         of worrying about EINTR.  The lone exception is the read() for
5358         job tokens.
5359
5360         * configure.in (HAVE_SA_RESTART): New macro.
5361         (MAKE_JOBSERVER): Define to 1 only if HAVE_SA_RESTART.
5362         * main.c (main): Use SA_RESTART instead of the old,
5363         nonstandard SA_INTERRUPT.
5364
5365         * configure.in (AC_CHECK_FUNCS): Add bsd_signal.
5366         * main.c (bsd_signal): New function or macro,
5367         if the implementation doesn't supply it.
5368         (The bsd_signal function will be in POSIX 1003.1-200x.)
5369         (HANDLESIG): Remove.
5370         (main, FATAL_SIG): Use bsd_signal instead of signal or HANDLESIG.
5371
5372         * make.h (EINTR_SET): Remove.
5373         (SA_RESTART): New macro.
5374
5375         * arscan.c (ar_member_touch): Don't worry about EINTR.
5376         * function.c (func_shell): Likewise.
5377         * job.c (reap_children, free_child, new_job): Likewise.
5378         * main.c (main): Likewise.
5379         * remake.c (touch_file, name_mtime): Likewise.
5380
5381         * arscan.c (ar_member_touch): Fix bug uncovered by EINTR removal;
5382         if fstat failed with errno!=EINTR, the error was ignored.
5383
5384         * job.c (set_child_handler_action_flags): New function.
5385         (new_job): Use it to temporarily clear the SIGCHLD action flags
5386         while reading the token.
5387
5388 2001-05-02  Paul D. Smith  <psmith@gnu.org>
5389
5390         * job.c (start_job_command): Don't add define/endef per-line flags
5391         to the top-level flags setting.
5392
5393 2001-04-03  Paul D. Smith  <psmith@gnu.org>
5394
5395         * arscan.c (VMS_get_member_info,ar_scan) [VMS]: VMS sets the low
5396         bit on error, so check for odd return values, not non-0 return
5397         values.
5398         (VMS_get_member_info): Calculate the timezone differences correctly.
5399         Reported by John Fowler <jfowler@nyx.net>.
5400
5401
5402 2001-03-14  Paul D. Smith  <psmith@gnu.org>
5403
5404         * variable.c (lookup_variable) [VMS]: Null-terminate the variable
5405         value before invoking define_variable().
5406         Reported by John Fowler <jfowler@nyx.net>.
5407
5408 2001-02-07  Paul D. Smith  <psmith@gnu.org>
5409
5410         * read.c (record_target_var): If we reset the variable due to a
5411         command-line variable setting overriding it, turn off the "append"
5412         flag.
5413
5414 2001-01-17  Paul D. Smith  <psmith@gnu.org>
5415
5416         * variable.c (lookup_variable) [VMS]: When getting values from the
5417         environment, allocate enough space for the _value_ plus escapes,
5418         not enough space for the name plus escapes :-/.
5419         Reported by John Fowler <jfowler@nyx.net>.
5420
5421         * remake.c (f_mtime): Removed the "***" prefix from the mod time
5422         warnings that make generates, so it doesn't look like an error.
5423         Reported by Karl Berry <karl@gnu.org>.
5424
5425
5426         Fix for PR/2020:  Rework appended target-specific variables.  I'm
5427         fairly confident this algorithm is finally correct.
5428
5429         * expand.c (allocated_variable_append): Rewrite.  Instead of
5430         expanding each appended variable then adding all the expanded
5431         strings together, we append all the unexpanded values going up
5432         through the variable set contexts, then expand the final result.
5433         This behaves just like non-target-specific appended variable
5434         values, while the old way didn't in various corner cases.
5435         (variable_append): New function: recursively append the unexpanded
5436         value of a variable, walking from the outermost variable scope to
5437         the innermost.
5438         * variable.c (lookup_variable): Remove the code that looked up the
5439         variable set list if the found variable was "append".  We don't
5440         need this anymore.
5441         (lookup_variable_in_set): Make this non-static so we can use it
5442         elsewhere.
5443         (try_variable_definition): Use lookup_variable_in_set() rather
5444         than faking out current_variable_set_list by hand (cleanup).
5445         * variable.h: Add a prototype for the now non-static
5446         lookup_variable_in_set().
5447
5448 2000-11-17  Paul D. Smith  <psmith@gnu.org>
5449
5450         * remake.c (f_mtime) [WINDOWS32]: On various advice, I changed the
5451         WINDOWS32 port to assume timestamps can be up to 3 seconds away
5452         before throwing a fit.
5453
5454 2000-11-17  Paul D. Smith  <psmith@gnu.org>
5455
5456         * read.c (readline): CRLF calculations had a hole, if you hit the
5457         buffer grow scenario just right.  Reworked the algorithm to avoid
5458         the need for len or lastlen at all.  Problem description with
5459         sample code chages provided by Chris Faylor <cgf@redhat.com>.
5460
5461 2000-10-24  Paul D. Smith  <psmith@gnu.org>
5462
5463         * gettext.c (SWAP): Declare this with the prototype, otherwise
5464         some systems don't work (non-32-bit?  Reported for Cray T3E).
5465         Reported by Thorstein Thorsteinsson <thor@signe.teokem.lu.se>.
5466
5467 2000-10-05  Paul D. Smith  <psmith@gnu.org>
5468
5469         * acinclude.m4 (AM_LC_MESSAGES): Remove undefined macro
5470         AM_LC_MESSAGES; it doesn't seem to do anything anyway??
5471
5472         * i18n/gl.po, configure.in (ALL_LINGUAS): New Galician translation.
5473
5474 2000-09-22  Paul D. Smith  <psmith@gnu.org>
5475
5476         * gettext.c: Don't #define _GETTEXT_H here; we only include some
5477         parts of the real gettext.h here, and we expect to really include
5478         the real gettext.h later.  If we keep this #define, it's ignored.
5479
5480 2000-09-21  Paul D. Smith  <psmith@gnu.org>
5481
5482         * main.c (log_working_directory): Rework the text to use complete
5483         sentences, to make life simpler for the translators.
5484
5485 2000-08-29  Paul D. Smith  <psmith@gnu.org>
5486
5487         * file.c (remove_intermediates): Print a debug message before we
5488         remove intermediate files, so the user (if she uses -d) knows
5489         what's going on.
5490
5491 2000-08-21  Paul D. Smith  <psmith@gnu.org>
5492
5493         * variable.c (try_variable_definition): Change how we handle
5494         target-specific append variable defns: instead of just setting the
5495         value, expand it as an append _but_ only within the current
5496         target's context.  Otherwise we lose all but the last value if the
5497         variable is appended more than once within the current target
5498         context.  Fixes PR/1831.
5499
5500 2000-08-16  Paul D. Smith  <psmith@gnu.org>
5501
5502         * function.c (func_shell): Nul-terminate the buffer before
5503         printing an exec error message (just in case it's not!).
5504         Fixes PR/1860, reported by Joey Hess <joey@valinux.com>.
5505
5506 2000-07-25  Paul D. Smith  <psmith@gnu.org>
5507
5508         * job.c (construct_command_argv_internal): Add "~" to the list of
5509         sh_chars[] which disallow optimizing out the shell call.
5510
5511 2000-07-23  Paul Eggert  <eggert@twinsun.com>
5512
5513         * NEWS, make.texinfo: Document .LOW_RESOLUTION_TIME, which
5514         supersedes --disable-nsec-timestamps.
5515         * make.texinfo: Consistently use "time stamp" instead of "timestamp".
5516         * README: Remove --disable-nsec-timestamps.
5517
5518         * filedef.h (struct file.low_resolution_time): New member.
5519         * file.c (snap_deps): Add support for .LOW_RESOLUTION_TIME.
5520         * remake.c (update_file_1):
5521         Avoid spurious rebuilds due to low resolution time stamps,
5522         generalizing the earlier code that applied only to archive members.
5523         (f_mtime): Archive members always have low resolution time stamps.
5524
5525         * configure.in: Remove --disable-nsec-timestamps, as this has
5526         been superseded by .LOW_RESOLUTION_TIME.
5527
5528 2000-07-23  Paul Eggert  <eggert@twinsun.com>
5529
5530         * configure.in (enable_nsec_timestamps): Renamed from
5531         make_cv_nsec_timestamps, since enable/disable options
5532         shouldn't be cached.
5533
5534 2000-07-23  Bruno Haible  <haible@clisp.cons.org>
5535        and  Paul Eggert  <eggert@twinsun.com>
5536
5537         * file.c (file_timestamp_now):
5538         Use preprocessor-time check for FILE_TIMESTAMP_HI_RES
5539         so that clock_gettime is not linked unless needed.
5540
5541         * filedef.h (FILE_TIMESTAMP_HI_RES):
5542         Remove definition; "configure" now does this.
5543
5544         * configure.in (jm_AC_TYPE_UINTMAX_T): Move up,
5545         to before high resolution file timestamp check,
5546         since that check now uses uintmax_t.
5547         (FILE_TIMESTAMP_HI_RES): Define to nonzero if the code should use
5548         high resolution file timestamps.
5549         (HAVE_CLOCK_GETTIME): Do not define if !FILE_TIMESTAMP_HI_RES,
5550         so that we don't link in clock_gettime unnecessarily.
5551
5552 2000-07-17  Paul D. Smith  <psmith@gnu.org>
5553
5554         * i18n/ja.po: New version of the translation file.
5555
5556 2000-07-07  Paul D. Smith  <psmith@gnu.org>
5557
5558         * remake.c (f_mtime): If NO_FLOAT is defined, don't bother with
5559         the offset calculation.
5560         (name_mtime): Replace EINTR test with EINTR_SET macro.
5561
5562 2000-07-07  Paul Eggert  <eggert@twinsun.com>
5563
5564         Fix for PR/1811:
5565
5566         * remake.c (update_file_1):
5567         Avoid spurious rebuilds of archive members due to their
5568         timestamp resolution being only one second.
5569         (f_mtime): Avoid spurious warnings of timestamps in the future due to
5570         the clock's resolution being lower than file timestamps'.
5571         When warning about future timestamps, report only the discrepancy,
5572         not the absolute value of the timestamp and the current time.
5573
5574         * file.c (file_timestamp_now): New arg RESOLUTION.
5575         * filedef.h (file_timestamp_now): Likewise.
5576         (FILE_TIMESTAMP_NS): Now returns int.  All uses changed.
5577
5578 2000-07-05  Paul D. Smith  <psmith@gnu.org>
5579
5580         * variable.c (lookup_variable) [VMS]: Remove vestigial references
5581         to listp.  Fixes PR/1793.
5582
5583 2000-06-26  Paul Eggert  <eggert@twinsun.com>
5584
5585         * Makefile.am (MAINTAINERCLEANFILES): New macro, with stamp-pot in it.
5586
5587         * dir.c (vms_hash): Ensure ctype macro args are nonnegative.
5588
5589         * remake.c (f_mtime): Remove unused var memtime.
5590
5591 2000-06-25  Martin Buchholz  <martin@xemacs.org>
5592
5593         * make.texinfo, NEWS, TODO.private: Minor spelling corrections.
5594         Ran spell-check on make.texinfo.
5595
5596 2000-06-23  Paul D. Smith  <psmith@gnu.org>
5597
5598         * main.c (main): Replace EXIT_SUCCESS, EXIT_FAILURE, and
5599         EXIT_TROUBLE with MAKE_SUCCESS, MAKE_FAILURE, and MAKE_TROUBLE.
5600         * make.h: Define these macros.
5601
5602         * Version 3.79.1 released.
5603
5604         * configure.in: Add a new option, --disable-nsec-timestamps, to
5605         avoid using sub-second timestamps on systems that support it.  It
5606         can lead to problems, e.g. if your makefile relies on "cp -p".
5607         * README.template: Document the issue with "cp -p".
5608
5609         * config.guess, config.sub: Updated.
5610
5611 \f
5612
5613 See ChangeLog.2, available in the Git repository at:
5614
5615         http://git.savannah.gnu.org/cgit/make.git/tree/
5616
5617 for earlier changes.
5618
5619
5620 Copyright (C) 2000-2013 Free Software Foundation, Inc.
5621 This file is part of GNU Make.
5622
5623 GNU Make is free software; you can redistribute it and/or modify it under the
5624 terms of the GNU General Public License as published by the Free Software
5625 Foundation; either version 3 of the License, or (at your option) any later
5626 version.
5627
5628 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
5629 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
5630 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
5631
5632 You should have received a copy of the GNU General Public License along with
5633 this program.  If not, see <http://www.gnu.org/licenses/>.