summaryrefslogtreecommitdiff
path: root/w32
AgeCommit message (Collapse)AuthorFilesLines
2013-05-03Fix invocation of Windows batch files with whitespace in their names.Eli Zaretskii1-3/+45
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 Zaretskii2-0/+12
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-04-29Support dynamic object loading on MS-Windows.Eli Zaretskii2-0/+98
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-27Support --output-sync on MS-Windows.Eli Zaretskii3-4/+282
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 Zaretskii1-5/+5
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-01-20Rename the make.h file to makeint.h for internal use only.Paul Smith2-2/+2
2013-01-12Rename CVS ignore files to .gitignorePaul Smith1-2/+0
2012-03-05Simplify copyrights using ranges of years.Paul Smith13-26/+13
The new GNU Maintainer's Manual allows the use of year ranges in certain situations; take advantage of this simplification.
2012-03-04Convert all "`'" quotes to "''" per new GNU Coding Standard guidelines.Paul Smith2-4/+4
Fixes Savannah bug #34530.
2012-02-03Ifdef away unused w32 functions.Eli Zaretskii1-0/+2
w32/subproc/sub_proc.c (proc_stdin_thread, proc_stdout_thread) (proc_stderr_thread, process_pipe_io): Ifdef away unused functions.
2012-02-03Fix Savannah bug #34832 with unused TLS attributes.Eli Zaretskii2-8/+24
w32/subproc/w32err.c (map_windows32_error_to_string) [_MSC_VER]: Don't use TLS storage for szMessageBuffer. Ifdef away special code for handling Winsock error codes. Make the function return a `const char *'. Suggested by Ozkan Sezer. Fixes Savannah bug #34832.
2012-01-28 Fix failures on MS-Windows when Make's standard handles are invalid.Eli Zaretskii1-52/+113
This can happen when Make is invoked from a GUI application. * w32/subproc/sub_proc.c (process_init_fd): Don't dereference pproc if it is a NULL pointer. (process_begin, process_cleanup): Don't try to close pipe handles whose value is INVALID_HANDLE_VALUE. (process_easy): Initialize hIn, hOut, and hErr to INVALID_HANDLE_VALUE. If DuplicateHandle fails with ERROR_INVALID_HANDLE, duplicate a handle for the null device instead of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE or STD_ERROR_HANDLE. Don't try to close pipe handles whose value is INVALID_HANDLE_VALUE. * function.c (windows32_openpipe): Initialize hIn and hErr to INVALID_HANDLE_VALUE. If DuplicateHandle fails with ERROR_INVALID_HANDLE, duplicate a handle for the null device instead of STD_INPUT_HANDLE or STD_ERROR_HANDLE. Fix indentation. Don't try to close handles whose value is INVALID_HANDLE_VALUE.
2012-01-16Update copyright notices.Paul Smith13-21/+21
2011-11-15Enable jobserver on W32 when using configure.Paul Smith2-2/+2
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 Smith2-9/+145
Implementation contributed by Troy Runkel <Troy.Runkel@mathworks.com>
2010-08-07 w32/subproc/build.bat: Make all 3 cl.exe compile command linesEli Zaretskii1-5/+5
use the same /I switches. Fixes Savannah bug #30662.
2010-07-19- Many fixup patches from Savannah.Paul Smith4-5/+11
- Fix the test suite on Solaris (from Boris) - Update the manual for .ONESHELL
2010-07-13Update copyrights for 2010.Paul Smith13-13/+13
2010-07-09 w32/subproc/sub_proc.c: Include stdint.h.Eli Zaretskii1-14/+15
(sub_process_t): Use intptr_t for file handles and pid_t for process ID. (process_pipes, process_init_fd, process_begin): Use intptr_t for file handles and pid_t for process ID. Savannah bug #27809. Patch by Ozkan Sezer <sezeroz@gmail.com>
2009-10-25Update copyright years.Paul Smith13-13/+13
2009-09-14 * w32/subproc/sub_proc.c (process_begin): Check *ep non-NULLEli Zaretskii1-6/+7
inside the loop that looks up environment for PATH.
2009-03-14(convert_Path_to_windows32): Fix last change. Fixes Savannah bug #25412.Eli Zaretskii1-3/+9
2009-03-14<top level>: Update Copyright years. Add prototype for xmalloc.Eli Zaretskii1-47/+59
(find_file): Accept 3 arguments PATH_VAR, FULL_FNAME, and FULL_LEN instead of an LPOFSTRUCT pointer. Use xmalloc instead of malloc. Loop over an array of extensions, instead of duplicating the same code inline. Use SearchPath followed by CreateFile, instead of the obsolete OpenFile. Fixes Savannah bug #17277. (process_begin): Find $(PATH) in `envp', and pass a pointer to it to `find_file'. Fixes Savannah bug #25662.
2008-09-30 * build_w32.bat (GCCBuild): Use "-gdwarf-2 -g3" instead ofEli Zaretskii1-3/+3
"-gstabs+ -ggdb3". * w32/subproc/build.bat (GCCBuild): Likewise.
2007-10-24Convert to Unix line-endings.Eli Zaretskii6-475/+475
2007-10-10Fixes from Eli Zaretskii:Paul Smith1-1/+7
Fix to allow quoted directories in PATH. Fix for Savannah bug #20549.
2007-07-04* Update to GPLv3Paul Smith13-74/+76
* Update copyright to 2007 * Fix download URL for translation files (thanks to Thiemo Seufer)
2006-11-18Fix from Eli for incorrect value of $(MAKE) on Cygwin.Paul Smith2-5/+5
A few changes from char* to void* where appropriate, and removing of unnecessary casts. Much more work on const-ifying the codebase. This round involves some code changes to make it correct. NOTE!! There will almost certainly be problems on the non-POSIX ports that will need to be addressed after the const changes are finished: they will need to be const-ified properly and there may need to be some changes to allocate memory, etc. as well. The next (last?) big push for this, still to come, is const-ifying the filenames in struct file, struct dep, etc. This will allow us to store file names in the string cache and finally resolve Savannah bug #15182 (make uses too much memory), among other advantages.
2006-03-10Numerous updates to tests for issues found on Cygwin and Windows.Paul Smith1-5/+5
Revert a fix for $? including non-existent files as it shows a bug in the Linux kernel build. Give them a release to fix this. Add some changes from Eli Z. for Windows changes.
2006-02-11Last of the copyright updates.Paul Smith13-36/+37
2006-02-11More copyright/license updates.Paul Smith1-13/+11
2006-02-11Update copyright and license notices on all files.Paul Smith12-17/+199
Added new file strcache.c to various non-UNIX makefiles and build scripts.
2006-02-06Updates to Windows stuff from Markus Mauhart.Paul Smith1-28/+26
2006-02-01Various updates, mainly to the Windows port, from Eli Zaretskii andPaul Smith2-3/+18
Markus Maurhart.
2005-08-08- Fixed a bug reported by Michael Matz regarding handling of parallelPaul Smith3-8/+29
jobs after a failed job. - Enhancements to WINDOWS32 code from Eli Zaretskii. - Add Microsoft Project files from J. Grant.
2005-07-04Various fixes and updates from testers of the beta3 release (mostly WindowsPaul Smith2-7/+7
and OS/2 changes).
2005-06-27Fixes for some Windows/MSC compile issues.Paul Smith1-8/+8
wget command line option seems to have changed?
2005-06-09Fix Savannah bug #11913: ensure that scopes such as foreach, etc. takePaul Smith1-0/+1
precedence over the global scope when they're used in a global context (such as an eval).
2005-02-28* New feature: -L optionPaul Smith1-0/+1
* New function: $(info ...) * Disallow $(eval ...) to create prereq relationships inside command scripts (caused core dumps) * Try to allow more tests to succeed in Windows/DOS by sanitizing CRLF and \ * Various bug fixes and code cleanups (see the ChangeLog entry)
2005-02-26Add configure operations to support MINGW on Windows.Paul Smith4-7/+22
2005-02-10Flush stdout after printing directory info.Paul Smith1-5/+2
Fix references to MINGW #define constants. Remove WINDOWS32 ifdef from sub_proc.h. Only add variables to the command line for recursion once. New features in run_make_test: #PWD# and #MAKEPATH# replacements. Test the multi-variable fix in the recursion regression test.
2004-02-23Numerous fixes: patches for OS/2; core for -f ''; makefile updates.Paul Smith2-8/+11
2003-11-03Added MINGW32 changes.Paul Smith1-37/+62
This commits a number of changes from Earnie Boyd that allows GNU make to build for MINGW32 systems. Only missing from this commit are the changes to configure.in etc.; I'm waiting for Earnie to sign papers for those new files. Also not here is any README.mingw32 etc. which would explain how to use this port.
2000-06-07* Lots of bug fixes and cleanup; new i18n files, etc.Paul Smith1-2/+2
2000-04-22* Various bug fixes.Paul Smith1-6/+4
1999-12-08* Various changes and fixes. See ChangeLog.Paul Smith1-0/+2
1999-08-31* Large file support for AIX, HP-UX, and IRIX.Paul Smith1-4/+23
* W32 support for Cygnus Cygwin shell (bash).
1998-10-03Checkpoint changes. Bug fixes, mostly.Paul Smith2-1246/+1250
1998-07-30GNU make release 3.77.Paul Smith3-148/+204
1997-09-16Changes for GNU make 3.76Paul Smith1-8/+7