summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-04-28Add support for per-job output sync.Paul Smith11-105/+320
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-27Fix support for .ONESHELL when dealing with non-POSIX shells.Paul Smith2-26/+29
2013-04-27Rework the implementation of load.c to increase portability.Paul Smith2-59/+71
It should be sufficient, now, to write a new version of the load_object() function. That function won't be called unless we really want to load, so all checking and parsing is taken care of before that.
2013-04-27Merge branch 'master' of git.savannah.gnu.org:/srv/git/makePaul Smith13-113/+772
2013-04-27Support .ONESHELL on MS-Windows, for default Windows shells.Eli Zaretskii3-23/+107
read.c (record_files): Pay attention to .ONESHELL in MS-Windows. job.c (construct_command_argv_internal): Support .ONESHELL on MS-Windows, when the shell is not a Unixy shell.
2013-04-27 job.c: Fix compilation error on GNU/Linux due to "label at end of compound ↵Eli Zaretskii2-1/+11
statement".
2013-04-27Support --output-sync on MS-Windows.Eli Zaretskii12-42/+556
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-25Improve MS-Windows build scripts.Eli Zaretskii3-58/+109
build_w32.bat: Improve. Remove 'setlocal', as it isn't supported on Windows 9X. Add --help and usage instructions. Support both debug and optimized builds with GCC under --debug. If building out of Git repo, always produce config.h, and edit gmk-default.scm into gmk-default.h. w32/subproc/build.bat: Support debug and optimized builds with GCC.
2013-04-21Reflect the 'configure.in' -> 'configure.ac' rename throughoutStefano Lattarini5-5/+13
In README, code comments, and auxiliary files. Copyright-paperwork-exempt: yes Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
2013-04-16Some cleanups for Windows builds after the output-sync option.Paul Smith4-17/+19
Note currently output-sync is not supported on Windows.
2013-04-16Cleanup some source and fix autoconf warnings.Paul Smith3-8/+4
2013-04-16Create an open_tmpfd() function to return temp files by FD. Use it.Paul Smith8-105/+110
2013-04-15Save the output from the entire recipe, not per-job.Paul Smith1-18/+21
2013-04-15Change the arg option for -O from numeric to string.Paul Smith8-47/+100
2013-04-15Modify output-sync tests to be more reliable.Paul Smith2-25/+67
2013-04-14Handle test timeouts in a more understandable way.Paul Smith2-28/+36
2013-04-14Rename the "parallel-sync" option to "output-sync".Paul Smith7-162/+154
2013-04-14Initial patch for output synchronization. See Savannah bug #33138.Frank Heckenbach7-13/+486
Based on work by David Boyce <David.S.Boyce@gmail.com>.
2013-04-06Clarify LDFLAGS vs. LDLIBS. Fixes Savannah bug #37970.Paul Smith2-2/+7
2013-04-06Reconsider targets waiting for prerequisites. Fixes Savannah bug #37703.Paul Smith2-1/+13
2013-02-28Use ENULLLOOP to handle EINTR during realpath(). Fixes Savannah bug #38420Paul Smith4-13/+28
2013-02-25Expand the loadable object support.Paul Smith19-149/+504
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-20Adding new file.Paul Smith1-0/+27
2013-01-20Create externally referencable header file "gnumake.h".Paul Smith3-8/+11
Move the gmk_floc type to gnumake.h.
2013-01-20Rename struct floc to typedef gmk_floc as an externally scoped symbol.Paul Smith12-78/+81
2013-01-20Rename the make.h file to makeint.h for internal use only.Paul Smith38-62/+67
2013-01-20Allow dynamically loaded objects to be rebuilt by make.Paul Smith8-1084/+1190
2013-01-19Add more documentation on Git workflow and rules.Paul Smith2-0/+32
2013-01-18Fix a typo in ChangeLog.Eli Zaretskii1-1/+1
2013-01-13[SV #37878] Add a check for targets with parens that are not archives.Paul Smith2-0/+11
2013-01-13[SV #38051] Recover all MAKEFLAGS after makefile rebuild step is complete.Paul Smith4-23/+48
Patch suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
2013-01-13Add ChangeLog entries for Git migration.Paul Smith2-0/+21
2013-01-12Change configure.in to configure.ac, and other Git fixes.Paul Smith4-32/+2
2013-01-12Ensure parallel test works properly.Paul Smith1-4/+5
2013-01-12Fix clean rules.Paul Smith1-3/+5
2013-01-12Modify instructions, etc. for Git support.Paul Smith9-73/+60
2013-01-12Modify .gitignore for proper formatting.Paul Smith5-54/+80
2013-01-12Rename CVS ignore files to .gitignorePaul Smith7-4/+0
2013-01-06Add missing load.c file to POTFILES.inmoved-to-gitPaul Smith2-0/+5
2012-12-08 job.c (create_batch_file): Fix last change: always increment theEli Zaretskii2-6/+17
counter of batch files before trying to use it.
2012-12-07 job.c (construct_command_argv_internal): Remove " fromEli Zaretskii2-1/+18
sh_chars_dos[]. Ignore an escaped backslash inside a string quoted with "..". This lifts the 4KB or 8KB command-line length limitation imposed by the Windows shell when a command uses quoted strings, because we now don't call the shell in that case.
2012-12-07 job.c (reap_children): Add debug message for when removal of a temporaryEli Zaretskii2-1/+2
batch file fails.
2012-12-07Avoid leaving temporary batch files in the temporary directory.Eli Zaretskii2-4/+40
job.c (create_batch_file): Declare the counter of batch files static, to avoid having 2 jobs using the same file name and stepping on each other's toes. When all 64K names are used up, make one more loop looking for slots that became vacant. This avoids leaving behind temporary batch files in the temporary directory, which happens frequently on a fast machine when using parallel builds.
2012-10-29Implement new "load" directive.Paul Smith15-260/+807
Provides support for dynamically loadable objects in GNU make, as a "technology preview".
2012-10-28Rearrange elements to reduce struct size on 64bit architectures.Paul Smith2-10/+8
2012-10-28Remove extraneous close().Paul Smith1-3/+0
2012-09-30Update the required version of gettext to get new bugfix macros.Paul Smith2-1/+6
2012-09-10Define _GNU_SOURCE before testing for bsd_signal.Paul Smith2-1/+5
Fixes Savannah bug #32247
2012-09-10Force intermediate targets to be considered if their non-intermediatePaul Smith3-0/+25
parent needs to be remade. Fixes Savannah bug #30653.
2012-09-09Keep the command line on the heap to avoid stack overflow.Paul Smith2-4/+12
Fixes Savannah bug #36451.