5894 lines
237 KiB
Plaintext
5894 lines
237 KiB
Plaintext
2022-10-31 Paul Smith <psmith@gnu.org>
|
||
|
||
Release GNU Make 4.4
|
||
* NEWS: Update the version and date.
|
||
* configure.ac: Update the version.
|
||
* doc/make.texi: Update the EDITION.
|
||
|
||
* README.git: Update and clarify release operations
|
||
|
||
Fix issues found by ASAN and Coverity
|
||
* tests/test_driver.pl: Preserve the LSAN_OPTIONS variable.
|
||
* tests/scripts/targets/ONESHELL: Don't set a local variable.
|
||
* tests/scripts/functions/let: Test empty let variable.
|
||
* src/posixos.c (osync_parse_mutex): Free existing osync_tmpfile.
|
||
* src/misc.c (get_tmpfd): Set umask() before invoking mkstemp().
|
||
* src/ar.c (ar_parse_name): Check invalid name (shouldn't happen).
|
||
* src/function.c (define_new_function): Free previous function entry
|
||
when replacing it with a new one.
|
||
* src/job.c (child_execute_job): Initialize pid for safety.
|
||
(construct_command_argv_internal): In oneshell mode ensure that the
|
||
returned argv has the right format (0th element is a pointer to the
|
||
entire buffer).
|
||
|
||
2022-10-29 Paul Smith <psmith@gnu.org>
|
||
|
||
Avoid C99 constructs
|
||
Although gnulib requires C99, most of the code does compile with a
|
||
C90 compiler (perhaps with a lot of warnings). Reinstate our C90
|
||
configuration test, and clean up a few C99 things that crept in.
|
||
|
||
* src/job.c (construct_command_argv_internal): Don't use loop-local
|
||
variables or C++ comments.
|
||
* src/read.c (eval_makefile): Don't use loop-local variables.
|
||
|
||
2022-10-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* build.sh: Allow a "keep-going" mode during builds
|
||
|
||
2022-10-29 Paul Smith <psmith@gnu.org>
|
||
|
||
tests: Avoid the use of File::Temp->newdir()
|
||
This was added in Perl 5.8 but some systems still only provide older
|
||
versions such as Perl 5.6. We don't really need it anyway.
|
||
Paul Eggert <eggert@cs.ucla.edu> reported this issue.
|
||
|
||
* tests/README: Update this to be a bit more modern.
|
||
* tests/test_driver.pl: Delete the $TEMPDIR variable.
|
||
* tests/scripts/features/temp_stdin: Use $temppath not $TEMPDIR.
|
||
|
||
2022-10-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/posixos.c (os_anontmp): [SV 63287] Only fail O_TMPFILE once
|
||
Reported by Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
2022-10-28 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 62174] Force locale to be "C" before retrieving error messages
|
||
We attempt to do this with POSIX::setlocale() but apparently on some
|
||
systems (AIX) this isn't sufficient. So, in addition force the LC
|
||
environment variables to use "C".
|
||
Reported by Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
* tests/run_make_tests.pl: Move the global setup into set_default().
|
||
Force the %ENV locale variables to use the ones we'll use when running
|
||
make, then reset them back again after we find error messages.
|
||
|
||
2022-10-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/job.c: [SV 63185] Don't use ifdef with HAVE_DECL_* macros
|
||
|
||
2022-10-25 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/exec: Don't test with C shells
|
||
Using C shells (csh, tcsh) with make is known to be problematic due
|
||
to incorrect ways it handles open file descriptors, at least. If
|
||
the user's shell is *csh then don't try it during exec tests.
|
||
|
||
2022-10-25 Paul Smith <psmith@gnu.org>
|
||
|
||
Increase the test framework timeout from 5s to 60s
|
||
It seems that some of the test environments hit the 5s timeout on
|
||
some tests. Since it doesn't really matter, as long as we don't
|
||
hang forever, increase the timeout to 60s.
|
||
|
||
* tests/test_driver.pl: Increase $test_timout to 60. We don't need
|
||
to handle VMS timeouts specially anymore.
|
||
* tests/scripts/features/parallelism: We don't need to override the
|
||
default timeout anymore.
|
||
* tests/scripts/features/patternrules: Remove confusing comment.
|
||
|
||
2022-10-25 Paul Smith <psmith@gnu.org>
|
||
|
||
* Makefile.am (check-regression): Add a random suffix to results file
|
||
Put the results into a subdirectory for easy unpacking.
|
||
* .gitignore: Ignore it.
|
||
|
||
2022-10-24 Paul Smith <psmith@gnu.org>
|
||
|
||
Release GNU Make 4.3.92
|
||
* configure.ac: Modify the release version.
|
||
* NEWS: Update the version and date.
|
||
|
||
2022-10-24 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63260] Don't recurse forever if setup_tmpfile() fails
|
||
If we fail during setup_tmpfile() we'll try to write an error, which
|
||
will invoke setup_tmpfile() again, etc. Avoid infinite recursion.
|
||
Original patch by Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* src/output.c (setup_tmpfile): Remember we're in this function and
|
||
return immediately if we enter it during recursion.
|
||
(message): Remember the starting location and use that instead of
|
||
fmtbuf.buffer.
|
||
(error): Ditto.
|
||
(fatal): Ditto.
|
||
|
||
2022-10-24 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/output.c (_outputs): Don't use invalid output sync FDs
|
||
Just write to stdout/stderr in this situation.
|
||
|
||
* src/misc.c (get_tmpdir): Report errors if tmpdirs are invalid
|
||
* src/main.c (main): Set up initial temporary directories.
|
||
|
||
2022-10-23 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* src/posixos.c (os_anontmp): If O_TMPFILE fails try dup() method.
|
||
|
||
2022-10-23 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/rule.c (get_rule_defn): Don't use STRING_SIZE_TUPLE in mempcpy
|
||
If mempcpy() is a macro then STRING_SIZE_TUPLE won't compile.
|
||
|
||
2022-10-23 Paul Smith <psmith@gnu.org>
|
||
|
||
Provide a maintainer-only debug method
|
||
Generating debug logs to stdout or stderr makes it impossible to
|
||
run tests etc. so create a dumb DBG facility to log to a temp file.
|
||
This exists only in maintainer mode and the DBG macro gives a
|
||
compile error if it's used in non-maintainer mode.
|
||
|
||
* src/makeint.h (DBG): Call dbg() in maintainer mode, else error.
|
||
(dbg): Define it in maintainer mode.
|
||
* src/misc.c (dbg): Open a log file for append, write, then close.
|
||
|
||
2022-10-22 Paul Smith <psmith@gnu.org>
|
||
|
||
* configure.ac: Check that we can link with Guile
|
||
On multi-arch systems we may be able to find the header file but
|
||
not successfully link the library.
|
||
|
||
2022-10-22 Paul Smith <psmith@gnu.org>
|
||
|
||
Set PATH_MAX on systems without a default value
|
||
Some systems (HURD) use fully-dynamic pathnames, with no limit.
|
||
We can't support this without significant effort so for now set
|
||
PATH_MAX to a large value.
|
||
|
||
* src/makeint.h: Set PATH_MAX to 4096 if not set and MAXPATHLEN
|
||
is also not set. Remove MAXPATHLEN setting: we won't use it.
|
||
* src/misc.c (get_path_max): If we can't get the path max via
|
||
pathconf() use the default PATH_MAX.
|
||
* src/dir.c (find_directory) [W32]: Use MAX_PATH not MAXPATHLEN.
|
||
(local_stat) [W32]: Ditto.
|
||
* src/job.c (create_batch_file) [W32]: Ditto.
|
||
* src/remake.c (name_mtime) [W32]: Ditto.
|
||
* src/w32/w32os.c (os_anontmp) [W32]: Ditto.
|
||
|
||
2022-10-22 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63098] Enhance detection of missing peer also-make targets
|
||
The previous attempt to detect missing peer targets for implicit
|
||
rules had some holes. Move the detection to notice_finished_file().
|
||
|
||
* src/remake.c (check_also_make): If we don't have the current mtime
|
||
for the file, obtain it.
|
||
(update_goal_chain): Don't call check_also_make() here.
|
||
(check_dep): Ditto.
|
||
(notice_finished_file): If we finished running an implicit rule that
|
||
has also_make targets, invoke check_also_make().
|
||
|
||
2022-10-22 Paul Smith <psmith@gnu.org>
|
||
|
||
Collect failure details when the regression tests fail
|
||
* README.in: Add a section on running regression tests.
|
||
* Makefile.am (check-regression): Capture the test run output, and
|
||
on failure collect configure and test results into a tar file.
|
||
|
||
2022-10-22 Paul Smith <psmith@gnu.org>
|
||
|
||
Enhance tests to work on different systems
|
||
The GNU platform testers reported a number of test errors on
|
||
different systems; try to address them.
|
||
|
||
* tests/thelp.pl: A number of tests timed out with a 4-second
|
||
timeout. Increase the default timeout to 10 seconds.
|
||
* tests/run_make_tests.pl: Executing directories on cygwin behaves
|
||
differently in Perl than make so skip these tests there.
|
||
* tests/scripts/options/symlinks: Check for the symlink feature
|
||
in make, rather than whether the system supports them.
|
||
* tests/scripts/features/implicit_search: On some systems "false"
|
||
exits with a different exit code. Use the helper instead.
|
||
* tests/scripts/features/loadapi: Ditto.
|
||
* tests/scripts/features/output-sync: Sleep before make -f bar in
|
||
the first test as well as the second one.
|
||
* tests/scripts/features/exec: Skip on cygwin, which seems to
|
||
be "UNIX" but where scripts don't run normally.
|
||
* tests/scripts/misc/fopen-fail: Skip on cygwin, where make
|
||
eventually exits with exit code 0 and no error messages.
|
||
|
||
2022-10-22 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 63243] tests: Avoid SIGTERM racing with make error messages
|
||
Original patch from Frank Heckenbach <f.heckenbach@fh-soft.de>.
|
||
|
||
* tests/scripts/features/output-sync: Introduce a sleep to let make
|
||
write its error message. Some systems use different names for
|
||
SIGTERM so match with a regex.
|
||
* tests/scripts/features/temp_stdin: Ditto.
|
||
|
||
2022-10-22 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 63236] Fix getloadavg related error message on AIX
|
||
On AIX getloadavg keeps errno intact when it fails, resulting in a
|
||
bogus error message from make.
|
||
|
||
* src/job.c (load_too_high): Reset errno before calling getloadavg.
|
||
|
||
2022-10-22 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 63248] Ignore SIGPIPE
|
||
Don't terminate when make's output is redirected to a pipe and the
|
||
reader exits early; e.g.:
|
||
$ echo 'all:; sleep 2' | make -f- -j2 -O |:
|
||
|
||
This lets us unlink temporary files, and tell the user that make was
|
||
not able to write its output.
|
||
Reported by Frank Heckenbach <f.heckenbach@fh-soft.de>.
|
||
|
||
* src/main.c (main): Ignore SIGPIPE.
|
||
* src/posixos.c (osync_clear): Fix a memory leak.
|
||
|
||
2022-10-18 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Release GNU make 4.3.91
|
||
|
||
* AUTHORS: Update the authors list.
|
||
|
||
* NEWS: Use GNU Make instead of GNU make
|
||
* README.git: Ditto.
|
||
* README.Amiga: Ditto.
|
||
* README.DOS: Ditto.
|
||
* README.OS2: Ditto.
|
||
* README.VMS: Ditto.
|
||
* README.W32: Ditto.
|
||
* README.customs: Ditto.
|
||
* make-gdb.py: Ditto.
|
||
* tests/run_make_tests.pl: Ditto.
|
||
|
||
Update URLs to use https rather than http
|
||
* (all): Change http:// to https://
|
||
* README.W32: Remove invalid link to mingw.org.
|
||
|
||
2022-10-18 Paul Smith <psmith@gnu.org>
|
||
|
||
Rework temp file handling to avoid GNU libc warnings
|
||
Original patch provided by Paul Eggert <eggert@cs.ucla.edu>.
|
||
GNU libc will generate a link-time warning if we use mktemp() even
|
||
though we are using it safely (we only use it with mkfifo()).
|
||
Avoid this and clean up some handling.
|
||
|
||
First, check all calls related to temporary files and exit with a
|
||
fatal error and a useful message if we can't obtain them. In some
|
||
situations it might be possible to continue with reduced capability
|
||
but it's not worth the effort.
|
||
|
||
On POSIX systems we can create anonymous temp files using O_TMPFILE
|
||
if it's supported, else if we're using the default location and we
|
||
have dup(2), we can use standard tmpfile() and get an FD from it.
|
||
|
||
If we need a named temp file and FILE* and we have mkstemp() we can
|
||
use that, else if we have fdopen() we can get a temp FD and open it.
|
||
If none of those are available all we can do is generate a temp name
|
||
then open it with fopen() which is not secure.
|
||
|
||
* src/makeint.h (get_tmpdir): Declare it for use elsewhere.
|
||
* src/misc.c (get_tmpdir): Make it public not static.
|
||
(get_tmptemplate): Simplify the implementation.
|
||
(get_tmppath): Only define this if we have to have it to avoid
|
||
warnings from GNU libc.
|
||
(get_tmpfd): Generate fatal errors on error.
|
||
(get_tmpfile): Ditto. Open files in "wb+" mode to match tmpfile().
|
||
Require a filename pointer (all callers want it).
|
||
* src/os.h (os_anontmp): Implement for posixos.c as well.
|
||
* src/posix.c (jobserver_setup): Don't use mktemp to avoid GNU libc
|
||
errors. Instead construct the FIFO name based on the PID.
|
||
(osync_setup): get_tmpfd() can't fail so don't check it.
|
||
(os_anontmp): If the system supports O_TMPFILE use it. If not, and
|
||
we want to create the temporary file in the default directory, we
|
||
can use tmpfile() then use dup() to copy the file descriptor.
|
||
* src/main.c (main): get_tmpfile() can't fail.
|
||
* src/vmsjobs.c (child_execute_job): get_tmpfile() can't fail.
|
||
|
||
2022-10-18 Paul Smith <psmith@gnu.org>
|
||
|
||
Add ISDIRSEP() helper macro and use it
|
||
Create a ISDIRSEP() macro to check for directory separator chars
|
||
using the stopchar_map, and replace inline checks and explicit
|
||
STOP_SET calls with this macro.
|
||
|
||
* src/makeint.h (ISDIRSEP): Create the macro using MAP_DIRSEP.
|
||
* src/dir.c (find_directory): Replace inline checks with ISDIRSEP.
|
||
(file_exists_p): Ditto.
|
||
(file_impossible): Ditto.
|
||
(file_impossible_p): Ditto.
|
||
(local_stat): Ditto.
|
||
* src/file.c (lookup_file): Ditto.
|
||
* src/function.c (abspath): Ditto.
|
||
* src/job.c (_is_unixy_shell): Ditto.
|
||
(is_bourne_compatible_shell): Ditto.
|
||
(construct_command_argv): Ditto.
|
||
* src/main.c (find_and_set_default_shell): Ditto.
|
||
(main): Ditto.
|
||
* src/read.c (eval): Ditto.
|
||
(parse_file_seq): Ditto.
|
||
* src/remake.c (name_mtime): Ditto.
|
||
* src/vpath.c (construct_vpath_list): Ditto.
|
||
|
||
2022-10-18 Paul Smith <psmith@gnu.org>
|
||
|
||
Add preprocessor macros for different platforms
|
||
* configure.ac: MK_CONFIGURE shows config.h was generated by configure.
|
||
* src/config.ami: Define MK_AMIGAOS.
|
||
* src/config.h-vms: Define MK_VMS.
|
||
* src/configh.dos: Define MK_DJGPP.
|
||
* src/config.h.W32: Define MK_W32 and WINDOWS32.
|
||
* src/build_w32.bat: Let WINDOWS32 be defined by config.h. Remove
|
||
unused setting of WIN32.
|
||
* src/job.c: Clean up use of WIN32.
|
||
* src/main.c: Ditto.
|
||
* tests/scripts/features/default_names: Ditto.
|
||
|
||
2022-10-18 Paul Smith <psmith@gnu.org>
|
||
|
||
Check for recipe line count overflow before it overflows
|
||
awk 'BEGIN {
|
||
print "x:"
|
||
for (i = 0; i < 65536; i++)
|
||
printf "\techo %d\n", i}
|
||
' | make -f -
|
||
|
||
Outputs only "make: 'x' is up to date." Larger values run only the
|
||
lines above 65536. Reported by Paul Eggert <eggert@cs.ucla.edu>.
|
||
|
||
* src/commands.c (chop_commands): Check the line count before it has
|
||
a chance to overflow. Use size_t for max count so it can't overflow.
|
||
Remove stray 'd' in diagnostic.
|
||
|
||
2022-10-18 Paul Smith <psmith@gnu.org>
|
||
|
||
Remove template files to simplify distribution creation
|
||
The README templates were not useful since the replacement step
|
||
didn't have anything to replace: rename them.
|
||
|
||
Rather than creating template files for the config variants, create
|
||
mkconfig.h.in containg PACKAGE_* variables to be replaced, and have
|
||
config variant header files include it. Note on POSIX we don't use
|
||
this, and continue to generate a single config.h.in file.
|
||
|
||
Use config.status to convert the README.in and mkconfig.h.in files
|
||
during distribution creation.
|
||
|
||
Modify all users of VERSION to use PACKAGE_VERSION instead.
|
||
|
||
* configure.ac: Use GNU Make not GNU make as the package name.
|
||
* README.in: Use GNU Make not GNU make.
|
||
* README.git: Remove references to README.W32.template.
|
||
* .gitignore: Update for new behavior.
|
||
* Basic.mk.template: Remove unused posix_SOURCES and VERSION, and
|
||
references to unshipped mk/Posix.mk
|
||
* Makefile.am: Add src/mkconfig.h as an extra dist file.
|
||
* bootstrap.bat: Rewrite mkconfig.h.in to mkconfig.h
|
||
* maintMakefile: Remove obsolete template files; add mkconfig.h.in.
|
||
* prepare_vms.com: Rewrite mkconfig.h.in to mkconfig.h
|
||
* mk/VMS.mk: Fix incorrect header file prerequisite.
|
||
* src/mkconfig.h.in: New file containing PACKAGE variables.
|
||
* src/config.ami: Include mkconfig.h.
|
||
* src/config.h.W32: Ditto.
|
||
* src/configh.dos: Ditto.
|
||
* src/config.h-vms: Ditto.
|
||
* src/version.c: Use PACKAGE_VERSION not VERSION.
|
||
|
||
2022-10-16 Juan M. Guerrero <juan.guerrero@gmx.de>
|
||
|
||
Support building with DJGPP 2.05
|
||
* builddos.bat: Use env var settings for paths. Fix a typo in
|
||
expand.o. Add the missing load.o compilation and link. Enable
|
||
Guile support. Copy Basic.mk from the correct location.
|
||
* src/configh.dos.templage: DJGPP supports strtoll() and ssize_t
|
||
given new enough versions. Set preprocessor variables to 1 not 0.
|
||
|
||
2022-10-16 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/job.c: [SV 63185] Include sys/loadavg.h if needed.
|
||
|
||
2022-10-16 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63215] Remember the random seed for shuffle mode
|
||
Basic fix provided by James Hilliard <james.hilliard1@gmail.com>.
|
||
Ensure we remember and propagate the random seed we generate during
|
||
shuffle mode. Also add a debug statement displaying the seed.
|
||
|
||
* src/shuffle.c (shuffle_set_mode): Init and save the randoms seed.
|
||
* src/misc.c (make_rand): Code cleanups.
|
||
* src/main.c (main): Show a debug message containing the seed.
|
||
|
||
2022-10-15 Paul Smith <psmith@gnu.org>
|
||
|
||
Use (void) rather than () in function declarations
|
||
In C, a function declaration with () allows any set of arguments.
|
||
Use (void) to mean "no arguments".
|
||
|
||
* src/dep.h: Switch () to (void) for functions with no arguments.
|
||
* src/makeint.h: Ditto.
|
||
* src/os.h: Ditto.
|
||
* src/shuffle.h: Ditto.
|
||
* src/variable.h: Ditto.
|
||
|
||
2022-10-15 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63157] Ensure temporary files are removed when signaled
|
||
Original patch from Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
When handling a fatal signal ensure the temporary files for
|
||
stdin and the jobserver fifo (if in use) are deleted.
|
||
|
||
* src/makeint.h (temp_stdin_unlink): Declare a new method.
|
||
* src/main.c (temp_stdin_unlink): Delete the stdin temporary file
|
||
if it exists. If the unlink fails and we're not handling a signal
|
||
then show an error.
|
||
(main): Call temp_stdin_unlink() instead of unlinking by hand.
|
||
* src/commands.c (fatal_error_signal): Invoke cleanup methods if
|
||
we're handling a fatal signal.
|
||
* tests/scripts/features/output-sync: Test signal handling during
|
||
output sync and jobserver with FIFO.
|
||
* tests/scripts/features/temp_stdin: Test signal handling when
|
||
makefiles are read from stdin.
|
||
|
||
2022-10-15 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/posixos.c (job_root): Remember root jobserver instances
|
||
(jobserver_setup): Set job_root to true.
|
||
(jobserver_clear): if we're the root instance and we're using a
|
||
FIFO, unlink it. If we're not in a signal handler, free memory.
|
||
(jobserver_acquire_all): Call jobserver_clear().
|
||
(sync_root): Rename from sync_parent for consistency.
|
||
|
||
Set the proper type for variables set in signal handlers
|
||
* bootstrap.conf: Get gnulib's sig_atomic_t type checking M4 macro.
|
||
* configure.ac: Invoke it.
|
||
* src/makeint.h (handling_fatal_signal): Set the type correctly.
|
||
* src/commands.c (handling_fatal_signal): Ditto.
|
||
|
||
2022-10-08 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* tests/test_driver.pl (toplevel): [SV 63156] Keep temp env vars
|
||
|
||
2022-10-03 Paul Smith <psmith@gnu.org>
|
||
|
||
Clean up some warnings on Windows builds
|
||
* src/arscan.c (parse_int): Avoid conversion from int to char and
|
||
check for overflow given a max value.
|
||
(ar_scan): Check intmax sizes then cast to the proper type.
|
||
(ar_member_touch): Get proper return type from ar_scan and cast it
|
||
to off_t.
|
||
* src/function.c (a_word_hash_cmp): Don't cast from size_t to int.
|
||
(func_filter_filterout): Count using unsigned long to avoid casts.
|
||
(construct_include_path): Explicitly cast to void*.
|
||
* src/shuffle.c (reverse_shuffle_array): Use size_t index.
|
||
* src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects):
|
||
Initialize the return value in case the count is 0.
|
||
|
||
* src/misc.c (make_lltoa): Use printf format macro from makeint.h
|
||
(make_ulltoa): Ditto.
|
||
|
||
* src/arscan.c (ar_scan): Avoid sign comparison warnings
|
||
Pacify 12.2.1 20220819 (Red Hat 12.2.1-2) -Wsign-compare by checking
|
||
the readbuf() return explicitly for errors then casting from ssize_t.
|
||
Initial patch provided by Paul Eggert <eggert@cs.ucla.edu>.
|
||
|
||
2022-10-03 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
Support systems with 32-bit long and 64-bit time_t
|
||
Don't assume that time_t fits in long, as some hosts (e.g.,
|
||
glibc x86 -D_TIME_BITS=64) have 32-bit long and 64-bit time_t.
|
||
|
||
* bootstrap.conf (gnulib_modules): Add largefile, to support files
|
||
with timestamps after Y2038 on hosts with 32-bit long.
|
||
* configure.ac: Do not call AC_SYS_LARGEFILE, as the largefile module
|
||
does that for us.
|
||
* src/makeint.h (PRIdMAX, PRIuMAX, SCNdMAX): Define if not already
|
||
defined (taken from gnulib).
|
||
* src/ar.c: Include intprops.h, for TYPE_MAXIMUM, as
|
||
INTEGER_TYPE_MAXIMUM does not work on time_t without issuing a bunch
|
||
of warnings.
|
||
(ar_member_date): Check that result is in time_t range.
|
||
(ar_member_date_1): Use intmax_t to hold the date.
|
||
(ar_glob_match): Ditto.
|
||
* src/arscan.c (VMS_function, VMS_function_ret, ar_scan)
|
||
(parse_int, ar_scan, ar_member_pos, ar_member_touch)
|
||
(describe_member): Convert long int to intmax_t.
|
||
* src/file.c (file_timestamp_sprintf): Use intmax_t/uintmax_t instead
|
||
of long/unsigned long for values that might be time_t.
|
||
* src/arscan.c (ar_member_touch): Fix buffer overrun if the timestamp
|
||
is too large.
|
||
|
||
2022-10-03 Paul Smith <psmith@gnu.org>
|
||
|
||
Add support for intmax_t
|
||
* configure.ac: Ask autoconf to detect it.
|
||
* src/config.ami.template: Add #define intmax_t for AmigaOS.
|
||
* src/config.h-vms.template: Add #define intmax_t for VMS.
|
||
* src/config.h.W32.template: Add #define intmax_t for Windows.
|
||
* src/configh.dos.template: Add #define intmax_t for MS-DOS/DJPP.
|
||
|
||
* NEWS: Deprecate Xenix
|
||
|
||
2022-10-02 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63098] Temporarily revert the change to pattern rule behavior
|
||
The fix for SV 12078 caused a backward-compatibility issue with some
|
||
makefiles. In order to allow users to resolve this issue, revert
|
||
that change for this release cycle: it will be reinstated in the
|
||
next release cycle. Introduce a warning if we detect that the recipe
|
||
of a multi-target pattern rule doesn't create all the targets.
|
||
|
||
* NEWS: Announce the future backward-incompatibility.
|
||
* doc/make.texi (Pattern Intro): Describe the behavior and that it
|
||
will change in the future.
|
||
* src/remake.c (check_also_make): Check for also_make targets that
|
||
were not created and generate a warning.
|
||
(update_goal_chain): Call the new function.
|
||
(check_dep): Ditto.
|
||
(update_file_1): Defer implicit rule detection until after we check
|
||
all the also_make files (as it used to be).
|
||
* tests/scripts/features/patternrules: Add tests of the new warning.
|
||
Skip the tests for SV 12078.
|
||
|
||
2022-10-02 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Prerequisite Types): [SV 58056] Clarify ordering.
|
||
|
||
* src/filedef.h (is_ordinary_mtime): Check for "ordinary" mod time.
|
||
* src/remake.c (update_file_1): Use the new macro.
|
||
|
||
* src/remake.c (update_file_1): Return valid enum element, not 0.
|
||
|
||
* NEWS: Announce deprecation of OS/2 and AmigaOS ports
|
||
|
||
* src/main.c (main): Add debug output for jobserver and osync.
|
||
* src/posixos.c (jobserver_setup): Remove redundant debug output.
|
||
(jobserver_parse_auth): Ditto.
|
||
|
||
2022-10-02 Andreas Schwab <schwab@suse.de> (tiny change)
|
||
|
||
[SV 63111] Ensure output-sync is cleaned on re-exec and recursion
|
||
Now that output-sync is using a separate file as a mutex rather than
|
||
stdout, ensure the new file descriptor is closed before re-exec and
|
||
not inherited by children.
|
||
|
||
* src/main.c (main): Call osync_clear() before re-exec.
|
||
* src/posixos.c (osync_setup): Reset output-sync handle inheritance.
|
||
(osync_parse_mutex): Ditto.
|
||
|
||
2022-10-01 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/function.c: Change int to uint to align with gmk_func_ptr
|
||
|
||
2022-10-01 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* doc/make.texi (Loaded Object API): [SV 63126] Fix typos and examples
|
||
|
||
2022-10-01 Paul Smith <psmith@gnu.org>
|
||
|
||
Implement a simple xorshift 32bit random number generator
|
||
Avoid relying on the system random number generator for our random
|
||
shuffle, so that the same seed gives the same results on all systems.
|
||
This generator doesn't need to be amazing, just pretty good, so don't
|
||
bother with xorshift* or xorshift+, etc.
|
||
|
||
* src/makeint.h: Declare make_seed() and make_rand().
|
||
* src/misc.c (make_seed): Set the seed value for the RNG.
|
||
(make_rand): Return the next random number. If the seed was not set
|
||
initialize it first.
|
||
* src/shuffle.c (shuffle_set_mode): If we don't get a seed from the
|
||
user just leave it unset (0).
|
||
(shuffle_deps_recursive): Use make_seed() not srand().
|
||
(random_shuffle_array): Use make_rand() not rand().
|
||
|
||
2022-09-25 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 63100] Set the floc of every created goal dep struct
|
||
* src/read.c (eval): Initialize the goaldep floc pointer.
|
||
* tests/scripts/features/loadapi: Verify that the floc is set after
|
||
unloading and reloading dynamic objects.
|
||
|
||
2022-09-25 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi: Update out of date behavior for grouped targets.
|
||
|
||
* README.git: Announce releases to the platform-testers list
|
||
|
||
2022-09-25 Paul Smith <psmith@gnu.org>
|
||
|
||
Provide new functions to convert long long to string
|
||
The previous attempt to use PRI* macros to avoid compiler-specific
|
||
printf format specifiers didn't work because we are using raw
|
||
long long type, not the uintX_t types. On systems where long and
|
||
long long are the same size, uint64_t might be type "long" and PRId64
|
||
is just "ld".
|
||
|
||
Instead write new functions that convert [unsigned] long long to a
|
||
string and call those instead.
|
||
|
||
* src/makeint.h: Declare make_lltoa() and make_ulltoa().
|
||
* src/misc.c (make_lltoa): New function that writes a long long value
|
||
into a provided buffer. Return the buffer for ease-of-use.
|
||
(make_ulltoa): Ditto, for unsigned long long.
|
||
* src/function.c (func_wordlist): Call these new methods. Also
|
||
rework the error strings so we share the translated string.
|
||
* src/dir.c (print_dir_data_base): Call the new methods instead of
|
||
using MSVC macros.
|
||
|
||
2022-09-25 Paul Smith <psmith@gnu.org>
|
||
|
||
Always restore global environ if we use vfork
|
||
We may change the global environ variable in the child; when using
|
||
vfork() this also sets it in the parent. Preserve the parent's
|
||
environ in child_execute_job() so it takes effect for all callers.
|
||
|
||
Reported by Denis Excoffier <bug-tar@Denis-Excoffier.org>
|
||
Root cause found by Martin Dorey <Martin.Dorey@hitachivantara.com>
|
||
|
||
* src/job.c (start_job_command): Remove save/restore of the parent
|
||
environment.
|
||
(child_execute_job): Add save/restore of the parent environment,
|
||
if we use vfork().
|
||
* tests/scripts/functions/shell: Add a test the crashes if we don't
|
||
reset environ after we run $(shell ...).
|
||
|
||
2022-09-25 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* configure.ac: [SV 63070] Clean up the test program for posix_spawn.
|
||
|
||
2022-09-25 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/posixos.c (osync_clear): Don't close invalid FDs.
|
||
|
||
* maintMakefile: Use gnulib ncftpput-ftp if ncftpput is missing.
|
||
|
||
* src/misc.c (strncasecmp): Use size_t for length to match std.
|
||
* src/misc.h (strncasecmp): Fix the declaration.
|
||
|
||
* configure.ac: Update to GNU make 4.3.91
|
||
* NEWS: Update the version and clarify some backward-compat issues.
|
||
|
||
2022-09-25 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix compiler warnings in the MS-Windows build.
|
||
* src/w32/w32os.c (osync_get_mutex, osync_parse_mutex): Cast to
|
||
DWORD_PTR when converting integers to HANDLEs and vice versa.
|
||
|
||
* src/w32/pathstuff.c (w32ify): Pacify compiler warnings about
|
||
'strncpy'.
|
||
|
||
* src/makeint.h (PRId64) [!HAVE_INTTYPES_H]: Define if undefined.
|
||
* src/function.c (func_wordlist): Use PRId64 instead of %lld.
|
||
|
||
2022-09-24 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Avoid compilation warnings
|
||
* src/implicit.c: (pattern_search):
|
||
* src/main.c: (main): Avoid compilation warnings for variables
|
||
only used when compiling a debug version with assertions.
|
||
|
||
2022-09-20 Paul Smith <psmith@gnu.org>
|
||
|
||
Release GNU make 4.3.90
|
||
* NEWS: Update for the prerelease.
|
||
* bootstrap.conf: Choose the latest stable gnulib.
|
||
* README.git: Updates.
|
||
|
||
* tests/script/parallelism: Force wait to remove races.
|
||
|
||
2022-09-20 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 56301] Fail if an included makefile can't be built
|
||
Fail if a mandatory include file fails to be built even if it's
|
||
built as part of a grouped target where the other include file
|
||
is optional.
|
||
|
||
* src/main.c (main): If a makefile doesn't build set any_failed.
|
||
* tests/scripts/features/include: Add tests.
|
||
* tests/scripts/options/dash-k: Stop after include build failure.
|
||
|
||
2022-09-20 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/statipattrules: [SV 17374] Add test
|
||
Verify that double-colon static pattern rules work.
|
||
|
||
2022-09-20 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 12078, SV 62809] Rebuild grouped targets if any is missing
|
||
If any of a set of grouped targets is missing or out of date, even
|
||
if make is not trying to build that target, rebuild them all.
|
||
Ensure this is true for explicit grouped targets as well as pattern
|
||
rule grouped targets.
|
||
|
||
Original patch by Jonathan Gravel <jo@stashed.dev>
|
||
|
||
* src/remake.c (update_file_1): After matching any pattern rules,
|
||
go through the also_make targets and set noexist as needed. Also
|
||
compute the oldest this_mtime.
|
||
* tests/scripts/features/grouped_targets: Add regression tests.
|
||
* tests/scripts/features/patternrules: Ditto.
|
||
* tests/features/vpath: Rewrite to use modern run_make_test().
|
||
Add a test that we check for VPATH before implicit rule search.
|
||
Move the tests in vpath2 and vpath3 into this suite.
|
||
* tests/features/vpathplus: Rewrite to use modern run_make_test().
|
||
|
||
2022-09-17 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* tests/scripts/targets/WAIT: [SV 63071] Remove possible test races.
|
||
|
||
2022-09-13 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Parallel Disable): Add clarifications.
|
||
* NEWS: Suggest how to change makefiles that use $(MAKEFLAGS).
|
||
|
||
2022-09-12 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 13862] Implement the .WAIT special target
|
||
The next version of the POSIX standard defines parallel execution
|
||
and requires the .WAIT special target as is implemented in some other
|
||
versions of make.
|
||
|
||
This implementation behaves similarly to others in that it does not
|
||
create a relationship between targets in the dependency graph, so
|
||
that the same two targets may be run in parallel if they appear as
|
||
prerequisites elsewhere without .WAIT between them.
|
||
|
||
Now that we support .WAIT it's trivial to also support prerequisites
|
||
of the .NOTPARALLEL special target, which forces the prerequisites of
|
||
those targets to be run serially (as if .WAIT was specified between
|
||
each one).
|
||
|
||
* NEWS: Announce the new .WAIT and .NOTPARALLEL support.
|
||
* doc/make.texi (Parallel Disable): A new section to discuss ways in
|
||
which parallel execution can be controlled. Modify cross-refs to
|
||
refer to this section.
|
||
* src/dep.h (struct dep): Add a new wait_here boolean.
|
||
(parse_file_seq): Add PARSEFS_WAIT to check for .WAIT dependencies.
|
||
* src/file.c (split_prereqs): Use PARSEFS_WAIT.
|
||
(snap_deps): If .NOTPARALLEL has prerequisites, set .WAIT between
|
||
each of _their_ prerequisites.
|
||
(print_prereqs): Add back in .WAIT when printing prerequisites.
|
||
* src/implicit.c (struct patdeps): Preserve wait_here.
|
||
(pattern_search): Ditto. Use PARSEFS_WAIT when parsing prereqs for
|
||
pattern rule expansion.
|
||
* src/read.c (check_specials): Don't give up early: remembering to
|
||
update these options is not worth the rare speedup.
|
||
(check_special_file): If .WAIT is given as a target show an error--
|
||
once--if it has prereqs or commands.
|
||
(record_files): Call check_special_file on each target.
|
||
(parse_file_seq): If PARSEFS_WAIT is given, look for .WAIT prereqs.
|
||
If we see one assume that we are building a struct dep chain and set
|
||
the wait_here option while not putting it into the list.
|
||
* src/remake.c (update_file_1): If wait_here is set and we are still
|
||
running, then stop trying to build this target's prerequisites.
|
||
* src/rule.c (get_rule_defn): Add .WAIT to the prerequisite list.
|
||
* src/shuffle.c (shuffle_deps): Don't shuffle the prerequisite list
|
||
if .WAIT appears anywhere in it.
|
||
* tests/scripts/targets/WAIT: Add a test suite for this feature.
|
||
|
||
2022-09-12 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 63045] Reload each intact unloaded shared object
|
||
If makefile rules do not update an unloaded shared object, load it
|
||
again. Avoid double loading of the same object if the setup function
|
||
returns -1.
|
||
|
||
* src/filedef.h (struct file): Add "unloaded" flag.
|
||
* src/makeint.h (load_file): Take struct file *.
|
||
(unload_file): Return int.
|
||
* src/main.c (main): Reload unloaded shared objects if they weren't
|
||
updated.
|
||
* src/commands.c (execute_file_commands): Set "unloaded" and reset
|
||
"loaded" when a shared object is unloaded.
|
||
* src/read.c (eval): Set "loaded" and reset "unloaded" when a shared
|
||
object is loaded. Add successfully loaded files to the db.
|
||
* src/load.c (load_file): Check "loaded" to avoid double loading the
|
||
same object. Fix a memory leak of string loaded. Return -1, rather
|
||
than 1, if the object is already loaded. This fixes double loading of
|
||
the same object when the setup routine returns -1.
|
||
(load_object): Add a log message.
|
||
(unload_file): Return an error on dlclose failure. Log a message.
|
||
* tests/scripts/features/loadapi: Add new tests.
|
||
|
||
2022-09-12 Sergei Trofimovich <siarheit@google.com>
|
||
|
||
[SV 63047] Fix shuffle of SECONDEXPANSION prerequisites
|
||
Commit 07eea3aa4 `make --shuffle` prevented shuffling prerequisites
|
||
that use .SECONDEXPANSION, since shuffle happens before expansion.
|
||
This has two problems:
|
||
1. No shuffling happens for such prerequisites.
|
||
2. Use-after-free when outdated '->shuf' links are used.
|
||
|
||
Add a reshuffle into expansion phase right after dependency changes.
|
||
|
||
* src/file.c (expand_deps): Add reshuffle if dependencies change.
|
||
* src/shuffle.c (identity_shuffle_array): Fix comment typo.
|
||
* tests/scripts/options/shuffle: Add new SECONDEXPANSION test.
|
||
|
||
2022-09-11 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (How Make Works): Clarify default goal exceptions.
|
||
|
||
* src/shuffle.c: Minor coding changes.
|
||
|
||
2022-09-11 Paul Smith <psmith@gnu.org>
|
||
|
||
Support the MAKE_TMPDIR environment variable
|
||
Allow build systems to choose an alternative location for make to
|
||
store its temporary files.
|
||
|
||
* NEWS: Announce the new environment variable.
|
||
* doc/make.texi (Temporary Files): Provide documentation.
|
||
* src/misc.c (get_tmpdir): Split into a new function. Compute the
|
||
temporary directory and store it in a static location.
|
||
* tests/scripts/features/jobserver: Add a test of MAKE_TMPDIR.
|
||
|
||
2022-09-10 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 62898] Document ways to hide special chars from make functions
|
||
* doc/make.texi (Function Call Syntax): Add a subsubheading describing
|
||
which special characters may need to be hidden from make functions.
|
||
|
||
2022-09-10 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 63044] load: Update .LOADED if the setup function returns -1
|
||
* src/load.c (load_file): Update .LOADED if setup returns non-0.
|
||
* tests/scripts/features/load: Change the return value based on an
|
||
environment variable. Ensure that returning -1 still adds to
|
||
.LOADED. Also add a test that verifies that make doesn't try to
|
||
rebuild the loaded file if -1 is returned.
|
||
|
||
2022-09-10 Paul Smith <psmith@gnu.org>
|
||
|
||
Enhance the make.texi formatting
|
||
Notes provided by Tzvetelin Katchov <katchov@gnu.org>.
|
||
|
||
* doc/make.texi: Remove obsolete @refill statements. Add some breaks
|
||
to overfull lines. Fix up some example text.
|
||
|
||
2022-09-10 Paul Smith <psmith@gnu.org>
|
||
|
||
Clean up maintMakefile
|
||
Notes provided by Tzvetelin Katchov <katchov@gnu.org>
|
||
|
||
* maintMakefile (git-very-clean): Add -x to git clean.
|
||
(GNULIBDIR): Use GNULIB_SRCDIR, or the local module if not set.
|
||
|
||
2022-09-10 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63037] Fix tests for newer OS / compiler
|
||
* tests/scripts/features/load: Add function prototypes.
|
||
* tests/scripts/features/temp_stdin: Only set user execute bits.
|
||
Some configurations don't allow changing the group bits...??
|
||
|
||
2022-09-10 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63040] shell: Fall back to the callers environment
|
||
If we detect a recursive variable reference when constructing the
|
||
environment for the shell function, return the original value from the
|
||
caller's environment. Other options such as failing, returning the
|
||
empty string, or returning the unexpanded make variable value have
|
||
been shown to not behave well in real-world environments. If the
|
||
variable doesn't exist in the caller's environment, return the empty
|
||
string.
|
||
|
||
Found by Sergei Trofimovich <slyich@gmail.com> when testing older
|
||
versions of autoconf.
|
||
|
||
* NEWS: Clarify this behavior.
|
||
* doc/make.texi (Shell Function): Ditto. Also add info about !=.
|
||
* src/expand.c (recursively_expand_for_file): Search the caller's
|
||
environment if we detect a recursive variable expansion.
|
||
* tests/scripts/functions/shell: Add tests for this behavior.
|
||
|
||
2022-09-08 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 63016] Don't fail exporting to $(shell ...)
|
||
The fix for SV 10593 caused recursive expansion errors when exporting
|
||
a variable that contains a $(shell ...) invocation. If we see this
|
||
type of recursion, ignore it and expand to the empty string rather
|
||
than failing.
|
||
|
||
* src/variable.h (env_recursion): New global variable.
|
||
* src/variable.c (target_environment): If creating the environment
|
||
for a $(shell ...) function increment env_recursion. Remove the
|
||
check for expansion in a shell function context.
|
||
* src/expand.c (recursively_expand_for_file): Check for recursive
|
||
expansion in a $(shell ...) environment context and if present,
|
||
show the verbose message and return the empty string.
|
||
* tests/scripts/functions/shell: Add a test for this situation.
|
||
|
||
2022-09-08 Paul Smith <psmith@gnu.org>
|
||
|
||
Ensure debug output ends in newline
|
||
* src/load.c (load_object): Debug output strings must include \n.
|
||
* src/variable.c (target_environment): Ditto.
|
||
* src/posixos.c: Remove extra newlines.
|
||
|
||
2022-09-08 Paul Smith <psmith@gnu.org>
|
||
|
||
Sanitize tar file ownership, mode, and order
|
||
For reproducibility ensure all files in the dist tar file are owned by
|
||
root, and sorted by name. Force the mode on all files to be writable
|
||
by the owner and not writable by group or user, by default.
|
||
|
||
Remove unnecessary execute permissions from build_w32.bat.
|
||
|
||
Recommended by Tzvetelin Katchov <katchov@gnu.org>.
|
||
|
||
2022-09-08 Paul Smith <psmith@gnu.org>
|
||
|
||
bootstrap: Update to the latest gnulib bootstrap model
|
||
* README.git: Document the changes.
|
||
* bootstrap.conf: Set GNULIB_REVISION to avoid random updates.
|
||
* configure.ac: Set the minimum autoconf version back to 2.69:
|
||
that's the most common version deployed today, and it still works.
|
||
* bootstrap: Copy the latest from gnulib.
|
||
* autogen.sh: Ditto.
|
||
* autopull.sh: Ditto.
|
||
* bootstrap-funclib.sh: Ditto.
|
||
|
||
2022-08-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Fix tests for MacOS and Windows
|
||
* maintMakefile: Remove the template headers as prerequisites.
|
||
* tests/scripts/features/jobserver: Only test fifo if enabled.
|
||
* tests/scripts/variables/INCLUDE_DIRS: On MacOS none of the default
|
||
directories exist so .INCLUDE_DIRS is empty by default.
|
||
* tests/scripts/features/se_explicit: Fail via exit. cp will show
|
||
different error messages on different systems.
|
||
* tests/scripts/features/se_implicit: Ditto.
|
||
* tests/scripts/features/se_statpat: Ditto.
|
||
|
||
2022-08-30 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 62840] Don't change IO buffering before printing version
|
||
If users run 'make --version | head -n1' they expect make to exit
|
||
with a success (0) code. This works because the pipe forces the
|
||
default buffering on stdout to be fully buffered so all the output
|
||
is printed to the pipe in a single write(2) and won't fail. However
|
||
due to output sync we forcibly set stdout to line buffered, which
|
||
means if the reader closes the pipe fast enough make will exit with
|
||
an error code because the write to stdout failed.
|
||
|
||
Move the setup done in output_init() back into main() where it can
|
||
be done in a proper order. Rework the order of operations during
|
||
startup so that we check for help and version flags before we change
|
||
the buffering. Clean up the behavior of print_usage().
|
||
|
||
Original changes from Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
* src/main.c (switches): Don't send --version in the environment.
|
||
(print_usage): Add a blank line after the version before the usage.
|
||
Move the die() into this function since we always die() afterward.
|
||
Note the die will flush so no need to do it explicitly.
|
||
(print_version): The caller will fflush when appropriate.
|
||
(close_stdout): Move from output.c so it is installed early.
|
||
(decode_switches): Only call print_usage on error, not for --help.
|
||
(main): Install the close_stdout handler immediately after start.
|
||
Move the calls to print_usage() due to --help and --version to be
|
||
called immediately after we decode the switches. Move the buffer set
|
||
here from output_init(), immediately after we know we'll be running.
|
||
* src/output.c (output_init): Move buffer setting to main().
|
||
(close_stdout): Move to main().
|
||
|
||
2022-08-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Rework output sync to lock a temp file on POSIX
|
||
Some POSIX systems do not allow locks to be taken on non-files, such
|
||
as pipes. This is a problem since very often make is invoked with
|
||
its stdout redirected to a pipe. Also, if stdout is redirected to a
|
||
file that already has a lock on it for some other reason (perhaps a
|
||
shared file such as /dev/null) it can cause a hang.
|
||
|
||
This means our previous method of locking stdout, although it had some
|
||
nice advantages, is not portable enough. Instead, use a temporary
|
||
file and take the lock on that. We pass the name of the file to child
|
||
make processes. On Windows we continue to use a shared mutex for
|
||
output sync.
|
||
|
||
Remove POSIX emulation functions like fcntl from Windows; instead
|
||
follow the lead of the jobserver and create an interface in os.h for
|
||
output sync, and move the OS-specific content to posixos.c and
|
||
w32os.c.
|
||
|
||
* NEWS: Add a note.
|
||
* src/makeint.h (ALL_SET): Check that all bits are set.
|
||
* src/os.h: Add bits for checking the state of stdin/stdout/stderr.
|
||
Add prototypes for OS-specific output sync methods.
|
||
* src/posixos.c (check_io_state): Determine the status of stdin,
|
||
stdout, stderr an return a suite of bits describing them.
|
||
(osync_enabled): If the global variable holding the FD of the lock
|
||
file (osync_handle) is valid return true.
|
||
(osync_setup): Create a temporary file and remember its name in a
|
||
global variable (osync_tmpfile), and set osync_handle.
|
||
(osync_get_mutex): If output sync is enabled, return the filename
|
||
of the lock file prefixed with "fnm:" to denote a filename.
|
||
(osync_parse_mutex): If the provided filename has the wrong format
|
||
disable output sync. Else open the lock file and set osync_handle.
|
||
(osync_clear): Close osync_handle. If we're the parent make, then
|
||
also unlink the temporary file.
|
||
(osync_acquire): Take a lock on the osync_handle descriptor.
|
||
(osync_release): Release the lock on the osync_handle descriptor.
|
||
(fd_set_append): Add APPEND mode to a file descriptor.
|
||
* src/w32/w32os.c: Perform the same actions as posixos.c, copying
|
||
the details from src/w32/compat/posixfcn.c. Use a mutex rather
|
||
than locking a temporary file.
|
||
* src/output.h: Remove all the OS-specific content.
|
||
* src/output.c: Remove all the OS-specific content.
|
||
(set_append_mode): Remove and replace with fd_set_append().
|
||
(sync_init): Remove and replace with check_io_state().
|
||
(acquire_semaphore): Remove and replace with osync_acquire().
|
||
(release_semaphore): Remove and replace with osync_release().
|
||
(setup_tmpfile): If the IO state is not obtained, get it. If stdout
|
||
and/or stderr are valid, set up a tempfile to capture them.
|
||
(output_init): Set io_state if not set already, and check it when
|
||
deciding whether to close stdout on exit.
|
||
* src/main.c (main): If we're syncing, set up the mutex using the
|
||
new osync_setup() / osync_parse_mutex() methods.
|
||
(prepare_mutex_handl_string): Replace with osync_parse_mutex().
|
||
(die): Call osync_clear().
|
||
* src/w32/compat/posixfcn.c: Remove implementations of fcntl(),
|
||
record_sync_mutex(), create_mutex(), and same_stream().
|
||
|
||
2022-08-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Add get_tmpfd() and allow anonymous temp files
|
||
The output sync feature wants a file descriptor not a FILE*. We were
|
||
using tmpfile() but this returns FILE* which means we needed to dup()
|
||
the descriptor then fclose() the original, which is just unnecessary
|
||
overhead for every command we run.
|
||
|
||
Create a get_tmpfd() method that returns a file descriptor directly
|
||
by using mkstemp() if available, else do the best we can.
|
||
|
||
Also allow anonymous temp files if the filename pointer is NULL.
|
||
This causes the file to be unlinked. On Windows this requires a
|
||
special open so add an os_anontmp() method to handle this.
|
||
|
||
* src/makeint.h: Add prototype for get_tmpfd().
|
||
* src/misc.c (get_tmpfd): If we have mkstemp() use that, else just
|
||
open(2). If we don't want to keep the filename, unlink the file.
|
||
(get_tmpfile): Use get_tmpfd() if we have fdopen(), else use fopen().
|
||
* src/output.c (output_tmpfd): Call get_tmpfd() with NULL.
|
||
* src/os.h (os_anontmp): On Windows make this a function, else fails.
|
||
* src/w32/compat/posixcfn.c (tmpfile): Move to w32os.c:os_anontmp().
|
||
* src/w32/w32os.c (os_anontmp): Create a temp file that will be deleted
|
||
when the process exits, and return a file descriptor to it.
|
||
|
||
2022-08-29 Paul Smith <psmith@gnu.org>
|
||
|
||
test_driver: check for leftover temp files after each test
|
||
Reset the temp directory for every test to a local directory, then
|
||
after each test see if any new temp files were created and not
|
||
deleted: if they were then fail the test. Rather than delete the
|
||
temp files we leave them there and avoid reporting files that were
|
||
seen before, so the user can investigate them.
|
||
|
||
Rewrite the temp_stdin tests to rely on this built-in behavior
|
||
rather than implementing the checks directly.
|
||
|
||
* tests/test_driver.pl: Create a $TEMPDIR variable pointing to a
|
||
temporary directory outside the test temp directory.
|
||
(toplevel) Before starting any tests create a temp directory and set
|
||
the POSIX and Windows temp directory environment variables to use it.
|
||
(compare_output) Check the contents of the temp directory. If any
|
||
new files have appeared, fail the test.
|
||
* tests/scripts/features/temp_stdin: Remove check_tempfile() and
|
||
all users of it, plus setting of temp environment variables.
|
||
|
||
2022-08-22 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62908] Don't free fifo_name twice during error handling
|
||
* src/posixos.c (jobserver_setup): Set fifo_name to NULL after free.
|
||
* tests/scripts/features/jobserver: Add tests.
|
||
|
||
2022-08-22 Paul Smith <psmith@gnu.org>
|
||
|
||
Fix bootstrap.bat for bootstrapping on Windows
|
||
* README.git: Clarify that these methods are lightly tested.
|
||
* build_w32.bat: Don't support any config step: fail if not completed.
|
||
Move the config steps into bootstrap.bat. Don't print compile lines
|
||
by default and add a --verbose option to show them.
|
||
* bootstrap.bat: Ensure we have curl and sed before we do anything.
|
||
Pull the latest necessary files from gnulib. Create a convert.sed
|
||
script that can update the various template files, and update
|
||
Basic.mk, config.h.W32, and gmk-default.h.
|
||
* tests/run_make_tests.pl: Remove CRLF rather than using chop. If we
|
||
run perl in Git for Bash it seems to handle newlines differently.
|
||
* tests/scripts/features/temp_stdin: Remove the make copy and close
|
||
STDIN so we can delete the temp file on Windows.
|
||
* .gitignore: Ignore the convert.sed script.
|
||
|
||
2022-08-14 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Variables/Recursion): [SV 56446] Clarify export docs
|
||
|
||
2022-08-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Goals): [SV 51306] Improve MAKECMDGOALS example
|
||
|
||
2022-08-07 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* doc/make.texi (Remaking Makefiles): [SV 61623] Add optimization
|
||
|
||
2022-08-03 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Chained Rules): [SV 61957] Clarify NOTINTERMEDIATE
|
||
|
||
[SV 62496] Fix example of testing MAKEFLAGS
|
||
* doc/make.texi (Options/Recursion): Define the layout of MAKEFLAGS.
|
||
(Testing Flags): Fix the example to test the first word.
|
||
|
||
2022-08-02 Paul Smith <psmith@gnu.org>
|
||
|
||
Support implementing the jobserver using named pipes
|
||
Using anonymous pipes for jobserver support has some advantages:
|
||
for example there is nothing on disk that needs to be cleaned up.
|
||
However it has many obscure problems, related to the fact that in
|
||
order for it to work we need to ensure these resources are properly
|
||
passed through to child processes that want to use the jobserver.
|
||
At the same time we don't want to pass the pipe to process which
|
||
DON'T know about the jobserver.
|
||
|
||
Other processes can open file descriptors which we then think are
|
||
our jobserver, but aren't. And, we open the pipe file descriptors
|
||
in blocking mode which doesn't work for all users.
|
||
|
||
See issues such as SV 57178, SV 57242, and SV 62397
|
||
|
||
To avoid these issues, use named pipes (on systems where they are
|
||
available) instead of anonoymous pipes. This simplifies many things:
|
||
we never need to pass open file descriptors to our children; they
|
||
can open the jobserver named pipe. We don't need to worry about
|
||
recursive vs. non-recursive children. Users don't have to "pass
|
||
through" the resources if they are invoking sub-makes. Each child
|
||
can open its own file descriptor and set blocking as needed.
|
||
|
||
The downside is the named pipe exists on disk and so must be cleaned
|
||
up when the "top-level" make instance exits.
|
||
|
||
In order to allow make to continue to be used in build systems where
|
||
older versions of GNU make, or other tools that want to use the
|
||
jobserver, but don't understand named pipes, introduce a new option
|
||
--jobserver-style that allows the user to choose anonymous pipes.
|
||
|
||
* NEWS: Announce the change and the --jobserver-style option.
|
||
* doc/make.1: Add --jobserver-style documentation.
|
||
* doc/make.texi (Special Variables): Add missing items to .FEATURES.
|
||
(Options Summary): Add --jobserver-style.
|
||
(POSIX Jobserver): Named pipes, changes to --jobserver-auth, and the
|
||
--jobserver-style option.
|
||
(Windows Jobserver): Document --jobserver-style for Windows.
|
||
* configure.ac: Check for mkfifo.
|
||
* src/config.h-vms.template: Undefined HAVE_MKFIFO.
|
||
* src/config.h.W32.template: Ditto.
|
||
* src/main.c: Add jobserver-style as a new command line option.
|
||
(main): Add jobserver-fifo to .FEATURES if supported. Pass the style
|
||
option to jobserver_setup().
|
||
* src/os.h (jobserver_setup): Accept a style string option.
|
||
* src/posixos.c (enum js_type): Enumeration of the jobserver style.
|
||
(js_type): Which style we are currently using.
|
||
(fifo_name): The path to the named pipe (if in use).
|
||
(jobserver_setup): If no style is given, or "fifo" is given, set up a
|
||
named pipe: get a temporary file and use mkfifo() on it, then open it
|
||
for reading and writing. If something fails fall back to anonymous
|
||
pipes.
|
||
(jobserver_parse_auth): Parse jobserver-auth to determine the style.
|
||
If we are using a named pipe, open it. If we're using anonymous pipes
|
||
ensure they're valid as before.
|
||
(jobserver_get_invalid_auth): Don't invalidate the jobserver when
|
||
using named pipes.
|
||
(jobserver_clear): Clean up memory used for named pipes.
|
||
(jobserver_acquire_all): Unlink the named pipe when done.
|
||
* src/w32/w32os.c (jobserver_setup): Check the style argument.
|
||
* tests/scripts/features/jobserver: Use --jobserver-style to test
|
||
the anonymous pipe behavior, and also test named pipe/semaphore
|
||
behavior. Check invalid jobserver-style options.
|
||
* tests/scripts/functions/shell: Use --jobserver-style to test the
|
||
anonymous pipe behavior, and also test named pipe/semaphore
|
||
behavior.
|
||
|
||
2022-08-02 Paul Smith <psmith@gnu.org>
|
||
|
||
Enhance get_tmpfile() and add get_tmppath()
|
||
Move all the logic on creating temporary files into misc.c, and add
|
||
a new function get_tmppath() that returns the pathname to a temporary
|
||
file without creating or opening it.
|
||
|
||
* src/makeint.h: Add a declaration for get_tmppath(). Remove the
|
||
template argument from get_tmpfile(): it will compute its own.
|
||
* src/main.c (main): Remove the logic for computing templates.
|
||
* src/vmsjobs.c (child_execute_job): Ditto.
|
||
* src/misc.c (get_tmptemplate): New function to return an allocated
|
||
template string for use with various mktemp-style functions.
|
||
(get_tmppath): Return an allocated path to a temporary file, but do
|
||
not create it. Generally this should be avoided due to TOCTOU issues.
|
||
(get_tmpfile): Use get_tmptemplate() to generate a template rather
|
||
than using one passed in. If we don't have mkstemp() then use
|
||
get_tmppath() to compute the path of a temp file.
|
||
|
||
2022-07-30 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62706] Only second-expand targets that might be built
|
||
Second-expand only the prerequisites of the targets being built.
|
||
Defer second-expanding the prerequisites of targets until we need
|
||
to decide if they should be built.
|
||
|
||
* NEWS: Mention the change in behavior.
|
||
* doc/make.texi (Secondary Expansion): Document the new behavior.
|
||
* src/filedef.h (struct file): Add flag snapped.
|
||
(expand_deps): Declare a function to second expand the
|
||
prerequisites of a target.
|
||
* src/file.c (rehash_file): Merge flag snapped.
|
||
(expand_deps): Remove qualifier static. Check flag snapped.
|
||
(snap_deps): Remove the loop which performed second expansion for all
|
||
targets.
|
||
* src/remake.c (update_file_1): Second expand the prerequisites of
|
||
the considered target.
|
||
* tests/scripts/features/se_explicit: Add tests.
|
||
* tests/scripts/features/se_implicit: Ditto.
|
||
* tests/scripts/features/se_statpat: Ditto.
|
||
|
||
2022-07-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Disable the jobserver in non-recursive children
|
||
Savannah issues such as SV 57242 and SV 62397 show how passing
|
||
references to closed file descriptors via the --jobserver-auth option
|
||
in MAKEFLAGS can lead to problematic outcomes.
|
||
|
||
When computing the child environment for a non-recursive shell, add
|
||
an extra option to MAKEFLAGS to disable the file descriptors for the
|
||
jobserver.
|
||
|
||
Unfortunately this doesn't modify the value of the make variable
|
||
MAKEFLAGS, it only modifies the value of the sub-shell environment
|
||
variable MAKEFLAGS. This can lead to confusion if the user is not
|
||
considering the distinction.
|
||
|
||
* src/makeint.h: Publish the jobserver-auth value. Add a global
|
||
definition of the name of the command line option.
|
||
* src/os.h (jobserver_get_invalid_auth): New function to return a
|
||
string invalidating the jobserver-auth option.
|
||
* src/w32/w32os.c (jobserver_get_invaid_auth): Implement it. On
|
||
Windows we use a semaphore so there's no need to invalidate.
|
||
* src/posixos.c (jobserver_parse_auth): If we parse the invalid
|
||
auth string, don't set up the jobserver.
|
||
(jobserver_get_invalid_auth): Return an invalid option.
|
||
* src/variable.h (target_environment): Specify if the target
|
||
environment is for a recursive shell or non-recursive shell.
|
||
* src/variable.c (target_environment): Move checking for MAKELEVEL
|
||
into the loop rather than doing it at the end.
|
||
Along with this, check for MAKEFLAGS and MFLAGS, and update them
|
||
based on whether we're invoking a recursive or non-recursive child,
|
||
and also on whether it's necessary to invalidate the jobserver.
|
||
* src/function.c (func_shell_base): Shell functions can never be
|
||
recursive to pass 0 to target_environment().
|
||
* src/job.c (start_job_command): Specify whether the child is
|
||
recursive when calling target_environment().
|
||
* src/main.c: Export jobserver_auth. sync_mutex doesn't need to
|
||
be exported. Use the global definition for the option name.
|
||
* tests/scripts/variables/MAKEFLAGS: Add tests for $MAKEFLAGS.
|
||
|
||
2022-07-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Ensure that MAKEFLAGS is set when invoking $(shell ...)
|
||
* src/main.c (main): Don't reset the jobserver if the number of
|
||
slots has not changed.
|
||
(define_makeflags): Add all normal flags even when ALL is not set.
|
||
* tests/scripts/functions/shell: Test invoking make in $(shell ...).
|
||
* tests/scripts/variables/MAKEFLAGS: Test the value of MAKEFLAGS in
|
||
$(shell ...).
|
||
|
||
Take advantage of mempcpy() and stpcpy()
|
||
* src/makeint.h (stpcpy): Add missing declaration.
|
||
* src/amiga.c (MyExecute): Avoid extra strlen using stpcpy.
|
||
* src/function.c (func_shell_base): Ditto.
|
||
(func_error): Use memcpy() not strcpy() when we know the length.
|
||
* src/job.c (construct_command_argv_internal): Use stpcpy().
|
||
* src/main.c (main): Ditto.
|
||
(define_makeflags): Ditto.
|
||
* src/variable.c (print_target_variables): Use memcpy() when we know
|
||
the length.
|
||
* src/commands.c (set_file_variables): Use mempcpy().
|
||
* src/expand.c (variable_buffer_output): Ditto.
|
||
* src/file.c (expand_deps): Ditto.
|
||
* src/function.c (abspath): Ditto.
|
||
(handle_function): Ditto.
|
||
* src/implicit.c (pattern_search): Ditto.
|
||
* src/job.c (construct_command_argv_internal): Use mempcpy() and
|
||
don't add multiple spaces when there are no shell flags.
|
||
* src/main.c (decode_env_switches): Use mempcpy() to simplify.
|
||
(define_makeflags): Ditto.
|
||
* src/variable.c (selective_vpath_search): Ditto.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Convert HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG
|
||
We want to know if getloadavg() is declared, not if we have it.
|
||
|
||
* configure.ac: Add it as a define (why is this not the default?)
|
||
* src/job.c: Conditionalize declaration on HAVE_DECL_GETLOADAVG.
|
||
* config.ami.template: Rename HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG.
|
||
* config.h-vms.template: Ditto.
|
||
* config.h.W32.template: Ditto.
|
||
Clean up and add new elements from latest config.h.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Merge in the latest gnulib findprog-in module
|
||
|
||
Merge in the latest gnulib concat-filename module
|
||
|
||
Merge in the latest gnulib getloadavg module
|
||
|
||
Initial merge of the gnulib-port branch
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Move our local m4 macros to gl/m4
|
||
The gl subdirectory contains our local versions of gnulib module
|
||
implementations, so move m4/acinclude.m4 and m4/dospaths.m4 there.
|
||
|
||
* gl/modules/make-macros: Create a new module to handle the macros.
|
||
* bootstrap.conf: Add the new module.
|
||
* configure.ac: Macro invocation is moved to make-macros.
|
||
* m4/.gitignore: Delete unnecessary ignore file: m4 is empty.
|
||
* .gitignore: Add m4/ as an ignored directory.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Move our fnmatch/glob implementation into gl/lib
|
||
The gl subdirectory contains our local versions of gnulib module
|
||
implementations, so move fnmatch* and glob* from lib to gl/lib.
|
||
|
||
* gl/modules/make-glob: Add a proper Files: section.
|
||
* lib/.gitignore: Delete unnecessary ignore file: lib is empty.
|
||
* .gitignore: Add lib/ as an ignored directory.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/run_make_tests.pl: Exit 1 if we detect an error.
|
||
|
||
* configure.ac: Remove AC_FUNC_SETVBUF_REVERSED.
|
||
This macro is obsolete: no useful system has this problem anymore.
|
||
* src/output.c (output_init): Remove reference to SETVBUF_REVERSED.
|
||
* src/config.ami.template: Remove undef of SETVBUF_REVERSED.
|
||
* src/config.h-vms.template: Ditto.
|
||
* src/config.h.W32.template: Ditto.
|
||
|
||
* configure.ac: Check for stpcpy() support.
|
||
* src/misc.c (stpcpy): Define it if not provided.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
getloadavg: Remove support for privileged invocation
|
||
This was needed when getloadavg required privileged access; in this
|
||
case GNU make needed to be installed as a setgid program. But this
|
||
hasn't been supported by gnulib getloadavg() since 2011 and systems
|
||
are no longer using it, so remove it.
|
||
|
||
* src/makeint.h (user_access): Remove unnecessary function.
|
||
(make_access): Ditto.
|
||
(child_access): Ditto.
|
||
* src/misc.c: Remove implementations of the *_access() functions.
|
||
* src/main.c (main): Remove unneeded call to user_access().
|
||
* src/job.c (load_too_high): Remove calls to {make,user}_access().
|
||
(exec_command): Remove call to child_access().
|
||
* src/remote-cstms.c: Remove calls to these methods. I suppose it
|
||
might be possible this is needed and was piggy-backing on the
|
||
privileged setting but since that's been broken for a while I doubt
|
||
this is needed. If so we can bring back the implementation into
|
||
this source file.
|
||
* src/config.h.W32.template: Remove GETLOADAVG_PRIVILEGED undef.
|
||
* src/config.h-vms.template: Ditto.
|
||
* src/config.ami.template: Ditto.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
* maintMakefile: Allow checkcfg rules to succeed.
|
||
We can no longer pass our mondo-warnings options to the builds,
|
||
as these will impact all the code including gnulib code, and this
|
||
won't work. Also allow the caller to disable either the build.sh
|
||
or makefile invocation, for testing.
|
||
* Makefile.am: Allow the caller to reset the path to the make
|
||
binary to be tested. Remove c90 test: gnulib doesn't support it.
|
||
|
||
* build.sh: Manage libgnu_a-prefixed source files
|
||
|
||
bootstrap: Remove strerror()
|
||
* bootstrap.conf: Remove strerror module
|
||
* configure.ac: Add a check for strerror
|
||
* src/misc.c: Add a default strerror() if not found
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
bootstrap: Remove strtoll()
|
||
This pulls in entirely too much stuff we don't need. Instead grab
|
||
just the gnulib source file, then include it in src/misc.c.
|
||
|
||
* bootstrap.conf: Add just the lib/strtol.c source file.
|
||
* configure.ac: Check for strtoll.
|
||
* src/misc.c: Include strtol.c, with QUAD set, if needed.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
bootstrap: Remove gnulib version of mempcpy()
|
||
This pulls in a metric ton of stuff that we otherwise don't need, just
|
||
for a one-liner that we already have a replacement for in src/misc.c.
|
||
|
||
* bootstrap.conf: Remove mempcpy
|
||
* configure.ac: Add mempcpy to AC_CHECK_FUNCS
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Run autoupdate and clean up autoconf usage
|
||
We can assume that the return type of a signal handler is void.
|
||
We can assume that, if sys/time.h exists, it can be included
|
||
with time.h.
|
||
|
||
* bootstrap: Get the latest version
|
||
* configure.ac: Require a newer version of autoconf.
|
||
Remove unnecessary AC_PROG_CC_C99 (already have AC_PROC_CC).
|
||
Remove unnecessary AC_AIX, AC_ISC_POSIX, AC_MINIX.
|
||
Remove unnecessary AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL.
|
||
Use strerror to search for the cposix library.
|
||
* src/commands.c (fatal_error_signal): Assume return type is void.
|
||
* src/commands.h: Ditto.
|
||
* src/job.c: Ditto.
|
||
* src/job.h: Ditto.
|
||
* src/main.c: Ditto.
|
||
* src/makeint.h: Ditto.
|
||
Don't bother with TIME_WITH_SYS_TIME.
|
||
* src/remote-cstms.c: Check HAVE_SYS_TIME_H.
|
||
* src/config.ami.template: Remove RETSIGTYPE.
|
||
* src/config.h-vms.template: Ditto.
|
||
* src/config.h.W32.template: Ditto.
|
||
Remove TIME_WITH_SYS_TIME.
|
||
|
||
2022-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 10593] Export variables to $(shell ...) commands
|
||
Export all variables, including exported makefile variables, when
|
||
invoking a shell for the $(shell ...) function. If we detect a
|
||
recursive variable expansion, silently ignore that variable and do
|
||
not export it. We do print a debug message.
|
||
|
||
* NEWS: Announce the potential backward-incompatibility.
|
||
* doc/make.texi (Shell Function): Document the export behavior.
|
||
* src/main.c (main): Add "shell-export" to .FEATURES.
|
||
* src/job.h: New function to free struct childbase.
|
||
* src/job.c (free_childbase): Implement it; call from free_child.
|
||
* src/function.c (func_shell_base): Use target_environment() to
|
||
obtain the proper environment for the shell function.
|
||
Use free_childbase() to free memory.
|
||
(windows32_openpipe): Don't reset the environment: the caller
|
||
already provided a proper PATH variable in envp.
|
||
* src/variable.c (target_environment): If we detect a recursive
|
||
expansion and we're called from func_shell, ignore the variable.
|
||
(sync_Path_environment): Simplify and reduce memory allocation.
|
||
* tests/scripts/functions/shell: Add tests for this.
|
||
|
||
2022-07-09 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62650] Show correct warning when combining targets
|
||
* src/file.c (rehash_file): Fix warning message.
|
||
(rehash_file): Fix comment to match the behavior.
|
||
* tests/scripts/features/se_explicit: Fix test.
|
||
* tests/scripts/features/mult_rules: Add a new test.
|
||
|
||
2022-07-09 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62514] Honor command line interface flags
|
||
Commit f2771aa614 introduced a bug where some switches were left out
|
||
of MAKEFLAGS. Instead of resetting switches, get the same results by
|
||
filtering out duplicates.
|
||
|
||
* src/makeint.h: Remove reset_switches.
|
||
* src/main.c: (reset_switches): Remove reset_switches.
|
||
* (main): Remove call to reset_switches.
|
||
* (decode_switches): Filter out duplicate flags.
|
||
* src/variable.c: (set_special_var): Remove call to reset_switches.
|
||
* tests/scripts/variables/MAKEFLAGS: Verify that duplicate flags are
|
||
properly filtered out.
|
||
|
||
2022-07-07 Paul Smith <psmith@gnu.org>
|
||
|
||
Add gnulib findprog-in
|
||
|
||
Add gnulib concat-filename
|
||
|
||
Add gnulib getloadavg
|
||
|
||
Initial gnulib-port branch commit
|
||
|
||
2022-06-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Don't add GNUMAKEFLAGS to the environment
|
||
If GNUMAKEFLAGS was not present in the environment when we started,
|
||
don't add it.
|
||
|
||
* src/main.c (main): Don't mess with GNUMAKEFLAGS unless it exists.
|
||
* tests/scripts/variables/GNUMAKEFLAGS: Test this behavior.
|
||
|
||
2022-06-18 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/test_driver.pl: Don't freak if diff can't be found
|
||
|
||
* build_w32.bat [WIN]: Use call for all invocations
|
||
|
||
2022-06-17 Paul Smith <psmith@gnu.org>
|
||
|
||
Avoid overwriting buffers with long pathnames
|
||
Reported, with initial patch, by Gisle Vanem <gvanem@online.no>
|
||
|
||
* src/main.c (find_and_set_default_shell) [W32]: Pass search_token
|
||
directly to w32ify: no need to make a copy first. When we need to
|
||
construct a path, use snprintf() to be sure we don't overwrite
|
||
the locally-allocated buffer.
|
||
* src/w32/pathstuff.c (w32ify) [W32]: Use the malloc version of
|
||
_fullpath(), followed by strncpy(), to avoid overwriting buffers.
|
||
|
||
2022-06-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/temp_stdin: Remove nested "my"
|
||
* tests/scripts/features/statipattrules: Remove unset variable refs.
|
||
|
||
2022-06-04 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* tests/scripts/features/archives: Fix typo
|
||
|
||
2022-06-04 Sergei Trofimovich <siarheit@google.com>
|
||
|
||
[SV 62100] Add '--shuffle' option support
|
||
Introduce non-deterministic ordering into goal and prerequisite
|
||
traversal to help tease out inconsistent failures that may happen
|
||
when running in parallel build mode.
|
||
|
||
Introduce second order into each dependency chain:
|
||
1. Existing order is syntactic order reachable via 'dep->next'
|
||
2. New order is shuffled order stored as 'dep->shuf' in each 'dep'
|
||
|
||
When updating goals and prerequisites and '--shuffle' is provided,
|
||
use the shuffled order to walk the graph. When automatic variable
|
||
are set always use the syntactic order of parameters.
|
||
|
||
* Makefile.am: Add new src/shuffle.c and src/shuffle.h file.
|
||
* build_w32.bat: Ditto.
|
||
* builddos.bat: Ditto.
|
||
* makefile.com: Ditto.
|
||
* po/POTFILES.in: Ditto.
|
||
* doc/make.texi: Add documentation for --shuffle.
|
||
* doc/make.1: Ditto.
|
||
* src/dep.h (DEP): Add the shuf pointer.
|
||
* src/filedef.h (struct file): Add was_shuffled flag.
|
||
* src/main.c: (shuffle_mode): Global flag for the shuffle mode.
|
||
(usage): Add the --shuffle option.
|
||
(switches): Ditto.
|
||
(main): Set shuffle_mode based on the command line parameter.
|
||
Reshuffle prerequisites if requested.
|
||
* src/remake.c (update_goal_chain): Walk the shuffled list if enabled.
|
||
(update_file_1): Ditto.
|
||
* src/shuffle.h: Provide an interface for shuffling prerequisites.
|
||
* src/shuffle.c: Implement option parsing and prerequisite shuffling.
|
||
* tests/scripts/options/shuffle: Test shuffle option and modes.
|
||
|
||
2022-06-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/misc.c (make_toui): Parse a string into an unsigned int
|
||
* src/makeint.h: Declare it.
|
||
* src/arscan.c (ar_scan): Replace atoi() calls with make_toui().
|
||
Modify some integral types to be more correct.
|
||
* src/job.c (load_too_high): Replace atoi() calls with make_toui().
|
||
* src/main.c (main): Ditto.
|
||
(decode_switches): Ditto.
|
||
|
||
* src/misc.c (make_pid): A function to return the PID
|
||
* src/makeint.h: Declare it.
|
||
* src/commands.c (fatal_error_signal): Call it.
|
||
|
||
* po/LINGUAS: Add a translation for Romanian
|
||
|
||
2022-04-24 Noah Goldstein <goldstein.w.n@gmail.com>
|
||
|
||
Replace strcmp() with memcmp() where possible
|
||
memcmp() is always faster than strcmp(). In places where we already
|
||
know that both buffers have sufficient size, replace strcmp() with
|
||
memcmp().
|
||
|
||
* src/main.c (main): Replace strncmp() with memcmp()==0.
|
||
* src/read.c (word1eq): Ditto.
|
||
* src/commands.c (set_file_variables): Ditto.
|
||
* src/function.c (func_filter_filterout): Ditto.
|
||
(a_word_hash_cmp): Use STRING_N_COMPARE since we know the length.
|
||
(func_sort): Replace strcmp() with memcmp().
|
||
|
||
2022-04-24 Noah Goldstein <goldstein.w.n@gmail.com>
|
||
|
||
hash: Remove unnecessary isupper() check before tolower()
|
||
The standard requires that tolower() returns its argument if there's
|
||
no valid lowercase conversion: it's not necessary to check isupper()
|
||
before invoking tolower().
|
||
|
||
Comparing the performance of the old ISTRING_HASH to the new one
|
||
on all the files present in GLIBC.
|
||
|
||
Data Type Old Time New Time
|
||
Alternating case 24985.754 13883.422
|
||
random case 35211.777 13569.051
|
||
all lower 18818.974 13706.645
|
||
all upper 38859.454 13506.315
|
||
|
||
* src/hash.h (ISTRING_HASH_1): Omit isupper() check.
|
||
(ISTRING_HASH_2): Ditto.
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62206] Fix %-substitution in second expansion of pattern rules
|
||
During second expansion of pattern rules only the first pattern in
|
||
each "group" was being substituted. E.g. in this makefile:
|
||
|
||
.SECONDEXPANSION:
|
||
all: hello.x
|
||
%.x: $$(wordlist 1, 99, %.1 %.%.2) ; $(info $@ from $^)
|
||
hello.1 hello.\%.2 \%.1 \%.\%.2: ;
|
||
|
||
the output would build "hello.1" and "%.%.2" because each function
|
||
is considered a single "word" and only the first pattern is replaced.
|
||
|
||
Fix the expansion so each whitespace-separated string is considered a
|
||
word and the first pattern is replaced, giving "hello.1" and
|
||
"hello.%.2".
|
||
|
||
* src/rule.c (snap_implicit_rules): Keep enough space to replace %
|
||
with $(*F) if necessary.
|
||
* src/implicit.c (pattern_search): During second expansion break each
|
||
get_next_word result into individual words and replace the first % in
|
||
each with $* or $(*F) as needed.
|
||
* tests/scripts/features/patternrules: Add tests for variations.
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62175] Rework secondary expansion tests
|
||
The hash function we use can yield different results on big- and
|
||
little-endian systems which makes test output different. Choose
|
||
names to avoid this.
|
||
|
||
* tests/scripts/features/patternrules: Choose portable target names.
|
||
* tests/scripts/features/se_explicit: Ditto.
|
||
* tests/scripts/features/se_implicit: Ditto.
|
||
|
||
2022-04-24 Paul Smith <psmith@gnu.org>
|
||
|
||
* Makefile.am (check-regression): Rename jhelp to thelp
|
||
|
||
* tests/scripts/options/dash-f: [SV 62118] Close STDIN
|
||
On Windows we can't delete open files, so close STDIN before
|
||
removing the temporary input file.
|
||
|
||
* tests/scripts/features/reinvoke: [SV 62088] Close STDIN
|
||
On Windows we can't delete open files, so close STDIN before
|
||
removing the temporary input file.
|
||
|
||
* tests/test_driver.pl (run_all_tests): Keep one copy of STDIN
|
||
|
||
* Makefile.am: Add INSTALL to the EXTRA_DIST files
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62356] If -R is set in the makefile, disable -r
|
||
If -R is given on the command line it implies -r as well; make this
|
||
same assumption if -R is provided in MAKEFLAGS set in the makefile.
|
||
|
||
* src/main.c (main): Check no_builtin_variables_flag after reading
|
||
makefiles.
|
||
* tests/scripts/options/dash-r: Add a test.
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62324] Simplify set_file_variables by passing in the stem
|
||
Previously we always used the file->stem value as our stem in
|
||
set_file_variables(); when that wasn't correct we had to temporarily
|
||
set that value while the function was called, then reset it afterward.
|
||
This led to issues (for example when we assumed the stem was a cached
|
||
string but it wasn't).
|
||
|
||
Avoid this by passing in the stem as an argument so that different
|
||
values can be provided.
|
||
|
||
Add tests to verify this.
|
||
|
||
* src/commands.c (set_file_variables): Take second parameter stem to
|
||
relieve the callers of set_file_variables() from setting/restoring
|
||
file->stem.
|
||
* src/commands.h (set_file_variables): Ditto.
|
||
(execute_file_commands): Pass file->stem to set_file_variables().
|
||
* src/file.c (expand_deps): Pass d->stem to set_file_variables() and
|
||
remove set and restore of file->stem.
|
||
* src/implicit.c (pattern_search): Pass stem to set_file_variables()
|
||
and remove set and restore of file->stem.
|
||
* tests/scripts/features/se_explicit: Add new tests.
|
||
* tests/scripts/features/se_implicit: Ditto.
|
||
* tests/scripts/features/se_statpat: Ditto.
|
||
* tests/scripts/variables/automatic: Ditto.
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62278] Only expand the first pattern during secondary expansion
|
||
During normal pattern rule expansion only the first pattern (%) is
|
||
expanded; however during secondary expansion all patterns were
|
||
expanded. Modify secondary expansion to match the behavior of normal
|
||
expansion.
|
||
|
||
Implementation tweaked by Paul Smith <psmith@gnu.org>
|
||
|
||
* src/file.c (expand_deps): Don't use subst_expand() which replaces
|
||
all % with $*: instead replace only the first one, by hand.
|
||
Fix a memory leak where the dep structure was not always freed.
|
||
* tests/scripts/features/statipattrules: Use .RECIPEPREFIX not TAB.
|
||
Add a series of tests verifying that static pattern rules with and
|
||
without secondary expansion both return the same results.
|
||
|
||
2022-04-24 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/commands.h: [SV 62213] Forward-declare struct file / child
|
||
|
||
* tests/test_driver.pl (toplevel): [SV 62174] Enforce the C locale
|
||
|
||
2022-04-24 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 62173] Fix archive tests for non-GNU systems
|
||
Original patch from Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
Fix the ar flags to match the default values in make. If the
|
||
U option is supported, add it to the end not the beginning,
|
||
since ARFLAGS now starts with a "-".
|
||
|
||
* tests/test_driver.pl: Add defaults for global variables.
|
||
(get_osname): Preserve $osname if it's set from $^O
|
||
* tests/scripts/features/archive: Set the default arflags.
|
||
If "U" is available add it to the end of the flags.
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* tests/scripts/options/dash-l: [SV 62172] Skip if not available
|
||
|
||
* src/read.c (check_specials): [SV 62171] Reset ARFLAGS under .POSIX
|
||
|
||
2022-04-24 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62145] Remove a stdin temp file on re-exec failure.
|
||
If the re-exec fails, be sure to remove a temp makefile that was
|
||
created to read from stdin.
|
||
|
||
* src/job.c (exec_command): Return on failure.
|
||
(child_execute_job): Call exit if exec_command returns.
|
||
* src/job.h (exec_command): Don't mark as NORETURN.
|
||
* src/main.c (main): Unlink stdin temporary file if re-exec fails.
|
||
* tests/run_make_tests.pl: Get value for ERR_nonexe_file/ERR_exe_dir.
|
||
* tests/scripts/features/temp_stdin: Test that temp file unlink works.
|
||
|
||
2022-04-18 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/errors: Fix Perl warnings
|
||
* tests/scripts/options/dash-f: Ditto.
|
||
|
||
2022-02-27 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 62118] Correctly handle -f- options on re-exec
|
||
The -f, -file, and --makefile options were not properly handled when
|
||
re-exec'ing due to makefile updates. This problem, plus a patch and
|
||
tests, was reported by Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
While examining this I found another bug: after re-exec we forgot the
|
||
batch file was temporary and never deleted it.
|
||
|
||
I decided to fix all these problems at once using a different fix
|
||
than Dmitry's: I created a new internal-only command-line option,
|
||
--temp-stdin. When reconstructing the make options for a re-exec,
|
||
replace the -f/--file/--makefile option that reads from stdin with
|
||
--temp-stdin=<filename> so that the re-exec'd version of make knows
|
||
it's a temporary batch file and will delete it.
|
||
|
||
We no longer need to add the -o options because the re-exec'd make
|
||
knows this is a temporary makefile and treats it as such.
|
||
|
||
To simplify, replace the --file and --makefile options taking a
|
||
filename, with just -f<filename> on re-exec.
|
||
|
||
Some examples of the rewrite:
|
||
|
||
User command line Re-exec command line
|
||
----------------- --------------------
|
||
-f- --temp-stdin=<batch>
|
||
--file - --temp-stdin=<batch>
|
||
-f - --makefile a.mk --temp-stdin=<batch> -fa.mk
|
||
--file=a.mk -fa.mk
|
||
-fa.mk -fa.mk
|
||
-Rf a.mk -Rf a.mk
|
||
-Rf- -R --temp-stdin=<batch>
|
||
|
||
* src/main.c (stdin_offset): Remember the offset into the makefiles
|
||
list of the batch file read from stdin. Remove stdin_nm.
|
||
(struct command_switch): Create a new --temp-stdin option, which
|
||
also updates the makefiles list.
|
||
(main): Add the temporary filename to the string cache.
|
||
Move the tempfile handling after checking makefile arguments for "-"
|
||
so that files provided via --temp-stdin are also handled specially.
|
||
When rewriting re-exec options, we may need one more than we had
|
||
originally so create a new argv list. Walk through the original
|
||
list and convert it to the new list, following the above process.
|
||
(decode_switches): Set the stdin_offset flag if we see --temp-stdin.
|
||
* tests/scripts/options/dash-f: Add many more tests, provided by
|
||
Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
2022-02-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/variables/MAKE_RESTARTS: Remove TAB chars
|
||
|
||
* README.git: Fix compiler options for ASAN
|
||
|
||
2022-02-27 Paul Smith <psmith@gnu.org>
|
||
|
||
Remove extraneous characters from fatal() calls
|
||
The fatal() method adds ". Stop.\n" to every message.
|
||
|
||
* src/amiga.c (MyExecute): Remove newline from fatal() message.
|
||
* src/job.c (<various>): Ditto.
|
||
* src/file.c (snap_deps): Remove "." from fatal() message.
|
||
* src/main.c (main): Ditto.
|
||
* src/load.c: Ditto.
|
||
* tests/scripts/targets/NOTINTERMEDIATE: Fix expected output.
|
||
|
||
2022-02-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/main.c: Ensure the stdin temp file is deleted when dying.
|
||
|
||
2022-02-27 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 62088] Avoid re-exec due to stdin.
|
||
The fix for SV 60595 causes make to re-execute when the makefile is
|
||
read from stdin. E.g.
|
||
$ printf 'all:; $(info hello)' | make -sf -
|
||
|
||
Reported by Sergei Trofimovich <siarheit@google.com>
|
||
Test added by Paul Smith <psmith@gnu.org>
|
||
|
||
* src/main.c (main): Set the mtime of the stdin temporary file.
|
||
* tests/scripts/features/reinvoke: Add a test.
|
||
|
||
2022-02-27 Paul Smith <psmith@gnu.org>
|
||
|
||
tests: Allow run_make_test() to avoid passing -f
|
||
We already use undef makefile strings to mean "re-use the previous
|
||
makefile", so if the string is empty we'll assume it means "don't
|
||
use a makefile at all" (don't add -f).
|
||
|
||
* tests/run_make_tests.pl (run_make_test): If the makefile string
|
||
is empty, don't create a makefile or add -f.
|
||
* tests/scripts/features/include: Change empty makefile to "\n".
|
||
* tests/scripts/misc/close_stdout: Ditto.
|
||
* tests/scripts/options/dash-r: Ditto.
|
||
|
||
2022-02-27 Paul Smith <psmith@gnu.org>
|
||
|
||
tests: Preserve Windows temp environment variables
|
||
* src/main.c (main): Show the temp filename on error. Also on
|
||
Windows prefer TMP, then TEMP, and only lastly TMPDIR.
|
||
* tests/test_driver.pl: Add TMP, TEMP, and USERPROFILE to the list
|
||
of environment variables to preserve.
|
||
|
||
2022-02-26 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/test_driver.pl: Support STDIN redirection.
|
||
Before running tests, duplicate STDIN then reset it after the test
|
||
completes. Also when -keep is provided, preserve the base and run
|
||
files.
|
||
|
||
2022-02-21 Paul Smith <psmith@gnu.org>
|
||
|
||
Ensure buffers are large enough for integer values
|
||
Issue raised by Sergei Trofimovich <siarheit@google.com>
|
||
|
||
* src/makeint.h (INTSTR_LENGTH): Update for unsigned values.
|
||
* src/function.c (func_lastword): Use INTSTR_LENGTH as buffer size.
|
||
(shell_function_completed): Ditto.
|
||
(func_call): Ditto.
|
||
* src/remote-cstms.c (start_remote_job): Ditto.
|
||
|
||
2022-02-10 Paul Smith <psmith@gnu.org>
|
||
|
||
* <all>: Update copyright notices.
|
||
|
||
2022-02-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.1: Use "target" from the SYNOPSIS.
|
||
Reported by Helge Kreutzmann <debian@helgefjell.de>
|
||
|
||
2022-02-06 Paul Smith <psmith@gnu.org>
|
||
|
||
Don't write $(shell ...) stdout to stderr on failure
|
||
If a $(shell ...) invocation failed due to a command-not-found error,
|
||
make wrote the stdout of that shell to our stderr for some reason.
|
||
That seems very wrong.
|
||
|
||
If the command's stderr was not redirected then its output would have
|
||
already been written to its stderr, and if it was redirected then we
|
||
shouldn't take it upon ourselves to force it to go to stderr!
|
||
|
||
* src/function.c (func_shell_base): Append shell stdout even if the
|
||
shell command failed.
|
||
* tests/run_make_tests.pl: Determine the error generated for
|
||
command-not-found situations.
|
||
* tests/scripts/functions/shell: Verify that redirecting stderr to
|
||
stdout will behave properly if the command is not found.
|
||
|
||
2022-02-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* Basic.mk.template: Allow arguments to the check target.
|
||
|
||
2022-02-06 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 61805] Support quoted whitespace in .SHELLFLAGS with .ONESHELL
|
||
* src/job.c (construct_command_argv_internal): Call recursively to
|
||
parse .SHELLFLAGS when .ONESHELL is active.
|
||
* tests/scripts/targets/ONESHELL: Add tests.
|
||
|
||
2022-02-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/double_colon: Update for modern tests.
|
||
|
||
* tests/scripts/features/implicit_search: Add -r for safety.
|
||
|
||
2022-02-06 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 48643] Add more tests of intermediates and unrelated targets
|
||
If a prereq of a pattern is explicitly mentioned as a prereq of an
|
||
unrelated rule, it should not be considered an intermediate file.
|
||
|
||
* tests/scripts/features/double_colon: Add tests mentioning unrelated
|
||
explicit targets.
|
||
* tests/scripts/features/grouped_targets: Ditto.
|
||
* tests/scripts/features/implicit_search: Ditto.
|
||
* tests/scripts/features/patternrules: Ditto.
|
||
* tests/scripts/features/se_implicit: Ditto.
|
||
* tests/scripts/features/statipattrules: Ditto.
|
||
|
||
2022-02-06 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 48643] Make prereqs mentioned in unrelated rules explicit
|
||
* src/implicit.c (pattern_search): Set is_explicit when a prereq
|
||
is mentioned in an unrelated rule.
|
||
|
||
* src/implicit.c (pattern_search): [SV 61864] Fix debug output.
|
||
|
||
2022-02-06 Paul Smith <psmith@gnu.org>
|
||
|
||
Avoid interleaved $(info ) output
|
||
Since $(info ) function output is written using two system calls for
|
||
the message and the newline, it's possible for output from another
|
||
parallel make job to sneak in between them.
|
||
|
||
Reported by Paul Eggert <eggert@cs.ucla.edu>, who saw the report from
|
||
Lars Ingebrigtsen <https://bugs.gnu.org/53358>.
|
||
|
||
* src/function.c (func_error): Paul provided a fix but instead I
|
||
rewrote the entire function: it's not possible for it to be invoked
|
||
with anything other than exactly one argument so don't worry about
|
||
re-combining the arguments.
|
||
|
||
2022-02-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/implicit_search: [SV 48643] Cleanups.
|
||
|
||
* src/implicit.c (pattern_search): Use const ptrs when possible.
|
||
Change suggested by Joe Filion <joefilion4@gmail.com>
|
||
|
||
* src/job.c (load_too_high): Re-enable Linux /proc/loadavg checks.
|
||
Further experimentation shows that my previous thinking that there
|
||
was a problem using this was woefully mistaken. The value generated
|
||
by the kernel shows runn*ABLE* processes not runn*ING* processes.
|
||
* NEWS: Announce the change.
|
||
|
||
* doc/make.texi (Using One Shell): Correct example to use $<.
|
||
|
||
2022-01-17 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
* src/function.c (parse_textint): Handle ints without 0 properly.
|
||
* tests/scripts/functions/intcmp: Add tests for values without 0.
|
||
|
||
2022-01-17 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 61226] Revert changes to detect missing included files
|
||
The fix for SV 60595 introduced a backward-incompatibility: rules that
|
||
purported to rebuild included files, but didn't actually do so, were
|
||
treated as errors whereas before they were ignored. This breaks a
|
||
common idiom in makefiles where an empty recipe is created for an
|
||
included makefile so make doesn't complain if it doesn't exist.
|
||
|
||
Unfortunately this means make cannot diagnose some types of errors.
|
||
|
||
Extra tests supplied by Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
* doc/make.texi (Including Other Makefiles): Clarify this behavior.
|
||
* src/main.c (main): Don't run the new check-for-errors behavior.
|
||
* tests/scripts/features/reinvoke: Reset tests of the "old" behavior
|
||
and add new tests for this situation.
|
||
|
||
2022-01-17 Paul Smith <psmith@gnu.org>
|
||
|
||
Ensure that loaded functions increment the command count
|
||
Since we don't know what a loaded function (via Guile or load) may
|
||
do, increment the command count just in case.
|
||
|
||
* src/function.c (struct file_table_entry): New adds_command bool.
|
||
(FT_ENTRY): Initialize it to 0 for built-in functions.
|
||
(expand_builtin_function): If adds_command, increment the count.
|
||
(define_new_function): Set adds_command for loaded functions.
|
||
|
||
2022-01-17 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/read.c (tilde_expand): Put back '/' before returning.
|
||
Joe Filion <joefilion4@gmail.com> noted that the string is modified,
|
||
and Henrik Carlqvist <hc94@poolhem.se> noticed that it wasn't put
|
||
back in all cases.
|
||
|
||
2021-12-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/targets/INTERMEDIATE: Rewrite for new test method
|
||
|
||
2021-12-29 Paul Smith <psmith@gnu.org>
|
||
|
||
Do not force targets to be SECONDARY
|
||
In SV 43677 we forced targets to be secondary if we found an
|
||
intermediate file that was listed as a prerequisite of another
|
||
target. This overrides .INTERMEDIATE settings, so doesn't work.
|
||
Now that we have an is_explicit flag in targets, use that instead.
|
||
|
||
* src/implicit.c (pattern_search): Remove setting of secondary.
|
||
Preserve the value of the is_explicit flag when creating a new
|
||
file target, and consider it when setting the intermediate flag.
|
||
* tests/scripts/features/patternrules: Add a test w/out INTERMEDIATE
|
||
* tests/scripts/targets/INTERMEDIATE: Add a test with INTERMEDIATE
|
||
|
||
2021-12-29 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 48643] Preserve target-specific variables on intermediate files
|
||
Target-specific variables used to define the target as "ought to
|
||
exist" so they could never be intermediate. Now they can be, so
|
||
merge the target-specific variables from the intermediate target
|
||
so they're not lost.
|
||
|
||
* src/implicit.c (pattern_search): Use merge_variable_set_lists
|
||
to merge target-specific variables.
|
||
* tests/scripts/features/implicit_search: Add tests of target-
|
||
specific variable assignments and implicit rules.
|
||
|
||
2021-12-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* README.template: Clean up patch submission information
|
||
|
||
2021-12-19 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
* src/read.c (find_percent_cached): [SV 60798] Silence GCC11 warnings
|
||
|
||
[SV 60798] Silence bogus GCC10 and GCC11 warnings
|
||
* src/main.c (main): Use a separate variable to track final character.
|
||
* src/read.c (eval): Track the semicolon position not one beyond it.
|
||
* src/variable.c (do_variable_definition): Include a default switch
|
||
case to ease the work of the exhaustiveness prover.
|
||
|
||
2021-12-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Update documentation with instructions for patch submission
|
||
* README.template: Add notes on how to submit patches.
|
||
* README.git: Point to the README.
|
||
* doc/make.texi: Ditto.
|
||
|
||
2021-12-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Change HTTP URLs to use HTTPS instead
|
||
Also remove unnecessary tests/COPYING file.
|
||
|
||
* README.template: Change http: to https:
|
||
* README.git: Ditto
|
||
* doc/make.texi: Ditto
|
||
* doc/make.1: Ditto
|
||
* src/main.c: Ditto
|
||
* maintMakefile: Remove invalid URL
|
||
|
||
2021-12-19 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/makeint.h: Compute INTSTR_LENGTH based on size of intmax_t
|
||
Math suggested by Edward Welbourne <edward.welbourne@qt.io>
|
||
|
||
2021-12-19 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
Remove arbitrary limits on intcmp integers
|
||
We don't need to parse strings into C integer values to compare them.
|
||
|
||
* src/function.c (parse_textint): Find boundaries of a numeric string.
|
||
(func_intcmp): Use parse_textint() to compare integers textually.
|
||
* tests/scripts/functions/intcmp: Test with extra-large numbers.
|
||
|
||
2021-12-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Use a well-known error string for out-of-bound function arguments
|
||
* src/function.c (parse_numeric): Check for empty value and error.
|
||
If we find ERANGE just print our own error, not strerror.
|
||
(func_word): Use a generic "not good" error message.
|
||
(func_wordlist): Ditto
|
||
(func_intcmp): Ditto
|
||
* tests/run_make_tests.pl: Remove code to find strerror(ERANGE)
|
||
* tests/scrips/functions/intcmp: Update the error message.
|
||
* tests/scrips/functions/word: Ditto.
|
||
|
||
* doc/make.text (Wildcards): Document that glob results are sorted.
|
||
|
||
2021-12-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 61621] Don't use POSIX_SPAWN_RESETIDS with posix_spawn()
|
||
When make is invoked in a environment where the user namespace is
|
||
restricted, such as under unshare(1) (on GNU/Linux), it won't be able
|
||
to find its real UID so the effective UID can't be set to it and
|
||
posix_spawn() will fail with EINVAL.
|
||
|
||
It's not less safe to run recipe jobs using the same UID values that
|
||
make was invoked with, so don't worry about this flag.
|
||
|
||
* src/job.c (child_execute_job): Don't set POSIX_SPAWN_RESETIDS flag.
|
||
|
||
2021-12-05 Paul Smith <psmith@gnu.org>
|
||
|
||
* .gitignore: Ignore patch files.
|
||
|
||
2021-11-28 U2FsdGVkX1 <u2fsdgvkx1@gmail.com> (tiny change)
|
||
|
||
* src/commands.c (fatal_error_signal) [W32]: Use %lu for DWORD.
|
||
* src/function.c (windows32_openpipe) [W32]: Ditto.
|
||
|
||
2021-11-28 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Update with author details
|
||
|
||
Special-case Windows error results
|
||
* tests/scripts/features/errors: Match Windows-specific errors.
|
||
* tests/scripts/features/targetvars: Match Windows-specific errors.
|
||
* tests/scripts/misc/general4: Match Windows-specific errors.
|
||
|
||
2021-11-28 Paul Smith <psmith@gnu.org>
|
||
|
||
Convert word, wordlist, and intcmp functions to use long long
|
||
Modify make functions that parse integer values to use long long
|
||
values instead of long: on Windows long is the same as int (4 bytes)
|
||
and we don't want behavior to differ between different platforms.
|
||
|
||
* bootstrap.conf: Change strtol module to strtoll module.
|
||
* src/function.c (parse_numeric): Use strtoll() and return long long.
|
||
(func_word): Use long long.
|
||
(func_wordlist): Use long long. Verify second argument is >= 0.
|
||
(func_intcmp): Use long long.
|
||
* src/config.ami.template: Don't define HAVE_STRTOLL.
|
||
* src/config-vms.template: Define HAVE_STRTOLL.
|
||
* src/config.W32.template: Define HAVE_STRTOLL.
|
||
* tests/run_make_tests.pl: Set $ERR_out_of_range to the proper string.
|
||
* tests/scripts/functions/word: Rework to use the new style and avoid
|
||
TAB characters. Verify trailing whitespace is ignored. Add a test
|
||
for a negative second argument to wordlist. Add tests for max signed
|
||
integer values. Use $ERR_out_of_range for the error string.
|
||
* tests/scripts/functions/intcmp: Add tests for min and max signed
|
||
integer values. Use $ERR_out_of_range for the error string.
|
||
|
||
2021-11-28 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
Introduce $(intcmp ...) for numerical comparison
|
||
Numbers can come from $(words ...), automatic variables such as
|
||
$(MAKELEVEL), from environment variables, or from shell output such as
|
||
through $(shell expr ...). The $(intcmp ...) function allows
|
||
conditional evaluation controlled by numerical variables.
|
||
|
||
* NEWS: Announce this feature.
|
||
* doc/make.texi (Functions for Conditionals): Document 'intcmp'.
|
||
* src/function.c (func_intcmp): Create the 'intcmp' built-in function.
|
||
* tests/scripts/functions/intcmp: Test the 'intcmp' built-in function.
|
||
|
||
2021-11-28 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
Use strtol() instead of atoi()
|
||
strtol() is part of C89 and a fallback is provided by gnulib.
|
||
|
||
* src/function.c (func_word, func_wordlist): Change atoi to strtol.
|
||
* test/scripts/functions/word: Add out-of-range verification testing.
|
||
|
||
2021-11-27 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
* src/makeint.h: Removed unused atol declaration
|
||
|
||
2021-11-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/implicit.c (pattern_search): Fix text for easier translation.
|
||
|
||
[SV 48643] Update the implicit rule search docs
|
||
* NEWS: Announce the change.
|
||
* doc/make.texi (Implicit Rule Search): Update the definition of
|
||
"ought to exist" and add the extra step for compatibility mode.
|
||
|
||
2021-11-27 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 48643] Enhance "ought to exist" definition
|
||
The traditional definition of "ought to exist" in the user's manual can
|
||
lead to make choosing a poor series of chained implicit rules. Modify
|
||
that rule so that we first attempt to resolve implicit rules by
|
||
considering targets which are only (a) targets or (b) explicit
|
||
prerequisites of the current target.
|
||
|
||
For backward-compatibility, if we don't find a solution using that
|
||
algorithm use the previous definition where "ought to exist" means
|
||
"mentioned as a prerequisite of any target".
|
||
|
||
* src/implicit.c (pattern_search): An extra argument controls whether
|
||
to perform the backward-compatible rule search or not. If a prereq is
|
||
a target, or if it's a prerequisite of THIS target, then choose it.
|
||
If we get to the end and haven't found a match, but we have found a
|
||
potential compatibility rule, then retry with compat rules enabled.
|
||
If we're searching with compat rules enabled and we find a file
|
||
mentioned as a prerequisite of ANY target, then use it.
|
||
* tests/features/implicit_search: Provide a large suite of tests for
|
||
different steps of implicit rule search.
|
||
|
||
2021-11-27 Paul Smith <psmith@gnu.org>
|
||
|
||
tests: Enhance output to contain filename/line number info
|
||
* tests/scripts/options/dash-I: Use string comparison operator.
|
||
* tests/test_driver.pl (cmd2str): New method to convert a
|
||
command line to a string with proper quoting.
|
||
* tests/run_make_tests.pl (create_command): Call cmd2str() to format
|
||
the command. Add the filename/line number to the output.
|
||
|
||
2021-10-18 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 61042] Enhance logging of implicit rule search
|
||
Logging of implicit rule search gives limited information as to why a
|
||
given implicit rule was rejected, and if no implicit rule is found we
|
||
get the confusing "No rule to make target" result when the real issue
|
||
is that some prerequisite of some implicit rule could not be built.
|
||
|
||
Enhance logging around implicit rule search as follows:
|
||
1. The messages which refer to a rule print a description (the targets
|
||
and prerequisites) of the rule.
|
||
2. A new message tells when a rule is rejected, along with the reason.
|
||
3. The 'Looking for an implicit rule...' message is printed for every
|
||
prerequisite, not just the top-level target.
|
||
4. "Trying harder" message is printed, when intermediate prerequisites
|
||
are going to be searched.
|
||
5. The 'No rule found...' and 'Found implicit rule...' messages are
|
||
printed for every prerequisite, not just the top-level target.
|
||
6. "Ought to exist...", "Found..." or "Not found..." message is
|
||
printed for each prerequisite.
|
||
|
||
* src/rule.h (struct rule): Remember the definition of the rule.
|
||
* src/rule.c (get_rule_defn): Compute the definition of a rule.
|
||
(install_pattern_rule): Initialize the definition to empty.
|
||
(create_pattern_rule): Ditto.
|
||
(freerule): Free the definition.
|
||
(print_rule): Use the definition when printing rules.
|
||
* src/remake.c (update_file_1): Push debug output down into
|
||
try_implicit_rule().
|
||
* src/implicit.c (try_implicit_rule): Add debugging
|
||
(pattern_search): Show the rule definition in various debug output.
|
||
Add new debug messages for implicit rule search.
|
||
|
||
Additional changes by Paul Smith <psmith@gnu.org>:
|
||
|
||
Since we usually don't need the rule definition, defer computing it
|
||
until we do.
|
||
|
||
* bootstrap.conf: Include the mempcpy Gnulib module.
|
||
* src/makeint.h (mempcpy): Declare mempcpy if not available.
|
||
* src/misc.c (mempcpy): Define mempcpy if not available.
|
||
* src/config.h-vms.template: Don't set HAVE_MEMPCPY.
|
||
* src/config.h.W32.template: Ditto.
|
||
* src/rule.h (get_rule_defn): Return the definition of a rule.
|
||
* src/rule.c (get_rule_defn): If we don't have a definition compute
|
||
it; either way return it.
|
||
* src/implicit.c (pattern_search): Rework the handling of explicit
|
||
prerequisites to pattern rules to be more clear. There is no change
|
||
in behavior.
|
||
|
||
2021-10-17 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* doc/make.texi (Special Targets): [SV 61122] Add .SECONDARY example
|
||
|
||
2021-10-17 Paul Smith <psmith@gnu.org>
|
||
|
||
* README.git: Update C version prerequisite
|
||
|
||
2021-09-20 Paul Smith <psmith@gnu.org>
|
||
|
||
Add support for the POSIX :::= assignment operator.
|
||
POSIX Issue 8 will require a new assignment operator, :::=.
|
||
This operator behaves similarly to the BSD make := operator: the
|
||
right-hand side is expanded immediately, but then the value is
|
||
re-escaped (all '$' are converted to '$$') and the resulting variable
|
||
is considered a recursive variable: the value is re-expanded on use.
|
||
|
||
* src/variable.h (enum variable_flavor): Add f_expand flavor.
|
||
* src/variable.c (do_variable_definition): When defining f_expand,
|
||
post-process the result to re-escape '$' characters.
|
||
Remove default: to the compiler warns about un-handled enum values.
|
||
Set recursive values for both f_recursive and f_expand.
|
||
(parse_variable_definition): Rewrite this method.
|
||
The previous version was annoying to extend to ':::='.
|
||
(print_variable): Remove default: so the compiler warns us about
|
||
un-handled enum values.
|
||
* src/function.c (func_origin): Remove default: so the compiler warns
|
||
us about un-handled enum values.
|
||
* doc/make.texi: Add documentation for :::=.
|
||
* tests/scripts/variables/define: Add a test for define :::=.
|
||
* tests/scripts/variables/flavors: Add tests for :::=.
|
||
* tests/scripts/variables/negative: Add tests for :::=.
|
||
|
||
2021-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
Clean up more Windows warnings.
|
||
* src/config.h.W32.template: Re-enable warnings that we don't violate.
|
||
Add a new disabled warning: 4130 (logical operation on address of
|
||
string constant).
|
||
* src/w32/compat/posixfcn.c: Make makeint.h the first included header.
|
||
* src/w32/subproc/sub_proc.c: Ditto. It includes config.h already.
|
||
|
||
2021-09-07 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 60435] Ensure intermediate grouped files are removed
|
||
If multiple intermediate files are built together be sure all of them
|
||
are removed after make is finished. Continue to ensure that targets
|
||
that exist before make starts are not removed even if they appear to be
|
||
intermediate.
|
||
|
||
Add a number of tests to pattern rules to verify this behavior.
|
||
|
||
* src/filedef.h (struct file): Add a new is_explicit bitfield.
|
||
* src/file.c (rehash_file): Merge the is_explicit bit.
|
||
(enter_prereqs): Set is_explicit if the file is explicitly mentioned.
|
||
* src/implicit.c (pattern_search): Set intermediate on the file if it's
|
||
not explicit.
|
||
(record_files): Set is_explicit if a file is mentioned as a target.
|
||
* src/remake.c (update_file_1): Set secondary on files that already
|
||
exist so they won't be removed.
|
||
* tests/scripts/features/double_colon: Add a test for double-colon
|
||
pattern rules.
|
||
* tests/scripts/features/patternrules: Update KGO for tests where more
|
||
files are removed.
|
||
Add new tests to verify handling removal of intermediate files in the
|
||
context of grouped pattern targets.
|
||
|
||
2021-09-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/default.c (default_variables): Use CPP in PREPROCESS.S.
|
||
|
||
2021-09-06 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* src/main.c (decode_debug_flags): [SV 607777] Preserve -d options
|
||
* tests/scripts/options/dash-d: Test that -d --trace keeps -d.
|
||
|
||
2021-09-06 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 57778] Don't ignore included makefiles that can't be read
|
||
If we find an included makefile but it's not readable, stop
|
||
immediately with an error rather than continuing to look in other
|
||
directories.
|
||
|
||
* src/read.c (eval_makefile): Only keep searching if the fopen error
|
||
is ENOENT, else stop and fail.
|
||
* tests/scripts/features/include: Add tests to verify this behavior.
|
||
|
||
2021-09-06 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 60795] Don't remake phony included makefiles and show errors
|
||
Change the handling of included makefiles which are phony targets to
|
||
be similar to double-colon rules with no prerequisites: simply don't
|
||
build them at all during the remake a makefile phase.
|
||
|
||
Ensure that any included makefile which is needed but not built
|
||
results in an error.
|
||
|
||
Update the documentation to make this clear.
|
||
Add tests to verify this behavior.
|
||
|
||
* doc/make.texi (Remaking Makefiles): Clarify double-colon exception.
|
||
Document that phony targets are handled the same way.
|
||
(Phony Targets): Ditto.
|
||
* src/main.c (main): Check for phony targets when skipping goals.
|
||
Rather than throwing out skipped but failed goals keep them
|
||
separately then report them as errors.
|
||
* src/read.c (eval): Set the file location on included makefiles even
|
||
when there's no error.
|
||
* tests/scripts/features/include: Add tests for handling included
|
||
makefiles with both phony and double-colon rules to rebuild them.
|
||
|
||
2021-09-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Environment): [SV 60841] Clarify variable exporting.
|
||
|
||
* doc/make.texi (Chained Rules): [SV 60904] Clarify intermediate files.
|
||
|
||
2021-09-06 Paul Smith <psmith@gnu.org>
|
||
|
||
Remove UBSAN issues discovered via fuzzing tests.
|
||
The arithmetic conversions in C say that if a binary operator has an
|
||
unsigned and signed type as operands and the unsigned type has a greater
|
||
rank then the signed value is converted to unsigned. This is bad if the
|
||
signed value is negative.
|
||
|
||
There are a few places in the code which have this situation; convert
|
||
the signed value to positive and add instead of subtracting.
|
||
|
||
Reported by He Jingxuan <jingxuan.he@inf.ethz.ch>
|
||
|
||
* src/read.c (find_map_unquote): Use a positive int in memmove().
|
||
(find_char_unquote): Ditto.
|
||
(find_percent_cached): Ditto.
|
||
|
||
2021-09-05 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Prerequisite Types): [SV 61069] Mention PHONY prereqs
|
||
|
||
* doc/make.1: Clean up man page text.
|
||
|
||
* README.git: Add a section on ways to test.
|
||
|
||
* src/main.c (decode_switches): Fix memory leak.
|
||
|
||
Clean up a few Windows build warnings (not all!)
|
||
* build_w32.bat: Quote uses of %VSWHERE% so it can contain spaces
|
||
* src/hash.c (hash_init): Avoid use of an undefined struct.
|
||
(hash_rehash): Ditto.
|
||
* src/vpath.c (construct_vpath_list): Cast explicitly to void*.
|
||
|
||
2021-09-05 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 45211] Parse MAKEFLAGS immediately when it's reset
|
||
When MAKEFLAGS is set in a makefile, reparse it immediately rather
|
||
than waiting until after all makefiles have been read and parsed.
|
||
This change doesn't actually fix the SV bug referenced because, even
|
||
though we do reparse MAKEFLAGS, we don't handle the -r or -R options
|
||
immediately. Doing this will require more effort.
|
||
|
||
* NEWS: Announce the change.
|
||
* src/makeint.h: Publish reset_switches() and decode_env_switches()
|
||
from main.c
|
||
* src/main.c (main): Don't call construct_include_path(); it will be
|
||
invoked decode_switches().
|
||
Preserve the old values of builtin_rules, builtin_variables, and
|
||
job_slots before we read makefiles since they can be changed now.
|
||
(reset_switches): Publish (remove static). Set the initial value of
|
||
the stringlist list to NULL.
|
||
(decode_switches): Call construct_include_path() after decoding.
|
||
(decode_env_switches): Publish (remove static).
|
||
(define_makeflags): Set the MAKEFLAGS variable for special handling.
|
||
* src/read.c (eval_makefile): Check for empty include_directories.
|
||
(construct_include_path): Clear any old value of .INCLUDE_DIRS before
|
||
appending new values. Free the previous include_directories.
|
||
* src/variable.c (lookup_special_var): When MAKEFLAGS is set, first
|
||
reset the switches then re-parse the variable.
|
||
* tests/run_make_tests.pl: Memo-ize some default variable values.
|
||
* tests/scripts/options/dash-r: Create tests for setting -r and -R.
|
||
* tests/scripts/variables/MAKEFLAGS: Test that resetting -I from
|
||
within the makefile takes effect immediately.
|
||
|
||
2021-09-05 Paul Smith <psmith@gnu.org>
|
||
|
||
* make-gdb.py: Add pretty-printers and clean up.
|
||
Create a pretty-printer for next-pointer lists.
|
||
Create a pretty-printer for stringlists.
|
||
Change showargv from a function to a command (easier to use).
|
||
|
||
Clean up some Python PEP violations. Add support for testing null
|
||
pointers and caching gdb.Types.
|
||
|
||
2021-09-03 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 60595] Restart whenever any makefile is rebuilt
|
||
Previously if an included makefile was rebuilt as a prerequisite of
|
||
another included makefile which didn't need to be rebuilt, make would
|
||
not realize that it needed to re-exec itself.
|
||
|
||
Ensure that if any included makefile target is rebuilt we re-exec.
|
||
Also ensure that if an included makefile is not readable, and our rule
|
||
for rebuilding it doesn't actually change it, we will still fail.
|
||
|
||
* src/remake.c (update_goal_chain): If a goal's update was successful
|
||
then check its status, even if no actual commands were run because it
|
||
was already up to date.
|
||
(show_goal_error): Remove superfluous cast.
|
||
* src/main.c (main): If the makefile remake did nothing, check that we
|
||
were able to successfully include all the makefiles we care about; if
|
||
not fail. When generating error messages about included makefiles be
|
||
sure to show the filename/linenumber information.
|
||
* test/scripts/features/reinvoke: Add tests for this behavior.
|
||
* test/scripts/options/dash-k: Update error messages.
|
||
|
||
2021-09-03 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 60412] Allow -I- to throw out the current directory path
|
||
Accept a "-" directory value to the -I option to clear the set of
|
||
directories to be searched up to that point, including the default
|
||
directories.
|
||
|
||
* NEWS: Announce the change.
|
||
* doc/make.texi (Summary of Options): Add documentation.
|
||
* src/read.c (construct_include_path): Check for '-' and if found,
|
||
clear the list of directories to be searched.
|
||
* tests/scripts/options/dash-I: Add tests for -I-.
|
||
* tests/scripts/variables/INCLUDE_DIRS: Add tests for -I-.
|
||
|
||
2021-07-25 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 60699] Avoid calling strlen() repeatedly in a loop
|
||
* src/variable.c (lookup_pattern_var): Accept target length parameter.
|
||
(initialize_file_variables): Pass computed target length to lookup.
|
||
|
||
2021-07-25 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Add a few missing attributions
|
||
* AUTHORS: Add some missing attributions
|
||
|
||
2021-07-25 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 60297] Add .NOTINTERMEDIATE special target
|
||
Support a new special target, .NOTINTERMEDIATE. Any file or pattern
|
||
prerequisite of this target will never be considered intermediate.
|
||
This differs from .SECONDARY in that .SECONDARY files won't be deleted
|
||
but they will still not be built if they are missing.
|
||
|
||
.NOTINTERMEDIATE files are treated the same way as a target which is
|
||
explicitly mentioned in the makefile. This is mostly useful with
|
||
patterns; obviously mentioning a target explicitly here is enough in
|
||
and of itself to make something not intermediate.
|
||
|
||
Some adjustments made by psmith@gnu.org
|
||
|
||
* NEWS: Announce the new feature.
|
||
* doc/make.texi (Special Targets): Document .NOTINTERMEDIATE.
|
||
(Chained Rules): Describe how to use .NOTINTERMEDIATE.
|
||
* src/main.c (main): Add "notintermediate" to the .FEATURES variable.
|
||
* src/filedef.h (struct file): Add "notintermediate" flag.
|
||
* src/file.c (no_intermediates): Mark global .NOTINTERMEDIATE.
|
||
(snap_file): Support .NOTINTERMEDIATE special target. Throw an error
|
||
if the same target is marked both .NOTINTERMEDIATE and .SECONDARY or
|
||
.INTERMEDIATE.
|
||
(rehash_file): Merge intermediate, notintermediate, secondary flags.
|
||
(remove_intermediates): Check notintermediate flag before removing.
|
||
(print_file):
|
||
* src/implicit.c (pattern_search): Set notintermediate based on the
|
||
pattern.
|
||
* tests/scripts/targets/NOTINTERMEDIATE: Add a new test suite.
|
||
|
||
2021-05-30 Paul Smith <psmith@gnu.org>
|
||
|
||
* make.texi (Reading Makefiles): != creates recursive variables.
|
||
Reported by Ronald Hoogenboom <RHoogenboom@irdeto.com>.
|
||
|
||
2021-05-30 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 60659] Set $$< properly in second expansion
|
||
Set the $$< automatic variable as best we can during secondary
|
||
expansion of prerequisites.
|
||
|
||
* src/commands.c (set_file_variables): Don't break without setting
|
||
'less' if secondary expansion is enabled.
|
||
* tests/scripts/features/se_explicit: Test secondary expansion results.
|
||
* tests/scripts/features/se_implicit: Test secondary expansion results.
|
||
|
||
2021-05-30 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 58341] Add non-trivial options to $(MAKEFLAGS)
|
||
Previously only trivial (single-letter) options were available in
|
||
$(MAKEFLAGS) when it is examined from inside a makefile (the full
|
||
value was set before expanding recipes).
|
||
|
||
Ensure that all options (but, not command line variable overrides!)
|
||
are visible in the $(MAKEFLAGS) variable. In order to do this
|
||
reset the default values of options, particularly options which are
|
||
lists, before re-reading MAKEFLAGS after makefiles have been read.
|
||
Otherwise we'll get duplicate values for options such as -I.
|
||
|
||
Unfortunately there are complications here as well: sometimes (for
|
||
jobserver options in particular) we modify the values of these
|
||
options while running: we must not reset these modifications.
|
||
|
||
* NEWS: Announce this change
|
||
* src/main.c (main): Call new reset_switches() before re-parsing
|
||
MAKEFLAGS.
|
||
(reset_switches): Reset the value of non-special options to their
|
||
defaults.
|
||
(define_makeflags): Add non-special options into MAKEFLAGS even
|
||
if 'all' is not set.
|
||
|
||
2021-05-30 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 60378] Don't add duplicate default search directories
|
||
Depending on how make was configured it may add duplicate
|
||
directories in the default include search path: avoid this.
|
||
|
||
(Tweaked by psmith@gnu.org)
|
||
|
||
* configure.ac: Set AM variable KNOWN_PREFIX if --prefix is known
|
||
* Makefile.am: Only set INCLUDEDIR if prefix is not known
|
||
* read.c [default_include_directories]: Only add INCLUDEDIR if set
|
||
|
||
2021-05-30 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* tests/scripts/targets/INTERMEDIATE: [SV 60188] Add one more test
|
||
|
||
2021-05-29 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 58656] Fix mtime for large files on MS-Windows
|
||
In MSVC builds, 'stat' fails when called on files larger than
|
||
2GB. Call '_stat64' instead to work around this.
|
||
|
||
* src/remake.c (STAT): Define to '_stat64' for MSVC builds.
|
||
(name_mtime) [WINDOWS32]: Use STAT instead of 'stat'.
|
||
Suggested by Makoto Kato <m_kato@ga2.so-net.ne.jp>.
|
||
|
||
2021-03-28 Paul Smith <psmith@gnu.org>
|
||
|
||
Fix build and test issues on Windows
|
||
* src/dep.h (DEP): Remove extraneous semicolon.
|
||
* src/dir.c (find_directory) [W32]: Replace removed variable.
|
||
* tests/scripts/features/include: Allow the extra default makefile
|
||
searched for on Windows.
|
||
* tests/scripts/functions/file: Use $(info ...) to avoid "command
|
||
too long" errors on Windows.
|
||
|
||
2021-03-28 Tobias Stoeckmann <tobias@stoeckmann.org> (tiny change)
|
||
|
||
* src/remake.c (name_mtime): Reserve space for nul in readlink result
|
||
|
||
2021-03-25 Cao jin <caoj.fnst@cn.fujitsu.com> (tiny change)
|
||
|
||
* doc/make.texi (Call Function): Apply consistent formatting
|
||
|
||
2021-03-25 Pete Dietl <petedietl@gmail.com> (tiny change)
|
||
|
||
* src/job.c (child_execute_job): Update gnulib find_in_given_path()
|
||
|
||
2021-03-25 Mike Frysinger <vapier@gentoo.org> (tiny change)
|
||
|
||
* doc/make.texi (Automatic Variables): Relocate the $? example
|
||
|
||
2021-03-15 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 58497] Ensure $(file <) newline removal succeeds
|
||
Keep a count of bytes read rather than comparing pointers since the
|
||
variable_buffer might get reallocated.
|
||
|
||
Bug and patch by Ken Tossell <ken@tossell.net>
|
||
Regression tests by Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
Tweaked by Paul Smith <psmith@gnu.org>
|
||
|
||
* src/function.c (func_file): Use bytes read rather than a pointer.
|
||
* tests/scripts/functions/file: Provide various tests for reading
|
||
empty files, files with/without newlines, and large files.
|
||
|
||
2021-03-15 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 60188] Explicit prereqs cannot be intermediate files
|
||
If a prereq of a pattern is an explicit target, it should not be
|
||
considered an intermediate file.
|
||
|
||
(Minor tweaks by Paul Smith <psmith@gnu.org>)
|
||
|
||
* src/dep.h (struct nameseq): Add is_explicit flag.
|
||
* src/implicit.c (struct patdeps): Ditto.
|
||
(pattern_search): Set the is_explicit flag appropriately for each
|
||
prerequisite, based on whether it contained a pattern or not.
|
||
Update the help output to note implicit vs. explicit prereqs.
|
||
* tests/scripts/features/double_colon: Add tests.
|
||
* tests/scripts/features/grouped_targets: Ditto.
|
||
* tests/scripts/features/patternrules: Ditto.
|
||
* tests/scripts/features/se_implicit: Ditto.
|
||
* tests/scripts/features/statipattrules: Ditto.
|
||
|
||
2021-03-15 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/exec: Small cleanup
|
||
|
||
2021-03-15 Paul Smith <psmith@gnu.org>
|
||
|
||
Ensure variable_buffer is always set.
|
||
Initialize the global variable_buffer in main() so that it is never
|
||
a null pointer. Then invoking variable_expand("") is never needed:
|
||
simply use the variable_buffer pointer when we want to restart the
|
||
variable buffer. The main point of this simplification is not to
|
||
keep a separate pointer to the beginning of the buffer: this is
|
||
dangerous because the buffer may be re-allocated. Instead always
|
||
use the variable_buffer pointer itself.
|
||
|
||
* src/variable.h (initialize_variable_output): Publish.
|
||
* src/expand.c (initialize_variable_output): Remove static.
|
||
* src/main.c (main): Initialize variable_buffer.
|
||
* src/file.c (enter_prereqs): Don't call variable_expand("") and
|
||
don't save a separate buffer pointer than might be outdated.
|
||
(expand_deps): Ditto.
|
||
* src/read.c (record_files): Ditto.
|
||
* src/remake.c (library_search): Ditto.
|
||
|
||
2021-03-15 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 59881] Handle vertical TAB consistently
|
||
While parsing makefiles get_next_mword() was treating VTAB as a word
|
||
character rather than a word separator. However, when using
|
||
find_next_token(), for example in patsubst_expand_pat(), we treated
|
||
VTAB as a word separator causing multiple words to appear where we
|
||
didn't expect them.
|
||
|
||
* src/makeint.h (END_OF_TOKEN): Change from a loop to a boolean check.
|
||
* src/misc.c (end_of_token): Move the loop here.
|
||
* src/read.c (get_next_mword): Skip whitespace, not just blank, to
|
||
find the start of the word and use END_OF_TOKEN() to decide when the
|
||
current word is finished.
|
||
|
||
2021-03-14 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 59870] define/undefine prerequisites are not target-specific vars
|
||
* src/read.c (parse_var_assignment): If called in a target-specific
|
||
variable context don't allow define/undefine as variable assignments.
|
||
* test/scripts/variables/define: Add a test.
|
||
* test/scripts/variables/undefine: Add a test.
|
||
|
||
* maintMakefile: Don't make .check-git-HEAD .PHONY
|
||
|
||
2021-03-07 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
More correctly describe the scope of variables
|
||
* NEWS: Use "local" instead of the incorrect "lexically-scoped".
|
||
* doc/make.texi: Refer to let/foreach variables as local variables.
|
||
|
||
2021-03-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.text: Clarify that patsubst doesn't touch unmatched words
|
||
|
||
* .dir-locals.el: Update for newer LSP config
|
||
|
||
* file.c (remove_intermediates): Restart "rm ..." on error
|
||
|
||
2020-12-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (How Patterns Match): [SV 58639] Fix chaining info.
|
||
|
||
2020-12-06 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
Create $(let ...) providing lexically scoped variables
|
||
Add a new function $(let ...) which allows lexically scoped variables.
|
||
|
||
* NEWS: Add information on this feature.
|
||
* doc/make.texi (Let Function): Document the 'let' function.
|
||
* src/function.c (func_let): Create the 'let' built-in function.
|
||
* tests/scripts/functions/let: Test the 'let' built-in function.
|
||
|
||
2020-12-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Phony Targets): [SV 58961] Clarify pattern handling
|
||
|
||
* doc/make.texi (Synchronized Terminal Output): [SV 58960] Fix link
|
||
|
||
2020-12-05 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 59169] Add --debug=why and --debug=print options
|
||
Add debug options to print recipes even if they would otherwise be
|
||
silent, and to print the reason that a target was considered out of
|
||
date.
|
||
|
||
Modify --trace to simply be a shorthand for --debug=print,why.
|
||
|
||
* NEWS: Announce changes.
|
||
* doc/make.texi (Summary of Options): Document the new options.
|
||
* doc/make.1: Ditto.
|
||
* src/debug.h: Add new flags DB_PRINT and DB_WHY.
|
||
* src/makeint.h: Remove the trace_flag variable.
|
||
* src/job.c (start_job_command): Check debug flags not trace_flag.
|
||
(new_job): Ditto.
|
||
* src/main.c (trace_flag): Make a static variable for switches.
|
||
(decode_debug_flags): Set DB_PRINT and DB_WHY if trace_flag is set.
|
||
* tests/scripts/variables/GNUMAKEFLAGS: Update known-good messages.
|
||
* tests/scripts/variables/MAKEFLAGS: Ditto.
|
||
|
||
2020-12-05 Paul Smith <psmith@gnu.org>
|
||
|
||
* configure.ac: [SV 58836] Copy build.sh to the build directory
|
||
|
||
2020-12-05 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 57676] Support included files being built after failing
|
||
If a -include file does not exist, then some subsequent operation
|
||
creates it, then allow it to be successfully included.
|
||
|
||
* src/read.c (eval_makefile): If our last mtime was NONEXISTENT then
|
||
reset it to 0 so we'll check it again.
|
||
* tests/scripts/features/include: Add a test for this behavior.
|
||
|
||
2020-12-02 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/makeint.h (free_alloca): Check for builtin alloca
|
||
|
||
* src/main.c (main): [SV 59601] Check for malformed env. variables
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* maintMakefile: [SV 58794] Check for file existence in the release
|
||
|
||
* Makefile.am (HAVE_GUILE): Only use Guile options if HAVE_GUILE.
|
||
|
||
* tests/scripts/features/vpathgpath: Avoid duplicate function name.
|
||
|
||
Resolve unused-result warnings for alloca(0)
|
||
* src/makeint.h (free_alloca): New macro to defeat warn_unused_result.
|
||
* src/read.c (eval_makefile): Call it.
|
||
(eval_buffer): Ditto.
|
||
* src/remake.c (update_file): Ditto.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
Avoid some valgrind warnings
|
||
Using sscanf() to parse archive header values (struct ar_hdr) can lead
|
||
to valgrind warnings which are probably bogus but are annoying.
|
||
To be safer, create a local method to convert the ASCII integer
|
||
strings into integers.
|
||
|
||
* src/arscan.c (parse_int): Turn integer strings into integers.
|
||
(ar_scan): Initialize struct ar_hdr memory.
|
||
Call parse_int() rather than sscanf/atol.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 41273] Allow the directory cache to be invalidated
|
||
Each time we invoke a command it's possible that it will change the
|
||
filesystem in ways that were not described by the target. If that
|
||
happens but we have cached previous directory contents then we may
|
||
make decisions or report results based on obsolete information.
|
||
|
||
Keep a count of how many commands we've invoked, and remember the
|
||
current command count every time we load the contents of a directory.
|
||
If we request the directory and the current command count has changed
|
||
we know the cache is outdated so reload from scratch.
|
||
|
||
* NEWS: Announce the change.
|
||
* src/makeint.h (command_count): Create a global counter.
|
||
* src/main.c (command_count): Ditto.
|
||
* src/job.c (reap_children): Increment the counter on job completion.
|
||
* src/function.c (func_file): Increment if we write a file.
|
||
* src/dir.c (clear_directory_contents): Clear the current contents of
|
||
a cached directory.
|
||
(struct directory_contents): Remember the counter value.
|
||
(struct directory): Remember the counter value for non-existing dirs.
|
||
(find_directory): If we have a cached directory and the count hasn't
|
||
changed then return it. Else, clear the previous contents and re-read
|
||
from scratch.
|
||
* tests/scripts/features/dircache: Add tests of the directory cache.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
Support "unexport" in target-specific variables.
|
||
Rewrite the environment variable algorithm to correctly inherit
|
||
export settings from parent variable sets. The new algorithm
|
||
for computing the table of environment variables is:
|
||
|
||
- Start with the most local variable set and proceed to global.
|
||
- If the variable already exists in the table and we don't know
|
||
its export status, update it with the current variable's status.
|
||
- If the variable is not in the table and it's not global, add it
|
||
regardless of its status so if it's unexported we remember that.
|
||
- If the variable is not in the table and is global, check its
|
||
export status and don't add it if we won't export it.
|
||
|
||
Then when generating the environment variables, check the export
|
||
status of each variable in case it was a target-specific variable
|
||
and we have determined it should not be exported.
|
||
|
||
Rework SHELL handling to check at the end whether we added it or
|
||
not and if we didn't, add the value from the environment.
|
||
|
||
* NEWS: Announce support for target-specific "unexport"."
|
||
* doc/make.texi (Target-specific): Document the support.
|
||
* src/variable.h (enum variable_export): Make into a global type.
|
||
* src/read.c (struct vmodifiers): Use enum variable_export rather
|
||
than individual booleans.
|
||
(parse_var_assignment): Parse the "unexport" keyword.
|
||
(eval): Remember the vmodifier value in the variable.
|
||
(record_target_var): Ditto.
|
||
* src/variable.c (should_export): Check if the variable should be
|
||
exported.
|
||
(target_environment): Implement the above algorithm.
|
||
* tests/scripts/features/export: Test export/unexport with variable
|
||
assignments on the same line.
|
||
* tests/scripts/features/targetvars: Add a comprehensive suite of
|
||
tests for different types of target-specific export / unexport.
|
||
* tests/scripts/variables/SHELL: Update the comment.
|
||
|
||
2020-11-29 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
[SV 59230] Preserve export settings for target-specific vars
|
||
* src/read.c (record_target_var): Don't overwrite pre-existing export
|
||
flag unless we're changing it.
|
||
* tests/scripts/features/targetvars: Add a test.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 59230] Ensure environment variables are exportable
|
||
When checking for invalid environment variable names we searched the
|
||
entire name string instead of just the first LENGTH chars; this could
|
||
cause us to incorrectly decide the variable was not exportable.
|
||
|
||
Dmitry Goncharov <dgoncharov@users.sf.net> found this bug and
|
||
provided a test case and sample fix: I used the test but chose a
|
||
slightly different fix.
|
||
|
||
* src/variable.c (define_variable_in_set): check the variable name
|
||
not the input string.
|
||
* tests/scripts/features/targetvars: Ensure environment variable
|
||
values are exported.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/default.c (default_variables) [AIX]: [SV 59096] Fix ARFLAGS
|
||
Reported by Dmitry Goncharov <dgoncharov@users.sf.net>, with a patch
|
||
changing the pattern rule for building archives. I decided to
|
||
change the default value of ARFLAGS on AIX instead.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 35711] Check for special targets earlier
|
||
GNU make must recognize some special targets as they are defined.
|
||
Because of the way targets are defined, we were not recognizing these
|
||
special targets until we were handling the NEXT statement. However
|
||
that's too late for some special targets such as .POSIX etc. which can
|
||
change the behavior of make during parsing.
|
||
|
||
Check for special targets earlier, as soon as we've finished parsing
|
||
the target introduction line (before we've even parsed the recipe).
|
||
|
||
* NEWS: Mention the change.
|
||
* src/read.c (check_specials): New function to look for special
|
||
targets. Move checks from eval() and record_files() to this new
|
||
function.
|
||
(eval): Call check_specials() after we've completed parsing the target
|
||
introduction line. Move default goal detection to check_specials().
|
||
(record_files): Move handling of .POSIX, .SECONDEXPANSION, and
|
||
.ONESHELL to check_specials().
|
||
* tests/scripts/misc/bs-nl: Remove workaround for late .POSIX issue.
|
||
* tests/scripts/targets/POSIX: Add a comment.
|
||
|
||
2020-11-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* .ccls: Disable clang compare against static string warning
|
||
|
||
2020-11-13 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 59093] Rewrite filter/filter-out to avoid large stack usage
|
||
* src/function.c (func_filter_filterout): Allocate arrays to hold
|
||
pattern and word information rather than creating linked lists on
|
||
the stack.
|
||
* tests/scripts/functions/filter-out: Test large filters.
|
||
|
||
2020-10-28 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Include): Update behavior for missing included files
|
||
|
||
2020-07-19 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: [SV 58435] Document minimum C compiler version requirement
|
||
* configure.ac: Require c99 via AC_PROG_CC_C99
|
||
|
||
2020-07-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 58735] Define the order that makefiles are rebuilt.
|
||
Ensure that makefiles are rebuilt in the order in which make first
|
||
considered them, and document this behavior in the manual.
|
||
|
||
* NEWS: Add a note about the new behavior
|
||
* doc/make.text (How make Processes a Makefile): Document it.
|
||
* main.c (main): Inverse the list of makefile goals.
|
||
* read.c (read_all_makefiles): Add default makefiles to the list at
|
||
the front in reverse order, the same way other makefiles are added.
|
||
* tests/scripts/features/include: Add tests to verify rebuild order.
|
||
|
||
2020-07-10 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/makeint.h: [ARM] [SV 58347] Don't assume ARM is not POSIX
|
||
|
||
* src/job.c (unblock_sigs): [!POSIX] [SV 58743] Fix syntax errors
|
||
|
||
2020-05-14 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Fix some tortured grammar.
|
||
|
||
2020-05-03 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 57930] Cast char to unsigned char to call ctype functions
|
||
This cast was already done almost everywhere: fix some stragglers.
|
||
|
||
* src/load.c (load_file): Cast char to unsigned char.
|
||
* src/misc.c (strcasecmp, strncasecmp): [!POSIX] Ditto.
|
||
* src/dir.c (vms_hash): [VMS] Ditto.
|
||
* src/vms_progname.c (set_program_name): [VMS] Ditto.
|
||
* src/vms_jobs.c (posix_parse_dq): [VMS] Ditto.
|
||
(posix_parse_dollar): [VMS] Ditto.
|
||
(build_vms_cmd): [VMS] Ditto.
|
||
(child_execute_job): [VMS] Ditto.
|
||
|
||
2020-05-03 Paul Smith <psmith@gnu.org>
|
||
|
||
Convert [ ... ] to test ... in scripting.
|
||
The "[" link may be missing during OS boostrapping.
|
||
|
||
* build.sh: Convert "[ ... ]" to "test ..."
|
||
* maintMakefile: Ditto.
|
||
* scripts/copyright-update: Ditto
|
||
* tests/scripts/features/reinvoke: Ditto
|
||
* tests/scripts/features/targetvars: Ditto
|
||
|
||
2020-05-03 Paul Smith <psmith@gnu.org>
|
||
|
||
* maintMakefile: Clean up output
|
||
|
||
* mainMakefile: Check that INSTALL exists in the dist file
|
||
For some reason the INSTALL file symlinked to gnulib was omitted from
|
||
the 4.3 release package: I can't reproduce this but check for it.
|
||
|
||
2020-05-02 Kevin Buettner <kevinb@redhat.com> (tiny change)
|
||
|
||
[SV 58232] Disable inheritance of jobserver FDs for recursive make
|
||
A parent make will invoke a sub-make with close-on-exec disabled for
|
||
the jobserver pipe FDs. Force close-on-exec to be to be enabled in
|
||
the sub-make so the pipe is not always passed to child jobs.
|
||
|
||
I have a test case which, when invoked with a suitable -j switch,
|
||
will hang if the recipe inherits the jobserver pipe. This test case
|
||
was inspired by a real world case in which testing GDB on Fedora
|
||
would hang due to some poorly written test GDB cases having been
|
||
passed the jobserver file descriptors.
|
||
|
||
* src/posixos.c (jobserver_parse_auth): Call fd_noinherit() for
|
||
jobserver pipe descriptors.
|
||
|
||
2020-04-01 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 57674] Use the system default PATH if $PATH is not set
|
||
When using execvp() if $PATH is not present in the environment
|
||
it will automatically search the system default PATH string. Emulate
|
||
this by passing the system default PATH to find_in_given_path() if
|
||
we don't find PATH in the environment.
|
||
|
||
* src/job.c (child_execute_job): Use confstr(_CS_PATH) if PATH is not
|
||
found.
|
||
|
||
2020-04-01 Paul Smith <psmith@gnu.org>
|
||
|
||
tests: Simplify customization of %ENV
|
||
Rather than having an %extraENV that is added to the default %ENV
|
||
and resetting %ENV _before_ each test, allow the test setup to
|
||
modify %ENV directly as needed then reset %ENV _after_ each test.
|
||
|
||
* tests/test_driver.pl: Remove unused %extraENV.
|
||
(resetENV): Don't add in %extraENV.
|
||
(_run_command): Reset after we run the command rather than before.
|
||
* tests/scripts/features/export: Convert %extraENV to %ENV
|
||
* tests/scripts/features/jobserver: Ditto
|
||
* tests/scripts/features/parallelism: Ditto
|
||
* tests/scripts/features/targetvars: Ditto
|
||
* tests/scripts/functions/eval: Ditto
|
||
* tests/scripts/functions/foreach: Ditto
|
||
* tests/scripts/functions/origin: Ditto
|
||
* tests/scripts/misc/general4: Ditto
|
||
* tests/scripts/options/dash-e: Ditto
|
||
* tests/scripts/targets/POSIX: Ditto
|
||
* tests/scripts/variables/GNUMAKEFLAGS: Ditto
|
||
* tests/scripts/variables/SHELL: Ditto
|
||
|
||
2020-03-31 Jens Rehsack <sno@netbsd.org> (tiny change)
|
||
|
||
* src/output.h: [WINDOWS32] [SV 57888] Use gnulib fcntl if available
|
||
If gnulib fcntl is available (for MinGW32) use it rather than our
|
||
homegrown version.
|
||
|
||
* src/w32/compat/dirent.c: [SV 57888] Use gnulib opendir on MinGW32
|
||
|
||
* src/dir.c (local_stat): [WINDOWS32] Fix buffer-overflow warning.
|
||
[SV 57888] Provide space for the path to use MAXPATHLEN plus nul.
|
||
|
||
2020-03-31 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 57896] Change directories before checking jobserver auth
|
||
We want to process -C options as early as possible, before we might
|
||
write informational messages, so that Entering/Leaving messages have
|
||
the correct directory.
|
||
|
||
* src/main.c (main): Move code dealing with changing directories
|
||
before parsing of the jobserver auth flag.
|
||
* tests/scripts/features/jobserver: Test the order of enter/leave.
|
||
|
||
2020-03-31 Paul Smith <psmith@gnu.org> (tiny change)
|
||
|
||
[SV 57967] Only set APPEND mode for regular files
|
||
APPEND is a permanent mode shared by all users of a file. If we
|
||
set it on a tty, pipe, etc. it will stay in effect even after make
|
||
exits, which can cause problems.
|
||
|
||
Patch provided by 0xef967c36@gmail.com
|
||
|
||
* src/output.c (set_append_mode): Check for a regular file.
|
||
|
||
2020-03-31 Paul Smith <psmith@gnu.org>
|
||
|
||
Obey order of multiple print/no-print directory options
|
||
Previously if --no-print-directory was seen anywhere even once
|
||
(environment, command line, etc.) it would always take precedence
|
||
over any --print-directory option. Change this so that the last
|
||
seen option (which will be the command line, if present there) takes
|
||
precedence.
|
||
|
||
* NEWS: Mark this change in behavior.
|
||
* src/makeint.h (print_directory): A new variable to control printing.
|
||
* src/output.c (output_dump): Use the new variable.
|
||
(output_start): Ditto.
|
||
* src/main.c: Add a new variable print_directory. Use -1 for
|
||
print_directory_flag so we know of the option was seen or not. Add a
|
||
new default_print_directory_flag set to -1 to keep options from being
|
||
added.
|
||
(switches): Use flag_off for --no-print-directory, rather than a
|
||
separate inhibit_print_directory_flag.
|
||
(main): If print_directory_flag was set by the user, use that for
|
||
print_directory. If not, compute the print_directory value based on
|
||
-s, -C, and sub-makes as before.
|
||
* tests/scripts/variables/GNUMAKEFLAGS: -w is not added automatically
|
||
* tests/scripts/options/print-directory: Add tests for overriding
|
||
print-directory options.
|
||
|
||
2020-03-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Update 4.3 with information on .SILENT / -s
|
||
|
||
2020-02-29 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
* NEWS: Mention the new tcc support.
|
||
|
||
2020-02-29 Christian Jullien <eligis@orange.fr>
|
||
|
||
Add support for building with Tiny C for MS-Windows
|
||
* src/config.h.W32.template (HAVE_DIRECT_H, HAVE_STRCASECMP)
|
||
(HAVE_STRNCASECMP, HAVE_UMASK): Add __TINYC__ to MinGW condition.
|
||
(BATCH_MODE_ONLY_SHELL): Make this the default for Tiny C.
|
||
|
||
* build_w32.bat: Support building with Tiny C's tcc compiler.
|
||
|
||
2020-01-20 Paul Smith <psmith@gnu.org>
|
||
|
||
Apply spelling corrections from Fossies spellcheck
|
||
See https://fossies.org/features.html#codespell
|
||
Spelling issues in Git commit messages or lib/* source are not applied.
|
||
|
||
* README.OS2.template: Apply spelling corrections.
|
||
* README.VMS: Ditto.
|
||
* src/commands.c: Ditto.
|
||
* src/config.ami.template: Ditto.
|
||
* src/configh.dos.template: Ditto.
|
||
* src/job.c: Ditto.
|
||
* src/job.h: Ditto.
|
||
* src/read.c: Ditto.
|
||
* src/variable.c: Ditto.
|
||
* src/vms_exit.c: Ditto.
|
||
* src/vms_export_symbol.c: Ditto.
|
||
* src/vms_progname.c: Ditto.
|
||
* src/vmsfunctions.c: Ditto.
|
||
* src/vmsjobs.c: Ditto.
|
||
* src/w32/pathstuff.c: Ditto.
|
||
* tests/scripts/variables/automatic: Ditto.
|
||
* tests/test_driver.pl: Ditto.
|
||
|
||
2020-01-20 Paul Smith <psmith@gnu.org>
|
||
|
||
Update to GNU make 4.3.90
|
||
* NEWS: Add a 4.3.90 section and update Savannah bug URL
|
||
* configure.ac (AC_INIT): Change release to 4.3.90
|
||
|
||
2020-01-19 Paul Smith <psmith@gnu.org>
|
||
|
||
GNU Make release 4.3
|
||
* NEWS: Update for the release
|
||
* configure.ac: New release number
|
||
* doc/make.texi: New edition number
|
||
|
||
* configure.ac (guile): Check for Guile 3.0 installations
|
||
|
||
* src/job.c (sh_cmds): [SV 57625] Update builtin shell command list
|
||
|
||
Resolve some documentation issues
|
||
* doc/make.texi (Interrupts): [SV 46193] Recommend defensive recipes
|
||
* doc/make.texi: [SV 49262] Clarify interaction of prerequisites and
|
||
non-terminal match-anything rules.
|
||
|
||
2020-01-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 40657] Reinstate old behavior for suffix rules with prereqs
|
||
POSIX says that suffix rules cannot have prerequisites, but after
|
||
making this change we observed a number of makefiles "in the wild"
|
||
that were relying on this behavior and failed.
|
||
|
||
For .POSIX: makefiles, obey POSIX. Otherwise preserve the old
|
||
behavior. However, generate a warning so users know this is a
|
||
problem. In a future version we will change all behavior to be
|
||
POSIX-conforming.
|
||
|
||
* NEWS: describe the change
|
||
* src/rule.c (convert_to_pattern): If posix_pedantic don't make a
|
||
pattern rule if prereqs exist. Otherwise show a warning.
|
||
* tests/scripts/features/suffixrules: Add tests for the new behavior
|
||
including .POSIX vs. non-.POSIX.
|
||
|
||
2020-01-05 Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* tests/test_driver.pl: Enhance error messages
|
||
|
||
2020-01-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi: Change the GFDL to an Appendix
|
||
|
||
* NEWS: Clarify authorship of new features.
|
||
|
||
Enable compilation with C90 compilers
|
||
* configure.ac: Try compiling Guile headers: they don't work with C90.
|
||
* maintMakefile: Simplify config checks via target-specific variables.
|
||
* src/makeint.h: Use ATTRIBUTE rather than defining __attribute__,
|
||
as that causes compile issues with system headers.
|
||
(ENUM_BITFIELD): Don't use enum bitfields in ANSI mode.
|
||
* src/main.c: Use ATTRIBUTE instead of __attribute__.
|
||
* src/job.h: Ditto.
|
||
* src/file.c: Don't define variables inside for loops.
|
||
* src/rule.c: Ditto.
|
||
* src/dep.h (SI): Only use static inline in non-ANSI mode.
|
||
|
||
2020-01-03 Paul Smith <psmith@gnu.org>
|
||
|
||
* bootstrap: Update to the latest gnulib version
|
||
|
||
Release GNU make 4.2.93
|
||
* NEWS: Update the release and date
|
||
* configure.ac: Update the release number
|
||
|
||
Update copyright statements for 2020
|
||
|
||
2020-01-03 Paul Smith <psmith@gnu.org>
|
||
|
||
Support the .EXTRA_PREREQS special variable
|
||
Initial implementation by Christof Warlich <cwarlich@gmx.de>
|
||
|
||
* NEWS: Announce the new feature.
|
||
* doc/make.texi (Other Special Variables): Document .EXTRA_PREREQS.
|
||
* src/dep.h (struct dep): New flag to note extra prereq deps.
|
||
* src/filedef.h (expand_extra_prereqs): Declare a function to expand
|
||
the value of .EXTRA_PREREQS.
|
||
* src/file.c (expand_extra_prereqs): Given a struct variable lookup
|
||
of .EXTRA_PREREQS, convert it into a list of deps and for each one
|
||
make sure it has a struct file and has the new flag set.
|
||
(snap_file): A new function invoked by hash_map that will perform
|
||
per-file operations: set up second expansion, intermediate, and also
|
||
.EXTRA_PREREQS. Manage circular dependencies by ignoring them.
|
||
(snap_deps): Defer per-file operations until the end. Look up the
|
||
global .EXTRA_PREREQS and pass it along to snap_file for each file.
|
||
* src/implicit.c (struct patdeps): Remember the extra prereqs flag.
|
||
(pattern_search): Transfer extra prereqs flag settings into the
|
||
matched pattern rule.
|
||
* src/rule.h (snap_implicit_rules): Rename count_implicit_rules to
|
||
snap_implicit_rules since we now do more than count.
|
||
* src/rule.c (snap_implicit_rules): As we walk through all the pattern
|
||
rules, add in any global .EXTRA_PREREQS to the dep list. Ensure we
|
||
take them into account for the max number of prereqs and name length.
|
||
* src/main.c (main): Add extra-prereqs to .FEATURES.
|
||
Call the renamed snap_implicit_rules.
|
||
* tests/scripts/variables/EXTRA_PREREQS: Add tests.
|
||
|
||
2020-01-03 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/patternrules: Use Windows-compatible quoting
|
||
|
||
* tests/test_driver.pl: Compute full path to Perl interpreter
|
||
|
||
* tests/scripts/features/exec: Don't use $ENV in the description
|
||
|
||
* src/makeint.h: Add a declaration for memrchr()
|
||
|
||
2019-12-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Remove info about disabled /proc/loadavg usage.
|
||
|
||
2019-12-27 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 57022] Avoid posix_spawn which fails asynchronously
|
||
Avoid using posix_spawn implementations that fail asynchronously when
|
||
the spawned program can't be invoked: this means instead of getting
|
||
an error such as "No such file or directory" we get just "Exit 127".
|
||
|
||
Original implementation of the configure.ac macro provided by
|
||
Martin Dorey <martin.dorey@hds.com>
|
||
|
||
Original implementation of the regression tests provided by
|
||
Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
* configure.ac: Test whether posix_spawn fails asynchronously. In a
|
||
cross-compilation environment, assume that it does not. If we detect
|
||
that it does, fall back to fork/exec.
|
||
* tests/scripts/features/exec: Add regression tests for different
|
||
shebang invocation methods.
|
||
|
||
2019-12-26 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 56655] Allow pattern expansion to contain spaces
|
||
* src/dep.h: Add a new flag PARSEFS_ONEWORD
|
||
* src/read.c (parse_file_seq): If PARSEFS_ONEWORD is given, treat the
|
||
entire incoming string as a single pattern.
|
||
* src/implicit.c (pattern_search): Pass PARSEFS_ONEWORD when parsing
|
||
patterns for wildcards.
|
||
* tests/scripts/features/patternrules: Add a new test.
|
||
|
||
2019-12-18 Ben Wijen <ben@wijen.net>
|
||
|
||
* src/misc.c (spin): On WINDOWS32 use Sleep() instead of sleep()
|
||
|
||
* bootstrap.bat: Fix typo in batch file name
|
||
|
||
2019-12-18 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/config.h.W32.template: [SV 57152] MinGW32 doesn't support d_type
|
||
|
||
2019-12-18 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
[SV 54161] Fix second expansion of $* for paths
|
||
If the stem matches a path containing a directory not just a
|
||
filename, make sure the second expansion of $* in the
|
||
prerequisites matches $* in the recipe. This requires using
|
||
$(*F) when replacing % in the first expansion to preserve the
|
||
simple filename.
|
||
|
||
* src/implicit.c (pattern_search): If lastslash is set prepend
|
||
the directory onto the stem. Then use $(*F) when expanding %.
|
||
* tests/scripts/features/se_implicit: Add a test case
|
||
|
||
2019-12-17 Jouke Witteveen <j.witteveen@gmail.com>
|
||
|
||
* src/implicit.c (pattern_search): Set lastslash correctly
|
||
If filename contained multiple slashes lastslash is wrongly set to 0.
|
||
* configure.ac: Check for the GNU memrchr() extension function.
|
||
* src/misc.c (memrchr): Supply memrchr() if not available.
|
||
|
||
* src/implicit.c (pattern-search): Remove unneeded 'dir' variable
|
||
|
||
2019-12-17 Paul Smith <psmith@gnu.org>
|
||
|
||
* Makefile.am: Build lzip package instead of bzip2
|
||
* README.git: Mention changed requirements.
|
||
|
||
* src/job.c (load_too_high): Disable Linux /proc/loadavg for now
|
||
This new feature has a problem: if you provide a load which is
|
||
larger than the number of cores then it will always run every job.
|
||
Before we can enable it we need to at the least learn how to clamp
|
||
this value to the number of cores. To experiment with it, set
|
||
PROC_FD_INIT to -2 in job.c to re-enable the feature.
|
||
|
||
* tests/run_make_tests.pl (set_more_defaults): Fix typo
|
||
|
||
2019-12-16 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/run_make_tests.pl (subst_make_string): Force use of /
|
||
On Windows the path to the helper tool will contain '\': this will
|
||
fail if recipes are run with a POSIX shell. Convert '\' to '/'
|
||
on Windows. While here, escape any spaces in the path as well.
|
||
|
||
Rename jhelp.pl to thelp.pl and make it a generic test helper.
|
||
* tests/thelp.pl: Rename from tests/jhelp.pl.
|
||
(op): Use names instead of options for the operations.
|
||
(op): Add new operations for sleep, mkdir, and rm.
|
||
(op): Enhance wait to time out
|
||
* tests/run_make_tests.pl: Add a new #HELPER# replacement
|
||
(subst_make_string): Use fully-qualified path to thelp.pl
|
||
* tests/scripts/features/parallelism: Update to use thelp.pl
|
||
and the new named operations. Use thelp.pl sleep instead of
|
||
system-specific sleep commands.
|
||
* tests/scripts/features/output-sync: Update to use thelp.pl
|
||
instead of complex shell scripts.
|
||
* Makefile.am: Distribute tests/thelp.pl instead of tests/jhelp.pl
|
||
|
||
2019-10-10 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
Port functions/shell test to Solaris 10
|
||
* tests/scripts/functions/shell: Port exit-status calculation
|
||
to Solaris 10 with Perl 5.8.4.
|
||
|
||
2019-10-08 Paul Smith <psmith@gnu.org>
|
||
|
||
Release GNU make 4.2.92
|
||
* NEWS: Update the release and date
|
||
* configure.ac: Update the release number
|
||
|
||
2019-10-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.text (Reading Makefiles): Rewrite to be more clear.
|
||
|
||
2019-10-05 Paul Smith <psmith@gnu.org>
|
||
|
||
* Makefile.am (check-regression): Use PERLFLAGS when running Perl
|
||
* maintMakefile: Set PERLFLAGS to enable warnings.
|
||
* tests/run_make_tests.pl: Clean up issues pointed out by perl -w.
|
||
|
||
* tests/scripts/functions/wildcard: Skip slash tests for local glob.
|
||
|
||
tests: Convert %CONFIG_FLAGS to get_config()
|
||
* tests/config-flags.pm.W32: Create a predefined Windows file.
|
||
* Makefile.am (test_FILES): Add it to the distribution.
|
||
* build_w32.bat: Install tests/config-flags.pm if not existing.
|
||
* tests/run_make_tests.pl (get_config): Create new function.
|
||
* tests/scripts/features/archives: Call get_config() rather than
|
||
using %CONFIG_FLAGS directly.
|
||
* tests/scripts/features/load: Ditto.
|
||
* tests/scripts/features/loadapi: Ditto.
|
||
* tests/scripts/functions/wildcard: Ditto.
|
||
|
||
* src/hash.c (jhash_string): Don't read past end of string.
|
||
Original patch from Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
* tests/run_make_tests.pl (valid_option): Add missing File::Spec
|
||
|
||
2019-09-23 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/function.c (func_realpath) [AIX]: Remove trailing slashes.
|
||
|
||
2019-09-22 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/vpathplus: Fix output for big-endian systems.
|
||
Our hashing algorithm gives different ordering on LE vs BE systems.
|
||
Patch from Dmitry Goncharov <dgoncharov@users.sf.net>.
|
||
|
||
2019-09-22 Florian Weimer <fweimer@redhat.com> (tiny change)
|
||
|
||
* configure.ac (HAVE_GETTIMEOFDAY): Avoid undeclared exit function.
|
||
|
||
2019-09-22 Paul Smith <psmith@gnu.org>
|
||
|
||
* test/test_driver.el (_run_with_timeout): Show error message.
|
||
|
||
* job.c (child_error): Modify error message string.
|
||
This reverts commit 6264deece3bb77798240a906ceed79097adbcf48.
|
||
Further investigation discovers that the real issue is that
|
||
GNU Emacs compile mode doesn't have a matching regex for GNU
|
||
make error messages generated when targets fail. I submitted
|
||
a patch to GNU Emacs adding a matcher for compile mode.
|
||
|
||
2019-09-21 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests: Convert from File::Spec::Functions to File::Spec.
|
||
Users report the Functions version doesn't work correctly for some
|
||
older versions of Perl.
|
||
|
||
* tests/scripts/function/guile: Valgrind doesn't work with Guile.
|
||
|
||
* src/job.c (child_execute_job): Allocate space for argv NULL.
|
||
|
||
2019-09-21 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 56918] Compute job slots properly on failing command
|
||
Ensure we properly reduce job_slots_used if a command fails because
|
||
it doesn't exist/can't be started.
|
||
|
||
* src/job.h (struct child): Add a field jobslot to be set when using
|
||
a job slot.
|
||
* src/job.c (start_waiting_job): Remember if we are using a job slot.
|
||
(reap_children): Reduce number of job slots used by jobslot.
|
||
|
||
2019-09-21 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/arscan.c (ar_scan): Restrict length for sscanf of ar_mode.
|
||
|
||
* tests/scripts/functions/shell: Detect correct SHELLSTATUS code.
|
||
|
||
* tests/run_make_test.pl: Fix support for valgrind.
|
||
Change the variable holding the make command to be a list that can
|
||
hold extra commands and options, not just a string.
|
||
|
||
* tests/run_make_tests.pl (find_prog): Fix syntax error.
|
||
|
||
2019-09-16 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Update date and clarify -l change.
|
||
|
||
* tests/run_make_tests.pl: Create $scriptsuffix for Windows/VMS.
|
||
* tests/scripts/features/targetvars: Add a suffix to scripts.
|
||
* tests/scripts/misc/general4: Ditto.
|
||
|
||
2019-09-16 Paul Smith <psmith@gnu.org>
|
||
|
||
Refresh the test suite framework implementation.
|
||
Go through both run_make_tests.pl and test_driver.pl and slightly
|
||
modernize the Perl and clean up indentation etc. Fix a number of
|
||
warnings in the test scripts detected by running with -w.
|
||
|
||
* tests/test_driver.pl: Move make error string detection out of the
|
||
base test driver.
|
||
(run_all_tests): Ensure that we always look for tests in the cwd.
|
||
* tests/run_make_tests.pl: Use File::Spec for path manipulations.
|
||
Correctly use setlocale() when detecting error strings.
|
||
Get configuration from the config-flags.pm file not config.status.
|
||
* tests/scripts/features/archives: Use new $cwddir variable.
|
||
* tests/scripts/features/reinvoke: Add missing semicolon.
|
||
* tests/scripts/features/vpath2: Avoid non-existent variable.
|
||
* tests/scripts/functions/foreach: Escape variables.
|
||
* tests/scripts/misc/bs-nl: Remove non-existing \v escape sequence.
|
||
* tests/scripts/misc/general4: Use handy create_file().
|
||
* tests/scripts/options/dash-C: Use Cwd/$cwddir.
|
||
* tests/scripts/options/dash-I: Use subst_make_string() and #PWD#.
|
||
* tests/scripts/options/symlinks: Use File::Spec.
|
||
* tests/scripts/targets/DEFAULT: Use create_file and run_make_test.
|
||
* tests/scripts/variables/CURDIR: Use run_make_test.
|
||
* tests/scripts/variables/automatic: Remove extraneous "\".
|
||
* tests/scripts/vms/library: Remove extra "my" and extraneous "\".
|
||
|
||
2019-09-16 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/config-flags.pm.in: Add USE_SYSTEM_GLOB.
|
||
* tests/config_flags_pm.com [VMS]: Ditto.
|
||
|
||
* README.git: [SV 56895] Provide more info about "maintainer mode".
|
||
* src/read.c (get_next_mword) [HAVE_DOS_PATHS]: Don't fall through to
|
||
parsing variable references if we find a drivespec in a word!
|
||
|
||
* tests/test_driver.pl: Remember error for "running" a directory.
|
||
* tests/scripts/features/errors: Check errors "running" a directory.
|
||
|
||
* src/job.c (child_execute_job): Use errno from find_in_given_path().
|
||
* tests/test_driver.pl: Determine non-executable error message.
|
||
* tests/scripts/features/errors: Use the local non-executable error.
|
||
|
||
* src/job.c (child_execute_job): Use newer gnulib findprog version.
|
||
|
||
2019-09-10 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Revert "[SV 56449] (Windows) Use slow path if '%' appears in the command"
|
||
This reverts commit 38e96eadea6e2cd42a0f414959bac327de9f468a.
|
||
Per discussion on Savannah, the modified behavior matches
|
||
the way % is handled in batch files, but not in cmd command
|
||
lines. And since Make mostly tries to emulate the command
|
||
line, the new behavior is unexpected and backward-incompatible.
|
||
|
||
2019-09-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Rework the creation of build.sh so it's not a template.
|
||
* build.sh: Rename from build.template. Get the list of objects
|
||
from the Makefile. Move configure-replaced variables ...
|
||
* build.cfg.in: to this new .in file.
|
||
* configure.ac: Remove special handling of build.sh.in and add
|
||
build.cfg as a generated file.
|
||
* Makefile.am (EXTRA_DIST): Remove build.sh.in and add build.sh
|
||
and build.cfg.in for build.sh.in.
|
||
* maintMakefile: Remove handling for build.template. Treat
|
||
build.sh as a source file, not a generated file.
|
||
* .gitignore: Ignore generated build.cfg file.
|
||
|
||
2019-09-08 Paul Smith <psmith@gnu.org>
|
||
|
||
* gl/modules/make-glob: Move local glob configure.ac to here
|
||
* configure.ac: from here.
|
||
|
||
2019-09-08 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 56834] Support local PATH search with posix_spawnp
|
||
When using exec we install the child's environment before invoking
|
||
execlp(), so commands are found on the child's PATH. posix_spawnp
|
||
searches on the parent's PATH, which we don't want.
|
||
|
||
Import gnulib's findprog-in module and use it to search the child's
|
||
PATH, then use posix_spawn() to run it.
|
||
|
||
Also, posix_spawn() does not fall back to trying sh on ENOEXEC, as
|
||
execlp() does, so implement that as well.
|
||
|
||
* bootstrap.conf: Add the findprog-in gnulib module
|
||
* src/job.c: Include findprog.h if we're using posix_spawn.
|
||
(start_job_command): Remove the handling of child->cmd_name,
|
||
(child_execute_job): and add it here. Look up the command to be
|
||
run in the child's path and invoke it if found. If it fails with
|
||
ENOEXEC then retry it as an argument to the default shell.
|
||
* tests/scripts/misc/general4: Test makefile PATH assignments.
|
||
* tests/scripts/features/targetvars: Ditto, for target variables.
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Recipe Execution): Correct example to use $(<[DF])
|
||
|
||
* configure.ac: Check whether struct dirent has a d_type field
|
||
* src/dir.c (dir_contents_file_exists_p): Use the autoconf macro
|
||
HAVE_STRUCT_DIRENT_D_TYPE rather than relying on the GNU libc-
|
||
specific _DIRENT_HAVE_D_TYPE.
|
||
* lib/glob.c: Set HAVE_D_TYPE if HAVE_STRUCT_DIRENT_D_TYPE.
|
||
|
||
* src/config.h.W32.template [W32]: Add support for dirent.d_type
|
||
* src/w32/include/dirent.h: Add DT_* values for dirent.d_type
|
||
(struct dirent): Add d_type
|
||
* src/w32/compat/durent.c (readdir): Set dirent.d_type based on
|
||
Windows file attributes.
|
||
|
||
* src/makeint.h: Add typedef for mode_t if !HAVE_UMASK
|
||
|
||
* build.template: Rewrite to allow gnulib support.
|
||
|
||
* doc/make.texi: Clarify that the jobserver pipe is "blocking"
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
Align child_execute_job among different ports
|
||
Create a struct childbase which is the basics of struct child needed
|
||
to invoke child_execute_job(), and can be cast back and forth to a
|
||
struct child. Ensure all implementations of child_execute_job() take
|
||
the same arguments.
|
||
|
||
* src/job.h (CHILDBASE): Create a macro to hold the base parts.
|
||
(struct childbase): A structure containing CHILDBASE.
|
||
(struct child): Use CHILDBASE as the initial part of child.
|
||
[VMS]: Remove declaration of VMS version of child_execute_job.
|
||
* src/job.c (start_job_command): Use new child_execute_job() call.
|
||
(child_execute_job) [__EMX__]: Implement new calling signature.
|
||
(child_execute_job): Implement new calling signature.
|
||
* src/main.c (main) [__EMX__]: Use new child_execute_job() call.
|
||
* src/function.c (func_shell_base): Use new child_execute_job() call.
|
||
* src/vmsjobs.c (vmsHandleChildTerm): Accept struct childbase.
|
||
* src/vmsjobs.c (child_execute_job): Implement new calling signature.
|
||
Modify the return value to be pid_t, not a boolean, and return the
|
||
PID rather than setting it in the child. This is OK because our only
|
||
caller immediately reset PID to -1 anyway if we return 0.
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.tex (Substitution Refs): Clarify patsubst relationship.
|
||
|
||
* src/job.c (start_job_command) [VMS]: Correct VMS comment.
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
Show useful errors when posix_spawn() doesn't do so
|
||
The posix_spawn() function may not detect that the command to run is
|
||
invalid when it's invoked. Instead, it will run then exit with
|
||
error code 127. If that happens do our best to present the user
|
||
with a useful error message.
|
||
|
||
* src/job.h (struct child): Add cmd_name to hold the command we ran.
|
||
* src/job.c (start_job_command): On success, remember the cmd_name.
|
||
(reap_children): On exit 127, stat cmd_name and show a useful error.
|
||
(free_child): Free cmd_name.
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* README.git: Describe GCC and GNU make requirements
|
||
* maintMakefile: Put custom C flags into a separate variable
|
||
so they can be overridden more easily on the command line.
|
||
|
||
* tests/scripts/features/archives: Fix expected long ar name output.
|
||
|
||
* tetss/run_make_test.pl: Avoid 'sh -c' for Windows portability.
|
||
|
||
Update to GNU make release candidate 4.2.91
|
||
|
||
* tests/scripts/functions/wildcard: Skip dangling symlink test.
|
||
The built-in glob implementation does not correctly handle dangling
|
||
symlinks. This needs to be fixed by switching to the latest glob
|
||
implementation from gnulib but that's a big job: for now avoid the
|
||
test if we know it will fail.
|
||
|
||
* maintMakefile: Use check-local when testing build.sh.
|
||
Running 'make check' will rebuild 'make' so we're not testing the
|
||
build.sh-generated make binary.
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
Don't reset stack size when using posix_spawn()
|
||
There's no way to run setrlimit() from posix_spawn() so we can't reset
|
||
the stack limit in children; thus, don't change it in the parent.
|
||
|
||
* src/makeint.h (SET_STACK_SIZE): Don't set this when HAVE_POSIX_SPAWN.
|
||
* src/job.c (child_execute_job): Remove useless comment.
|
||
|
||
2019-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* configure.ac: Remove redundant getloadavg gnulib support
|
||
|
||
* src/dir.c (dir_setup_glob): Initialize unused gl_offs.
|
||
* tests/scripts/functions/wildcard: Add trailing slash tests.
|
||
Initial changes by Dmitry Goncharov <dgoncharov@users.sf.net>
|
||
|
||
2019-09-02 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
Pacify Oracle Studio c99
|
||
* src/dep.h (DEP):
|
||
* src/function.c (struct function_table_entry):
|
||
Use unsigned int, not unsigned short. Without this patch, c99
|
||
complains ‘warning: nonportable bit-field type’.
|
||
|
||
Port grouped_targets test to Solaris 10
|
||
* tests/scripts/features/grouped_targets: Use ‘printf ''’
|
||
instead of ‘echo -n’, as POSIX says the latter is not portable.
|
||
|
||
Remove useless code in eval
|
||
* src/read.c (eval): Remove useless code. Without this patch,
|
||
Oracle Studio 12.6 complains ‘"src/read.c", line 1405: warning:
|
||
loop not entered at top’.
|
||
|
||
Pacify Oracle Studio 12.6 in init_switches
|
||
* src/main.c (init_switches): Use a cast to convert char const *
|
||
to char *. Without this patch, the compiler complains
|
||
‘"src/main.c", line 2643: warning: assignment type mismatch:
|
||
pointer to char "=" pointer to const char’.
|
||
|
||
Pacify Oracle Studio 12.6
|
||
* src/arscan.c [VMS]: Use ‘#if !defined LBR$_HDRTRUNC’ instead
|
||
of ‘#ifndef LBR$_HDRTRUNC’ to pacify Oracle Studio 12.6, which
|
||
looks inside unused #if branches for preprocessor syntax errors.
|
||
Without this patch it complains ‘"src/arscan.c", line 43: warning:
|
||
tokens ignored at end of directive line’.
|
||
|
||
2019-09-02 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Fix incorrect notes.
|
||
|
||
* src/read.c (parse_file_seq): [SV 52076] Don't reverse glob() results.
|
||
|
||
2019-08-28 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix MS-Windows MinGW build
|
||
* src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects):
|
||
Fix format specifier for GetLastError's value.
|
||
|
||
* src/job.c (reap_children): Define the 'remote_status_lose' label
|
||
only for Posix platforms, to avoid compiler warning.
|
||
|
||
* build_w32.bat (LNKOUT): New variable, using forward slashes.
|
||
Use forward slashes in calls to :Compile, so that linking with GNU
|
||
ld works.
|
||
|
||
* src/makeint.h [!HAVE_UMASK]: Prototype for 'umask'.
|
||
(UMASK, MODE_T): Don't define.
|
||
|
||
* src/misc.c (get_tmpfile): Don't call UMASK, call umask, to
|
||
avoid compilation warning on !HAVE_UMASK platforms.
|
||
* src/output.c (output_tmpfd): Likewise.
|
||
|
||
* src/misc.c (umask) [!HAVE_UMASK]: New no-op function.
|
||
|
||
* src/config.h.W32.template (__USE_MINGW_ANSI_STDIO)
|
||
[__MINGW32__]: Define to 1, to force Make use ANSI-compatible
|
||
stdio functions, which also support the non-standard 'Id' and 'Ix'
|
||
specifiers.
|
||
(HAVE_UMASK) [__MINGW32__]: Define to 1.
|
||
|
||
* src/arscan.c (ar_member_touch): Type-cast argument of strlen to
|
||
avoid compiler warnings.
|
||
|
||
2019-08-26 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Update for pre-release
|
||
|
||
2019-08-26 Paul Smith <psmith@gnu.org>
|
||
|
||
Update maintainer mode to support debug wait points.
|
||
Make a spin() method available when compiled in maintainer mode.
|
||
If a file exists in the working directory with a specific name,
|
||
make will sleep until the file is deleted.
|
||
|
||
Ensure that maintainer mode is enabled on Windows, using the same
|
||
algorithm we use on POSIX / autoconf systems.
|
||
|
||
* build_w32.bat: If maintMakefile exists, enable maintainer mode.
|
||
* src/main.c (main): Replace Windows-only suspend flag with spin().
|
||
* src/makeint.h: A SPIN() macro calls spin() in maintainer mode.
|
||
* src/misc.c (spin): If a spin file exists sleep until it's deleted.
|
||
|
||
2019-08-26 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/archives: [SV 54395] Support non-GNU ar.
|
||
|
||
* tests/scripts/misc/general3: Add more tests for SHELL/.SHELLFLAGS
|
||
|
||
2019-08-25 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/job.c (construct_command_argv): Remove unused VMS code
|
||
|
||
* src/job.c (child_execute_job): Set pid to -1 on posix_spawn failure.
|
||
|
||
2019-08-24 Paul Smith <psmith@gnu.org>
|
||
|
||
* bootstrap: Update from latest gnulib version
|
||
|
||
* scripts/copyright-update: Use git ls-files for controlled files
|
||
|
||
* po/LINGUAS: Add a translation for Bulgarian.
|
||
|
||
2019-07-14 Christian Eggers <ceggers@arri.de> (tiny change)
|
||
|
||
[SV 56449] (Windows) Use slow path if '%' appears in the command
|
||
* src/job.c (sh_chars_dos): Add '%' as a special character
|
||
* src/job.c (construct_command_argv_internal): Check for '%' in quotes
|
||
|
||
For the windows version of make, a recipe line cannot be executed
|
||
diretly by make (without a shell) if a '%' character is present. This
|
||
character starts a cmd.exe escape sequence.
|
||
|
||
2019-07-14 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/read.c (parse_file_seq): Update comments.
|
||
|
||
2019-07-13 Mike Haboustak <haboustak@gmail.com> (tiny change)
|
||
|
||
[SV 28456] Don't override $< when no default rule has been defined
|
||
The check for matching a file's command to the default rule's command
|
||
does not account for null. If no .DEFAULT is defined a rule with no
|
||
recipe has it's $< variable set to the value of $@. This breaks second
|
||
expansion, particularly when used with pattern rules.
|
||
|
||
* src/commands.c [set_file_variables]: Check that cmds is set
|
||
* tests/scripts/features/se_explicit: Test case
|
||
* tests/scripts/features/se_implicit: Test case
|
||
|
||
2019-07-13 Paul Smith <psmith@gnu.org>
|
||
|
||
Switch to the gnulib version of strerror()
|
||
* bootstrap.conf: Add strerror module
|
||
* configure.ac: Remove strerror check
|
||
* src/misc.c: Remove local strerror() implementation
|
||
* src/config.ami.template: Remove HAVE_STRERROR
|
||
* src/config.h-vms.template: Ditto.
|
||
* src/config.h.W32.template: Ditto.
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi: [SV 51974] Clarify makefile parsing operations.
|
||
|
||
* doc/make.texi: [SV 54116] Document whitespace removal trick.
|
||
Discovered and explained by Michael Henry <gnu@drmikehenry.com>
|
||
* tests/scripts/variables/flavors: Add a test to preserve the behavior.
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 46013] Allow recursive variable overrides from Makefiles
|
||
Ensure that variable overrides are passed to recursive make instances
|
||
even if no overrides were provided on the command line.
|
||
Fix suggested by Rici Lake <ricilake@gmail.com>
|
||
|
||
* src/main.c (define_makeflags): Add overrides without respect to the
|
||
value of command_variables.
|
||
* tests/scripts/features/recursion: Add a test.
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Update developer customizations
|
||
* .ccls: Remove -std=c99: it disables __attribute__ causing warnings.
|
||
* .dir-locals.el: Force the C coding style to "gnu".
|
||
* make-gdb.py: Add GDB macros for pretty-printing GNU make structs.
|
||
* scripts/copyright-update: Use GNULIB_SRCDIR to find update-copyright.
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 54549] Don't free used set_lists during merge
|
||
When merging the variable_set_lists for two targets it could be
|
||
that the "from" set list is a subset of the "to" set list: check
|
||
for this situation to avoid freeing used memory.
|
||
|
||
* src/variable.c (merge_variable_set_lists): Walk the "to" list and
|
||
if the "from" list is contained in it, nothing to do.
|
||
* tests/scripts/features/se_explicit: Add a test.
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/hash.c (jash_string): [SV 54980] Avoid ASAN error
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 54740] Ensure .SILENT settings do not leak into sub-makes
|
||
Create a new variable run_silent to hold the current instance's global
|
||
silence setting, allowing silent_flag to represent only whether the -s
|
||
option was provided on the command line.
|
||
|
||
* src/makeint.h: Change silent_flag variable to run_silent.
|
||
* src/job.c: Ditto.
|
||
* src/remake.c: Ditto.
|
||
* src/file.c: Ditto.
|
||
* src/main.c: Add a new global variable run_silent.
|
||
(decode_switches): After switches are decoded, initialize run_silent.
|
||
* tests/scripts/targets/SILENT: Add a test for recursive behavior.
|
||
|
||
2019-05-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Update copyright statements for 2019
|
||
|
||
2019-05-12 Kaz Kylheku <kaz@kylheku.com>
|
||
|
||
[SV 8297] Implement "grouped targets" for explicit rules.
|
||
This patch allows "grouped targets" using the &: syntax:
|
||
|
||
tgt1 tgt2 ... tgtn &: pre1 pre2 ...
|
||
recipe
|
||
|
||
When the &: separator is used (in single or double colon forms), all
|
||
the targets are understood to be built by a single invocation of the
|
||
recipe. This is accomplished by piggy-backing on the already-existing
|
||
pattern rule feature, using the file's "also_make" list.
|
||
|
||
* NEWS: Add information about grouped targets.
|
||
* doc/make.texi (Multiple Targets): Add information on grouped targets.
|
||
(Pattern Intro): Refer to the new section to discuss multiple patterns.
|
||
* src/main.c (main): Add "grouped-targets" to .FEATURES
|
||
* src/read.c (make_word_type): Add new types for &: and &::.
|
||
(eval): Recognize the &: and &:: separator and remember when used.
|
||
(record_files): Accept an indicator of whether the rule is grouped.
|
||
If so, update also_make for each file to depend on the other files.
|
||
(get_next_mword): Recognize the &: and &:: word types.
|
||
* tests/scripts/features/grouped_targets: New test script.
|
||
* AUTHORS: Add Kaz Kylheku
|
||
|
||
2019-05-12 Paul Smith <psmith@gnu.org>
|
||
|
||
* variable.c (define_variable_in_set): Clear new structs
|
||
|
||
* po/LINGUAS: Add Portuguese translation
|
||
|
||
Add developer customizations
|
||
* .ccls: Configure the ccls LSP server
|
||
* .dir-locals.el: Reset some parameters for ccls and lsp-mode
|
||
* .gitignore: Update for GTAGS and ccls
|
||
* maintMakefile: Don't search hidden directories for sources
|
||
|
||
2018-09-16 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/arscan.c (ar_member_touch): [SV 54533] Stop \0 in archive headers
|
||
|
||
Change output_write() to writebuf(), add readbuf() helper.
|
||
* src/misc.c (writebuf, readbuf): Create helper functions that will
|
||
reliably write a buffer to a file descriptor in the face of EINTR
|
||
causing short writes, and read from a file descriptor into a buffer
|
||
in the face of EINTR causing short reads.
|
||
* src/makeint.h: Declare these functions.
|
||
* src/output.c: Remove output_write() and replace with writebuf().
|
||
(_outputs, out_of_memory): Call writebuf(), not output_write().
|
||
* src/arscan.c (ar_scan): Call readbuf() instead of read(2).
|
||
(ar_member_touch): Remove duplicate header write, call writebuf()
|
||
instead of output_write(), and readbuf() instead of read(2).
|
||
|
||
2018-09-15 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Remaking Makefiles): [SV 52273] Note MAKE_RESTARTS
|
||
|
||
* src/main.c (main): Set jobserver permissions before re-execing
|
||
Fixes an issue seen in the Linux kernel build system, reported by
|
||
Masahiro Yamada <yamada.masahiro@socionext.com>. Fix suggested
|
||
on the bug-make mailing list by Mike Shal <marfey@gmail.com>.
|
||
* tests/scripts/features/parallelism: Add a test to verify this.
|
||
|
||
* doc/make.texi: [SV 48970] Clarify the value of $?
|
||
|
||
* doc/make.text: [SV 54360] Weaken "obsolete" language in the manual.
|
||
There's no need to frighten users away from capabilities which are
|
||
perfectly reasonable and definitely not going away, by calling them
|
||
obsolete or discouraged in the manual.
|
||
|
||
[SV 40657] Don't create pattern rules for suffix rules with deps.
|
||
* NEWS: Update with a backward-compatibility warning.
|
||
* src/rule.c (convert_to_pattern): If a suffix rule has dependencies,
|
||
do not create a pattern rule for it. According to the manual suffix
|
||
rules with prerequisites are treated as normal targets.
|
||
* tests/scrips/features/suffixrules: Create some regression tests for
|
||
.SUFFIXES and suffix rules.
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Update for the latest changes.
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 54233] Preserve higher command_state values on also_make targets.
|
||
If multiple pattern rules have the same pattern as also-make targets
|
||
and we attempt to run them at the same time, we might downgrade the
|
||
command state from 'running' to 'deps_running'; this will prevent
|
||
that also_make from being considered complete causing make to wait
|
||
forever for it to finish.
|
||
|
||
Ensure that set_command_state never downgrades the state of a target.
|
||
|
||
* src/file.c (set_command_state): Don't downgrade command_state.
|
||
* src/filedef.h (struct file): Document the order prerequisite.
|
||
* test/scripts/features/patternrules: Test the behavior.
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/job.c (reap_children): Fix inverted win/lose message.
|
||
|
||
* tests/scripts/functions/wildcard: [SV 52018] Test dangling symlink.
|
||
|
||
2018-08-04 Bernhard M. Wiedemann <bwiedemann@suse.de>
|
||
|
||
* src/read.c (parse_file_seq): [SV 52076] Sort wildcard results.
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/archives: [SV 54395] Test long archive names.
|
||
|
||
2018-08-04 Ben Hutchings <ben@decadent.org.uk>
|
||
|
||
* src/arscan.c (ar_scan): [SV 54395] Allow long names in archives.
|
||
Commit bc9d72beb0cb "Resolve issues discovered by static code
|
||
analysis." added range checks on archive member name length. However,
|
||
on non-AIX systems it also checked BSD-style long names against the
|
||
short name limits and and checked the *offset* for GNU-style long
|
||
names against the short name limits. This caused valid long names to
|
||
be rejected.
|
||
|
||
* Record the size of the GNU name map and validate offsets against it
|
||
* Ensure that the last entry in the name map is null-terminated
|
||
* Apply a maximum length of INT_MAX for element sizes
|
||
|
||
Reported-by: Philipp Wolski <philipp.wolski@kisters.de>
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* lib/glob.c (glob_in_dir): [SV 53465] Allow symlinks to directories.
|
||
Fix from Rich Felker <bugdal@aerifal.cx> on the musl mailing list.
|
||
* tests/scripts/functions/wildcard: Create a regression test for this.
|
||
|
||
* configure.ac: Add --disable-posix-spawn option
|
||
* maintMakefile: Add a test for the option
|
||
* src/job.c: Change HAVE_* preprocessor checks to USE_POSIX_SPAWN
|
||
|
||
* src/job.c (child_execute_job): Clean up posix_spawn invocation
|
||
|
||
2018-08-04 Aron Barath <baratharon@caesar.elte.hu>
|
||
|
||
* job.c (child_execute_job): Prefer posix_spawn() over fork()/exec()
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
Clean up errors for invalid commands and add regression tests.
|
||
* src/function.c (func_shell_base): Use error() instead of recreating
|
||
the error output.
|
||
* src/job.c (exec_command): Show more standard error messages.
|
||
* src/load.c (unload_file): Fix whitespace in the error message.
|
||
* tests/scripts/features/errors: Add tests for starting non-
|
||
existent commands and new error message formats.
|
||
* tests/scripts/features/output-sync: New error message formats.
|
||
* tests/scripts/functions/shell: Ditto.
|
||
|
||
2018-08-04 Paul Smith <psmith@gnu.org>
|
||
|
||
Queue failed fork() (etc.) to be handled like any other failed job.
|
||
If we failed to fork() we were essentially exiting make immediately
|
||
without respect to ignore flags, etc. On one hand that makes sense
|
||
because if you can't fork you're in real trouble, but it doesn't
|
||
work so well on systems where we don't fork at all. Instead, treat
|
||
a fork error like any other error by delaying the handling until
|
||
the next call to reap_children(). Any child with a PID of -1 is
|
||
considered to have died before starting so check these first without
|
||
waiting for them.
|
||
|
||
* src/commands.c (fatal_error_signal): Don't kill children that
|
||
never started.
|
||
* src/function.c (func_shell_base): Handle cleanup properly if the
|
||
child doesn't start.
|
||
* src/job.c (reap_children): Check for children that died before
|
||
starting and handle them without waiting for the PID.
|
||
(start_job_command): Free memory when the child doesn't start.
|
||
(start_waiting_job): Don't manage children who never started.
|
||
(child_execute_job): If the fork fails return PID -1.
|
||
* src/vmsjobs.c: Check for children that never started.
|
||
* tests/run_make_tests.pl: Parse config.status to get all options.
|
||
|
||
2018-08-02 Aron Barath <baratharon@caesar.elte.hu>
|
||
|
||
* configure.ac: Check for posix_spawnattr_setsigmask
|
||
|
||
* configure.ac: Check for spawn.h and posix_spawn()
|
||
|
||
* src/makeint.h: Use pid_t to store PIDs, of int.
|
||
* src/commands.c (getpid): Ditto.
|
||
* src/job.h (*): Ditto.
|
||
* src/job.c (*): Ditto.
|
||
* src/main.c (main): Ditto.
|
||
* src/remote-cstms.c (start_remote_job): Ditto.
|
||
* src/remote-stub.c (start_remote_job): Ditto.
|
||
|
||
2018-08-02 spagoveanu@gmail.com <spagoveanu@gmail.com> (tiny change)
|
||
|
||
* src/dir.c: Preserve glob d_type field
|
||
When using GNU make on a system with glibc glob a pattern ending in
|
||
a slash is also matching regular files, but only in subdirectories:
|
||
|
||
$ mkdir -p dir/subdir
|
||
$ cd dir
|
||
$ touch file1 subdir/file2
|
||
$ echo 'test:; @echo $(wildcard */ */*/)' | make -f -
|
||
subdir/ subdir/file2
|
||
$ echo 'test: */ */*/; @echo "$?" != */ */*/' | make -f -
|
||
subdir/ subdir/file2 != subdir/ */*/
|
||
|
||
It happens because in the gl->gl_readdir callback supplied to glob(),
|
||
dirent->d_type is set to DT_UNKNOWN, and the glob() implementation
|
||
in glibc assumes that such a directory entry *cannot* possibly be a
|
||
regular file.
|
||
|
||
Pass the actual d_type down to glob(); this is the right thing to do
|
||
even if glibc is fixed, because it saves an extra stat() syscall for
|
||
each dirent.
|
||
|
||
2018-08-02 Paul Smith <psmith@gnu.org>
|
||
|
||
* src/read.c(unescape_char): Use C comments not C++ comments.
|
||
* src/posixos.c(set_blocking): Ditto.
|
||
* src/w32/subproc/sub_proc.c(process_init): Ditto
|
||
|
||
Enhance the Basic.mk environment to work with Gnulib
|
||
* maintMakefile: Omit generated headers from Basic.mk prerequisites.
|
||
* Basic.mk.template: Rework commands to use with $(call ...) macros.
|
||
* mk/Amiga.mk: Ditto.
|
||
* mk/VMS.mk: Ditto.
|
||
* mk/Windows32.mk: Ditto, plus P2W to convert POSIX to Windows paths.
|
||
* mk/msdosdjgpp.mk: Ditto.
|
||
|
||
2018-07-02 Paul Smith <psmith@gnu.org>
|
||
|
||
Resolve most of the Windows Visual Studio warnings.
|
||
* Convert integer types to size_t where necessary.
|
||
* Align other integral types to avoid casts and type warnings.
|
||
|
||
2018-07-02 Paul Smith <psmith@nuodb.com>
|
||
|
||
Update regression tests for Windows.
|
||
* tests/scripts/features/jobserver: Windows doesn't use pipes
|
||
* tests/scripts/functions/shell: Don't test kill -2 on Windows
|
||
* tests/scripts/misc/bs-nl: Windows doesn't handle single quotes
|
||
* tests/scripts/misc/general3: Ditto.
|
||
|
||
* maintMakefile: Preserve comments during compilation
|
||
|
||
* function.c(abspath): Use memcpy() to avoid GCC 8.1 warnings
|
||
|
||
2018-07-02 Paul Smith <psmith@nuodb.com>
|
||
|
||
Convert GNU make to use the gnulib portability library
|
||
Move content from glob/* and config/* into standard GNU directory
|
||
locations lib/* and m4/*.
|
||
|
||
Install the gnulib bootstrap script and its configuration file, and
|
||
create a bootstrap.bat file for Windows. Update the README.git file
|
||
with new requirements and instructions for building from Git.
|
||
|
||
At this point we only install the alloca, getloadavg, and FDL modules
|
||
from gnulib. We keep our old glob/fnmatch implementation since the
|
||
gnulib versions require significant amounts of infrastructure which
|
||
doesn't exist on Windows yet. Further work is required here.
|
||
|
||
Due to a problem with gnulib's version of getloadavg, we need to bump
|
||
the minimum required version of automake to 1.16.1 unfortunately.
|
||
|
||
* README.git: Update instructions
|
||
* NEWS: Move developer news to a separate section
|
||
* configure.ac: Update for use with gnulib modules
|
||
|
||
* bootstrap: Bootstrap from Git workspace (import from gnulib)
|
||
* bootstrap.conf: Bootstrap configuration for GNU make
|
||
* bootstrap.bat: Bootstrap from Git workspace for Windows
|
||
* gl/modules/make-glob: Support our local fnmatch/glob implementation
|
||
|
||
* config/acinclude.m4: Move to m4/
|
||
* config/dospaths.m4: Move to m4/
|
||
* glob/fnmatch.c: Move to lib/
|
||
* glob/fnmatch.h.in: Move to lib/
|
||
* glob/glob.c: Move to lib/
|
||
* glob/glob.h.in: Move to lib/
|
||
|
||
* Makefile.am: Update for new directories
|
||
* build.template: Update for new directories
|
||
* build_w32.bat: Update for new directories
|
||
* builddos.bat: Update for new directories
|
||
* maintMakefile: Update for new directories
|
||
* makefile.com: Update for new directories
|
||
* mk/Amiga.mk: Update for new directories
|
||
* mk/Posix.mk.in: Update for new directories
|
||
* mk/VMS.mk: Update for new directories
|
||
* mk/Windows32.mk: Update for new directories
|
||
* mk/msdosdjgpp.mk: Update for new directories
|
||
|
||
* po/LINGUAS: One language per line (needed by gnulib)
|
||
|
||
* INSTALL: Remove (obtained from gnulib)
|
||
* src/alloca.c: Remove (obtained from gnulib)
|
||
* src/getloadavg.c: Remove (obtained from gnulib)
|
||
* po/Makevars: Remove (created by bootstrap)
|
||
* config/*: Remove leftover files
|
||
* glob/*: Remove leftover files
|
||
|
||
2018-07-01 Paul Smith <psmith@nuodb.com>
|
||
|
||
* Makefile.ami, glob/Makefile.ami: Remove obsolete files
|
||
|
||
2018-07-01 Ola Olsson <ola1olsson@gmail.com>
|
||
|
||
* doc/make.texi: Updated language
|
||
|
||
2018-07-01 Paul Smith <psmith@gnu.org>
|
||
|
||
* all: Update Copyright statements for 2018
|
||
|
||
* scripts/copyright-update: Maintainer's script for copyright mgmt
|
||
|
||
2018-02-10 Paul Smith <psmith@gnu.org>
|
||
|
||
* build_w32.bat: Support Visual Studio 17.
|
||
|
||
2017-11-19 Paul Smith <psmith@gnu.org>
|
||
|
||
* configure.ac: Support GLIBC glob interface version 2
|
||
|
||
2017-11-19 Paul Smith <psmith@gnu.org>
|
||
|
||
Rework directory structure to use GNU-recommended "src" directory.
|
||
Move the source code (other than glob) into the "src" subdirectory.
|
||
Update all scripting and recommendations to support this change.
|
||
|
||
* *.c, *.h, w32/*: Move to src/
|
||
* configure.ac, Makefile.am, maintMakefile: Locate new source files.
|
||
* Basic.mk.template, mk/*: Update for new source file locations.
|
||
* NEWS, README.DOS.template: Update for new locations.
|
||
* build.template, build_w32.bat, builddos.bat: Ditto.
|
||
* po/POTFILES.in: Ditto
|
||
* tests/run_make_tests.pl, tests/scripts/features/load*: Ditto.
|
||
* make.1: Move to doc.
|
||
* mk/VMS.mk: Add support for building on VMS (hopefully).
|
||
* makefile.vms, prepare_w32.bat: Remove.
|
||
* SCOPTIONS: Update to define HAVE_CONFIG_H
|
||
|
||
2017-11-18 Paul Smith <psmith@gnu.org>
|
||
|
||
* job.c: Add "command" as a known shell built-in.
|
||
This is not a POSIX shell built-in but it's common in UNIX shells.
|
||
Reported by Nick Bowler <nbowler@draconx.ca>.
|
||
|
||
* tests/scripts/features/output-sync: Revert bad change in 0c5a9f9b92a
|
||
|
||
2017-11-18 Paul Smith <psmith@gnu.org>
|
||
|
||
Remove unsupported build facilities.
|
||
Over time the non-standard build and install systems (nmake files,
|
||
smake files, Visual Studio project files, etc.) have atrophied and
|
||
maintaining them is not worth the effort, for such a simple utility
|
||
as make. Remove all the non-standard build tool support and unify
|
||
OS-specific build rules under a basic set of (GNU make) makefiles.
|
||
|
||
Preserve the existing bootstrapping scripts (for POSIX, Windows,
|
||
and MS-DOS). Also the existing VMS build scripts are left unchanged:
|
||
I don't have enough experience with VMS to venture into this area.
|
||
Perhaps one of the VMS maintainers might like to determine whether
|
||
conversion would be appropriate.
|
||
|
||
Rather than create libraries for w32 and glob (non-POSIX), simply
|
||
link the object files directly to remove the complexity.
|
||
|
||
* NEWS: Update with user-facing notes.
|
||
* Makefile.am: Clean up to use the latest automake best practices.
|
||
Build Windows code directly from the root makefile to avoid recursion.
|
||
* README.Amiga, README.DOS.template, README.W32.template: Updated.
|
||
* INSTALL: Point readers at the README.git file.
|
||
* maintMakefile: Remove obsolete files. Create Basic.mk file.
|
||
* Basic.mk.template, mk/*.mk: Create basic GNU make-based makefiles.
|
||
* build_w32.bat: Copy Basic.mk to Makefile
|
||
* configure.ac: We no longer need AM_PROG_AR.
|
||
* dosbuild.bat: Rename to builddos.bat. Incorporate configure.bat.
|
||
* Makefile.DOS.template: Remove.
|
||
* NMakefile.template, w32/subproc/NMakefile: Remove.
|
||
* SMakefile.template, glob/SMakefile, glob/SCOPTIONS, make.lnk: Remove.
|
||
* configure.bat, glob/configure.bat: Remove.
|
||
* w32/Makefile.am: Remove.
|
||
* make_msvc_net2003.sln, make_msvc_net2003.vcproj: Remove.
|
||
|
||
2017-11-11 Paul Smith <psmith@gnu.org>
|
||
|
||
* Makefile.am: Add jhelp.pl to remote test setup.
|
||
|
||
2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
|
||
|
||
Do not use STOP_SET for singleton compares.
|
||
Compare against '$' directly rather than using MAP_VARIABLE.
|
||
This saves ~10% for find_map_function, which is the top hotspot in
|
||
QEMU's no-op build. The build is sped up overall by about 1.5%
|
||
more (from 11.1s to 10.95s).
|
||
|
||
* read.c (find_map_function): Do not compare against singleton sets.
|
||
|
||
2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
|
||
|
||
Speedup parsing of functions.
|
||
Use the stopchar map to quickly jump over everything that is
|
||
not an open/close brace, an open/close parenthesis or a comma.
|
||
|
||
This saves 1% on QEMU's noop build (from 11.23s to 11.1s).
|
||
|
||
* function.c (find_next_argument, handle_function): Check
|
||
with STOP_SET before comparing against individual characters.
|
||
* main.c (initialize_stopchar_map): Initialize MAP_VARSEP
|
||
mappings in stopchar_map.
|
||
* makeint.h (MAP_VARSEP): New.
|
||
|
||
2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
|
||
|
||
Remove MAP_PERCENT as strchr is faster.
|
||
* read.c (find_percent_cached): Use strchr instead of STOP_SET
|
||
to find % or nul.
|
||
* makeint.h (MAP_PERCENT): Remove.
|
||
* main.c (initialize_stopchar_map): Remove.
|
||
|
||
2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
|
||
|
||
Use Jenkins hash.
|
||
This is about twice as fast as the current hash, and removes the
|
||
need for double hashing (improving locality of reference). The
|
||
hash function is based on Bob Jenkins' design, slightly adapted
|
||
wherever Make needs to hash NUL-terminated strings. The old hash
|
||
function is kept for case-insensitive hashing.
|
||
|
||
This saves 8.5% on QEMU's no-op build (from 12.87s to 11.78s).
|
||
|
||
* configure.ac: Check endianness.
|
||
* hash.c (rol32, jhash_mix, jhash_final, JHASH_INITVAL,
|
||
sum_get_unaligned_32, jhash): New.
|
||
* hash.h (STRING_HASH_1, STRING_N_HASH_1): Use jhash.
|
||
(STRING_HASH_2, STRING_N_HASH_2): Return a dummy value.
|
||
(STRING_N_COMPARE, return_STRING_N_COMPARE): Prefer memcmp to strncmp.
|
||
|
||
2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
|
||
|
||
Use strchr for simple case of find_char_unquote.
|
||
In most cases, find_char_unquote has a single stopchar. In that
|
||
case we can look for it using strchr's optimized implementation.
|
||
|
||
This saves 3.5% on QEMU's noop build (from 11.78s to 11.37s).
|
||
|
||
* read.c (find_char_unquote): Rename to find_map_unquote. Replace
|
||
with an implementation optimized for the case where the stopchar
|
||
is a singleton. Adjust all callers.
|
||
|
||
2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
|
||
|
||
Use strchr/memmove in collapse_continuations.
|
||
collapse_continuations is already using strchr to speed up the
|
||
common case of no backslash-newline sequence, but on modern
|
||
processors it is faster to scan the string twice with
|
||
strchr+memmove (or strlen+memmove) than to move bytes manually.
|
||
|
||
Saves about 1.5% on QEMU's no-op build (from 11.37s to 11.23s).
|
||
|
||
* misc.c (collapse_continuations): Rewrite the scanning of LINE.
|
||
|
||
2017-10-31 Paul Smith <psmith@gnu.org>
|
||
|
||
* main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable.
|
||
* tests/jhelp.pl: New file to allow testing parallelism without sleep.
|
||
* tests/scripts/features/parallelism: Test this.
|
||
* tests/scripts/features/jobserver: Update tests.
|
||
* tests/scripts/features/output-sync: Remove useless rm command.
|
||
|
||
2017-10-30 Paul Smith <psmith@gnu.org>
|
||
|
||
* job.c (child_error): Modify error message string.
|
||
Ensure Emacs compile-mode's next-error doesn't match target failure
|
||
messages. Syntax errors in makefiles are still matched.
|
||
|
||
* function.c (func_if): Check the first character of condition.
|
||
Reported by Rob W <robw9739@gmail.com>
|
||
|
||
2017-10-30 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
glob: Do not assume glibc glob internals.
|
||
It has been proposed that glibc glob start using gl_lstat,
|
||
which the API allows it to do. GNU 'make' should not get in
|
||
the way of this. See:
|
||
https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html
|
||
|
||
* dir.c (local_lstat): New function, like local_stat.
|
||
(dir_setup_glob): Use it to initialize gl_lstat too, as the API
|
||
requires.
|
||
|
||
2017-10-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Compute load from number of running processes.
|
||
* job.c (load_too_high): If /proc/loadavg is available, compare the
|
||
maximum load against the number of processes currently running. If
|
||
we can't parse /proc/loadavg, use the previous algorithm.
|
||
|
||
Concept and initial patch from Sven C. Dack <sven.c.dack@sky.com>
|
||
|
||
2017-09-30 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix checking existence of directories on MS-Windows
|
||
* remake.c (name_mtime) [WINDOWS32]: Emulate Posix behavior of
|
||
'stat' with the likes of "foo/" and "foo/.".
|
||
|
||
2017-07-09 Paul Smith <psmith@gnu.org>
|
||
|
||
Update copyright statements for 2017.
|
||
|
||
Remove uses of unnecessary "register" keyword.
|
||
|
||
* variable.c (create_pattern_var): [SV 51266] Create with xcalloc().
|
||
Reported by Chris Metcalf <cmetcalf@mellanox.com>
|
||
|
||
[SV 51400] Only unblock fatal signals after child invocation
|
||
* job.c (unblock_sigs): Only unblock fatal signals not all signals.
|
||
(unblock_all_sigs): Unblock all signals not just fatal signals.
|
||
(child_execute_job): Call unblock_all_sigs() in child process.
|
||
* job.h: Remove unused function definitions.
|
||
* remote-cstms.c (start_remote_job): Call unblock_all_sigs() in
|
||
child process.
|
||
Reported by Koen Van Hoof <koen.van_hoof@nokia.com>
|
||
|
||
2017-07-01 Paul Smith <psmith@gnu.org>
|
||
|
||
* function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS
|
||
* tests/scripts/functions/shell: Verify that .SHELLSTATUS contains
|
||
a non-0 value when the shell exits due to a signal.
|
||
|
||
2017-06-07 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Avoid crashes when SHELL=abcde is specified on the command line
|
||
* variable.c (do_variable_definition): If $SHELL was not found,
|
||
process "SHELL=foo" as any other variable definition. This avoids
|
||
segfaults when SHELL=foo is specified on the Make command line.
|
||
Reported by Orgad Shaneh <orgads@gmail.com>.
|
||
|
||
2017-06-04 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 51159] Use a non-blocking read with pselect to avoid hangs.
|
||
* posixos.c (set_blocking): Set blocking on a file descriptor.
|
||
(jobserver_setup): Set non-blocking on the jobserver read side.
|
||
(jobserver_parse_auth): Ditto.
|
||
(jobserver_acquire_all): Set blocking to avoid a busy-wait loop.
|
||
(jobserver_acquire): If the non-blocking read() returns without
|
||
taking a token then try again.
|
||
|
||
[SV 50823] Support filenames containing '$' in MAKEFILE_LIST
|
||
* variable.h (enum variable_flavor: Add a new flavor for appended
|
||
values that shouldn't be expanded.
|
||
* variable.c (do_variable_definition): If given this new flavor,
|
||
do not expand the value before appending it.
|
||
* read.c (eval_makefile): Use this new flavor for MAKEFILE_LIST
|
||
* tests/scripts/variables/MFILE_LIST: Test filenames containing '$'.
|
||
|
||
* tests/test_driver.pl: Useful error if given an invalid test name.
|
||
|
||
* NEWS: Do not insert a space during '+=' if the value is empty.
|
||
* doc/make.texi (Appending): Document this behavior.
|
||
* variable.c (do_variable_definition): Only add a space if the variable
|
||
value is not empty.
|
||
* tests/scripts/variables/flavors: Test this behavior.
|
||
|
||
2017-06-04 Enrique Olaizola <enrique_olaizola16@hotmail.com> (tiny change)
|
||
|
||
* read.c (read_all_makefiles): [SV 50909] Add MAKEFILES to strcache
|
||
|
||
2017-06-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* po/LINGUAS: Add support for traditional Chinese (zh_TW)
|
||
|
||
Rename output_tmpfile() to a misc function get_tmpfile()
|
||
* output.c: Remove output_tmpfile() and umask handling.
|
||
* output.h: Ditto.
|
||
* misc.c: Add get_tmpfile() and umask handling.
|
||
* makeint.h: Ditto.
|
||
* function.c: Rename output_tmpfile() to get_tmpfile().
|
||
* main.c: Ditto.
|
||
* vmsjobs.c: Ditto.
|
||
|
||
[SV 13651] Handle out-of-memory conditions slightly more gracefully.
|
||
* makeint.h: Change OUT_OF_MEM() macro to out_of_memory() function.
|
||
* output.h, job.h: Move FD_* macros from job.h to output.h.
|
||
* output.c (output_write): Write a buffer to an FD directly.
|
||
(out_of_memory): Use output_write() to avoid allocating more
|
||
memory while writing the error, and call exit() instead of die().
|
||
This does mean we can't translate the error string, though.
|
||
* misc.c (xmalloc, xcalloc, xrealloc, xstrdup, xstrndup): Call new
|
||
out_of_memory() rather than OUT_OF_MEM().
|
||
* read.c (parse_file_seq): Ditto.
|
||
|
||
Clean up close-on-exec, particularly with jobserver pipes.
|
||
* configure.ac: Check sys/file.h and assume fileno() always exists.
|
||
* output.h: Move output-specific content from job.h to output.h.
|
||
* os.h (fd_inherit, fd_noinherit): New functions manage FD inheritance.
|
||
* posixos.c (fd_inherit, fd_noinherit): Implement for POSIX systems.
|
||
(jobserver_setup): Force jobserver FDs to not be inherited by default.
|
||
(jobserver_pre_child): Enable inheritance in recursive invocations.
|
||
(jobserver_post_child): Disable inheritance after recursive invocations.
|
||
* w32/w32os.c (fd_inherit, fd_noinherit): Implement for W32 systems.
|
||
* job.h (CLOSE_ON_EXEC): Remove macro in deference to new fd_noinherit.
|
||
* function.c (func_shell_base): Convert CLOSE_ON_EXEC to fd_noinherit.
|
||
* job.c (child_execute_job): Ditto.
|
||
* output.c (setup_tmpfile): Ditto.
|
||
* read.c (eval_makefile): Ditto, plus remove HAVE_FILENO check.
|
||
* w32/include/sub_proc.h: Remove process_noinherit for fd_noinherit.
|
||
* w32/subproc/sub_proc.c: Ditto.
|
||
|
||
[SV 50300] Use CFLAGS value of "-O1" in POSIX mode.
|
||
* read.c (record_files): Use "-O1" not "-O" for CFLAGS and FFLAGS.
|
||
* tests/scripts/targets/POSIX: Test for the new value.
|
||
|
||
* configure.ac: [SV 50648] Detect Guile 2.2 packages.
|
||
|
||
* doc/make.texi: [SV 50304] Add missing close parenthesis.
|
||
|
||
Add test suite support to Windows
|
||
* main.c (main): Sanitize program name detection on Windows.
|
||
* makeint.h: 'program' is a const string on all platforms now.
|
||
* tests/run_make_tests.bat: Windows bat file to invoke tests
|
||
* tests/test_driver.pl: Obtain system-specific error messages.
|
||
(get_osname): Compute the $port_type here. Add more $osname checks
|
||
for different Windows Perl ports.
|
||
(_run_command): Rewrite the timeout capability to work properly
|
||
with Windows. Don't use Perl fork/exec; instead use system(1,...)
|
||
which allows a more reliable/proper kill operation.
|
||
Also, allow options to be given as a list instead of a string, to
|
||
allow more complex quoting of command-line arguments.
|
||
* tests/run_make_tests.pl (run_make_with_options): Allow options
|
||
to be provided as a list in addition to a simple string.
|
||
(set_more_defaults): Write sample makefiles and run make on them
|
||
instead of trying to run echo and invoking make with -f-, to avoid
|
||
relying on shell and echo to get basic configuration values. Also
|
||
create a $sh_name variable instead of hard-coding /bin/sh.
|
||
* tests/scripts/features/archives: Skip on Windows.
|
||
* tests/scripts/features/escape: Use list method for passing options.
|
||
* tests/scripts/features/include: Use system-specific error messages.
|
||
* tests/scripts/features/output-sync: "Command not found" errors
|
||
generate very different / odd output on Windows. This needs to be
|
||
addressed but for now disable these tests on Windows.
|
||
* tests/scripts/functions/abspath: Disable on Windows.
|
||
* tests/scripts/functions/file: Use system-specific error messages.
|
||
* tests/scripts/functions/shell: "Command not found" errors generate
|
||
very different / odd output on Windows. This needs to be addressed
|
||
but for now disable these tests on Windows.
|
||
* tests/scripts/misc/close_stdout: Disable on Windows.
|
||
* tests/scripts/options/dash-k: Use system-specific error messages.
|
||
* tests/scripts/options/dash-l: Disable on Windows.
|
||
* tests/scripts/options/eval: Use list method for passing options.
|
||
* tests/scripts/options/general: Skip some non-portable tests.
|
||
* tests/scripts/targets/ONESHELL: Skip some non-portable tests.
|
||
* tests/scripts/targets/POSIX: Skip some non-portable tests.
|
||
* tests/scripts/variables/MAKEFILES: Skip some non-portable tests.
|
||
* tests/scripts/variables/SHELL: Use a makefile not -f- for testing.
|
||
|
||
2017-06-04 Enrique Olaizola <enrique_olaizola16@hotmail.com>
|
||
|
||
* tests/run_make_tests.pl: [SV 50902] Find Perl modules
|
||
|
||
2017-01-11 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 50021] Avoid infloop on MS-Windows with short scripts
|
||
* job.c (reap_children) [WINDOWS32]: Avoid recursive call to
|
||
reap_children when the argument passed to
|
||
map_windows32_error_to_string is negative or too large.
|
||
|
||
2016-12-28 Paul Smith <psmith@gnu.org>
|
||
|
||
* main.c (switches): Add -E as an alias for --eval.
|
||
* make.1: Document the -E and --eval options.
|
||
* doc/make.texi: Document the -E option.
|
||
* tests/scripts/options/eval: Test the -E option and MAKEFILES.
|
||
* NEWS: Add information about the new option.
|
||
|
||
* main.c (switches): Add --no-silent to undo -s options.
|
||
* make.1: Document the new flag.
|
||
* doc/make.texi: Document the new flag. Remove suggestions that the
|
||
.SILENT special target is deprecated or should not be used.
|
||
* tests/scripts/options/dash-s: Test the -s and --no-silent options.
|
||
* NEWS: Add information about the new option.
|
||
|
||
2016-12-26 Martin Dorey <martin.dorey@hds.com>
|
||
|
||
* job.c (child_execute_job): [SV 49938] Avoid spurious GCC warning.
|
||
|
||
* main.c (main): [SV 49935] Fix uninitialized variable.
|
||
|
||
2016-12-26 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 40236] Handle included file open failures properly.
|
||
* read.c (eval_makefile): Set deps->error if we discovered any
|
||
error reading makefiles, and set NONEXISTENT_MTIME so we know
|
||
it needs to be rebuilt.
|
||
* main.c (main): Clean up management of makefile_mtimes.
|
||
* tests/scripts/features/include: Add open failure testcases.
|
||
|
||
Portability changes for the test suite.
|
||
* tests/test_driver.pl: Save error strings for later comparison.
|
||
* tests/run_make_tests.pl: Create portable commands for later use.
|
||
* tests/*: Use these new variables.
|
||
|
||
[SV 20513] Un-escaped # are not comments in function invocations
|
||
* NEWS: Document the change, as a backward-incompatible change.
|
||
* main.c (main): Add 'nocomment' to the .FEATURES variable.
|
||
* read.c (remove_comments): Skip variable references during remove.
|
||
(find_char_unquote): Fix comments for new STOPMAP support.
|
||
* tests/scripts/features/escape: Test new escape syntax.
|
||
* tests/scripts/functions/guile: Ditto.
|
||
* tests/scripts/functions/shell: Ditto.
|
||
|
||
* main.c (main): [SV 40234] Show correct error message.
|
||
|
||
2016-12-26 Christoph Schulz <develop@kristov.de>
|
||
|
||
* main.c (switches): [SV 48809] Accept obsolete jobserver flag.
|
||
|
||
2016-12-26 Paul Smith <psmith@gnu.org>
|
||
|
||
* read.c (get_next_mword): [SV 49865] Make fallthrough explicit.
|
||
|
||
[SV 49114] Remove support for the NO_FLOAT compile flag.
|
||
* makeint.h (max_load_average): Always a double.
|
||
* main.c (max_load_average, default_load_average): Always doubles.
|
||
(switches): -l option is a "floating" format.
|
||
(decode_switches, define_makeflags): Support "floating" format.
|
||
* remake.c (f_mtime): Show time skew as double.
|
||
* rule.c (print_rule_data_base): Show percentages as double.
|
||
* Makefile.ami, README.DOS.template, SMakefile.template: Remove
|
||
references to NO_FLOAT.
|
||
* SCOPTIONS, glob/SCOPTIONS: Remove NO_FLOAT settings.
|
||
|
||
[SV 45477] [SV 49115] Parse DOS/Windows drivespecs correctly.
|
||
* read.c (parse_file_seq) [WINDOWS32]: Only consider a colon part of
|
||
a path if it's in a valid Windows drivespec.
|
||
|
||
2016-12-25 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 49116] Check potential null pointer dereference.
|
||
* w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell
|
||
check for correctness.
|
||
|
||
2016-12-25 Jaak Ristioja <jaak@ristioja.ee>
|
||
|
||
* expand.c (variable_append): [SV 49113] Possible null ptr deref
|
||
|
||
* w32/*/dirent.*: [SV 49111] Remove unused telldir()
|
||
|
||
2016-12-25 Paul Smith <psmith@gnu.org>
|
||
|
||
Add more GCC warnings to the maintainer build.
|
||
* arscan.c: [SV 49112] Correct TEST printf() formatting.
|
||
Recommended by Jaak Ristioja <jaak@ristioja.ee>
|
||
* hash.c: Correct fprintf() formatting.
|
||
* maintMakefile: Add extra GCC warning flags.
|
||
|
||
* po/Makevars, makeint.h, debug.h: Add xgettext C format flags.
|
||
|
||
* po/LINGUAS: Added Serbian translation.
|
||
|
||
* README.template: Clarify some items in the README
|
||
|
||
* doc/make.texi: [SV 48951] Fix documentation typo.
|
||
|
||
* maintMakefile: Update default GPG ID for new key.
|
||
|
||
2016-12-14 Paul Smith <psmith@gnu.org>
|
||
|
||
Resolve issues discovered by static code analysis.
|
||
* maintMakefile: Add a rule to submit code for analysis.
|
||
* configure.ac: Check for availability of the umask() function.
|
||
* output.c (output_tmpfd, output_tmpfile): Use umask on temp files.
|
||
* makeint.h (PATH_VAR): Reserve an extra character for nul bytes.
|
||
* function.c (func_error): Initialize buffer to empty string.
|
||
* job.c (child_execute_job): Verify validity of fdin.
|
||
* main.c (main): Simplify code for makefile updating algorithm.
|
||
* arscan.c (ar_scan): Verify member name length before reading.
|
||
* read.c (readline): Cast pointer arithmetic to avoid warnings.
|
||
* remake.c (update_file): Remove unreachable code.
|
||
(name_mtime): Verify symlink name length.
|
||
|
||
2016-11-12 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
* NEWS: Mention the extended support for -jN on MS-Windows.
|
||
|
||
2016-11-12 Marc Ullman <marc@mathworks.com>
|
||
|
||
Support more than 63 jobs on MS-Windows
|
||
* job.c (start_waiting_job, load_too_high):
|
||
* w32/w32os.c (jobserver_setup, jobserver_acquire): Abstracted out
|
||
MAXIMUM_WAIT_OBJECTS. Call process_table_full instead.
|
||
* w32/include/sub_proc.h: Update and add prototypes.
|
||
* w32/subproc/sub_proc.c (GMAKE_MAXIMUM_WAIT_OBJECTS): New macro.
|
||
(process_wait_for_multiple_objects): Drop-in replacement for Windows
|
||
API WaitForMultipleOjects.
|
||
(process_wait_for_any_private): Replaced MAXIMUM_WAIT_OBJECTS with
|
||
GMAKE_MAXIMUM_WAIT_OBJECTS.
|
||
(process_table_full): Replacement for process_used_slots.
|
||
(process_used_slots): Removed, as no longer needed.
|
||
(process_table_usable_size): Returns maximum usable size of process
|
||
table.
|
||
(process_table_actual_size): Returns actual size of process table.
|
||
(process_register): Added assertion.
|
||
(process_easy): Abstracted out MAXIMUM_WAIT_OBJECTS.
|
||
|
||
2016-10-09 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Only include strings.h in MinGW builds
|
||
* main.c:
|
||
* job.c: Include strings.h only if HAVE_STRINGS_H is defined.
|
||
|
||
* config.h.W32.template (HAVE_STRINGS_H): Define only for MinGW,
|
||
as MSVC doesn't have this header.
|
||
|
||
2016-10-06 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Update the Guile version tested with the MS-Windows build.
|
||
|
||
Avoid compiler warnings with MinGW runtime 3.22.2
|
||
* main.c:
|
||
* job.c: Include strings.h, to get the prototypes of strcasecmp
|
||
and strncasecmp with latest MinGW runtime versions.
|
||
* config.h.W32.template (HAVE_STRINGS_H): Define.
|
||
|
||
2016-06-24 Paul Smith <psmith@gnu.org>
|
||
|
||
* README.W32.template: Update the build documentation.
|
||
* build_w32.bat: Fix issues with Visual Studio builds. Fix an error
|
||
that always created Debug builds. Support 32bit and 64bit builds.
|
||
|
||
* Update to pre-release version 4.2.90.
|
||
|
||
2016-06-10 Paul Smith <psmith@gnu.org>
|
||
|
||
GNU Make release 4.2.1.
|
||
|
||
2016-06-06 Paul Smith <psmith@gnu.org>
|
||
|
||
* maintMakefile: TP recommends rsync for retrieving PO files.
|
||
|
||
2016-05-31 Jeremy Devenport <jeremy.devenport@gmail.com> (tiny change)
|
||
|
||
* main.c (main): [SV 48009] Reset stack limit for make re-exec.
|
||
|
||
2016-05-31 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 47995] Ensure forced double-colon rules work with -j.
|
||
The fix for SV 44742 had a side-effect that some double-colon targets
|
||
were skipped. This happens because the "considered" facility assumed
|
||
that all targets would be visited on each walk through the dependency
|
||
graph: we used a bit for considered and toggled it on each pass; if
|
||
we didn't walk the entire graph on every pass the bit would get out
|
||
of sync. The new behavior after SV 44742 might return early without
|
||
walking the entire graph. To fix this I changed the considered value
|
||
to an integer which is monotonically increasing: it is then never
|
||
possible to incorrectly determine that a previous pass through the
|
||
graph already considered the current target.
|
||
|
||
* filedef.h (struct file): make CONSIDERED an unsigned int.
|
||
* main.c (main): No longer need to reset CONSIDERED.
|
||
* remake.c (update_goal_chain): increment CONSIDERED rather than
|
||
inverting it between 0<->1.
|
||
(update_file_1): Reset CONSIDERED to 0 so it's re-considered.
|
||
(check_dep): Ditto.
|
||
* tests/scripts/features/double_colon: Add a regression test.
|
||
|
||
2016-05-31 Paul Smith <psmith@gnu.org>
|
||
|
||
* DELETE_ON_ERROR: [SV 48061] Use "exit 1" for portability.
|
||
Reported by Joel Fredrikson <Joel.Fredrikson@it.uu.se>
|
||
|
||
* w32/pathstuff.c: [SV 47996] Use ISBLANK() not isblank().
|
||
|
||
2016-05-28 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix printing time stamps on MS-Windows
|
||
* dir.c (print_dir_data_base) [WINDOWS32]: Use %I64u format for
|
||
printing unsigned 64-bit data types, as %ull is not universally
|
||
supported.
|
||
|
||
2016-05-27 Luke Allardyce <lukeallardyce@gmail.com> (tiny change)
|
||
|
||
[SV 48037] Fix MinGW build with Posix configury tools
|
||
* w32/Makefile.am (libw32_a_CPPFLAGS): Add -I$(srcdir)/glob.
|
||
|
||
2016-05-22 Paul Smith <psmith@gnu.org>
|
||
|
||
GNU Make release 4.2.
|
||
|
||
2016-05-21 Joe Crayne <oh.hello.joe@gmail.com> (tiny change)
|
||
|
||
[SV 44742] Fix double-colon rules plus parallel builds.
|
||
* remake.c (update_file): Don't update double-colon target status
|
||
if we're still building targets.
|
||
(ftime_t): Don't propagate timestamps for double-colon targets that
|
||
we've not examined yet.
|
||
* tests/scripts/features/double_colon: Add parallel build tests.
|
||
|
||
2016-05-21 Paul Smith <psmith@gnu.org>
|
||
|
||
* read.c (eval): [SV 47960] Skip record waiting files when ignoring.
|
||
* tests/scripts/features/conditionals: Test this scenario.
|
||
|
||
Separate the GNU make load ABI from internal types.
|
||
Create an internal type "floc" and convert all users to that type.
|
||
* gnumake.h (gmk_floc): Remove the offset field from this type.
|
||
* loadapi.c (gmk_eval): Convert gmk_floc to internal floc.
|
||
|
||
2016-05-21 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
Fixes for enhanced GCC warnings.
|
||
Move function prototypes into header files and out of .c files.
|
||
Use void argument lists for functions that accept no args.
|
||
Remove unused macros. Make private functions static. Align
|
||
types with printf format characters.
|
||
|
||
2016-05-21 Paul Smith <psmith@gnu.org>
|
||
|
||
Fix compile issues with Windows and VMS.
|
||
* main.c (initialize_stopchar_map): isblank() is not part of C89.
|
||
Install bits for space and tab directly.
|
||
* makeint.h: Don't define vfork; autoconf handles this for us.
|
||
* vmsjobs.c: Rename NEXT_TOKEN to V_NEXT_TOKEN to avoid conflicts.
|
||
* dir.c (print_dir_data_base): Visual Studio C doesn't have int64_t.
|
||
* w32/subproc/sub_proc.c (process_begin): Missing arg to memset().
|
||
* build_w32.bat: Don't use obsolete Visual Studio flags.
|
||
|
||
Allow compiling with an ISO C 1989/1990 compiler.
|
||
* posixos.c (jobserver_post_child): Use C89 for loop syntax.
|
||
* remake.c (update_goal_chain): Ditto.
|
||
* variable.c (parse_variable_definition): Ditto.
|
||
|
||
2016-05-17 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 47942] Avoid random crashes in subordinate programs on MS-Windows
|
||
* w32/subproc/sub_proc.c (process_begin): Zero out startInfo
|
||
before using it. Fixes crashes in Intel Fortran compiler invoked
|
||
by Make.
|
||
|
||
2016-04-24 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix the MS-Windows MinGW build
|
||
* build_w32.bat (GccCompile): Use -std=gnu99, as some code uses
|
||
C99 features ('for' loop initial declarations).
|
||
|
||
* dir.c (print_dir_data_base) [WINDOWS32]: Cast 'mtime' to
|
||
'int64_t', and use %I64d to print it, to avoid compile-time
|
||
warning about printing a 'time_t' value, which could be either
|
||
a 32-bit or a 64 bit integral type.
|
||
|
||
2016-04-23 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/output-sync: increase test timeout.
|
||
I'm getting random failures with a timeout of 10s; increase to 30s.
|
||
|
||
2016-04-11 Paul Smith <psmith@gnu.org>
|
||
|
||
* NEWS: Update for pre-release
|
||
|
||
* dep.h, makeint.h (show_goal_error): Move to makeint.h.
|
||
|
||
2016-04-11 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 46433] Show recipe line offsets in line number messages.
|
||
While displaying line numbers, show the relevant line number inside
|
||
the recipe not just the first line of the entire recipe.
|
||
Sample changes suggested by Brian Vandenberg <phantall@gmail.com>
|
||
|
||
* gnumake.h (gmk_floc): Add an 'offset' to track the recipe offset.
|
||
* read.c (eval, eval_makefile, eval_buffer): Initialize 'offset'.
|
||
(record_files, install_pattern_rule): Ditto.
|
||
* job.c (new_job, job_next_command): Update 'offset' based on the
|
||
line of the recipe we're expanding or invoking.
|
||
(child_error): Add 'offset' when showing the line number.
|
||
* function.c (func_shell_base): Ditto.
|
||
* output.c (error, fatal): Ditto.
|
||
* NEWS: Mention the new ability.
|
||
* tests/scripts/features/errors: Check the line number on errors.
|
||
* tests/scripts/functions/warning: Check the line number on warnings.
|
||
* tests/scripts/features/output-sync,
|
||
tests/scripts/features/parallelism, tests/scripts/functions/shell,
|
||
tests/scripts/functions/error: Update line numbers.
|
||
|
||
2016-04-09 Paul Smith <psmith@gnu.org>
|
||
|
||
* maintMakefile: Add a rule for storing preprocessor output.
|
||
|
||
[SV 102] Don't show unnecessary include file errors.
|
||
Delay the generation of error messages for included files until we
|
||
are sure that we can't rebuild that included file.
|
||
* dep.h (struct dep): Don't reuse "changed"; make a separate field
|
||
to keep "flags". Get rid of dontcare and use the flag.
|
||
(struct goaldep): Create a new structure for goal prereqs
|
||
that tracks an errno value and the floc where the include happened.
|
||
Rework the structures to ensure they are supersets as expected.
|
||
In maintainer mode with GCC, use inline to get type checking.
|
||
* read.c (eval_makefile): Return a struct goaldep for the new
|
||
makefile. Ensure errno is set properly to denote a failure.
|
||
(read_all_makefiles): Switch to goaldep and check errno.
|
||
(eval): Don't show included file errors; instead remember them.
|
||
* remake.c (update_goal_chain): Set global variables to the current
|
||
goaldep we're building, and the entire chain.
|
||
(show_goal_error): Check if the current failure is a consequence
|
||
of building an included makefile and if so print an error.
|
||
(complain): Call show_goal_error() on rule failure.
|
||
* job.c (child_error): Call show_goal_error() on child error.
|
||
* main.c (main): Switch from struct dep to goaldep.
|
||
* misc.c (free_dep_chain): Not used; make into a macro.
|
||
* tests/scripts/features/include: Update and include new tests.
|
||
* tests/scripts/options/dash-B, tests/scripts/options/dash-W,
|
||
tests/scripts/options/print-directory,
|
||
tests/scripts/variables/MAKE_RESTARTS: Update known-good-output.
|
||
|
||
* job.c (child_error): Add filename length to output length.
|
||
Reported by Dale Stimson <dale@riyescott.com>
|
||
|
||
2016-04-04 Paul Smith <psmith@gnu.org>
|
||
|
||
Preserve the real value of -jN in MAKEFLAGS using jobserver.
|
||
Previously if the jobserver was active, MAKEFLAGS would contain only
|
||
the -j option but not the number (not -j5 or whatever) so users
|
||
could not discover that value. Allow that value to be provided in
|
||
MAKEFLAGS without error but still give warnings if -jN is provided
|
||
on the command line if the jobserver is already activated.
|
||
|
||
* NEWS: Discuss the new behavior.
|
||
* os.h, posixos.c, w32/w32os.c: Return success/failure from
|
||
jobserver_setup() and jobserver_parse_auth().
|
||
* main.c (main): Separate the command line storage of job slots (now
|
||
in arg_job_slots) from the control storage (in job_slots). Make a
|
||
distinction between -jN flags read from MAKEFLAGS and those seen
|
||
on the command line: for the latter if the jobserver is enabled then
|
||
warn and disable it, as before.
|
||
* tests/scripts/features/jobserver: Add new testing.
|
||
|
||
2016-04-04 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/run_make_tests.pl: Add file/lineno info to .run file.
|
||
|
||
* maintMakefile: Fix logging of check-alt-config target.
|
||
|
||
* job.c (child_execute_job): Fix $(shell...) under NO_OUTPUT_SYNC.
|
||
* main.c (decode_output_sync_flags): Use NONE for NO_OUTPUT_SYNC.
|
||
|
||
* main.c (main): Restrict disabling debugging for MAKEFILES.
|
||
|
||
* Makefile.am, w32/Makefile.am: Fix *os.c for Windows builds.
|
||
Original change provided by Luke Allardyce <lukeallardyce@gmail.com>
|
||
|
||
* make.texi: Confirm that CURDIR contains an absolute path.
|
||
|
||
* docs/make.texi: [SV 47392] Add "Integrating make" chapter.
|
||
|
||
Change --jobserver-fds to more generic --jobserver-auth.
|
||
* NEWS: Mention the change.
|
||
* main.c: Rename jobserver_fds variable to jobserver_auth and
|
||
--jobserver-fds option to --jobserver-auth.
|
||
* os.h, posixos.c, w32/w32os.c: Rename jobserver_parse_arg() and
|
||
jobserver_get_arg() to jobserver_parse_auth()/jobserver_get_auth().
|
||
|
||
2016-03-23 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/run_make_tests.pl: Preserve $make_command
|
||
* tests/scripts/options/dash-n: Use $make_command. This fixes
|
||
a spurious failure when running tests with valgrind enabled.
|
||
|
||
* variable.c: Clean up some memory leaks.
|
||
|
||
[SV 46995] Strip leading/trailing space from variable names
|
||
* makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP
|
||
and MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE. Create
|
||
NEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros.
|
||
* main.c (initialize_stopchar_map): Set MAP_NEWLINE only for
|
||
newline characters.
|
||
* Convert all uses of isblank() and isspace() to macros.
|
||
* Examine all uses of isblank() (doesn't accept newlines) and
|
||
change them wherever possible to ISSPACE() (does accept newlines).
|
||
* function.c (func_foreach): Strip leading/trailing space.
|
||
* variable.c (parse_variable_definition): Clean up.
|
||
* tests/scripts/functions/foreach: Test settings and errors.
|
||
* tests/scripts/functions/call: Rewrite to new-style.
|
||
* tests/scripts/misc/bs-nl: Add many more tests for newlines.
|
||
|
||
2016-03-21 Paul Smith <psmith@gnu.org>
|
||
|
||
* function.c (func_file): Support reading from files.
|
||
* NEWS: Add information about reading files.
|
||
* make.texi (File Function): Describe reading files.
|
||
* tests/scripts/functions/file: Test new features for $(file ...)
|
||
|
||
2016-03-20 Paul Smith <psmith@gnu.org>
|
||
|
||
* doc/make.texi (Setting Variables): Fix typo (add comma).
|
||
|
||
* job.c (child_error): Combine file info with error message.
|
||
* tests/scripts/...: Update error message matches.
|
||
|
||
2016-03-19 Paul Smith <psmith@gnu.org>
|
||
|
||
* variable.c: Align type of variable_changenum.
|
||
|
||
2016-03-13 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 45728] Detect changes in .VARIABLES more accurately.
|
||
For performance, we only recompute .VARIABLES when (a) it's expanded
|
||
and (b) when its value will change from a previous expansion. To
|
||
determine (b) we were checking the number of entries in the hash
|
||
table which used to work until we started undefining entries: now if
|
||
you undefine and redefine the same number of entries in between
|
||
expanding .VARIABLES, it doesn't detect any change. Instead, keep
|
||
an increasing change number.
|
||
* variables.c: Add variable_changenum.
|
||
(define_variable_in_set, merge_variable_sets): Increment
|
||
variable_changenum if adding a new variable to the global set.
|
||
(undefine_variable_in_set): Increment variable_changenum if
|
||
undefining a variable from the global set.
|
||
(lookup_special_var): Test variable_changenum not the hash table.
|
||
* tests/scripts/variables/special: Test undefining variables.
|
||
|
||
* main.c(main): Disable output sync without parallel builds.
|
||
|
||
[SV 46581] Pre-define .LOADED to avoid warnings.
|
||
* main.c (main): Pre-define .LOADED as a default-level variable.
|
||
* load.c (load_file): Set the value rather than append it. Avoid
|
||
adding an extra initial whitespace.
|
||
* tests/scripts/features/load: Run with --warn-undefined-variables.
|
||
|
||
2016-03-13 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 44555] Use vfork() instead of fork() where available.
|
||
Testing has shown that vfork() is actually significantly
|
||
more efficient on systems where it's supported, even for
|
||
copy-on-write implementations. If make is big enough,
|
||
duplicating the page tables is significant overhead.
|
||
|
||
* configure.ac: Check for fork/vfork.
|
||
* makeint.h: Include vfork.h and set up #define for it.
|
||
* os.h, posixos.c (get_bad_stdin): For children who can't use
|
||
the normal stdin file descriptor, get a broken one.
|
||
* job.c (start_job_command): Avoid so many ifdefs and simplify
|
||
the invocation of child_execute_job()
|
||
(child_execute_job): move the fork operation here so it can
|
||
return early for the parent process. Switch to use vfork().
|
||
* function.c (func_shell_base): Use new child_execute_job() and
|
||
simplify ifdefs.
|
||
* job.h, main.c, remote-cstms.c, vmsjobs.c, w32os.c: Update
|
||
declarations and calls.
|
||
|
||
2016-03-09 Paul Smith <psmith@gnu.org>
|
||
|
||
* job.c (exec_command): [SV 47365] Show error on exec failure.
|
||
|
||
2016-03-08 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 46261] Use pselect() for jobserver where supported.
|
||
* Makefile.am, configure.ac: Check for pselect() and sys/select.h.
|
||
* main.c (main): Block SIGCHLD if we have pselect() support.
|
||
* posixos.c (jobserver_acquire): If we support pselect() then use
|
||
it to query the jobserver pipe, while also listening for SIGCHLD.
|
||
Also pselect() supports a timeout so avoid alarm() calls.
|
||
|
||
Clean up some compiler warnings.
|
||
* commands.c, commands.h: Use unsigned char for flags.
|
||
* dir.c: Use time_t and size_t, and char for a boolean value.
|
||
* job.c: Use unsigned and char.
|
||
* read.c: Return a signed type since -1 is a valid return code.
|
||
|
||
Extract jobserver implementation into OS-specific files.
|
||
* os.h, posixos.c, w32/w32os.c: New files implementing jobserver.
|
||
* job.c, job.h, main.c, makeint.h: Move content to new files.
|
||
* w32/include/sub_proc.h, w32/subproc/sub_proc.c: Ditto.
|
||
* Makefile.am: Build and package OS-specific files.
|
||
* build_w32.bat, make_msvc_net2003.vcproj, README.W32.template:
|
||
Update for new files, and clean up the build.
|
||
* POTFILES.in, maintMakefile, NMakefile.template: Ditto.
|
||
* w32/subproc/build.bat: Delete as unused.
|
||
|
||
[SV 46261] Add more EINTRLOOP wrappers.
|
||
This cannot be a perfect solution because there are always other
|
||
possible places EINTR can happen, including external libraries
|
||
such as gettext, Guile etc.
|
||
|
||
2016-02-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* strcache.c (add_hugestring): [SV 46832] Support huge strings.
|
||
The strcache was limited to strings of length 65535 or less,
|
||
because the length is kept in an unsigned short. To support
|
||
huge strings add a new simple linked list, which we don't try
|
||
to hash.
|
||
|
||
* strcache.c (add_string): [SV 47071] Handle huge initial string.
|
||
If the very first string added to the string cache is more than
|
||
half the maximum size, we failed when moving the only strcache
|
||
buffer to the full list.
|
||
|
||
[SV 47151] Exit with 1 when checking recursive make -q
|
||
* job.h (struct child): New bit to mark recursive command lines.
|
||
* job.c (start_job_command): Set the recursive command line bit.
|
||
(reap_children): If the child is a recursive command and it exits
|
||
with 1 during question mode, don't print an error and exit with 1.
|
||
* tests/scripts/options/dash-q: Add a regression test.
|
||
|
||
* main.c (define_makeflags): Add parens to avoid GCC warning.
|
||
|
||
2016-02-29 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/features/archives: Handle deterministic archives.
|
||
Newer versions of binutils allow ar to be compiled to generate
|
||
"deterministic archives" by default: in this mode no timestamp
|
||
information is generated in the static archive, which utterly
|
||
breaks GNU make's archive updating capability. Debian and Ubuntu
|
||
have turned this feature on by default in their distributions
|
||
which causes the regression tests to fail.
|
||
|
||
Update the regression tests to check for the availability of the
|
||
"U" option to ar which disables deterministic archives and allows
|
||
GNU make's archive support to work properly again.
|
||
|
||
2016-02-28 Paul Smith <psmith@gnu.org>
|
||
|
||
Update Copyright statements for the new year.
|
||
|
||
* doc/make.texi: [SV 47163] Fix typo in 'ifdef' documentation.
|
||
|
||
* doc/make.texi: [SV 35455] Add more uses for Empty Recipes.
|
||
|
||
2015-11-07 Gisle Vanem <gvanem@yahoo.no>
|
||
|
||
Fix diagnostics on MS-Windows when environment is too large
|
||
* w32/subproc/sub_proc.c (process_begin): Fix test of the error
|
||
cause when the environment block is too large.
|
||
|
||
2015-10-27 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Update README.W32.template
|
||
* README.W32.template: Update for latest developments. Make it
|
||
clear we don't recommend using HAVE_CASE_INSENSITIVE_FS in
|
||
general.
|
||
|
||
[SV 46304] Don't invoke C++ compiler on C sources on MS-Windows
|
||
* default.c (default_variables) [HAVE_CASE_INSENSITIVE_FS]: Make
|
||
COMPILE.C and LINK.C be synonyms for COMPILE.c and LINK.c,
|
||
respectively.
|
||
|
||
2015-09-23 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 45838] When invoking w32 programs, don't use free'd memory.
|
||
* w32/subproc/sub_proc.c (process_begin): Freeing argv[0] makes
|
||
the other argv[i] pointers invalid, so need to allocate a new
|
||
array and copy argv[i] for i != 0 first, replacing argv[0] with
|
||
the batch file name, before we can free argv[0].
|
||
|
||
2015-07-13 Paul Smith <psmith@gnu.org>
|
||
|
||
* implicit.c (pattern_search): [SV 43677] Mark files secondary.
|
||
In order to fix SV 12267 we were marking the prerequisites of
|
||
implicit (pattern) targets that existed elsewhere in the makefile
|
||
as precious to keep them from being deleted as intermediate files.
|
||
However this also keeps them from being deleted on error. Instead
|
||
mark them as secondary.
|
||
* tests/scripts/targets/DELETE_ON_ERROR: Test DELETE_ON_ERROR.
|
||
|
||
2015-07-12 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 28092] Preserve the exit status of the $(shell...) function.
|
||
Add a new variable .SHELLSTATUS which holds the exit status of the
|
||
last-invoked shell function or != assignment.
|
||
|
||
* NEWS, doc/make.texi: Document the change.
|
||
* function.c (shell_completed, msdos_openpipe, func_shell_base): Add
|
||
shell_completed() to handle the completion of the shell, by setting
|
||
.SHELLSTATUS. Call it where needed.
|
||
* job.c (child_handler): Call shell_completed().
|
||
* tests/scripts/functions/shell: Add tests for .SHELLSTATUS.
|
||
|
||
2015-07-12 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/scripts/misc/fopen-fail: [SV 42390] Increase test timeout.
|
||
* Makefile.am (check-regression): Force ulimit -n for fopen-fail test.
|
||
|
||
* job.c: [SV 43936] Check sigaction for error return.
|
||
|
||
[SV 45049] Check for '$' being the last character in a string.
|
||
* expand.c (variable_expand_string): Add a single '$' if '$' ends the
|
||
string.
|
||
* read.c (find_char_unquote, get_next_mword): Stop if '$' ends the
|
||
string.
|
||
* variable.c (parse_variable_definition): Ditto.
|
||
|
||
* read.c (unescape_char): [SV 45050] Handle final backslashes.
|
||
If the last thing in the string to be unescaped is a backslash,
|
||
stop without reading beyond the end of the string.
|
||
|
||
* strcache.c: [SV 45275] Handle very long strings.
|
||
Our previous behavior for handling too-long strings involved
|
||
increasing the size of the default string cache buffer, but the
|
||
implementation was incomplete. Instead, create a one-off large
|
||
string cache entry and add it directly to the full cache list
|
||
without changing the default buffer size.
|
||
|
||
2015-07-12 Duncan Moore <duncan.moore@gmx.com> (tiny change)
|
||
|
||
* job.c [RISCOS]: Remove logic that is no longer required.
|
||
|
||
2015-07-12 Paul Smith <psmith@gnu.org>
|
||
|
||
* remake.c (update_file): [SV 44742] Keep double-colon rule status.
|
||
Fix suggested by Everett Boyer <EvBoyer@aol.com>
|
||
|
||
2015-07-10 James Johnston <johnstonj.public@codenest.com> (tiny change)
|
||
|
||
[SVN 45515] Check exit status of sub-make in subproc.bat
|
||
* subproc.bat: Exit when sub-make invocation fails.
|
||
|
||
2015-07-10 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 45515] Ignore Windows-specific build artifacts
|
||
* .gitignore: Ignore *.exe, *.dll.a, *.lib, *pdb, and a few more MSVC
|
||
specific artifacts.
|
||
Suggested by James Johnston <johnstonj.public@codenest.com>
|
||
|
||
2015-02-28 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 44348] Fix handling of shell widlcards on MS-Windows.
|
||
* job.c (construct_command_argv_internal): If shell wildcard
|
||
characters are found inside a string quoted with "..", give up the
|
||
fast route and go through the shell. Fixes Savannah bug #44348.
|
||
|
||
2015-01-27 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
Fix bs-nl handling, exit and Environment for VMS.
|
||
This fix required a complete rewrite of the command parser vmsjobs.c
|
||
child_execute_job. The old parser had too many incorrect assumptions
|
||
about DCL commands and could not be repaired to extended.
|
||
|
||
The parser now more closely parses VMS commands and handles quoted
|
||
commands and redirection. Command File mode has been improved, but can
|
||
not fully support bs-nl syntax.
|
||
|
||
VMS Unix shell simulation has been improved.
|
||
|
||
* commands.c: vms_comma_separator is now a run-time setting.
|
||
* function.c: vms_comma_separator is now a run-time setting.
|
||
* function.c(func_basename_dir) now reports "[]" or "./" based on
|
||
VMS crtl runtime setting.
|
||
* job.c(start_job_command): VMS Handle empty commands propery.
|
||
* main.c: Add VMS environment variables for run-time settings.
|
||
* vms_legacy_behavior - Force older behavior.
|
||
* vms_comma_separator - Commas or spaces for separators.
|
||
* vms_unix_simulation - Enhanced Posix shell simulation features.
|
||
* Detect if VMS CRTL is set to report Unix paths instead of VMS.
|
||
* ':' and '>' are also MAP_DIRSEP on VMS.
|
||
* makeint.h: Add VMS run-time option variables.
|
||
* readme.vms: Update to current behavior.
|
||
* variable.c(define_variable_in_set): Fix VMS Environment variable
|
||
lookup.
|
||
* variable.c(define_automatic_variables): Remove some VMS specific
|
||
automatic variables and use the Unix ones instead.
|
||
* vms_export_symbol.c: Set max symbol size correctly.
|
||
* vmsjobs.c: child_execute_job() complete rewrite of VMS comand
|
||
parsing.
|
||
* vmsjobs.c(build_vms_cmd): VMS commmand building with shell simulation.
|
||
|
||
2014-12-27 Christian Boos <cboos@edgewall.org> (tiny change)
|
||
|
||
Fix $(shell) on hosts with 64-bit pid_t.
|
||
* function.c: Use pid_t for shell_function_pid.
|
||
* job.c: Likewise.
|
||
|
||
2014-10-20 Paul Smith <psmith@gnu.org>
|
||
|
||
* main.c (main): [SV 43434] Handle NULL returns from ttyname().
|
||
|
||
2014-10-20 Benedikt Morbach <benedikt.morbach@googlemail.com> (tiny change)
|
||
|
||
* tests/scripts/features/archives: [SV 43405] override AR variable.
|
||
|
||
2014-10-20 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
Fix VMS implicit rules and UNIX paths.
|
||
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-10-20 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
Update README.VMS and move news to the NEWS file
|
||
* NEWS: Merge in VMS history.
|
||
* README.VMS: Remove VMS history, document current behavior and
|
||
known issues.
|
||
|
||
2014-10-20 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
[SV 41758]: Fix archive support for VMS.
|
||
Upated to match change to run_make_tests and some future fixes to
|
||
make on VMS.
|
||
|
||
* arscan.c: Use ANSI compatible pragmas instead of VAX C extensions.
|
||
* tests/scripts/features/archives: Fix tests to use VMS rules and
|
||
answers when running on VMS and using DCL as a shell.
|
||
* tests/scripts/features/vpath3: Fix epected answer on test when
|
||
run on VMS.
|
||
* tests/scripts/vms/library: (New) Test the VMS library rules that
|
||
are not tested by existing tests.
|
||
|
||
2014-10-20 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
[SV 42447]: VMS simulate exporting symbols
|
||
This also includes fixing the most of the exit handling code for VMS.
|
||
|
||
Self tests:
|
||
Previously about 94 Tests in 36 categories fail.
|
||
Now about 45 tests in 22 categories fail.
|
||
|
||
Because some tests do not properly clean up, the number of tests that
|
||
fail can vary by one or two test cases between consecutive runs.
|
||
|
||
* Makefile.am: Add new VMS files.
|
||
* job.c: add prototype for vms_strsignal().
|
||
* job.c: (child_error): Remove VMS specific code as no longer needed.
|
||
* job.c: (reap_children): The VMS specific code was setting the
|
||
status to 0 instead of setting it to the proper exit status.
|
||
* job.h: Add vms_launch_status to struct child.
|
||
* main.c: (main): Use environment variables for options to use MCR
|
||
* instead of a foreign command, and to always use command files for
|
||
subprocesses.
|
||
For VMS use (set_program_name) routine which is common to ports of
|
||
other GNU packages to VMS to set the program name used internally.
|
||
Use (vms_putenv_symbol) to set up symbols to be visible in child
|
||
programs, including recursive make launched by execve()
|
||
Start of Bash shell detection code for VMS.
|
||
* makefile.com: Need nested_include=none for building on VMS search
|
||
lists. Add vms_progname, vms_exit, and vms_export_symbol.
|
||
* makefile.vms: Need nested_include=none for building on VMS search
|
||
lists. Add vms_progname, vms_exit, vms_export_symbol.
|
||
* makeint.h: Make sure non-standard "VMS" macro is defined. Add
|
||
prototypes for new VMS routines. Remove VMS-specific failure codes.
|
||
* vmsjobs.c: Add VMS POSIX exit code constants.
|
||
(_is_unixy_shell): Detect Bash shell.
|
||
(vms_strsignal): simulate strsignal() on VMS.
|
||
(vmsHandleChildTerm): fix to properly report failed LIB$SPAWN() exit
|
||
status codes. Remove code that duplicated code in job.c.
|
||
(child_execute_job): Export environment symbols before spawning a
|
||
child and restore afterward unless option to use command files for
|
||
subprocesses is set. Improve handling of UNIX null commands ":".
|
||
* vms_exit.c: Provides vms_exit() to detect if an exit code is UNIX
|
||
or VMS, and converts the UNIX code into a VMS exit code.
|
||
* vms_export_symbol.c: Routines to create DCL symbols that work like
|
||
shell aliases or exported shell symbols and clean them up on exit.
|
||
* vms_export_symbol_test.com: Unit test for vms_export_symbol.c
|
||
* vms_progname.c: New file: VMS specific replace for progname.c that
|
||
is used in some GNU projects.
|
||
|
||
2014-10-20 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
Set up for running tests on VMS.
|
||
* run_make_tests.pl: set $port_type to be 'VMS-DCL' when the test are
|
||
run from the VMS DCL Interpreter. When the tests are run from GNV
|
||
on VMS, the $port_type will be 'UNIX'.
|
||
* run_make_tests.com: VMS search list support. This is needed for
|
||
using a search list such as prj_root = lcl_root:,vms_root:,src_root:
|
||
for building and testing.
|
||
|
||
2014-10-09 Paul Smith <psmith@gnu.org>
|
||
|
||
* configure.ac, NEWS, README.git: Set up for the next release.
|
||
|
||
2014-10-05 Paul Smith <psmith@gnu.org>
|
||
|
||
GNU Make release 4.1.
|
||
|
||
2014-10-02 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix Cygwin compilation error.
|
||
* job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Fix
|
||
initializer for sh_chars_sh.
|
||
Reported by Denis Excoffier<cygwin@Denis-Excoffier.org>.
|
||
|
||
2014-10-01 Gisle Vanem <gvanem@yahoo.no>
|
||
|
||
Fix last commit.
|
||
|
||
* makeint.h (ftruncate): Define also for __WATCOMC__.
|
||
|
||
2014-10-01 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Avoid compilation warnings.
|
||
* main.c (find_and_set_default_shell, main) [WINDOWS32]: Declare
|
||
variables 'const char *' to avoid compiler warnings.
|
||
* job.c (construct_command_argv_internal) [!NDEBUG]: Declare 'end'
|
||
and set it only if NDEBUG is not defined, to avoid compiler
|
||
warnings.
|
||
|
||
Treat redirection of standard handles on Windows as it is done on Unix.
|
||
* job.c (start_job_command) [WINDOWS32]: Compute outfd and errfd
|
||
as on Posix platforms, and pass the results to process_easy.
|
||
* function.c (windows32_openpipe) [WINDOWS32]: Accept an
|
||
additional argument ERRFD and use it for redirecting the standard
|
||
error handle passed to the subprocess.
|
||
(func_shell_base) [WINDOWS32]: Pass the computed errfd to
|
||
windows32_openpipe.
|
||
|
||
2014-09-30 Paul Smith <psmith@gnu.org>
|
||
|
||
Update Copyright statements for 2014.
|
||
|
||
* tests/scripts/features/load: Avoid unused variable warnings.
|
||
|
||
* loadapi.c (gmk_eval): Use C90 syntax.
|
||
|
||
2014-09-30 Hartmut Becker <becker.ismaning@freenet.de>
|
||
|
||
* job.c: fix make action continuation lines.
|
||
* vmsjobs.c: fix writing DCL command files when trimming (white
|
||
spaces and $ signs) especially after a split (command continuation).
|
||
|
||
2014-09-15 Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> (tiny change)
|
||
|
||
* configure.ac: Fix spacing in helptext of customs
|
||
|
||
2014-09-15 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Support MAKE_TERMOUT and MAKE_TERMERR on MS-Windows.
|
||
* w32/compat/posixfcn.c (isatty, ttyname): New functions.
|
||
* config.h.W32.template (HAVE_TTYNAME): Define. Add a prototype
|
||
for ttyname.
|
||
|
||
2014-09-15 Paul Smith <psmith@gnu.org>
|
||
|
||
* loadapi.c (gmk_eval): [SV 43221] Preserve var buff content for eval.
|
||
|
||
* main.c, NEWS, doc/make.text: Rename MAKE_TTY* to MAKE_TERM*
|
||
|
||
2014-09-14 Paul Smith <psmith@gnu.org>
|
||
|
||
* main.c (main): Set MAKE_TTYOUT and MAKE_TTYERR.
|
||
* configure.ac: Test for isatty() and ttyname()
|
||
* makeint.h: provide a substitute for ttyname() if it's not available.
|
||
* config.ami.template, config.h-vms.template, config.h.W32.template:
|
||
define/undefine HAVE_ISATTY/HAVE_TTYNAME macros.
|
||
* NEWS, doc/make.texi: Document these new variables.
|
||
|
||
2014-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* tests/config-flags.pm.in, tests/scripts/features/archives: [SV 43046]
|
||
Use the "ar" program detected by configure when running the test suite.
|
||
|
||
* doc/make.texi: Clarify implicit rule lookup of phony targets
|
||
Reported by Frank Heckenbach <f.heckenbach@fh-soft.de>
|
||
|
||
2014-09-07 Hartmut Becker <becker.ismaning@freenet.de>
|
||
|
||
Fix and enhance VMS library support.
|
||
* ar.c: fix VMS library search for members, which do not have
|
||
suffixes, aka filename extensions.
|
||
* arscan.c: fix time conversion and library callback routines.
|
||
* default.c: more suffixes and automatically create the VMS library
|
||
if it doesn't exists.
|
||
|
||
Enhance VMS exporting make environment variables.
|
||
* config.h-vms.template: add feature macro USE_DCL_COM_FILE to always
|
||
write a DCL command file, enabled by default.
|
||
* vmsjobs.c: with USE_DCL_COM_FILE enabled write make variables as DCL
|
||
symbol assignments into the command file. This enables printing
|
||
directory and make level info for recursive use of make. This also
|
||
enables forced DCL symbol substitution in the actions.
|
||
|
||
Fix VMS automatic variable expansion
|
||
* function.c: add VMS code to func_notdir_suffix and func_basename_dir
|
||
to work on comma separated lists; this fixes the expansion of
|
||
$(^D), $(+D) and the F variants for VMS.
|
||
|
||
* main.c [VMS]: Say that parallel jobs (-j) are not supported on VMS
|
||
|
||
Enhance/fix VMS ONESHELL implementation and command execution
|
||
* job.c, vmsjobs.c: fix some double quote and new line handling;
|
||
implement ONESHELL with writing multiple lines into one DCL command
|
||
procedure; in ONESHELL allow VMS/make internal redirection only on the
|
||
first line; fix the created DCL command procedure, which didn't abort
|
||
on errors; return correct exit status from the DCL command procedure;
|
||
preserve current procedure verification; make the generated command
|
||
procedure more robust.
|
||
|
||
Enhance/fix VMS setting of program name, MAKE/MAKE_COMMAND variables
|
||
* default.c, main.c, makeint.h, vmsfunctions.c: prefix argv[0] with
|
||
"mcr " for MAKE/MAKE_COMMAND and set the program name to the image
|
||
filename (without the .exe;version)
|
||
* vmsfunctions.c: remove obsolete code
|
||
* vmsify: use xmalloc
|
||
|
||
Enhance/fix VMS exit code handling.
|
||
* commands.c, function.c, hash.c, job.c, main.c, output.c:
|
||
use MAKE exit codes.
|
||
* makeint.h: encode make exit codes so that they are VMS compatible.
|
||
* job.c: check child exit code for VMS style exit codes.
|
||
* vmsjobs.c: save and return VMS style exit code.
|
||
|
||
Enhance/fix VMS multi-line support.
|
||
* job.c: split the command line at a newline.
|
||
* default.c, vmsjobs.c: change ECHO variable to a pseudo builtin,
|
||
which ensures that the VMS/DCL ECHO ("write sys$output") is used
|
||
and is correctly quoted.
|
||
* vmsjobs.c: remove unused builtin 'rm'.
|
||
|
||
* config_flags_pm.com, [RENAMED test_make.com] run_make_tests.com:
|
||
Moved into tests directory.
|
||
|
||
Enhance/fix VMS build environment
|
||
* config.h-vms.template: make sure the CRTL version is known
|
||
* makefile.com: always compile/link the guile module, remove VAXCRTL
|
||
parameter, new LIST parameter
|
||
* makefile.vms: always compile/link the guile module, use more
|
||
complete dependencies
|
||
* prepare_vms.com: helper to create a VMS config file when building
|
||
from a snapshot of the repository
|
||
|
||
2014-09-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* configure.ac, maintMakefile, w32/Makefile.am: Fix autotools issues.
|
||
Reported by Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
2014-08-30 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Change the order of "makefile" and "Makefile" to match the manual.
|
||
|
||
Fix regression with "makefile" not being found on MS-Windows.
|
||
* read.c (read_all_makefiles) [WINDOWS32]: Recognize "makefile",
|
||
all-lowercase, as a makefile. Reported by Michael Waeber
|
||
<waeber@gmail.com>.
|
||
|
||
2014-07-16 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix compilation on MS-Windows.
|
||
* makeint.h [WINDOWS32]: Don't declare 'program' as 'const char *',
|
||
since it is modified in 'main'.
|
||
|
||
2014-07-12 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
[SV 42695] Fix compilation error on MS-Windows.
|
||
* main.c [WINDOWS32]: Don't declare 'program' as 'const char *',
|
||
since it is modified in 'main'.
|
||
|
||
2014-07-12 Jonny Grant <jg@jguk.org> (tiny change)
|
||
|
||
Fix defalt_makefiles[] for MS-Windows.
|
||
* read.c (read_all_makefiles) [WINDOWS32]: Remove the redundant
|
||
"makefile" and add "makefile.mak".
|
||
|
||
2014-07-07 Fredrik Fornwall <fredrik@fornwall.net> (tiny change)
|
||
|
||
* arscan.c [ANDROID]: Android has no ar.h but supports archives.
|
||
|
||
2014-07-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* read.c (eval): [SV 41677] Correct test for TAB vs. 8 spaces.
|
||
|
||
2014-07-07 Piotr Jaroszynski <pjaroszynski@nvidia.com> (tiny change)
|
||
|
||
* output.c (pump_from_tmp): [SV 42378] Flush the output file regularly.
|
||
|
||
2014-07-07 John Malmberg <wb8tyw@qsl.net>
|
||
|
||
Update the regression test harness to support VMS.
|
||
* config_flags_pm.com, test_make.com: set up and run the regression
|
||
test environment on VMS.
|
||
* tests/run_make_tests.pl [VMS]: Use an alternate rmdir()
|
||
implementation on VMS.
|
||
(run_make_with_options) [VMS]: Provide VMS-specific quoting and shell
|
||
invocations.
|
||
(set_more_defaults) [VMS]: Set default values when running on VMS.
|
||
* tests/test_driver.pl (vms_get_process_logicals) [VMS]: Retrieve the
|
||
proper values from %ENV on VMS.
|
||
(resetENV) [VMS]: Use it.
|
||
(toplevel) [VMS]: Fix a bug with opendir() on some logical_devices.
|
||
(compare_output) [VMS]: Convert VMS test output to a "standard" format.
|
||
(_run_command) [VMS]: Handle signals and exit codes the VMS way.
|
||
(remove_directory_tree_inner) [VMS]: Unlink all versions of the file.
|
||
|
||
2014-07-07 Paul Smith <psmith@gnu.org>
|
||
|
||
* various: Assume ISO C89-compliant free() implementation.
|
||
|
||
* maintMakefile, various: Improve constification of the codebase.
|
||
|
||
[SV 41983] Support omitting the text argument to $(file ...)
|
||
Reported by Tim Murphy <tnmurphy@gmail.com>
|
||
* function.c (func_file): Only write TEXT if it is not NULL.
|
||
* NEWS, doc/make.texi: Document the new feature
|
||
* tests/scripts/functions/file: Verify that the no-text version of
|
||
$(file ...) works and doesn't add a newline.
|
||
|
||
2014-05-13 Jacques Germishuys <jacques.germishuys@gmail.com>
|
||
|
||
NMakefile.template ($(OUTDIR)/posixfcn.obj): Fix a typo.
|
||
|
||
2014-05-01 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 42249] Propagate correct rule status results.
|
||
* remake.c (update_file, update_file_1, check_dep): Return an enum
|
||
update_status value instead of an int, and keep the highest value we
|
||
find as we walk the graph so that the ultimate status is correct.
|
||
* tests/scripts/options/dash-q: Add a test for updating prerequisites.
|
||
|
||
2014-02-08 Paul Smith <psmith@gnu.org>
|
||
|
||
* Rename MAP_PATHSEP to MAP_DIRSEP.
|
||
|
||
* configure.ac: Fixup for newer autoconf/automake
|
||
|
||
2014-02-08 Ray Donnelly <mingw.android@gmail.com> (tiny change)
|
||
|
||
* output.c: Ensure space for final nul byte in fmtbuf.
|
||
|
||
2014-02-07 Gisle Vanem <gvanem@yahoo.no> (tiny change)
|
||
|
||
Improve error reporting in the Windows port when env size is too large.
|
||
w32/subproc/misc.c (arr2envblk): Compute and return the size of
|
||
the environment passed to child process.
|
||
|
||
w32/subproc/sub_proc.c (process_begin): If the call to
|
||
CreateProcess failed with EINVAL, and the required environment
|
||
size was larger than 32KB, assume it's a Windows XP limitation,
|
||
and display an error message to that effect.
|
||
|
||
w32/subproc/proc.h (arr2envblk): Update prototype.
|
||
|
||
2014-02-01 Paul Smith <psmith@gnu.org>
|
||
|
||
* job.c (set_child_handler_action_flags): [SV 41341]
|
||
Ensure signal handler is in place before alarm(1).
|
||
|
||
2014-01-20 Alan Hourihane <alanh@fairlite.co.uk> (tiny change)
|
||
|
||
* configure.ac: [SV 40790] Fix load autoconf variables.
|
||
|
||
2014-01-17 Pavel Fedin <p.fedin@samsung.com> (tiny change)
|
||
|
||
Allow the EMX build to use output_sync.
|
||
job.c (start_job_command): Move the child output diversion out
|
||
of non-EMX branch.
|
||
[__EMX__]: Don't use fixed FD_STDOUT and FD_STDERR in the call to
|
||
child_execute_job.
|
||
|
||
2014-01-12 Paul Smith <psmith@gnu.org>
|
||
|
||
* commands.c: [SV 40789] Remove unneeded header dlfcn.h
|
||
|
||
* main.c (die): Close output_context AND make_sync.
|
||
die() can be invoked inside a separate output_context, if the
|
||
$(error ...) function is expanded as part of a recipe.
|
||
|
||
2014-01-11 Pavel Fedin <p.fedin@samsung.com> (tiny change)
|
||
|
||
Fix .LIBPATTERNS for MS-Windows builds.
|
||
default.c (.LIBPATTERNS) [__CYGWIN__ || WINDOWS32]: Provide
|
||
library patterns for MS-Windows.
|
||
|
||
2013-11-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* w32/*: Remove TABs from the source code.
|
||
I know whitespace commits are annoying, but having these TABs is
|
||
causing me to miss things when I search through the code. This
|
||
doesn't try to change the w32 code to meet GNU coding standards.
|
||
|
||
* main.c (decode_env_switches): Ensure we have enough space.
|
||
Reported (with patch) by Gerte Hoogewerf <g.hoogewerf@gmail.com>
|
||
|
||
2013-11-27 Stephan T. Lavavej <stl@nuwen.net> (tiny change)
|
||
|
||
Solve some Windows build issues.
|
||
* main.c (main): Use ONS(), not OSN().
|
||
(prepare_mutex_handle_string) [WINDOWS32]: Use %Ix formatting to
|
||
support both 32bit and 64bit systems.
|
||
* job.c (free_child, new_job): Use ONS(), not OSN().
|
||
* w32/subproc/w32err.c (map_windws32_error_to_string): Use O() when
|
||
calling fatal().
|
||
|
||
2013-11-24 Paul Smith <psmith@gnu.org>
|
||
|
||
* features/loadapi (test_expand): Allocate memory for the nul byte.
|
||
|
||
* load.c (load_file): Reset the name length minus the symbol.
|
||
|
||
* read.c (unescape_char): Use memmove() for overlapping memory.
|
||
|
||
Fix memory leak during environment option decoding.
|
||
* main.c (decode_switches): Always make a copy of option arguments.
|
||
(decode_env_switches): Use a stack buffer to convert environment
|
||
switches for parsing.
|
||
|
||
[SV 40226] Add a new type of switch: single-string options
|
||
* main.c (struct command_switch): Change the "string" types to "strlist"
|
||
and make "string" be a single-valued string instead.
|
||
(output_sync_option, jobserver_fds, sync_mutex): Change to string type.
|
||
(decode_output_sync_flags): Handle single strings instead of lists.
|
||
(prepare_mutex_handle_string): Ditto.
|
||
(main): Ditto.
|
||
(clean_jobserver): Ditto.
|
||
(init_switches): Handle the new type.
|
||
(decode_switches): Ditto.
|
||
(define_makeflags): Ditto.
|
||
|
||
2013-11-23 Daniel Richard G <skunk@iskunk.org> (tiny change)
|
||
|
||
* load.c: [SV 40515] Define RTLD_GLOBAL if not set.
|
||
|
||
2013-11-23 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 40361] Don't use vsnprintf(), which is an ISO C99 function.
|
||
* 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-27 Paul Smith <psmith@gnu.org>
|
||
|
||
* makeint.h (STOP_SET): [SV 40371] Cast to unsigned char.
|
||
* tests/scripts/misc/utf8: Test variable names with characters >127.
|
||
Fix suggested by Robert Bogomip <bob.bogo@milohedge.com>
|
||
|
||
2013-10-24 Gerte Hoogewerf <g.hoogewerf@gmail.com>
|
||
|
||
Fix MS Visual Studio NET2003 build.
|
||
* make_msvc_net2003.vcproj: Do not exclude guile.c from compilation.
|
||
|
||
2013-10-23 Christian Boos <cboos@edgewall.org>
|
||
|
||
Fix SV bug #40227 with respect to stack size set for the MSVC build.
|
||
* NMakefile.template (/STACK): Increase to 0x400000, mainly for
|
||
the 64-bit builds. Fixes SV bug #40227.
|
||
(guile): Uncomment.
|
||
|
||
2013-10-23 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix the MS-Windows build: now guile.c must always be compiled in.
|
||
* build_w32.bat: Always compile guile.c and link against guile.o.
|
||
Reported by Alexey Pavlov <alexpux@gmail.com>.
|
||
|
||
* makeint.h (guile_gmake_setup): Define prototype unconditionally,
|
||
to avoid compiler warnings.
|
||
|
||
2013-10-22 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix Savannah bug #31150 with failures due to setting window title.
|
||
* sub_proc.c (process_begin): Don't set startInfo.lpTitle, it
|
||
reportedly causes SV bug #31150, and according to MSDN it's a
|
||
no-no.
|
||
|
||
Fix Savannah bug 40241 with Unixy file names as commands to MSYS shell.
|
||
* sub_proc.c: Include filedef.h and variable.h.
|
||
(process_begin): If exec_path was not found, but its first
|
||
character is '/', assume there's some shell magic, and invoke the
|
||
command through '$(SHELL) -c "COMMAND"'. Fixes SV bug#40241.
|
||
(make_command_line): Kludgey feature: if full_exec_path is "-c",
|
||
assume that argv[0] is not to be skipped, as it holds the command
|
||
string to be passed to the shell.
|
||
|
||
2013-10-20 Paul Smith <psmith@gnu.org>
|
||
|
||
* glob.c (glob) [SV 18123]: Cherry-pick glibc fix
|
||
Apply commit a471e96a5352a5f0bde6d32dd36d33524811a2b1 from
|
||
git://sourceware.org/git/glibc.git to fix
|
||
https://sourceware.org/bugzilla/show_bug.cgi?id=10278
|
||
|
||
* read.c (record_files): [SV 33034] Change fatal() to error()
|
||
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>
|
||
|
||
* README.git: Add some missing release steps.
|
||
|
||
2013-10-19 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 40240] Use configure info to build load test shared libs
|
||
* tests/config-flags.pm.in: A new file containing variable assignments
|
||
for the test suite; these variables are set by configure to contain
|
||
the values detected there for compilers, flags, etc.
|
||
* tests/run_make_tests.pl: Require the config-flags.pm file
|
||
* tests/scripts/features/load, tests/scripts/features/loadapi: Use the
|
||
configure-provided values when building the shared test library.
|
||
* configure.ac: Replace tests/config-flags.pm.in
|
||
* Makefile.am: Make sure tests/config-flags.pm is up to date
|
||
|
||
* maintMakefile (checkcfg.%): Add testing of build.sh
|
||
|
||
[SV 40254] Modify build.sh to work properly with Guile support.
|
||
* guile.c (guile_gmake_setup) [HAVE_GUILE]: Define a stub function
|
||
when Guile support is not enabled.
|
||
* main.c (main) [HAVE_GUILE]: Always invoke guile_gmake_setup().
|
||
* Makefile.am: Make guile.c standard, not optional.
|
||
* build.template: Add the Guile compiler and linker flags.
|
||
|
||
* maintMakefile: Accept variable overrides from the environment.
|
||
|
||
* NEWS: Fix version so we can build a distfile.
|
||
|
||
* read.c (eval): Avoid GCC warning to add braces.
|
||
|
||
* GNUMAKEFLAGS: Remove -O so it passes in NO_OUTPUT_SYNC mode.
|
||
|
||
2013-10-18 Christian Boos <cboos@edgewall.org>
|
||
|
||
Fix initialization of stringlist variables for jobserver_fds and sync_mutex.
|
||
(tiny change)
|
||
|
||
main.c (prepare_mutex_handle_string, main): Initialize
|
||
stringlist variables with at least 2 members, as one member is not
|
||
currently supported.
|
||
|
||
2013-10-18 Eli Zaretskii <eliz@gnu.org>
|
||
|
||
Fix MinGW64 problem with non-compliant vsnprintf.
|
||
makeint.h (__USE_MINGW_ANSI_STDIO) [__MINGW64_VERSION_MAJOR]:
|
||
Define for MinGW64, to force it to use an ANSI-compliant
|
||
implementation of vsnprintf. Reported by Christian Boos
|
||
<cboos@edgewall.org>.
|
||
|
||
Fix the MSVC build on MS-Windows.
|
||
output.c (vsnprintf) [_MSC_VER]: Define, instead of defining
|
||
snprintf, which isn't used. Reported by Christian Boos
|
||
<cboos@edgewall.org>.
|
||
NMakefile.template (OBJS): Add load.obj and posixfcn.obj.
|
||
($(OUTDIR)/pathstuff.obj): New dependency.
|
||
Suggested by Christian Boos <cboos@edgewall.org>.
|
||
|
||
2013-10-13 Paul Smith <psmith@gnu.org>
|
||
|
||
[SV 40139] Modify "missing separator" for better translation
|
||
|
||
Add support for updating the GNU make web pages.
|
||
Add makefile rules for updating the http://www.gnu.org/software/make
|
||
web pages, including the online GNU make manual.
|
||
|
||
Convert to auto-generated ChangeLog files.
|
||
Rename existing ChangeLog files so they won't be distributed.
|
||
Add targets to maintMakefile to generate ChangeLog from the Git
|
||
repository. This will require a version of gnulib be available.
|
||
Because ChangeLog is auto-generated, we have to switch our
|
||
automake mode to "foreign" or it will complain and fail.
|
||
|
||
Set up for the next release.
|