summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-05-04Improve sync handling for -Ojob/-Otarget and recursion.Paul Smith5-131/+183
If we are not going to sync a command line then dump any collected output first to preserve ordering. Do some code cleanup: * Move the handle init to a separate function. * Move the temp file truncation to the output function. * Remember whether we sync in a variable for readability. * Handle EINTR and short writes in child_out(). * Always call sync_output() in case output_sync was changed due to error.
2013-05-04Fix a possibly confusing comment at end of pump_from_tmp_fd.Eli Zaretskii1-1/+2
2013-05-04Fix the MS-Windows branch of output_sync code.Eli Zaretskii2-2/+7
job.c (start_job_command): Make the condition for creating a temporary output file be identical to the Posix code branch. Suggested by Frank Heckenbach <f.heckenbach@fh-soft.de>.
2013-05-03Fix invocation of Windows batch files with whitespace in their names.Eli Zaretskii2-3/+55
w32/subproc/sub_proc.c: Include makeint.h. Remove a private incompatible prototype of xmalloc. (batch_file_with_spaces): New function, detects Windows batch files whose names include whitespace characters. (process_begin): If exec_name is a batch file with whitespace characters in its name, pass NULL as the first argument to CreateProcess. This avoids weird failures due to buggy quoting by CreateProcess. For the details, see the discussion starting at http://lists.gnu.org/archive/html/make-w32/2013-04/msg00008.html.
2013-05-03Fix interfacing with and remaking dynamic objects on MS-Windows.Eli Zaretskii13-22/+105
load.c (load_object, load_file): Accept an additional argument DLP and return in it a pointer that can be used to unload the dynamic object. read.c (eval): Call load_file with an additional argument, and record the pointer returned there in the 'struct file' object of dynamic objects in that object's 'struct file'. commands.c (execute_file_commands): Unload dynamic objects before remaking them, to avoid failure to remake if the OS doesn't allow overwriting objects that are in use. filedef.h (struct file): New member dlopen_ptr. gnumake.h (GMK_EXPORT): Define to dllexport/dllimport decorations for Windows and to nothing on other platforms. (gmk_eval, gmk_expand, gmk_add_function): Add GMK_EXPORT qualifier to prototypes. makeint.h (MAIN): Define before including gnumake.h, to give correct dllexport decorations to exported functions. (load_file): Adjust prototype. loadapi.c: Don't include gnumake.h, since makeint.h already includes it, and takes care of defining MAIN before doing so. build_w32.bat (LinkGCC): Produce an import library for functions exported by Make for loadable dynamic objects. w32/compat/posixfcn.c (dlclose): New function. w32/include/dlfcn.h (dlclose): Add prototype. scripts/features/load: Fix signatures of testload_gmk_setup and explicit_setup, to bring them in line with the documentation.
2013-05-01Mention in NEWS change on Windows with quotes in command lines.Eli Zaretskii1-0/+9
2013-05-01Fix treatment of whitespace after a backslash on MS-Windows.Eli Zaretskii2-0/+13
job.c (construct_command_argv_internal): Don't treat a backslash as an escape character before whitespace, if the shell is not a Posix shell. For the description of the problem, see http://lists.gnu.org/archive/html/make-w32/2013-04/msg00014.html.
2013-05-01job.c (start_job_command) [WINDOWS32]: Make the same fix forEli Zaretskii2-2/+9
MS-Windows as the previous commit did for Posix platforms.
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