summaryrefslogtreecommitdiff
path: root/read.c
AgeCommit message (Collapse)AuthorFilesLines
2015-03-24Eat trailing spaces in sun modeIgor Pashev1-0/+8
2015-03-24Support SunOS make target-specific variablesIgor Pashev1-1/+6
2014-10-20Fix VMS implicit rules and UNIX paths.John Malmberg1-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.
2014-09-30Update Copyright statements for 2014.Paul Smith1-1/+1
2014-08-30Change the order of "makefile" and "Makefile" to match the manual.Eli Zaretskii1-1/+1
2014-08-30Fix regression with "makefile" not being found on MS-Windows.Eli Zaretskii1-1/+1
* read.c (read_all_makefiles) [WINDOWS32]: Recognize "makefile", all-lowercase, as a makefile. Reported by Michael Waeber <waeber@gmail.com>.
2014-07-12Fix defalt_makefiles[] for MS-Windows.Jonny Grant1-0/+4
* read.c (read_all_makefiles) [WINDOWS32]: Remove the redundant "makefile" and add "makefile.mak". Copyright-paperwork-exempt: yes
2014-07-07* read.c (eval): [SV 41677] Correct test for TAB vs. 8 spaces.Paul Smith1-1/+1
2014-07-07* various: Assume ISO C89-compliant free() implementation.Paul Smith1-20/+10
2014-07-07* maintMakefile, various: Improve constification of the codebase.Paul Smith1-3/+3
2013-11-24* read.c (unescape_char): Use memmove() for overlapping memory.Paul Smith1-2/+2
2013-11-23[SV 40361] Don't use vsnprintf(), which is an ISO C99 function.Paul Smith1-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.
2013-10-20* read.c (record_files): [SV 33034] Change fatal() to error()Paul Smith1-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>
2013-10-19* read.c (eval): Avoid GCC warning to add braces.Paul Smith1-8/+9
2013-10-13[SV 40139] Modify "missing separator" for better translationPaul Smith1-3/+4
2013-10-09[SV 39709] Fix some typos.Paul Smith1-1/+1
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.