summaryrefslogtreecommitdiff
path: root/read.c
AgeCommit message (Collapse)AuthorFilesLines
2013-05-17Update source file format: remove TABs, use GNU coding styles.Paul Smith1-14/+14
2013-05-17Update copyright for changes in 2013.Paul Smith1-1/+1
2013-05-17Remove the dlopen() pointer from struct filedef.Paul Smith1-3/+2
This pointer is almost never needed, and it increases the size of the filedef struct for all files (of which there are a huge number for large builds). Instead keep a bit field marking whether the file is a loaded object and if so call a new function to unload it. In load.c we keep a simple linked list of loaded objects (of which there will be very few typically) and their dlopen() pointers.
2013-05-03Fix interfacing with and remaking dynamic objects on MS-Windows.Eli Zaretskii1-1/+3
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-27Support .ONESHELL on MS-Windows, for default Windows shells.Eli Zaretskii1-1/+1
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-27Support --output-sync on MS-Windows.Eli Zaretskii1-1/+4
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-02-25Expand the loadable object support.Paul Smith1-2/+4
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 struct floc to typedef gmk_floc as an externally scoped symbol.Paul Smith1-13/+13
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-449/+457
2012-10-29Implement new "load" directive.Paul Smith1-11/+62
Provides support for dynamically loadable objects in GNU make, as a "technology preview".
2012-09-09Fix stupid wrong-pointer error handling target vars containing semicolons.Paul Smith1-2/+2
Fixes Savannah bug #36106.
2012-09-09Ignore UTF-8 BOMs. See Savannah bug #36529.Paul Smith1-5/+17
2012-09-09 read.c (unescape_char): Fix a thinko in the last change.Eli Zaretskii1-3/+6
2012-09-09Break out of an infinite loop if we're not making progress.Paul Smith1-0/+4
2012-09-09When .POSIX: is specified use POSIX-standard macro values by default.Paul Smith1-0/+7
2012-09-01Fix unescape_char when not unescaping.Eli Zaretskii1-1/+1
read.c (unescape_char): Advance 'p' after copying the unescaped characters. Otherwise the backslashes are incorrectly erased from the original string.
2012-03-05Simplify copyrights using ranges of years.Paul Smith1-3/+1
The new GNU Maintainer's Manual allows the use of year ranges in certain situations; take advantage of this simplification.
2012-03-04Improve handling for escaped colons in prerequisite lists.Paul Smith1-16/+61
Fixes Savannah bug #12126 and bug #16545
2012-03-04Create a new CSTRLEN (constant string length) macro, and use it.Paul Smith1-4/+4
2012-03-04Convert all "`'" quotes to "''" per new GNU Coding Standard guidelines.Paul Smith1-39/+39
Fixes Savannah bug #34530.
2012-01-30Add support for "::=" simple assignment operator.Paul Smith1-15/+22
The next POSIX standard will define "::=" to have the same behavior as GNU make's ":=", so add support for this new operator.
2012-01-16Update copyright notices.Paul Smith1-3/+3
2011-11-14Be sure to start parsing prereqs in the right place even if there arePaul Smith1-3/+4
escape characters (backslashes) in the target name. See Savannah bug #33399
2011-11-14Changes to resolve warnings.Paul Smith1-1/+1
Fixes Savannah bug #34608.
2011-09-12Ensure variables defined in $(call ...) have global scopePaul Smith1-1/+1
Add a note about using #!/usr/bin/make -f to the manual. Clean up the w32 subdirectory in the dist tarball.
2011-06-12Fix another error related to whitespace handling in archives.Paul Smith1-5/+5
Newer version of VMS support strncasecmp() so update the config.h.
2011-05-07Inverted the boolean test from what I wanted it to be. Added aPaul Smith1-1/+1
regression test to make sure this continues to work.
2011-05-02Avoid invoking glob() unless the filename has potential globbingPaul Smith1-24/+34
characters in it, for performance improvements.
2011-04-29Delay caching of the file name in eval_makefile() until after all theBoris Kolpackov1-6/+9
expansions and searches are complete. This fixes an assertion in a situation where the MAKEFILES variable contains a file path that contains tilde.
2011-04-18Add new feature: != shell assignment for portability with BSD make.Paul Smith1-2/+3
Feature submitted by David Wheeler.
2010-11-30Check if the target-specific variable is the same as the globalPaul Smith1-1/+2
variable, and if so don't try to update it. Savannah bug #31743.
2010-11-06Improve backslash/newline handling to adhere to POSIX requirements.Paul Smith1-22/+14
2010-08-14- Fix the NEWS file to be accuratePaul Smith1-6/+9
- Add oneshell to $(.FEATURES) (forgot that!) - Fix Savannah bug #30612: handling of archive references with >1 object
2010-07-13Update copyrights for 2010.Paul Smith1-2/+2
2010-07-12Add the beginning of the .ONESHELL special feature.Paul Smith1-0/+4
Original patch by David Boyce. Modified by Paul Smith.
2010-07-06- Enhance .POSIX to set -e when invoking shells, as demanded by aPaul Smith1-1/+4
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-03Do not consider filenames that contain parens but don't END in a paren,Paul Smith1-15/+44
to be an archive group. Fixes Savannah bug #28525.
2009-10-25Update copyright years.Paul Smith1-2/+2
2009-10-25Various simple code cleanups.Paul Smith1-14/+8
2009-10-22Get the old behavior for a situation when no makefile is found in a directory.Boris Kolpackov1-1/+1
2009-10-07Minor fix and code rework.Boris Kolpackov1-0/+1
2009-10-06Fix savannah bug 25780. Optimize things a bit.Boris Kolpackov1-64/+0
2009-10-06Implement the new undefine directive.Boris Kolpackov1-4/+44
2009-09-30Fix Savannah bugs #15110, #25493, #12686, and #17740.Boris Kolpackov1-1/+1
2009-09-27- Add static pattern targets to the string cache.Paul Smith1-7/+7
- Use specific free_*() calls where appropriate.
2009-09-26Fix some memory leaks, found with valgrind.Paul Smith1-5/+16
2009-09-24- Rework secondary expansion so we only defer it if there's a possibilityPaul Smith1-147/+154
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-317/+275
- 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 #13401Paul Smith1-2/+4