summaryrefslogtreecommitdiff
path: root/read.c
AgeCommit message (Collapse)AuthorFilesLines
2013-09-22Allow loaded objects to opt out of the "auto-rebuild" feature.Paul Smith1-3/+11
2013-09-22Add VMS port updates from Hartmut Becker.Paul Smith1-1/+1
2013-09-15[SV 27374] Fatal immediately on unrecoverable fopen() errors.Paul Smith1-1/+15
2013-07-22[Bug #39310] Parse simple pattern prereqs for globbing.Paul Smith1-1/+1
We tried to get some efficiency by avoiding a parse_file_seq() for simple pattern prerequisites, but this also means no wildcard expansion was happening, so add it back. Add regression tests for wildcards in target and prerequisite lists.
2013-07-21[Bug #39158] Source cleanups suggested by cppcheck utility.Paul Smith1-3/+2
2013-06-22Create a character map to use for locating stop-points in strings.Paul Smith1-58/+40
In various places we were passing flags and characters to compare, then using complex conditionals to see where to stop in string searches. Performance numbers reveal that we were spending as much as 23% of our processing time in these functions, most of it in the comparison lines. Instead create a character map and use a single bitwise comparison to determine if this is any one of the stop characters.
2013-05-26[SV #38945] Copy the entire buffer back when overwriting CRPaul Smith1-1/+1
2013-05-26[SV #39028] Fix some small typos in messages.Paul Smith1-2/+2
2013-05-22Make MFLAGS and MAKEFLAGS more reliable and predictable.Paul Smith1-1/+4
Ensure all simple flags are kept in the initial batch of flags. Do not allow any flags with options in that batch. If there are only non-simple flags ensure MAKEFLAGS begins with " ". Don't let MFLAGS start with "- ".
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