summaryrefslogtreecommitdiff
path: root/read.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix VMS implicit rules and UNIX paths.John Malmberg2014-10-201-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes VMS implicit rules and UNIX style pathname handling. It also fixes some of the VMS style pathname handling, more work there will be needed later. TODO: There are other case insensitive platforms besides VMS. We need to find out why there is extra VMS code for this. This indicates either the extra VMS code is not needed, or the case insensitive support may not be complete on the other case insensitive platforms. * default.c: Add missing definitions to default_suffix_rules[] and default_variables[]. TODO: As it is important that VMS DCL mode definitions must always be a superset of UNIX definitions, a better way of maintaining the VMS DCL mode definitions should be devised. * dir.c (downcase_inplace): Add a reentrant downcase() routine. Add future support for VMS 8.2+ _USE_STD_STAT macro which will disable a lot of VMS specific code from compiling. (dir_file_exists_p): vmsify filename only if directory name has VMS directory delimiters. (file_exists_p): Handle both VMS and UNIX directories. (file_impossible): Handle both VMS and Unix directories. Track whether a VMS format path is needed for the return value. * file.c (lookup_file): Check if vmsify is needed; handle UNIX paths. * implicit.c (pattern_search): Enable UNIX paths. * read.c (parse_file_seq): Enable UNIX paths. * remake.c (f_mtime): Fix gpath_search call for VMS paths. * rule.c (count_implicit_rule): Enable UNIX paths, Fix VMS paths. * vpath.c (selective_vpath_search): Enable UNIX paths.
* Update Copyright statements for 2014.Paul Smith2014-09-301-1/+1
|
* Change the order of "makefile" and "Makefile" to match the manual.Eli Zaretskii2014-08-301-1/+1
|
* Fix regression with "makefile" not being found on MS-Windows.Eli Zaretskii2014-08-301-1/+1
| | | | | | * read.c (read_all_makefiles) [WINDOWS32]: Recognize "makefile", all-lowercase, as a makefile. Reported by Michael Waeber <waeber@gmail.com>.
* Fix defalt_makefiles[] for MS-Windows.Jonny Grant2014-07-121-0/+4
| | | | | | | * read.c (read_all_makefiles) [WINDOWS32]: Remove the redundant "makefile" and add "makefile.mak". Copyright-paperwork-exempt: yes
* * read.c (eval): [SV 41677] Correct test for TAB vs. 8 spaces.Paul Smith2014-07-071-1/+1
|
* * various: Assume ISO C89-compliant free() implementation.Paul Smith2014-07-071-20/+10
|
* * maintMakefile, various: Improve constification of the codebase.Paul Smith2014-07-071-3/+3
|
* * read.c (unescape_char): Use memmove() for overlapping memory.Paul Smith2013-11-241-2/+2
|
* [SV 40361] Don't use vsnprintf(), which is an ISO C99 function.Paul Smith2013-11-231-43/+53
| | | | | | | | | | * output.c (error, fatal, message): Take an extra argument specifying how many bytes are used by the formatted arguments. (get_buffer): New function that allocates the requested buffer size. Remove msc_vsnprintf(), vfmtconcat(), and fmtconcat() as unneeded. * makeint.h: Declare various helper macros for generating output. * *.c: Change all error(), fatal(), message() calls to use the macros, or pass the extra length argument directly.
* * read.c (record_files): [SV 33034] Change fatal() to error()Paul Smith2013-10-201-1/+1
| | | | | | Allows deprecated syntax. However we don't guarantee this syntax will continue to be legal in the future. Change suggested by David Boyce <david.s.boyce@gmail.com>
* * read.c (eval): Avoid GCC warning to add braces.Paul Smith2013-10-191-8/+9
|
* [SV 40139] Modify "missing separator" for better translationPaul Smith2013-10-131-3/+4
|
* [SV 39709] Fix some typos.Paul Smith2013-10-091-1/+1
|
* Allow loaded objects to opt out of the "auto-rebuild" feature.Paul Smith2013-09-221-3/+11
|
* Add VMS port updates from Hartmut Becker.Paul Smith2013-09-221-1/+1
|
* [SV 27374] Fatal immediately on unrecoverable fopen() errors.Paul Smith2013-09-151-1/+15
|
* [Bug #39310] Parse simple pattern prereqs for globbing.Paul Smith2013-07-221-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.
* [Bug #39158] Source cleanups suggested by cppcheck utility.Paul Smith2013-07-211-3/+2
|
* Create a character map to use for locating stop-points in strings.Paul Smith2013-06-221-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.
* [SV #38945] Copy the entire buffer back when overwriting CRPaul Smith2013-05-261-1/+1
|
* [SV #39028] Fix some small typos in messages.Paul Smith2013-05-261-2/+2
|
* Make MFLAGS and MAKEFLAGS more reliable and predictable.Paul Smith2013-05-221-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 "- ".
* Update source file format: remove TABs, use GNU coding styles.Paul Smith2013-05-171-14/+14
|
* Update copyright for changes in 2013.Paul Smith2013-05-171-1/+1
|
* Remove the dlopen() pointer from struct filedef.Paul Smith2013-05-171-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.
* Fix interfacing with and remaking dynamic objects on MS-Windows.Eli Zaretskii2013-05-031-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.
* Support .ONESHELL on MS-Windows, for default Windows shells.Eli Zaretskii2013-04-271-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.
* Support --output-sync on MS-Windows.Eli Zaretskii2013-04-271-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.
* Expand the loadable object support.Paul Smith2013-02-251-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.
* Rename struct floc to typedef gmk_floc as an externally scoped symbol.Paul Smith2013-01-201-13/+13
|
* Rename the make.h file to makeint.h for internal use only.Paul Smith2013-01-201-1/+1
|
* Allow dynamically loaded objects to be rebuilt by make.Paul Smith2013-01-201-449/+457
|
* Implement new "load" directive.Paul Smith2012-10-291-11/+62
| | | | | Provides support for dynamically loadable objects in GNU make, as a "technology preview".
* Fix stupid wrong-pointer error handling target vars containing semicolons.Paul Smith2012-09-091-2/+2
| | | | Fixes Savannah bug #36106.
* Ignore UTF-8 BOMs. See Savannah bug #36529.Paul Smith2012-09-091-5/+17
|
* read.c (unescape_char): Fix a thinko in the last change.Eli Zaretskii2012-09-091-3/+6
|
* Break out of an infinite loop if we're not making progress.Paul Smith2012-09-091-0/+4
|
* When .POSIX: is specified use POSIX-standard macro values by default.Paul Smith2012-09-091-0/+7
|
* Fix unescape_char when not unescaping.Eli Zaretskii2012-09-011-1/+1
| | | | | | read.c (unescape_char): Advance 'p' after copying the unescaped characters. Otherwise the backslashes are incorrectly erased from the original string.
* Simplify copyrights using ranges of years.Paul Smith2012-03-051-3/+1
| | | | | The new GNU Maintainer's Manual allows the use of year ranges in certain situations; take advantage of this simplification.
* Improve handling for escaped colons in prerequisite lists.Paul Smith2012-03-041-16/+61
| | | | Fixes Savannah bug #12126 and bug #16545
* Create a new CSTRLEN (constant string length) macro, and use it.Paul Smith2012-03-041-4/+4
|
* Convert all "`'" quotes to "''" per new GNU Coding Standard guidelines.Paul Smith2012-03-041-39/+39
| | | | Fixes Savannah bug #34530.
* Add support for "::=" simple assignment operator.Paul Smith2012-01-301-15/+22
| | | | | The next POSIX standard will define "::=" to have the same behavior as GNU make's ":=", so add support for this new operator.
* Update copyright notices.Paul Smith2012-01-161-3/+3
|
* Be sure to start parsing prereqs in the right place even if there arePaul Smith2011-11-141-3/+4
| | | | | escape characters (backslashes) in the target name. See Savannah bug #33399
* Changes to resolve warnings.Paul Smith2011-11-141-1/+1
| | | | Fixes Savannah bug #34608.
* Ensure variables defined in $(call ...) have global scopePaul Smith2011-09-121-1/+1
| | | | | Add a note about using #!/usr/bin/make -f to the manual. Clean up the w32 subdirectory in the dist tarball.
* Fix another error related to whitespace handling in archives.Paul Smith2011-06-121-5/+5
| | | | Newer version of VMS support strncasecmp() so update the config.h.