summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* GNU Make release 4.2.1.4.2.1Paul Smith2016-06-102-2/+11
|
* * maintMakefile: TP recommends rsync for retrieving PO files.Paul Smith2016-06-061-3/+4
|
* * main.c (main): [SV 48009] Reset stack limit for make re-exec.Jeremy Devenport2016-05-311-0/+5
| | | | Copyright-paperwork-exempt: yes
* [SV 47995] Ensure forced double-colon rules work with -j.Paul Smith2016-05-314-18/+30
| | | | | | | | | | | | | | | | | | | | | The fix for SV 44742 had a side-effect that some double-colon targets were skipped. This happens because the "considered" facility assumed that all targets would be visited on each walk through the dependency graph: we used a bit for considered and toggled it on each pass; if we didn't walk the entire graph on every pass the bit would get out of sync. The new behavior after SV 44742 might return early without walking the entire graph. To fix this I changed the considered value to an integer which is monotonically increasing: it is then never possible to incorrectly determine that a previous pass through the graph already considered the current target. * filedef.h (struct file): make CONSIDERED an unsigned int. * main.c (main): No longer need to reset CONSIDERED. * remake.c (update_goal_chain): increment CONSIDERED rather than inverting it between 0<->1. (update_file_1): Reset CONSIDERED to 0 so it's re-considered. (check_dep): Ditto. * tests/scripts/features/double_colon: Add a regression test.
* * DELETE_ON_ERROR: [SV 48061] Use "exit 1" for portability.Paul Smith2016-05-311-4/+4
| | | | Reported by Joel Fredrikson <Joel.Fredrikson@it.uu.se>
* * w32/pathstuff.c: [SV 47996] Use ISBLANK() not isblank().Paul Smith2016-05-311-1/+1
|
* Fix printing time stamps on MS-WindowsEli Zaretskii2016-05-281-2/+2
| | | | | | * dir.c (print_dir_data_base) [WINDOWS32]: Use %I64u format for printing unsigned 64-bit data types, as %ull is not universally supported.
* [SV 48037] Fix MinGW build with Posix configury toolsLuke Allardyce2016-05-271-1/+2
| | | | | | * w32/Makefile.am (libw32_a_CPPFLAGS): Add -I$(srcdir)/glob. Copyright-paperwork-exempt: yes
* GNU Make release 4.2.4.2Paul Smith2016-05-226-10/+11
|
* [SV 44742] Fix double-colon rules plus parallel builds.Joe Crayne2016-05-212-11/+54
| | | | | | | | | | * remake.c (update_file): Don't update double-colon target status if we're still building targets. (ftime_t): Don't propagate timestamps for double-colon targets that we've not examined yet. * tests/scripts/features/double_colon: Add parallel build tests. Copyright-paperwork-exempt: yes
* * read.c (eval): [SV 47960] Skip record waiting files when ignoring.Paul Smith2016-05-212-3/+19
| | | | * tests/scripts/features/conditionals: Test this scenario.
* Separate the GNU make load ABI from internal types.Paul Smith2016-05-2114-53/+73
| | | | | | Create an internal type "floc" and convert all users to that type. * gnumake.h (gmk_floc): Remove the offset field from this type. * loadapi.c (gmk_eval): Convert gmk_floc to internal floc.
* Fixes for enhanced GCC warnings.Paul Eggert2016-05-2120-89/+81
| | | | | | | Move function prototypes into header files and out of .c files. Use void argument lists for functions that accept no args. Remove unused macros. Make private functions static. Align types with printf format characters.
* Fix compile issues with Windows and VMS.Paul Smith2016-05-216-14/+12
| | | | | | | | | | * main.c (initialize_stopchar_map): isblank() is not part of C89. Install bits for space and tab directly. * makeint.h: Don't define vfork; autoconf handles this for us. * vmsjobs.c: Rename NEXT_TOKEN to V_NEXT_TOKEN to avoid conflicts. * dir.c (print_dir_data_base): Visual Studio C doesn't have int64_t. * w32/subproc/sub_proc.c (process_begin): Missing arg to memset(). * build_w32.bat: Don't use obsolete Visual Studio flags.
* Allow compiling with an ISO C 1989/1990 compiler.Paul Smith2016-05-213-12/+18
| | | | | | * posixos.c (jobserver_post_child): Use C89 for loop syntax. * remake.c (update_goal_chain): Ditto. * variable.c (parse_variable_definition): Ditto.
* [SV 47942] Avoid random crashes in subordinate programs on MS-WindowsEli Zaretskii2016-05-171-0/+1
| | | | | | * w32/subproc/sub_proc.c (process_begin): Zero out startInfo before using it. Fixes crashes in Intel Fortran compiler invoked by Make.
* Fix the MS-Windows MinGW buildEli Zaretskii2016-04-242-5/+7
| | | | | | | | | | * build_w32.bat (GccCompile): Use -std=gnu99, as some code uses C99 features ('for' loop initial declarations). * dir.c (print_dir_data_base) [WINDOWS32]: Cast 'mtime' to 'int64_t', and use %I64d to print it, to avoid compile-time warning about printing a 'time_t' value, which could be either a 32-bit or a 64 bit integral type.
* * tests/scripts/features/output-sync: increase test timeout.4.1.90Paul Smith2016-04-231-4/+6
| | | | I'm getting random failures with a timeout of 10s; increase to 30s.
* * NEWS: Update for pre-releasePaul Smith2016-04-111-2/+2
|
* * dep.h, makeint.h (show_goal_error): Move to makeint.h.Paul Smith2016-04-112-1/+2
|
* [SV 46433] Show recipe line offsets in line number messages.Paul Smith2016-04-1114-22/+81
| | | | | | | | | | | | | | | | | | | | | While displaying line numbers, show the relevant line number inside the recipe not just the first line of the entire recipe. Sample changes suggested by Brian Vandenberg <phantall@gmail.com> * gnumake.h (gmk_floc): Add an 'offset' to track the recipe offset. * read.c (eval, eval_makefile, eval_buffer): Initialize 'offset'. (record_files, install_pattern_rule): Ditto. * job.c (new_job, job_next_command): Update 'offset' based on the line of the recipe we're expanding or invoking. (child_error): Add 'offset' when showing the line number. * function.c (func_shell_base): Ditto. * output.c (error, fatal): Ditto. * NEWS: Mention the new ability. * tests/scripts/features/errors: Check the line number on errors. * tests/scripts/functions/warning: Check the line number on warnings. * tests/scripts/features/output-sync, tests/scripts/features/parallelism, tests/scripts/functions/shell, tests/scripts/functions/error: Update line numbers.
* * maintMakefile: Add a rule for storing preprocessor output.Paul Smith2016-04-091-0/+4
|
* [SV 102] Don't show unnecessary include file errors.Paul Smith2016-04-0911-129/+236
| | | | | | | | | | | | | | | | | | | | | | | | | | | Delay the generation of error messages for included files until we are sure that we can't rebuild that included file. * dep.h (struct dep): Don't reuse "changed"; make a separate field to keep "flags". Get rid of dontcare and use the flag. (struct goaldep): Create a new structure for goal prereqs that tracks an errno value and the floc where the include happened. Rework the structures to ensure they are supersets as expected. In maintainer mode with GCC, use inline to get type checking. * read.c (eval_makefile): Return a struct goaldep for the new makefile. Ensure errno is set properly to denote a failure. (read_all_makefiles): Switch to goaldep and check errno. (eval): Don't show included file errors; instead remember them. * remake.c (update_goal_chain): Set global variables to the current goaldep we're building, and the entire chain. (show_goal_error): Check if the current failure is a consequence of building an included makefile and if so print an error. (complain): Call show_goal_error() on rule failure. * job.c (child_error): Call show_goal_error() on child error. * main.c (main): Switch from struct dep to goaldep. * misc.c (free_dep_chain): Not used; make into a macro. * tests/scripts/features/include: Update and include new tests. * tests/scripts/options/dash-B, tests/scripts/options/dash-W, tests/scripts/options/print-directory, tests/scripts/variables/MAKE_RESTARTS: Update known-good-output.
* * job.c (child_error): Add filename length to output length.Paul Smith2016-04-091-3/+3
| | | | Reported by Dale Stimson <dale@riyescott.com>
* Preserve the real value of -jN in MAKEFLAGS using jobserver.Paul Smith2016-04-049-107/+178
| | | | | | | | | | | | | | | | | | Previously if the jobserver was active, MAKEFLAGS would contain only the -j option but not the number (not -j5 or whatever) so users could not discover that value. Allow that value to be provided in MAKEFLAGS without error but still give warnings if -jN is provided on the command line if the jobserver is already activated. * NEWS: Discuss the new behavior. * os.h, posixos.c, w32/w32os.c: Return success/failure from jobserver_setup() and jobserver_parse_auth(). * main.c (main): Separate the command line storage of job slots (now in arg_job_slots) from the control storage (in job_slots). Make a distinction between -jN flags read from MAKEFLAGS and those seen on the command line: for the latter if the jobserver is enabled then warn and disable it, as before. * tests/scripts/features/jobserver: Add new testing.
* * tests/run_make_tests.pl: Add file/lineno info to .run file.Paul Smith2016-04-041-3/+9
|
* * maintMakefile: Fix logging of check-alt-config target.Paul Smith2016-04-041-2/+8
|
* * job.c (child_execute_job): Fix $(shell...) under NO_OUTPUT_SYNC.Paul Smith2016-04-043-7/+7
| | | | * main.c (decode_output_sync_flags): Use NONE for NO_OUTPUT_SYNC.
* * main.c (main): Restrict disabling debugging for MAKEFILES.Paul Smith2016-04-041-13/+17
|
* * Makefile.am, w32/Makefile.am: Fix *os.c for Windows builds.Paul Smith2016-04-042-2/+5
| | | | Original change provided by Luke Allardyce <lukeallardyce@gmail.com>
* * make.texi: Confirm that CURDIR contains an absolute path.Paul Smith2016-04-041-3/+3
|
* * docs/make.texi: [SV 47392] Add "Integrating make" chapter.Paul Smith2016-04-041-2/+231
|
* Change --jobserver-fds to more generic --jobserver-auth.Paul Smith2016-04-046-52/+60
| | | | | | | | * NEWS: Mention the change. * main.c: Rename jobserver_fds variable to jobserver_auth and --jobserver-fds option to --jobserver-auth. * os.h, posixos.c, w32/w32os.c: Rename jobserver_parse_arg() and jobserver_get_arg() to jobserver_parse_auth()/jobserver_get_auth().
* * tests/run_make_tests.pl: Preserve $make_commandPaul Smith2016-03-232-1/+3
| | | | | * tests/scripts/options/dash-n: Use $make_command. This fixes a spurious failure when running tests with valgrind enabled.
* * variable.c: Clean up some memory leaks.Paul Smith2016-03-231-1/+2
|
* [SV 46995] Strip leading/trailing space from variable namesPaul Smith2016-03-2315-187/+291
| | | | | | | | | | | | | | | | * makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP and MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE. Create NEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros. * main.c (initialize_stopchar_map): Set MAP_NEWLINE only for newline characters. * Convert all uses of isblank() and isspace() to macros. * Examine all uses of isblank() (doesn't accept newlines) and change them wherever possible to ISSPACE() (does accept newlines). * function.c (func_foreach): Strip leading/trailing space. * variable.c (parse_variable_definition): Clean up. * tests/scripts/functions/foreach: Test settings and errors. * tests/scripts/functions/call: Rewrite to new-style. * tests/scripts/misc/bs-nl: Add many more tests for newlines.
* * function.c (func_file): Support reading from files.Paul Smith2016-03-214-31/+129
| | | | | | * NEWS: Add information about reading files. * make.texi (File Function): Describe reading files. * tests/scripts/functions/file: Test new features for $(file ...)
* * doc/make.texi (Setting Variables): Fix typo (add comma).Paul Smith2016-03-201-1/+1
|
* * job.c (child_error): Combine file info with error message.Paul Smith2016-03-2012-52/+51
| | | | * tests/scripts/...: Update error message matches.
* * variable.c: Align type of variable_changenum.Paul Smith2016-03-191-1/+1
|
* [SV 45728] Detect changes in .VARIABLES more accurately.Paul Smith2016-03-132-32/+49
| | | | | | | | | | | | | | | | | For performance, we only recompute .VARIABLES when (a) it's expanded and (b) when its value will change from a previous expansion. To determine (b) we were checking the number of entries in the hash table which used to work until we started undefining entries: now if you undefine and redefine the same number of entries in between expanding .VARIABLES, it doesn't detect any change. Instead, keep an increasing change number. * variables.c: Add variable_changenum. (define_variable_in_set, merge_variable_sets): Increment variable_changenum if adding a new variable to the global set. (undefine_variable_in_set): Increment variable_changenum if undefining a variable from the global set. (lookup_special_var): Test variable_changenum not the hash table. * tests/scripts/variables/special: Test undefining variables.
* * main.c(main): Disable output sync without parallel builds.Paul Smith2016-03-131-7/+18
|
* [SV 46581] Pre-define .LOADED to avoid warnings.Paul Smith2016-03-133-6/+19
| | | | | | | * main.c (main): Pre-define .LOADED as a default-level variable. * load.c (load_file): Set the value rather than append it. Avoid adding an extra initial whitespace. * tests/scripts/features/load: Run with --warn-undefined-variables.
* [SV 44555] Use vfork() instead of fork() where available.Paul Smith2016-03-1311-261/+254
| | | | | | | | | | | | | | | | | | | | Testing has shown that vfork() is actually significantly more efficient on systems where it's supported, even for copy-on-write implementations. If make is big enough, duplicating the page tables is significant overhead. * configure.ac: Check for fork/vfork. * makeint.h: Include vfork.h and set up #define for it. * os.h, posixos.c (get_bad_stdin): For children who can't use the normal stdin file descriptor, get a broken one. * job.c (start_job_command): Avoid so many ifdefs and simplify the invocation of child_execute_job() (child_execute_job): move the fork operation here so it can return early for the parent process. Switch to use vfork(). * function.c (func_shell_base): Use new child_execute_job() and simplify ifdefs. * job.h, main.c, remote-cstms.c, vmsjobs.c, w32os.c: Update declarations and calls.
* * job.c (exec_command): [SV 47365] Show error on exec failure.Paul Smith2016-03-092-1/+15
|
* [SV 46261] Use pselect() for jobserver where supported.Paul Smith2016-03-086-46/+126
| | | | | | | | * Makefile.am, configure.ac: Check for pselect() and sys/select.h. * main.c (main): Block SIGCHLD if we have pselect() support. * posixos.c (jobserver_acquire): If we support pselect() then use it to query the jobserver pipe, while also listening for SIGCHLD. Also pselect() supports a timeout so avoid alarm() calls.
* Clean up some compiler warnings.Paul Smith2016-03-086-13/+13
| | | | | | | * commands.c, commands.h: Use unsigned char for flags. * dir.c: Use time_t and size_t, and char for a boolean value. * job.c: Use unsigned and char. * read.c: Return a signed type since -1 is a valid return code.
* Extract jobserver implementation into OS-specific files.Paul Smith2016-03-0819-793/+906
| | | | | | | | | | | * os.h, posixos.c, w32/w32os.c: New files implementing jobserver. * job.c, job.h, main.c, makeint.h: Move content to new files. * w32/include/sub_proc.h, w32/subproc/sub_proc.c: Ditto. * Makefile.am: Build and package OS-specific files. * build_w32.bat, make_msvc_net2003.vcproj, README.W32.template: Update for new files, and clean up the build. * POTFILES.in, maintMakefile, NMakefile.template: Ditto. * w32/subproc/build.bat: Delete as unused.
* [SV 46261] Add more EINTRLOOP wrappers.Paul Smith2016-03-086-56/+80
| | | | | | This cannot be a perfect solution because there are always other possible places EINTR can happen, including external libraries such as gettext, Guile etc.
* * strcache.c (add_hugestring): [SV 46832] Support huge strings.Paul Smith2016-02-291-3/+38
| | | | | | | The strcache was limited to strings of length 65535 or less, because the length is kept in an unsigned short. To support huge strings add a new simple linked list, which we don't try to hash.