We fixed Savannah 16670 but that broke previously-working makefiles
that relied on the GNU make behavior. The POSIX behavior doesn't
seem to me to be better, and can be obtained using GNU make as well,
so put it back as the default behavior and require .POSIX to
get the POSIX behavior.
Add a new section to the manual discussing backslash/newline handling.
Update the test suite.
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.
README.W32.template: Update with instructions for building with Guile.
build_w32.bat: Support building with Guile.
make.h [HAVE_STDINT_H]: Include stdint.h.
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.
This allows us to create new functions without changing function.c.
You still have to modify the GNU make code (for now) though: this is
simply a preliminary step to possibly allowing make to load modules.
Modify the Guile integration to use this method rather than ifdefs
in function.c.
On configure-enabled systems, configure will detect Guile installed
(using pkg-config, which is how GNU Guile is distributed) and enable
it if so.
On all non-configure-enabled systems, currently, the default is for
Guile support to be disabled.
and store them in static variables; however one value (std_dirs)
was not being stored statically so the second time through it was
not set.
Fixes Savannah bug #32511
* Minor syntax cleanups in the manual
* In non-maintainer mode set NDEBUG to disable assert()
* Performance improvements in strcache:
Build Info 1000 2000 4000
3.82 -g 2.61s 8.85s 33.52s
3.82 -O2 1.90s 7.62s 27.82s
New -g (with asserts) 1.03s 2.31s 5.79s
New -O2 (no asserts) 0.65s 1.50s 3.52s
(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>
(exec_command) [WINDOWS32]: Use pid2str instead of non-portable
%Id.
main.c (handle_runtime_exceptions): Use %p to print addresses,
to DTRT on both 32-bit and 64-bit hosts. Savannah bug #27809.
job.c (w32_kill, start_job_command, create_batch_file): Use
pid_t for process IDs and intptr_t for the 1st arg of
_open_osfhandle.
function.c (windows32_openpipe): Use pid_t for process IDs and
intptr_t for the 1st arg of _open_osfhandle.
(func_shell): Use pid_t for process IDs.
main.c (main) [WINDOWS32]: Pacify the compiler.
config.h.W32.template (pid_t): Add a definition for 64-bit
Windows builds that don't use GCC.
Savannah bug #27809. Patch by Ozkan Sezer <sezeroz@gmail.com>
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.
SYS_SIGLIST_DECLARED.
Include <sys/version.h> because ports of GCC 4.3.0 and later no
longer include it, so macros like __DJGPP_MINOR__ are no longer
defined automatically.
* Makefile.DOS.template (INCLUDES): Use $(prefix) and the
corresponding variables to define LIBDIR, INCLUDEDIR and LOCALEDIR
instead of using the hardcoded ones.
(SUBDIRS): doc subdir added.
(INFO_DEPS, DVIS): Values changed to 'make.info' and 'make.dvi'.
(TEXI2HTML, TEXI2HTML_FLAGS): Removed. Use makeinfo --html to
create html formated docs. texi2html may not be ported to DOS.
(make.info, make.dvi, make.ps, make.html): Make targets depend on
'make.texi'.
(.texi.info, .texi, .texi.dvi): Now recursively invocate. Change
-I switch to look in ./ instead of ./doc.
(html): Target depend on html-recursive instead of make_1.html.
(make_1.html): Removed.
(mostlyclean-aminfo): Use $(srcdir)/doc instead of ./ as prefix.
(all-recursive): Allow for more than one subdir in the build
process.
(mostlyclean-recursive, clean-recursive, distclean-recursive)
(maintainer-clean-recursive, check-recursive): Enter in doc/ too.
(tags-recursive): Allow for more than one subdir in the build
process.
(info-recursive, dvi-recursive, ps-recursive, html-recursive): New
targets. Enter into doc/ to produce the targets.
(all-am): $(INFO_DEPS) replaced by info.
- 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
- Fix Savannah bug #17752
- Test suite:
* When tests fail keep a "run" file containing the command invoked.
* Support for the Valgrind "memcheck" and "massif" tools.
(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.
(TEXINFOS): Value changed to `doc/make.texi'.
(.SUFFIXES): Use .texi instead of .texinfo.
(make.info, make.dvi): Depend on doc/make.texi.
(.texi.info): New target, instead of ".texinfo.info". Change -I switch
to $(MAKEINFO) to look in doc/. Use --no-split.
(.texi): New target, instead of ".texinfo". Change -I switch to $(MAKEINFO)
to look in doc/. Use --no-split.
(.texi.dvi): New target, instead of ".texinfo.dvi". Change -I switch
to $(MAKEINFO) to look in doc/.
(install-info-am, uninstall-info): Don't look for "*.i[0-9]" and
"*.i[0-9][0-9]" (due to --no-split above).
(noinst_TEXINFOS, TEXI2HTML, TEXI2HTML_FLAGS): New variables.
(html, make_1.html): New targets.
(.PHONY): Add "html".
(.SUFFIXES): Add .html.
HAVE_DECL_SYS_SIGLIST.
job.c (child_execute_job): Remove __MSDOS__ because MSDOS/DJGPP build does
not use child_execute_job.
variable.c (define_automatic_variables) [__MSDOS__]: Always export the SHELL
environment variable to the child.
Allows the user to reset the prefix character for introducing recipe lines
from the default (tab) to any other single character, and back again.
Also, reworked the manual to consistently use the word "recipe" to describe
the set of commands we use to update a target, instead of the various
phrases used in the past: "commands", "command lines", "command scripts",
etc.