GNU Make 4.4 has already been released and these are its news

GNU-Make

GNU make is a tool that controls the generation of executables and other files

After nearly three years of development, the GNU Make 4.4 build system was released, In this new version, in addition to correcting errors, it can be seen that improvements were added, as well as that the requirements for the compilation environment have been increased.

For those of you who are new to GNU Make, you should know that this is a development utility incredibly popular that organizes the compilation of software projects. Make is often used to manage the GCC compiler set, but can be used for any software development or packaging task.

Since creating large C/C++ programs often involves several steps, a tool like Make is needed to ensure that all source files are compiled and linked. Make also allows the developer to control how supporting files, such as documentation, man pages, systemd profiles, startup scripts, and configuration templates, are packaged and installed.

Make is not limited to languages ​​like C/C++. Web developers can use GNU Make to perform repetitive tasks like minifying CSS and JS, and system administrators can automate maintenance tasks.

Additionally, end users can use Make to compile and install software without being a programmer or expert in the software they are installing.

Main new features of GNU Make 4.4

In this new version that is presented, OS/2 (EMX), AmigaOS, Xenix and Cray platforms have been deprecated, plus support for these systems will be removed in the next version of GNU Make.

Another change that is presented in the new version is that increased build environment requirements, to compile GNU Gnulib you now need a compiler that supports elements of the C99 standard.

Besides it, a .WAIT build target has been added A special feature that allows you to pause the build launch of certain targets until the build of other targets is complete.

While .NOTPARALLEL, the ability to specify prerequisites is implemented (files needed to create the target) to sequentially launch the targets associated with them (as if ".WAIT" had been set between each prerequisite).

On the other hand, .NOTINTERMEDIATE was added, which disables the behavior associated with the use of intermediate targets (.INTERMEDIATE) for specific files, files that match the mask, or the entire makefile.

On systems compatible with mkfifo, a new method of interacting with the job server during parallel execution is provided of jobs based on the use of named pipes, plus the option “–jobserver-style=pipe” was added to return the old method based on unnamed pipes.

It is also noted that the use of temporary files in the worker process has been expanded (problems can arise when the build system sets an alternate directory for temporary files (TMPDIR) and removes the contents of TMPDIR during compilation).

Of the other changes that stand out from this new version:

  • Implemented the $(let…) function, which allows you to define local variables in user-defined functions.
  • Implemented the $(intcmp…) function to compare numbers.
  • When using the “-l” (–load-average) option, the number of jobs to be started now takes into account the data in the /proc/loadavg file about the load on the system.
  • Added “–shuffle” option to shuffle prerequisites, allowing non-deterministic behavior in parallelized builds (for example, to fuzz test the correctness of the prerequisites definition in a makefile).

Finally if you are interested in knowing more about it, you can check the details In the following link.

How to install GNU Make on Linux?

For those who are interested in being able to install this tool, they can do so by running one of the following commands:

For those who are users of Debian/Ubuntu or some derivative these:

sudo apt install make

In the case of those who are users of Fedora/RHEL or derivatives:
yum install make

While for those who are users of Arch Linux and derivatives:

sudo pacman -S make


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: Miguel Ángel Gatón
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.