GNU Make

Release date: 
Sunday, 12 November, 2017




GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files. Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.

This software is distributed as compressed package. You have to download and manually install it; if prerequisites are required, you will have to manually install them too.

Manual installation

Program is distributed as ZIP package: download to temporary directory and unpack to destination folder. See below for download link(s).

You can install the prerequisites with rpm running the following string in a command line:

yum install libc libcx libgcc1 libssp libstdc++6 libstdc++ libsupc++6 libsupc++ libgcc-fwd emxrt

Online documentation:

Following ones are the download links for manual installation:

GNU Make v. 3.81-k2 (12/11/2017, KO Myung-Hun) Readme/What's new
v3.81-k2: * Fixed the regression of .exe check which is that the search result of VPATH is not applied in some cases. * Improved a very long command line pass
GNU Make v. 3.81-k1 (23/1/2017, KO Myung-Hun) Readme/What's new
v3.81-k1: * Based on v3.81-r3 of Andreas Buening * Pass a very long command line via a response file * Check target.exe as well when target does not exist. For example, foo: foo.c gcc $@ $< foo.exe is checked as well unless foo exists. * See README.OS2 for explanations of Andreas Buening
GNU Make v. 3.81r3 (28/9/2009, Andreas Buening)
GNU Make v. 3.81r3 (static, 28/9/2009, Andreas Buening)
GNU Make v. 3.81r3 (patch to sources, 28/9/2009, Andreas Buening)
GNU Make v. 3.81r2 (30/5/2006, Andreas Buening)
GNU Make v. 3.81r2 (source code, 30/5/2006, Andreas Buening)
GNU Make v. 3.81 beta3 (8/8/2005, Andreas Buening)
GNU Make v. 3.81 beta3 (source code, 8/8/2005, Andreas Buening)
GNU Make v. 3.79.2a1 (source code, 23/8/2003, Andreas Buening)
GNU Make v. 3.79.2a1 (23/8/2002, Andreas Buening)
GNU Make v. 3.79.1 (Andreas Buening, 11/6/2002)
GNU Make v. 3.79.1 (Andreas Buening, 11/6/2002)
GNU Make v. 3.76.1 (13/8/2001, Andreas Buening) Readme/What's new
special patch (source and binary)
GNU Make v. 3.62 (23/3/1992, galen c. hunt) Readme/What's new
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= README Release 1 =-=-=-=-=-=-=-=-=-=-=-=-=-=-= This distribution contains release 2 of a copy of the 3.62 test release of GNU Make which has been modified to run under the emx 32-bit environment under MS-DOS or OS/2 2.0. (See the README.GNU file in either of the zoo files for more information about GNU Make.) GNU Make is free software. See the file COPYING for copying conditions. This program is provided with absolutely NO WARRANTY of any kind. The documentation for GNU make is provided in the from of .info files which have been created from the .texinfo files supplied in the original GNU release. To browse these files you will need a copy of GNU info which is probably available from the same source where you obtained this file. The documentation is compressed in the info.zoo file. The source code for this port of GNU make is also included in the source.zoo file. In porting GNU make I have taken a mostly slash and burn approach. GNU Make relies very heavily on the un*x fork function which is resource intensive. I have made massive changes in the job.c file so that this release does not use the fork function. This makes for a smaller executable and hopefully a program which is a little more robust in the emx environment. I have also changed the handling of commands within make. To illustrate the changes, imaging that make wants to issue a command: gcc -c test.c First, it examines the command name (in this case "gcc"). If the name ends with a .bat, .cmd, or .com extension, make uses the emx system() function to ask either or cmd.exe to execute the command. If the name does not end with a .bat, .cmd, or .com extension, make adds a ".exe" extension and looks for the command using the PATH environment variable. If it finds the command, it executes it directly via a spawnve() function call without loading or cmd.exe. If the command contains any pipes (|) or output or input re-routing (<, >>, >) the system() function will be used to make sure that the operating system is allowed to handle these functions. This is done mostly to circumvent weaknesses in the emx environment under MS-DOS. Notably, when forced to use the system() function to under MS-DOS, make is unable to obtain the return code from the command and instead must assume that the command was completed successfully. Also, If a command line is more than ~100 characters long, this port of make will create a temporary response file and call the command with the response file, thus, creating a shorter command line. This could cause trouble if you try to call a program which does not understand how to handle response files with a large command line. I will gladly accept any question, comments, or insults for poor porting. Send email to: Or, to the emx-list mailing list: To subscribe to the emx-list mailing list, send email to: galen c. hunt 23/March/92  local copy
Record updated last time on: 22/06/2018 - 15:43


English Dutch French German Korean Russian Swedish

Add new comment