summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-09-14Support the -Orecurse option properly.Paul Smith11-591/+594
In this mode we still collect all the output from a given target and dump it at once. However we don't treat recursive lines any differently from non-recursive lines. Also we don't print enter/leave messages after every dump. However we do ensure that we always print them once to stdout, so the parent make will collect it properly.
2013-09-12Enhance the output sync mode.Paul Smith27-689/+893
Create a new file, output.c, and collect functions that generate output there. We introduce a new global context specifying where output should go (to stdout or to a sync file), and the lowest level output generator chooses where to write output based on that context. This allows us to set the context globally, and all operations that write output (including functions like $(info ...) etc.) will use it. Removed the "--trace=dir" capability. It was too confusing. If you have directory tracking enabled then output sync will print the enter/leave message for each synchronized block. If you don't want that, disable directory tracking.
2013-07-22[Bug #39310] Parse simple pattern prereqs for globbing.Paul Smith10-19/+78
We tried to get some efficiency by avoiding a parse_file_seq() for simple pattern prerequisites, but this also means no wildcard expansion was happening, so add it back. Add regression tests for wildcards in target and prerequisite lists.
2013-07-21[Bug #39158] Source cleanups suggested by cppcheck utility.Paul Smith12-79/+81
2013-07-21Safety cleanups: ensure OUTFD is -1 when closed.Paul Smith2-6/+15
2013-07-14Notify the compiler that exec_command() won't return.Paul Smith1-2/+2
2013-07-14Modify the update_status field in struct file to be an enum.Paul Smith9-102/+121
Makes the code a little clearer/cleaner, and solves a problem on systems where a char is unsigned by default.
2013-07-09Keep a local count of the max dependency list size.Paul Smith4-6/+41
This global variable could be modified during recursion so keep our own local copy to compare against.
2013-06-28Set O_APPEND mode for stdout/stderr and output-sync temporary files.Paul Smith4-1/+35
POSIX does not guarantee that writes will be atomic if a file is opened for normal (non-append) output. That means if multiple processes are writing to the same file, output could be lost. I can't think of a real use-case where we would NOT want append for stdout/stderr, so force it if we can.
2013-06-22Minor fix in build_w32.bat.Eli Zaretskii2-0/+4
build_w32.bat (LinkGCC): Prevent a comment from being displayed at build time.
2013-06-22Compare internal commands of non-Unix shells on Windows case-insensitively.Eli Zaretskii2-2/+6
job.c (construct_command_argv_internal) [WINDOWS32]: Use case-insensitive comparison with internal commands of non-Unix shells.
2013-06-22Fix a fatal error at startup on Windows due to non-ASCII characters in PATH.Eli Zaretskii2-9/+21
main.c (find_and_set_default_shell): Don't use file_exists_p or dir_file_exists_p, as those call readdir, which can fail if PATH includes directories with non-ASCII characters, and that would cause Make to fail at startup with confusing diagnostics. See https://sourceforge.net/mailarchive/message.php?msg_id=30846737 for the details.
2013-06-22Create a character map to use for locating stop-points in strings.Paul Smith14-147/+191
In various places we were passing flags and characters to compare, then using complex conditionals to see where to stop in string searches. Performance numbers reveal that we were spending as much as 23% of our processing time in these functions, most of it in the comparison lines. Instead create a character map and use a single bitwise comparison to determine if this is any one of the stop characters.
2013-06-21Disable database verification unless debug enabled.Paul Smith4-42/+59
The database verification can take a long time. Only enable it if debug mode is enabled. If MAKE_MAINTAINER_MODE is set, it's also enabled by default.
2013-06-21Add job.h to POTFILES as it now has a translation.Paul Smith1-0/+1
2013-05-27Cleanups.Paul Smith2-12/+11
2013-05-27Create a new variable MAKE_HOST providing the host architecture.Paul Smith3-0/+10
2013-05-27Porting to VMS, from Hartmut Becker.Paul Smith8-40/+58
2013-05-26[SV #38442] Add library names to the string cache.Paul Smith5-4/+29
2013-05-26[SV #38945] Copy the entire buffer back when overwriting CRPaul Smith4-3/+12
2013-05-26[SV #39028] Fix some small typos in messages.Paul Smith4-4/+11
2013-05-26[SV #39035] Compare OUT to the beginning of the OUT var/func, not IN.Paul Smith4-1/+34
2013-05-26Add dates to the NEWS file to make things simpler.Paul Smith1-20/+20
2013-05-22Fix regression tests after MAKEFLAGS enhancements.Paul Smith4-8/+14
2013-05-22Force version printing whenever we print the database.Paul Smith3-3/+13
2013-05-22Make MFLAGS and MAKEFLAGS more reliable and predictable.Paul Smith3-116/+95
Ensure all simple flags are kept in the initial batch of flags. Do not allow any flags with options in that batch. If there are only non-simple flags ensure MAKEFLAGS begins with " ". Don't let MFLAGS start with "- ".
2013-05-18Fix the MS-Windows build using the Posix configury.Alexey Pavlov3-2/+7
w32/Makefile.am (libw32_a_SOURCES): Add compat/posixfcn.c. configure.ac (OUTPUT_SYNC): Define for mingw32 target.
2013-05-18Support "move" as internal shell command on Windows with cmd.exe.Eli Zaretskii2-2/+5
job.c (construct_command_argv_internal) <sh_cmds_dos> [WINDOWS32]: Add "move". Fixes Savannah bug #30714.
2013-05-18Fix MS-Windows build with Guile.Eli Zaretskii2-1/+9
guile.c: Move inclusion of makeint.h before gnumake.h. This order must be observed when building Make, because gnumake.h must be included with GMK_BUILDING_MAKE defined, which makeint.h already does. Otherwise, the linker will look for, and fail to find, gmk_* functions in some external dynamic library.
2013-05-17Fix MS-Windows compilation when OUTPUT_SYNC is not defined.Eli Zaretskii2-0/+7
main.c (prepare_mutex_handle_string): Define conditioned on OUTPUT_SYNC.
2013-05-17Fix a bug in build_w32.bat when building a released tarball.Eli Zaretskii2-1/+6
build_w32.bat: Copy config.h.W32 to config.h regardless of whether or not we are building from SCM.
2013-05-17Update for GNU make release candidate 3.99.90.3.99.90Paul Smith4-4/+8
2013-05-17Update source file format: remove TABs, use GNU coding styles.Paul Smith36-3304/+3348
2013-05-17Update copyright for changes in 2013.Paul Smith100-101/+118
2013-05-17Use xcalloc() in hash.c to handle out of memory errors.Paul Smith2-1/+3
2013-05-17Remove the dlopen() pointer from struct filedef.Paul Smith7-25/+79
This pointer is almost never needed, and it increases the size of the filedef struct for all files (of which there are a huge number for large builds). Instead keep a bit field marking whether the file is a loaded object and if so call a new function to unload it. In load.c we keep a simple linked list of loaded objects (of which there will be very few typically) and their dlopen() pointers.
2013-05-14Add requirement for plugin_is_GPL_compatible symbol in loaded objects.Paul Smith6-0/+41
2013-05-13[Savannah #20501] Handle adding -r/-R to MAKEFLAGS in the makefile.Paul Smith7-37/+97
If -R is set in the makefile and not the command line, then go through all the default variables and undefine them. If -r is set in the makefile and not in the command line, then remove all .SUFFIX prefixes (unless the user set it) and SUFFIX variable setting. In -p mode don't print builtins.
2013-05-13Add a new variable: GNUMAKEFLAGSPaul Smith5-6/+62
This allows you to write portable makefiles that set GNU make-specific command line options in the environment or makefile: add them to GNUMAKEFLAGS instead of MAKEFLAGS and they will be seen by GNU make but ignored by other implementations of make.
2013-05-13Use level o_env_override for MAKEFLAGS so it's reset even with -e.Paul Smith3-21/+21
Fixes Savannah bug #2216.
2013-05-13Add new --trace[=MODE] flags, with --trace=dirPaul Smith9-36/+102
This mode replaces the previous heuristic setting enabled with -O, where we would log directory enter/leave for each synchronized output. Now we only do that if --trace=dir is given.
2013-05-11Avoid printing stdout and stderr messages without a newline between them.Eli Zaretskii2-1/+7
job.c (child_out): Output the newline following the message before fllush-ing the stream. Avoids displaying the following failure message, which goes to stderr, on the same line.
2013-05-06Rearrange dllimport/dllexport declarations for MS-Windows.Eli Zaretskii3-4/+12
gnumake.h (GMK_EXPORT) [_WIN32]: Move the dllexport declaration here from makeint.h. makeint.h (GMK_BUILDING_MAKE) [WINDOWS32]: Define before including gnumake.h.
2013-05-06doc/make.texi (Loaded Object Example): Add a note about buildingEli Zaretskii2-0/+19
shared objects on MS-Windows.
2013-05-06build: enable 'subdir-objects' and 'silent-rules' automake optionsStefano Lattarini2-1/+9
On 04/30/2013 05:11 PM, Stefano Lattarini wrote: > * configure.ac (AM_INIT_AUTOMAKE): Here. The future major Automake > version 2.0 (ETA about one, one and half year from now) will likely > enable them by default, so better prepare ourselves. > Please drop this patch. Enabling 'subdir-objects' would require sublter changes to several other parts of the build system that I don't know how to test properly. We should only enable the 'silent-rules' option for the moment. The updated patch below does this. Sorry for the noise, Stefano ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- >From 46623411f017a447caa8fe75b3b42ec2fbeac458 Mon Sep 17 00:00:00 2001 Message-Id: <46623411f017a447caa8fe75b3b42ec2fbeac458.1367335124.git.stefano.lattarini@gmail.com> From: Stefano Lattarini <stefano.lattarini@gmail.com> Date: Tue, 30 Apr 2013 16:30:04 +0200 Subject: [PATCH] build: enable the 'silent-rules' automake options * configure.ac (AM_INIT_AUTOMAKE): Here. The future major Automake version 2.0 (ETA about one, one and half year from now) will enable it by default, so better prepare ourselves. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
2013-05-06build: require Autoconf >= 2.62 and Automake >= 1.11.1Stefano Lattarini2-3/+17
Older versions of those tools should be considered fully obsolete. Also, GNU make already requires Gettext >= 0.18.1, which has been released six months after Automake 1.11.1 and two years after Autoconf 2.62; so the new requirement shouldn't be problematic for people already bootstrapping GNU make from the Git repository. * configure.ac (AC_PREREQ): Require Autoconf 2.62 or later. (AM_INIT_AUTOMAKE): Require Automake 1.11.1 or later (1.11 had some serious bugs, and should not be used). Copyright-paperwork-exempt: yes Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
2013-05-06Remove use of vfork().Paul Smith7-42/+6
GCC was giving us warnings, most OS's now just run fork() when you call vfork(), and looking at the standard definition of vfork() we are a long way from using it safely anyway: you're not allowed to even call a function before you exec().
2013-05-05docs: port manual to Texinfo 5.xStefano Lattarini1-1/+1
* doc/make.texi: Here. It was sufficient to change an '@itemx' into an '@item'. Copyright-paperwork-exempt: yes Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
2013-05-05cosmetics: fix few innocuous typosStefano Lattarini16-29/+53
Most of these were found using Lucas De Marchi's 'codespell' tool. * ChangeLog: Fix minor typos. * ChangeLog.2: Likewise. * README.Amiga: Likewise. * TODO.private: Likewise. * function.c: Likewise. * glob/glob.h: Likewise. * job.c: Likewise. * main.c: Likewise. * readme.vms: Likewise. * remake.c: Likewise. * tests/ChangeLog: Likewise. * tests/NEWS: Likewise. * tests/README: Likewise. * tests/scripts/variables/private: Likewise. * vmsdir.h: Likewise. * signame.c: Likewise. While at it, improve line wrapping in the touched comment. Copyright-paperwork-exempt: yes Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
2013-05-05build: get rid of 'HAVE_ANSI_COMPILER' C preprocessor conditionalStefano Lattarini6-18/+13
GNU make already assume C89 or later throughout the codebase, and that preprocessor conditional was no longer used anyway. * configure.ac: Remove AC_DEFINE of HAVE_ANSI_COMPILER. * config.ami.template: Remove #define of HAVE_ANSI_COMPILER. * config.h-vms.template: Likewise. * config.h.W32.template: Likewise. * configh.dos.template: Likewise. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>