GNU Make v. 4.4.1 (Release 2, 15/6/2024) |
Readme/What's new |
v4.4.1-r2:
* Built with gcc v12.3.0
* Fixed jobserver did not work. Reported by Elbert Pol |
www.hobbesarchive.com/Hobbes/pub/os2/dev/tools/make/make-4.4.1-r2.zip |
|
GNU Make v. 4.4.1 (8/10/2023, KO Myung-Hun) |
Readme/What's new |
Port of GNU Make to OS/2.
Features of GNU Make that do not work under OS/2:
- remote job execution
- dynamic load balancing
Special features of the OS/2 version:
Due to the fact that some people might want to use sh syntax in
Makefiles while others might want to use OS/2's native shell cmd.exe,
GNU Make supports both shell types. The following list defines the order
that is used to determine the shell:
1. The shell specified by the environment variable MAKESHELL.
2. The shell specified by the SHELL variable within a Makefile. Like
Unix, SHELL is NOT taken from the environment.
3. The shell specified by the COMSPEC environment variable.
4. The shell specified by the OS2_SHELL environment variable.
5. If none of the above is defined /bin/sh is used as default. This
happens e.g. in the make testsuite.
Note: - Points 3 and 4 can be turned off at compile time by adding
-DNO_CMD_DEFAULT to the CPPFLAGS.
- DOS support is not tested for EMX and therefore might not work.
- The UNIXROOT environment variable is supported to find /bin/sh
if it is not on the current drive.
COMPILATION OF GNU MAKE FOR OS/2:
I. ***** SPECIAL OPTIONS *****
- At compile time you can turn off that cmd is used as default shell
(but only /bin/sh). Simply set CPPFLAGS="-DNO_CMD_DEFAULT" and make
will not use cmd unless you cause it to do so by setting MAKESHELL to
cmd or by specifying SHELL=cmd in your Makefile.
- At compile time you can set CPPFLAGS="-DNO_CHDIR2" to turn off that
GNU Make prints drive letters. This is necessary if you want to run
the testsuite.
II. ***** REQUIREMENTS FOR THE COMPILATION *****
A standard Unix like build environment:
- sh compatible shell (ksh, bash, ash, but tested only with pdksh 5.2.14
release 2)
If you use pdksh it is recommended to update to 5.2.14 release 2. Older
versions may not work! You can get this version at
https://www.math.ohio-state.edu/~ilya/software/os2/pdksh-5.2.14-bin-2.zip
- GNU file utilities (make sure that install.exe from the file utilities
is in front of your PATH before X:\OS2\INSTALL\INSTALL.EXE. I recommend
also to change the filename to ginstall.exe instead of install.exe
to avoid confusion with X:\OS2\INSTALL\INSTALL.EXE)
- GNU shell utilities
- GNU text utilities
- gawk
- grep
- sed
- GNU Make 3.79.1 (special OS/2 patched version) or higher
- perl 5.005 or higher
- GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0)
If you want to recreate the configuration files (developers only!)
you need also: GNU m4 1.4, autoconf 2.59, automake 1.9.6 (or compatible)
III. ***** COMPILATION AND INSTALLATION *****
a) ** Developers only - Everyone else should skip this section **
To recreate the configuration files use:
export EMXSHELL=ksh
aclocal -I m4
automake
autoconf
autoheader
b) Installation into x:/usr
Note: Although it is possible to compile make using "./configure",
"make", "make install" this is not recommended. In particular,
you must ALWAYS use LDFLAGS="-Zstack 0x6000" because the default
stack size is far to small and make will not work properly!
Recommended environment variables and installation options:
export ac_executable_extensions=".exe"
export CPPFLAGS="-D__ST_MT_ERRNO__"
export CFLAGS="-O2 -Zomf -Zmt"
export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
export RANLIB="echo"
./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man
make AR=emxomfar
make install
Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc"
Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS.
See section I. for details.
Note: If you use Open Watcom Linker instead of IBM Linker, remove
'-Zlinker /exepack:2' from LDFLAGS.
IV. ***** NLS support *****
GNU Make has NLS (National Language Support), with the following
caveats:
a) It will only work with GNU gettext, and
b) GNU gettext support is not included in the GNU Make package.
Therefore, if you wish to enable the internationalization features of
GNU Make you must install GNU gettext on your system before configuring
GNU Make.
You can choose the languages to be installed. To install support for
English, German and French only enter:
export LINGUAS="en de fr"
If you don't specify LINGUAS all languages are installed.
If you don't want NLS support (English only) use the option
--disable-nls for the configure script. Note if GNU gettext is not
installed then NLS will not be enabled regardless of this flag.
V. ***** Running the make test suite *****
To run the included make test suite you have to set
CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
before you compile make. This is due to some restrictions of the
testsuite itself. -DNO_CMD_DEFAULT causes make to use /bin/sh as default
shell in every case. Normally you could simply set MAKESHELL="/bin/sh"
to do this but the testsuite ignores the environment. -DNO_CHDIR2 causes
make not to use drive letters for directory names (i.e. _chdir2() and
_getcwd2() are NOT used). The testsuite interprets the whole output of
make, especially statements like make[1]: Entering directory
'C:/somewhere/make-3.79.1/tests' where the testsuite does not expect the
drive letter. This would be interpreted as an error even if there is
none.
To run the testsuite do the following:
export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
export CFLAGS="-Zomf -O2 -Zmt"
export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
export RANLIB="echo"
./configure --prefix=x:/usr --disable-nls
make AR=emxomfar
make check
All tests should work fine with the exception of one of the "INCLUDE_DIRS"
tests which will fail if your /usr/include directory is on a drive different
from the make source tree.
-------------------------------------------------------------------------------
Copyright (C) 2003-2023 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <https://www.gnu.org/licenses/>.
|
www.hobbesarchive.com/Hobbes/pub/os2/dev/tools/make/GNU_Make_4-4-1.zip |
|
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 |
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-k2.zip |
|
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 |
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-k1.zip |
|
GNU Make v. 3.81r3 (28/9/2009, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-r3-bin.zip |
|
GNU Make v. 3.81r3 (static, 28/9/2009, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-r3-bin-static.zip |
|
GNU Make v. 3.81r3 (patch to sources, 28/9/2009, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-r3_patch.zip |
|
GNU Make v. 3.81r2 (30/5/2006, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-r2-bin.zip |
|
GNU Make v. 3.81r2 (source code, 30/5/2006, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81-r2.zip |
|
GNU Make v. 3.81 beta3 (8/8/2005, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81beta3-r2-bin.zip |
|
GNU Make v. 3.81 beta3 (source code, 8/8/2005, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3.81beta3-r2.zip |
|
GNU Make v. 3.79.2a1 (source code, 23/8/2003, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3_79_2a1.zip |
|
GNU Make v. 3.79.2a1 (23/8/2002, Andreas Buening) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3_79_2a1-bin.zip |
|
GNU Make v. 3.79.1 (Andreas Buening, 11/6/2002) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3_79_1-bin.zip |
|
GNU Make v. 3.79.1 (Andreas Buening, 11/6/2002) |
|
|
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3_76_1s.zip |
|
GNU Make v. 3.76.1 (13/8/2001, Andreas Buening) |
Readme/What's new |
special patch (source and binary) |
hobbes.nmsu.edu/download/pub/os2/dev/util/make-3_76_1s.zip |
|
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 command.com 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 command.com 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:
gchunt@mail.physics.utah.edu
Or, to the emx-list mailing list:
emx-list@mail.physics.utah.edu
To subscribe to the emx-list mailing list, send email to:
emx-list-request@mail.physics.utah.edu
galen c. hunt
23/March/92 |
www.ecsoft2.org/system/files/repository/make-3.62-os2emx.zip |
local copy
|
Add new comment