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.
One of our translations disappeared from the translations site so remove it.
The fdl.texi file was changed to not contain any @node entries, so add some
around it in make.texi.
Add a new feature to the test suite suggested by Icarus Sparry:
set a timer before invoking a test, so that if it loops infinitely we
will wake up and have a chance to kill the process and continue.
Fix an uninitialized variable.
Add builtin rules for Objective C.
Add a new debug line that shows where the commands that are about to be run
were defined.
comparison functions to always use POSIX strcasecmp(). For non-POSIX
systems that use other functions (strcmpi or stricmp) use a macro to alias
strcasecmp to those. If we can't find any of them (VMS, plus whatever
UNIX doesn't have them) then define our own version in misc.c.
string into the strcache. As a side-effect, many more structure members and
function arguments can/should be declared const.
As mentioned in the changelog, unfortunately measurement shows that this
change does not yet reduce memory. The problem is with secondary expansion:
because of this we store all the prerequisites in the string cache twice.
First we store the prerequisite string after initial expansion but before
secondary expansion, then we store each individual file after secondary
expansion and expand_deps(). I plan to change expand_deps() to be callable
in either context (eval or snap_deps) then have non-second-expansion
targets call expand_deps() during eval, so that we only need to store that
dependency list once.
A few changes from char* to void* where appropriate, and removing of
unnecessary casts.
Much more work on const-ifying the codebase. This round involves some code
changes to make it correct. NOTE!! There will almost certainly be problems
on the non-POSIX ports that will need to be addressed after the const changes
are finished: they will need to be const-ified properly and there may need to
be some changes to allocate memory, etc. as well.
The next (last?) big push for this, still to come, is const-ifying the
filenames in struct file, struct dep, etc. This will allow us to store file
names in the string cache and finally resolve Savannah bug #15182 (make uses
too much memory), among other advantages.
16304, 16468, 16577, 17701, 17880, 16051, 16652, 16698
Plus some from the mailing list.
Imported a patch from Eli to allow Cygwin builds to support DOS-style
pathnames.
- Add more warnings.
- Rename variables that mask out-scope vars with the same name.
- Remove all casts of return values from xmalloc, xrealloc, and alloca.
- Remove casts of the first argument to xrealloc.
- Convert all bcopy/bzero/bcmp invocations to use memcp/memmove/memset/memcmp.
Update NEWS docs.
Enhance the manual to use automake version.texi, and use the canonical
FSF copyright features and statement.
Some $(realpath ...) tests won't work on Windows; leave them out
The jobserver filedescriptor test might fail if some FDs are reserved,
so for now comment out that check.
Revert a fix for $? including non-existent files as it shows a bug
in the Linux kernel build. Give them a release to fix this.
Add some changes from Eli Z. for Windows changes.
- Fix handling of special targets like .SUFFIX for VMS insensitive targets.
- Don't make temporary batch files for -n. Make sure batch files are created
in text mode.