summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-05-01Don't synchronize output for recursive make unless -OmakePaul Smith2-2/+9
2013-04-29Support dynamic object loading on MS-Windows.Eli Zaretskii5-1/+131
w32/include/dlfcn.h: New file. w32/compat/posixfcn.c: Include dlfcn.h. (dlopen, dlerror, dlsym) [MAKE_LOAD]: New functions, in support of dynamic loading. config.h.W32.template (MAKE_LOAD): Define. load.c (load_object) [HAVE_DOS_PATHS]: Support backslashes and drive letters in file names of dynamic objects.
2013-04-29Fix the .ONESHELL operation on MS-Windows.Eli Zaretskii2-3/+9
job.c (construct_command_argv_internal) [WINDOWS32]: Return right after generating new_argv for one_shell case. This fixes the Windows build for both Unixy shell and stock Windows shells.
2013-04-28Merge branch 'master' of git.savannah.gnu.org:/srv/git/makePaul Smith2-1/+27
2013-04-28Ensure error messages are printed with sync'd output.Paul Smith6-23/+145
Enhance the child_error() function so that it will write error output to the child's sync output buffer, if it exists. If it doesn't the output goes to stdout/stderr.
2013-04-28Remove support for pre-ANSI variadic function calls.Paul Smith8-136/+22
We've required support for ANSI C (ISO C 89) or better for quite a while. Get rid of the old varags.h, doprnt() stuff and simply assume ANSI C variadic function capability and basic C runtime library support (vfprintf, vsprintf, etc.)
2013-04-28Small cleanups and fixes.Paul Smith4-12/+15
2013-04-28Fix Savannah bug #37065 with $(wildcard foo/*/.) returning non-directories.Eli Zaretskii2-1/+27
dir.c (local_stat) [WINDOWS32]: Use the wrapper on MS-Windows. If the argument ends in "dir/.", make sure the parent dir exists and is indeed a directory. Fixes Savannah bug #37065.
2013-04-28Fix a few compiler warnings found by Eli.Paul Smith2-10/+5
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.