VirtualBox

source: kBuild/trunk/src/kmk/ChangeLog.3@ 3387

Last change on this file since 3387 was 3140, checked in by bird, 6 years ago

kmk: Merged in changes from GNU make 4.2.1 (2e55f5e4abdc0e38c1d64be703b446695e70b3b6 / https://git.savannah.gnu.org/git/make.git).

  • Property svn:eol-style set to native
File size: 209.8 KB
Line 
12013-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
132013-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
192013-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
422013-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
472013-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
592013-10-01 Paul Smith <psmith@gnu.org>
60
61 * configure.ac: Update version to 3.99.93.
62 * NEWS: Ditto.
63
642013-09-30 Paul Smith <psmith@gnu.org>
65
66 * guile.c: Portability fixes for Guile 1.8.
67
682013-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
1012013-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
1072013-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
1502013-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
1942013-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
2012013-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
2062013-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
2112013-09-16 Paul Smith <psmith@gnu.org>
212
213 * configure.ac: Update version to 3.99.91.
214 * NEWS: Ditto.
215
2162013-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
2362013-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
2512013-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
2682013-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
3092013-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
3142013-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
3282013-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
3542013-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
3812013-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
3872013-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
3942013-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
4102013-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
4462013-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
4562013-05-27 Paul Smith <psmith@gnu.org>
457
458 * variable.c (define_automatic_variables): Create a new variable
459 MAKE_HOST.
460
4612013-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
4712013-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
4822013-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
4942013-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
5092013-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
5162013-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
5242013-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
5512013-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
5572013-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
5842013-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
5902013-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
6012013-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
6212013-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
6332013-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
6382013-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
6512013-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
6572013-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
7022013-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
7112013-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
7162013-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
7242013-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
7382013-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
7512013-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
7752013-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
7922013-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
7982013-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
8312013-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
8412013-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
8482013-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
8532013-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
8582013-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
9222013-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
9302013-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
9372013-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
9492013-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
9572013-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
9622013-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
9892013-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
10012013-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
10242013-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
10292013-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
10452012-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
10502012-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
10682012-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
10802012-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
10852012-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
11092012-09-09 Eli Zaretskii <eliz@gnu.org>
1110
1111 * read.c (unescape_char): Fix a thinko in the last change.
1112
11132012-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
11232012-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
11312012-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
11362012-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
11522012-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
11742012-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
11792012-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
11902012-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
12172012-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
12542012-01-25 Eli Zaretskii <eliz@gnu.org>
1255
1256 * function.c (define_new_function): Fix format strings in calls to
1257 `fatal'.
1258
12592012-01-17 Paul Smith <psmith@gnu.org>
1260
1261 * guile.c (func_guile): Handle NULL returns from Guile.
1262
12632012-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
12692012-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
12812012-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
13152011-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
13262011-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
13322011-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
13542011-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
13822011-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
13922011-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
13972011-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
14022011-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
14102011-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
14152011-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
14232011-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
14322011-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
14412011-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
14482011-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
14622011-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
14682011-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
14732011-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
14902011-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
15032011-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
15082010-12-27 Paul Smith <psmith@gnu.org>
1509
1510 * make.1: Update the header/footer info in the man page.
1511
15122010-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
15172010-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
15392010-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
15442010-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
15512010-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
15782010-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
15842010-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
15982010-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
16032010-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
16132010-08-07 Juan Manuel Guerrero <juan.guerrero@gmx.de>
1614
1615 * configh.dos.template (HAVE_STRNCASECMP): Define.
1616
16172010-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
16282010-07-24 Eli Zaretskii <eliz@gnu.org>
1629
1630 * job.c (pid2str) [WINDOWS32]: Fix CPP conditionals for using %Id
1631 format.
1632
16332010-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
16662010-07-16 Boris Kolpackov <boris@codesynthesis.com>
1667
1668 * misc.c (concat): Fix buffer overrun.
1669
16702010-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
16782010-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
16842010-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
17052010-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
17352010-07-07 Paul Smith <psmith@gnu.org>
1736
1737 * configure.in: Bump to a new prerelease version 3.81.91.
1738
17392010-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
17492010-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
17642010-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
17702010-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
17762010-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
17852009-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
17942009-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
18242009-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
18442009-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
18522009-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
18802009-10-22 Boris Kolpackov <boris@codesynthesis.com>
1881
1882 * read.c (read_all_makefiles): Mark the default makefile dependency
1883 dontcare.
1884
18852009-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
18922009-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
19062009-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
19242009-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
19292009-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
19352009-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
19572009-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
19632009-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
19682009-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
19882009-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
19932009-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
20252009-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
20372009-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
20422009-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
20492009-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
20592009-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
21122009-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
21392009-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
21612009-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
21662009-08-31 Eli Zaretskii <eliz@gnu.org>
2167
2168 * function.c (windows32_openpipe): Update envp after calling
2169 sync_Path_environment.
2170
21712009-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
21812009-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
21962009-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
22012009-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
22072009-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
22122006-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
22192009-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
22272009-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
22512009-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
22702009-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
22752009-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
22982009-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
23192009-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
23332009-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
23402009-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
23492009-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
23772009-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
23852009-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
24002009-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
24052009-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
24202009-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
24252009-02-28 Ralf Wildenhues <address@hidden>
2426
2427 * doc/make.texi (Instead of Execution): Document interaction of
2428 -t with phony targets.
2429
24302009-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
24452008-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
24562008-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
24632008-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
24692008-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
24762008-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2477
2478 * doc/make.texi (Empty Targets): Fix typo.
2479
24802008-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
24862008-03-08 Brian Dessent <brian@dessent.net>
2487
2488 * maintMakefile: Update Translation Project location.
2489
24902008-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
24952007-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
25162007-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
25272007-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
25362007-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
25442007-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
25492007-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
25552007-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
25622007-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
25672007-09-21 Eli Zaretskii <eliz@gnu.org>
2568
2569 * w32/pathstuff.c (convert_Path_to_windows32): Handle quoted
2570 directories in Path.
2571
25722007-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
25792007-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
25912007-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
26132007-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
26192007-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
26262007-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
26372007-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
26442007-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
26512007-06-29 Thiemo Seufer <ths@mips.com>
2652
2653 * maintMakefile: Update Translation Project location.
2654
26552007-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
26652007-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
26812007-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
27032007-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
27082007-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
27232007-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
27282006-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
27572006-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
27622006-10-22 Paul Smith <psmith@gnu.org>
2763
2764 * main.c (struct command_switch): Use const and void*.
2765
27662006-10-21 Paul Smith <psmith@gnu.org>
2767
2768 * ar.c: Constified.
2769 * arscan.c: Constified.
2770
27712006-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
27972006-09-06 Paul D. Smith <psmith@gnu.org>
2798
2799 * configure.in: Include sys/types.h when checking for sys/wait.h.
2800
28012006-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
28152006-05-07 Paul D. Smith <psmith@gnu.org>
2816
2817 * README.OS2.template: Updates provided by Andreas Buening
2818 <andreas.buening@nexgo.de>.
2819
28202006-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
28252006-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
28312006-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
28372006-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
28642006-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
28812006-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
28922006-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
28972006-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
29052006-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
29172006-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
29232006-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
29382006-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
29442006-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
29592006-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
29672006-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
29812006-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
29872006-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
29922006-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
30082006-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
30192006-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
30252006-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
30342006-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
30552006-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
30732006-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
30792006-02-11 Paul D. Smith <psmith@gnu.org>
3080
3081 * (ALL FILES): Updated copyright and license notices.
3082
30832006-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
30982006-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
31042006-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
31142006-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
31212006-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
31402006-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
31552006-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
31612006-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
31732006-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
31962006-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
32082006-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
32202006-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
32292005-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
32352005-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
32472005-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
32642005-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
32702005-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
32752005-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
32822005-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
32882005-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
32942005-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
33012005-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
33082005-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
33142005-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
33442005-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
33502005-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
33562005-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
33622005-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
33672005-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
33732005-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
33792005-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
33942005-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
34112005-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
34482005-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
34542005-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
34612005-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
34732005-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
34802005-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
34862005-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
34962005-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
35012005-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
35102005-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
35152005-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
35702005-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
35752005-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
35862005-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
35962005-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
36092005-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
36182005-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
36362005-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
36452005-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
36612005-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
36712005-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
37002005-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
37102005-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
37172005-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
37442005-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
37572005-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
37662005-03-13 Paul D. Smith <psmith@gnu.org>
3767
3768 * main.c (main) [MSDOS]: Export SHELL in MSDOS. Requested by Eli
3769 Zaretskii.
3770
37712005-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
37762005-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
37822005-03-09 Paul D. Smith <psmith@gnu.org>
3783
3784 * read.c (eval_makefile): Add alloca(0).
3785 (eval_buffer): Ditto.
3786
37872005-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
37952005-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
38002005-03-04 Paul D. Smith <psmith@gnu.org>
3801
3802 * AUTHORS: Update.
3803 * doc/make.texi (Automatic Variables): Document $|.
3804
38052005-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
38182005-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
38272005-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
38322005-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
38472005-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
38932005-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
39112005-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
39572005-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
39632005-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
39772004-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
39832005-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
40052005-02-01 Paul D. Smith <psmith@gnu.org>
4006
4007 * maintMakefile (po_repo): Update the GNU translation site URL.
4008
40092004-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
40142004-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
40252004-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
40382004-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
40532004-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
40592004-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
40652004-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
40722004-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
40832004-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
40902004-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
40952004-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
41002004-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
41082004-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
41332004-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
41482004-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
41552004-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
41692004-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
41742004-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
41912004-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
41972004-04-21 Bob Byrnes <byrnes@curl.com>
4198
4199 * main.c (main): Notice failures to remake makefiles.
4200
42012004-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
42102004-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
42552004-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
42612004-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
42722004-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
42862004-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
42922004-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
42972004-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
43122004-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
43412004-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
43522004-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
43582004-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
43742004-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
43802004-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
43982003-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
44042003-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
44132003-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
44232003-10-05 Paul Eggert <eggert@twinsun.com>
4424
4425 * main.c (main): Avoid potential subscript error if environ has
4426 short strings.
4427
44282003-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
44332003-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
44382003-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
44432003-05-30 Earnie Boyd <earnie@users.sf.net>
4444
4445 * w32/include/dirent.h: Add __MINGW32__ filter.
4446
44472003-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
44542003-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
44592003-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
44692003-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
45042003-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
45112003-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
45162003-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
45212003-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
45372003-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
45732003-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
45862003-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
46042003-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
46352003-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
46422002-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
46512002-11-19 Paul D. Smith <psmith@gnu.org>
4652
4653 * README.cvs, configure.in: Upgrade to require autoconf 2.56.
4654
4655
46562002-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
46652002-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
46952002-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
47042002-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
47232002-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
47322002-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
47482002-09-30 Martin P.J. Zinser <zinser@decus.de>
4749
4750 * makefile.com: Updates for GNU make 3.80.
4751 * makefile.vms: Ditto.
4752
47532002-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
47612002-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
47692002-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
47842002-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
47902002-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
47982002-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
48082002-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
48172002-09-09 Paul D. Smith <psmith@gnu.org>
4818
4819 * configure.in: Check for memmove().
4820
48212002-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
48342002-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
48432002-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
48592002-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
48672002-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
49062002-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
49142002-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
49202002-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
49372002-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
49452002-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
50372002-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
50522002-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
50612002-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
50752002-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
51332002-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
51502002-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
51642002-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
51802002-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
51872002-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
52052002-05-08 Paul D. Smith <psmith@gnu.org>
5206
5207 * Makefile.am (make_LDADD): Add GETLOADAVG_LIBS.
5208 (loadavg_LDADD): Ditto.
5209
52102002-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
52222002-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
52422002-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
52922002-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
53112002-01-07 Paul D. Smith <psmith@gnu.org>
5312
5313 * i18n/es.po, i18n/ru.po: Installed an updated translation.
5314
53152001-12-04 Paul D. Smith <psmith@gnu.org>
5316
5317 * i18n/ja.po: Installed an updated translation.
5318
53192001-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
53282001-09-04 Paul D. Smith <psmith@gnu.org>
5329
5330 * i18n/da.po: Installed an updated translation.
5331
53322001-08-03 Paul D. Smith <psmith@gnu.org>
5333
5334 * i18n/fr.po: Installed an updated translation.
5335 Resolves Debian bug #106720.
5336
53372001-06-13 Paul D. Smith <psmith@gnu.org>
5338
5339 * i18n/da.po, configure.in (ALL_LINGUAS): Installed a new
5340 translation.
5341
53422001-06-11 Paul D. Smith <psmith@gnu.org>
5343
5344 * i18n/ko.po: Installed a new translation.
5345
53462001-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
53542001-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
53882001-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
53932001-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
54022001-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
54082001-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
54142001-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
54482000-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
54542000-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
54612000-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
54672000-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
54742000-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
54802000-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
54852000-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
54912000-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
55002000-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
55062000-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
55112000-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
55282000-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
55342000-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
55522000-07-17 Paul D. Smith <psmith@gnu.org>
5553
5554 * i18n/ja.po: New version of the translation file.
5555
55562000-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
55622000-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
55782000-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
55832000-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
55912000-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
55962000-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
5612
5613
5614See ChangeLog.2, available in the Git repository at:
5615
5616 http://git.savannah.gnu.org/cgit/make.git/tree/
5617
5618for earlier changes.
5619
5620
5621Copyright (C) 2000-2013 Free Software Foundation, Inc.
5622This file is part of GNU Make.
5623
5624GNU Make is free software; you can redistribute it and/or modify it under the
5625terms of the GNU General Public License as published by the Free Software
5626Foundation; either version 3 of the License, or (at your option) any later
5627version.
5628
5629GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
5630WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
5631A PARTICULAR PURPOSE. See the GNU General Public License for more details.
5632
5633You should have received a copy of the GNU General Public License along with
5634this program. If not, see <http://www.gnu.org/licenses/>.
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use