summaryrefslogtreecommitdiff
path: root/main.c
AgeCommit message (Collapse)AuthorFilesLines
2013-05-26[SV #39028] Fix some small typos in messages.Paul Smith1-1/+1
2013-05-22Force version printing whenever we print the database.Paul Smith1-3/+4
2013-05-22Make MFLAGS and MAKEFLAGS more reliable and predictable.Paul Smith1-115/+80
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-17Fix MS-Windows compilation when OUTPUT_SYNC is not defined.Eli Zaretskii1-0/+4
main.c (prepare_mutex_handle_string): Define conditioned on OUTPUT_SYNC.
2013-05-17Update source file format: remove TABs, use GNU coding styles.Paul Smith1-133/+149
2013-05-17Update copyright for changes in 2013.Paul Smith1-1/+1
2013-05-13[Savannah #20501] Handle adding -r/-R to MAKEFLAGS in the makefile.Paul Smith1-4/+24
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 Smith1-0/+3
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 Smith1-7/+7
Fixes Savannah bug #2216.
2013-05-13Add new --trace[=MODE] flags, with --trace=dirPaul Smith1-5/+35
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-05cosmetics: fix few innocuous typosStefano Lattarini1-2/+2
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-05Rename the -O "job" mode to "line" and "make" to "recurse".Paul Smith1-7/+7
2013-04-28Add support for per-job output sync.Paul Smith1-1/+5
A new flag to the -O/--output-sync, "job", selects a per-job (that is, per line of a recipe) output synchronization. To support this move the close of the temp file out of the sync_output() function and don't do it until we free the child, since we may call sync_output() multiple times in a given recipe. When we set up for a new temp file, if we're in per-job mode we truncate the file and seek to the beginning to re-use it for every job.
2013-04-27Support --output-sync on MS-Windows.Eli Zaretskii1-0/+47
w32/compat/posixfcn.c: New file, with emulations of Posix functions and Posix functionality for MS-Windows. w32/subproc/sub_proc.c: Include io.h. (process_noinherit): New function, forces a file descriptor to not be inherited by child processes. (process_easy): Accept two additional arguments, and use them to set up the standard output and standard error handles of the child process. w32/include/sub_proc.h (process_easy): Adjust prototype. (process_noinherit): Add prototype. read.c [WINDOWS32]: Include windows.h and sub_proc.h. makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not defined. This is needed because the MS-Windows build doesn't have a canonical place for LOCALEDIR. (WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from windows.h header too much stuff that could conflict with the code. main.c <sync_mutex>: New static variable. <switches>: Add support for "--sync-mutex" switch. (decode_output_sync_flags): Decode the --sync-mutex= switch. (prepare_mutex_handle_string) [WINDOWS32]: New function. (main): Add "output-sync" to .FEATURES. job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call process_noinherit. (F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]: New macros. (RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms. (sync_handle_t): New typedef. job.c <sync_handle>: Change type to sync_handle_t. (FD_NOT_EMPTY): Seek to the file's end. Suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>. (pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for the duration of this function, and then change back before returning. (start_job_command) [WINDOWS32]: Support output_sync mode on MS-Windows. Use a system-wide mutex instead of locking stdout/stderr. Call process_easy with two additional arguments: child->outfd and child->errfd. (exec_command) [WINDOWS32]: Pass two additional arguments, both -1, to process_easy, to adjust for the changed function signature. function.c (windows32_openpipe) [WINDOWS32]: This function now returns an int, which is -1 if it fails and zero otherwise. It also calls 'error' instead of 'fatal', to avoid exiting prematurely. (func_shell_base) [WINDOWS32]: Call perror_with_name if windows32_openpipe fails, now that it always returns. This avoids a compiler warning that error_prefix is not used in the MS-Windows build. config.h.W32.template (OUTPUT_SYNC): Define. build_w32.bat: Add w32/compat/posixfcn.c to compilation and linking commands. From Frank Heckenbach <f.heckenbach@fh-soft.de>: job.c (sync_output): Don't discard the output if acquire_semaphore fails; instead, dump the output unsynchronized.
2013-04-16Some cleanups for Windows builds after the output-sync option.Paul Smith1-10/+2
Note currently output-sync is not supported on Windows.
2013-04-16Create an open_tmpfd() function to return temp files by FD. Use it.Paul Smith1-44/+0
2013-04-15Change the arg option for -O from numeric to string.Paul Smith1-26/+48
2013-04-14Rename the "parallel-sync" option to "output-sync".Paul Smith1-17/+17
2013-04-14Initial patch for output synchronization. See Savannah bug #33138.Frank Heckenbach1-5/+32
Based on work by David Boyce <David.S.Boyce@gmail.com>.
2013-02-25Expand the loadable object support.Paul Smith1-1/+1
Provide a simple API for loaded objects to interact with GNU make. I still won't guarantee that this API won't change but it's much closer to something that's supported and provides easy-to-use interfaces with a public header file.
2013-01-20Rename the make.h file to makeint.h for internal use only.Paul Smith1-1/+1
2013-01-20Allow dynamically loaded objects to be rebuilt by make.Paul Smith1-591/+591
2013-01-13[SV #38051] Recover all MAKEFLAGS after makefile rebuild step is complete.Paul Smith1-1/+1
Patch suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
2012-10-29Implement new "load" directive.Paul Smith1-4/+9
Provides support for dynamically loadable objects in GNU make, as a "technology preview".
2012-03-05Simplify copyrights using ranges of years.Paul Smith1-6/+5
The new GNU Maintainer's Manual allows the use of year ranges in certain situations; take advantage of this simplification.
2012-03-04Create a new CSTRLEN (constant string length) macro, and use it.Paul Smith1-16/+14
2012-03-04Convert all "`'" quotes to "''" per new GNU Coding Standard guidelines.Paul Smith1-27/+27
Fixes Savannah bug #34530.
2012-01-28Actually commit main.c with changes announced in last commit.Eli Zaretskii1-3/+4
2012-01-16Update copyright notices.Paul Smith1-4/+4
2012-01-15Add GNU Guile as an optional embedded scripting language for make.Paul Smith1-3/+8
On configure-enabled systems, configure will detect Guile installed (using pkg-config, which is how GNU Guile is distributed) and enable it if so. On all non-configure-enabled systems, currently, the default is for Guile support to be disabled.
2011-11-15Enable jobserver on W32 when using configure.Paul Smith1-3/+4
Some W32 cleanups: see Savannah bug #34830 Forgot to modify the config.h.W32.template file for jobserver support.
2011-11-14Support jobserver capability on Windows systems.Paul Smith1-9/+72
Implementation contributed by Troy Runkel <Troy.Runkel@mathworks.com>
2011-11-14In very obscure situations we may write the free token back to the pipe.Paul Smith1-1/+2
Don't do that. I couldn't come up with a repro case for this!
2011-09-18When we re-exec the master makefile in a jobserver environment, ensurePaul Smith1-3/+5
that MAKEFLAGS is set properly so the re-exec'd make runs in parallel. See Savannah bug #33873.
2010-08-29Bump the version to 3.82.90.Paul Smith1-5/+6
Fix some doc bugs. Implement the --trace flag. Show filename/linenumber on error.
2010-08-14- Fix the NEWS file to be accuratePaul Smith1-1/+1
- Add oneshell to $(.FEATURES) (forgot that!) - Fix Savannah bug #30612: handling of archive references with >1 object
2010-08-10Fix Savannah bug #30723: expand MAKEFLAGS before we re-exec afterPaul Smith1-1/+1
rebuilding makefiles.
2010-07-19- Many fixup patches from Savannah.Paul Smith1-5/+7
- Fix the test suite on Solaris (from Boris) - Update the manual for .ONESHELL
2010-07-13Update copyrights for 2010.Paul Smith1-2/+2
2010-07-12Add the beginning of the .ONESHELL special feature.Paul Smith1-0/+6
Original patch by David Boyce. Modified by Paul Smith.
2010-07-09 job.c (pid2str) [WINDOWS32]: Don't use %Id with GCC < 4.x.Eli Zaretskii1-10/+12
(exec_command) [WINDOWS32]: Use pid2str instead of non-portable %Id. main.c (handle_runtime_exceptions): Use %p to print addresses, to DTRT on both 32-bit and 64-bit hosts. Savannah bug #27809. job.c (w32_kill, start_job_command, create_batch_file): Use pid_t for process IDs and intptr_t for the 1st arg of _open_osfhandle. function.c (windows32_openpipe): Use pid_t for process IDs and intptr_t for the 1st arg of _open_osfhandle. (func_shell): Use pid_t for process IDs. main.c (main) [WINDOWS32]: Pacify the compiler. config.h.W32.template (pid_t): Add a definition for 64-bit Windows builds that don't use GCC. Savannah bug #27809. Patch by Ozkan Sezer <sezeroz@gmail.com>
2010-07-06- Enhance .POSIX to set -e when invoking shells, as demanded by aPaul Smith1-10/+11
backward-incompatible change in the 2008 POSIX specification. - Add the .SHELLFLAGS variable so people can choose their own shell flags. - Add tests for this. - Add documentation for this.
2010-07-01- Add whitespace to command line invocation in features/recursionPaul Smith1-7/+16
- Set up .FEATURES with separate calls for optional features, as some compilers don't like conditionals inside macro invocations.
2009-11-16Add VMS enhancements from Hartmut Becker.Paul Smith1-8/+5
2009-10-25New command line option: --eval=STRING will cause STRING to bePaul Smith1-42/+102
evaluated as a makefile statement before the first makefile is read.
2009-10-06Implement the new undefine directive.Boris Kolpackov1-1/+1
2009-09-28Implement the shortest stem first search order for pattern-specific ↵Boris Kolpackov1-1/+2
variables and pattern rules.
2009-09-24- Rework secondary expansion so we only defer it if there's a possibilityPaul Smith1-2/+1
it might be needed: for most situations we parse prereqs immediately as we used to. Reduces memory usage. - Fixes Savannah bug #18622.
2009-09-16- Add xcalloc() and call itPaul Smith1-7/+6
- Fix memory errors found by valgrind - Remove multi_glob() and empower parse_file_seq() to do its job: the goal here is to remove the confusing reverse/re-reverse we do on the file lists: needed for future fixes. - Add a prefix arg to parse_file_seq() - Make concat() variadic so it can take arbitrary #'s of strings
2009-06-13- Fix Savannah bug 17825Paul Smith1-1/+1
- Fix Savannah bug 21231