Release of the GNU Make 4.4 build system

After almost three years of development, the GNU Make 4.4 build system was released. In addition to fixing bugs, the following changes can be noted in the new version:

  • The OS/2 (EMX), AmigaOS, Xenix, and Cray platforms have been deprecated and will be deprecated in a future release.
  • The requirements for the build environment have been increased, to build GNU Gnulib you now need a compiler that supports elements from the C99 standard.
  • A special .WAIT build target has been added that allows you to pause the launch of the build of certain targets until the build of other targets is completed.
  • In the special build target .NOTPARALLEL, the ability to specify prerequisites (files required for building the target) is implemented to sequentially launch the targets associated with them (as if β€œ.WAIT” was set between each prerequisite).
  • Added a special build target .NOTINTERMEDIATE that disables the behavior associated with the use of intermediate targets (.INTERMEDIATE) for specified files, files matching the mask, or the entire makefile.
  • Implemented the $(let ...) function, which allows you to define local variables in user-defined functions.
  • Implemented the $(intcmp ...) function for comparing numbers.
  • When using the "-l" (--load-average) option, the number of jobs to be started now takes into account the data from the file /proc/loadavg about the load on the system.
  • Added "--shuffle" option to shuffle prerequisites, which allows to achieve non-deterministic behavior in parallelized builds (for example, to fuzz test the correctness of defining prerequisites in a makefile).
  • On systems with mkfifo support, a new method of interacting with the jobserver for parallel execution of jobs based on the use of named pipes is provided. To return the old method based on unnamed pipes, the option "--jobserver-style=pipe" has been proposed.
  • The use of temporary files in the process of work has been expanded (problems may arise when the build system sets an alternative directory for temporary files (TMPDIR) and deletes the contents of TMPDIR during the build).

Source: opennet.ru

Add a comment