GNU Make Changelog

What's new in GNU Make 4.4.1

Feb 27, 2023
  • NEWS: Set the release number and date.
  • configure.ac: Update the version.
  • README.git: Remind to update doc/make.1.
  • doc/make.1: Update the date. Fix some "GNU Make" references.
  • doc/make.texi: Update the edition.
  • tests/scripts/options/dash-l: Simplify the test via the helper
  • tests/thelp.pl: Add "exist" and "noexist" operators.

New in GNU Make 4.2.1 (Dec 3, 2017)

  • maintMakefile: TP recommends rsync for retrieving PO files.
  • main.c (main): [SV 48009] Reset stack limit for make re-exec.
  • [SV 47995] Ensure forced double-colon rules work with -j.
  • 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 01.
  • (update_file_1): Reset CONSIDERED to 0 so it's re-considered.
  • (check_dep): Ditto.
  • tests/scripts/features/double_colon: Add a regression test.
  • DELETE_ON_ERROR: [SV 48061] Use "exit 1" for portability.
  • w32/pathstuff.c: [SV 47996] Use ISBLANK() not isblank().
  • Fix printing time stamps on MS-Windows
  • [SV 48037] Fix MinGW build with Posix configury tools

New in GNU Make 4.1 (Oct 6, 2014)

  • New variables: $(MAKE_TERMOUT) and $(MAKE_TERMERR) are set to non-empty values if stdout or stderr, respectively, are believed to be writing to a terminal. These variables are exported by default.
  • Allow a no-text-argument form of the $(file ...) function. Without a text argument nothing is written to the file: it is simply opened in the requested mode, then closed again.
  • Change the fatal error for mixed explicit and implicit rules, that was introduced in GNU make 3.82, to a non-fatal error. However, this syntax is still deprecated and may return to being illegal in a future version of GNU make. Makefiles that rely on this syntax should be fixed.

New in GNU Make 4.0 (Oct 10, 2013)

  • configure.ac: Updated for the release.
  • NEWS: Updated for the release.
  • maintMakefile (tag-release): New target to add a Git tag.
  • read.c (eval): Typo fix.
  • ChangeLog.1: Typo fixes.
  • w32/subproc/sub_proc.c (process_cleanup): Typo fix.
  • w32/compat/posixfcn.c (tmpfile): Move declaration of h before the first executable statement.
  • makeint.h (MAP_USERFUNC): A new map type for function names.
  • main.c (initialize_stopchar_map): Set up the function name map.
  • gnumake.h (gmk_func_ptr): Define a type for function pointers.
  • (gmk_add_function): Convert the last argument to FLAGS.
  • (GMK_FUNC_*): Define flags for the function. Change the default
  • behavior to "expand" since that's the most common one.
  • function.c (function_table_entry): Use new function pointer type.
  • (lookup_function): Accept any valid function name character based on the MAP_USERFUNC values.
  • (define_new_function): Use the new calling signature. Verify that registered functions have valid names.
  • guile.c (guile_gmake_setup): Use new calling signatures.
  • loadapi.c (gmk_add_function): Ditto.
  • variable.h (define_new_function): Ditto.
  • doc/make.texi (Loaded Object API): Make the registered function API documentation more clear.
  • function.c (abspath): Reset root_len to one for Cygwin only when HAVE_DOS_PATHS is defined.
  • Fix $abspath on Cygwin when HAVE_DOS_PATHS is in effect.
  • function.c (IS_ABSOLUTE) [__CYGWIN__]: Special definition for Cygwin.
  • (abspath) [__CYGWIN__]: Reset root_len to 1 if the absolute file name has the Posix /foo/bar form.
  • [HAVE_DOS_PATHS]: Use root_len instead of hard-coded 2.