2013-09-22 04:48:05 +00:00
|
|
|
|
This version of GNU make has been tested on
|
|
|
|
|
OpenVMS V8.3 (Alpha) and V8.4 (Integrity).
|
2004-05-16 19:16:52 +00:00
|
|
|
|
|
|
|
|
|
Build instructions
|
2013-09-22 04:48:05 +00:00
|
|
|
|
------------------
|
2004-05-16 19:16:52 +00:00
|
|
|
|
Make a 1st version
|
2009-11-16 02:31:23 +00:00
|
|
|
|
$ @makefile.com ! ignore any compiler and/or linker warning
|
2013-09-22 04:48:05 +00:00
|
|
|
|
$ copy make.exe 1st-make.exe
|
|
|
|
|
Use the 1st version to generate a 2nd version
|
|
|
|
|
$ mc sys$disk:[]1st-make clean ! ignore any file not found messages
|
2004-05-16 19:16:52 +00:00
|
|
|
|
$ mc sys$disk:[]1st-make
|
2013-09-22 04:48:05 +00:00
|
|
|
|
Verify your 2nd version
|
|
|
|
|
$ copy make.exe 2nd-make.exe
|
2004-05-16 19:16:52 +00:00
|
|
|
|
$ mc sys$disk:[]2nd-make clean
|
|
|
|
|
$ mc sys$disk:[]2nd-make
|
2013-09-22 04:48:05 +00:00
|
|
|
|
Don't use the HP C V7.2-001 compiler, which has an incompatible change
|
|
|
|
|
how __STDC__ is defined. This results at least in compile time warnings.
|
|
|
|
|
|
|
|
|
|
Changes since GNU make 3.82
|
|
|
|
|
---------------------------
|
2004-05-16 19:16:52 +00:00
|
|
|
|
|
2013-09-22 04:48:05 +00:00
|
|
|
|
Fix build problems.
|
|
|
|
|
|
|
|
|
|
The new feature "Loadable objects" is not yet supported. If you need it,
|
|
|
|
|
please send a change request or submit a bug report.
|
|
|
|
|
|
|
|
|
|
The new option --output-sync (-O) is accepted but has no effect: GNU make
|
|
|
|
|
for VMS does not support running multiple commands simultaneously.
|
|
|
|
|
|
|
|
|
|
Changes for GNU make 3.82
|
2009-11-16 02:31:23 +00:00
|
|
|
|
|
|
|
|
|
Michael Gehre (at VISTEC-SEMI dot COM) supplied a fix for a problem with
|
|
|
|
|
timestamps of object modules in OLBs. The timestamps were not correctly
|
|
|
|
|
adjusted to GMT based time, if the local VMS time was using a daylight saving
|
|
|
|
|
algorithm and if daylight saving was switched off.
|
|
|
|
|
|
|
|
|
|
John Eisenbraun (at HP dot COM) supplied fixes and and an enhancement to append
|
|
|
|
|
output redirection in action lines.
|
|
|
|
|
|
|
|
|
|
Rework of ctrl+c and ctrl+y handling.
|
|
|
|
|
|
|
|
|
|
Fix a problem with cached strings, which showed on case-insensitive file
|
|
|
|
|
systems.
|
|
|
|
|
|
|
|
|
|
Build fixes for const-ified code in VMS specific sources.
|
|
|
|
|
|
|
|
|
|
A note on appending the redirected output. With this change, a simple mechanism
|
|
|
|
|
is implemented to make ">>" work in action lines. In VMS there is no simple
|
|
|
|
|
feature like ">>" to have DCL command or program output redirected and appended
|
|
|
|
|
to a file. GNU make for VMS already implements the redirection of output. If
|
|
|
|
|
such a redirection is detected, an ">" on the action line, GNU make creates a
|
|
|
|
|
DCL command procedure to execute the action and to redirect its output. Based
|
|
|
|
|
on that, now ">>" is also recognized and a similar but different command
|
|
|
|
|
procedure is created to implement the append. The main idea here is to create a
|
|
|
|
|
temporary file which collects the output and which is appended to the wanted
|
|
|
|
|
output file. Then the temporary file is deleted. This is all done in the
|
|
|
|
|
command procedure to keep changes in make small and simple. This obviously has
|
|
|
|
|
some limitations but it seems good enough compared with the current ">"
|
|
|
|
|
implementation. (And in my opinion, redirection is not really what GNU make has
|
|
|
|
|
to do.) With this approach, it may happen that the temporary file is not yet
|
|
|
|
|
appended and is left in SYS$SCRATCH. The temporary file names look like
|
|
|
|
|
"CMDxxxxx.". Any time the created command procedure can not complete, this
|
|
|
|
|
happens. Pressing Ctrl+Y to abort make is one case. In case of Ctrl+Y the
|
|
|
|
|
associated command procedure is left in SYS$SCRATCH as well. Its name is
|
|
|
|
|
CMDxxxxx.COM.
|
|
|
|
|
|
2013-09-22 04:48:05 +00:00
|
|
|
|
Change in the Ctrl+Y handling. The CtrlY handler now uses $delprc to delete all
|
|
|
|
|
children. This way also actions with DCL commands will be stopped. As before
|
|
|
|
|
the CtrlY handler then sends SIGQUIT to itself, which is handled in common
|
|
|
|
|
code.
|
2009-11-16 02:31:23 +00:00
|
|
|
|
|
2013-09-22 04:48:05 +00:00
|
|
|
|
Change in deleteing temporary command files. Temporary command files are now
|
|
|
|
|
deleted in the vms child termination handler. That deletes them even if
|
|
|
|
|
a Ctrl+C was pressed.
|
2009-11-16 02:31:23 +00:00
|
|
|
|
|
|
|
|
|
The behavior of pressing Ctrl+C is not changed. It still has only an effect,
|
|
|
|
|
after the current action is terminated. If that doesn't happen or takes too
|
|
|
|
|
long, Ctrl+Y should be used instead.
|
|
|
|
|
|
2013-09-22 04:48:05 +00:00
|
|
|
|
Changes for GNU make 3.80
|
2004-05-16 19:16:52 +00:00
|
|
|
|
|
|
|
|
|
. In default.c define variable ARCH as IA64 for VMS on Itanium systems.
|
|
|
|
|
|
|
|
|
|
. In makefile.vms avoid name collision for glob and globfree.
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com.
|
|
|
|
|
|
|
|
|
|
It is based on the specific version 3.77k and on 3.78.1. 3.77k was done
|
|
|
|
|
by Klaus K<>mpf <kkaempf@rmi.de>, the code was based on the VMS port of
|
|
|
|
|
GNU Make 3.60 by Mike Moretti.
|
|
|
|
|
|
|
|
|
|
It was ported on OpenVMS/Alpha V7.1, DECC V5.7-006. It was re-build and
|
|
|
|
|
tested on OpenVMS/Alpha V7.2, OpenVMS/VAX 7.1 and 5.5-2. Different
|
|
|
|
|
versions of DECC were used. VAXC was tried: it fails; but it doesn't
|
|
|
|
|
seem worth to get it working. There are still some PTRMISMATCH warnings
|
|
|
|
|
during the compile. Although perl is working on VMS the test scripts
|
|
|
|
|
don't work. The function $shell is still missing.
|
|
|
|
|
|
2000-01-22 05:59:28 +00:00
|
|
|
|
There is a known bug in some of the VMS CRTLs. It is in the shipped
|
|
|
|
|
versions of VMS V7.2 and V7.2-1 and in the currently (October 1999)
|
|
|
|
|
available ECOs for VMS V7.1 and newer versions. It is fixed in versions
|
|
|
|
|
shipped with newer VMS versions and all ECO kits after October 1999. It
|
|
|
|
|
only shows up during the daylight saving time period (DST): stat()
|
|
|
|
|
returns a modification time 1 hour ahead. This results in GNU make
|
|
|
|
|
warning messages. For a just created source you will see:
|
|
|
|
|
|
|
|
|
|
$ gmake x.exe
|
2012-03-04 00:24:20 +00:00
|
|
|
|
gmake.exe;1: *** Warning: File 'x.c' has modification time in the future (940582863 > 940579269)
|
2000-01-22 05:59:28 +00:00
|
|
|
|
cc /obj=x.obj x.c
|
|
|
|
|
link x.obj /exe=x.exe
|
|
|
|
|
gmake.exe;1: *** Warning: Clock skew detected. Your build may be incomplete.
|
|
|
|
|
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
New in 3.78.1:
|
|
|
|
|
|
|
|
|
|
Fix a problem with automatically remaking makefiles. GNU make uses an
|
|
|
|
|
execve to restart itself after a successful remake of the makefile. On
|
|
|
|
|
UNIX systems execve replaces the running program with a new one and
|
|
|
|
|
resets all signal handling to the default. On VMS execve creates a child
|
|
|
|
|
process, signal and exit handlers of the parent are still active, and,
|
|
|
|
|
unfortunately, corrupt the exit code from the child. Fix in job.c:
|
|
|
|
|
ignore SIGCHLD.
|
|
|
|
|
|
|
|
|
|
Added some switches to reflect latest features of DECC. Modifications in
|
|
|
|
|
makefile.vms.
|
|
|
|
|
|
|
|
|
|
Set some definitions to reflect latest features of DECC. Modifications in
|
|
|
|
|
config.h-vms (which is copied to config.h).
|
|
|
|
|
|
|
|
|
|
Added extern strcmpi declaration to avoid 'implicitly declared' messages.
|
|
|
|
|
Modification in make.h.
|
|
|
|
|
|
|
|
|
|
Default rule for C++, conditionals for gcc (GCC_IS_NATIVE) or DEC/Digital/
|
|
|
|
|
Compaq c/c++ compilers. Modifications in default.c.
|
|
|
|
|
|
|
|
|
|
Usage of opendir() and friends, suppress file version. Modifications in dir.c.
|
|
|
|
|
|
|
|
|
|
Added VMS specific code to handle ctrl+c and ctrl+y to abort make.
|
|
|
|
|
Modifications in job.c.
|
|
|
|
|
|
|
|
|
|
Added support to have case sensitive targets and dependencies but to
|
|
|
|
|
still use case blind file names. This is especially useful for Java
|
|
|
|
|
makefiles on VMS:
|
|
|
|
|
|
|
|
|
|
.SUFFIXES :
|
|
|
|
|
.SUFFIXES : .class .java
|
|
|
|
|
.java.class :
|
|
|
|
|
javac "$<
|
|
|
|
|
HelloWorld.class : HelloWorld.java
|
|
|
|
|
|
|
|
|
|
A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced.
|
|
|
|
|
It needs to be enabled to get this feature; default is disabled. The
|
|
|
|
|
macro HAVE_CASE_INSENSITIVE_FS must not be touched: it is still enabled.
|
|
|
|
|
Modifications in file.c and config.h-vms.
|
|
|
|
|
|
|
|
|
|
Bootstrap make to start building make is still makefile.com, but make
|
|
|
|
|
needs to be re-made with a make to make a correct version: ignore all
|
|
|
|
|
possible warnings, delete all objects, rename make.exe to a different
|
|
|
|
|
name and run it.
|
|
|
|
|
|
|
|
|
|
Made some minor modifications to the bootstrap build makefile.com.
|
|
|
|
|
|
1997-08-27 20:30:54 +00:00
|
|
|
|
This is the VMS port of GNU Make.
|
1996-03-20 14:57:41 +00:00
|
|
|
|
|
|
|
|
|
It is based on the VMS port of GNU Make 3.60 by Mike Moretti.
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
This port was done by Klaus K<>mpf <kkaempf@rmi.de>
|
|
|
|
|
|
|
|
|
|
There is first-level support available from proGIS Software, Germany.
|
|
|
|
|
Visit their web-site at http://www.progis.de to get information
|
|
|
|
|
about other vms software and forthcoming updates to gnu make.
|
|
|
|
|
|
|
|
|
|
New for 3.77:
|
|
|
|
|
|
|
|
|
|
/bin/sh style I/O redirection is supported. You can now write lines like
|
|
|
|
|
mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt
|
|
|
|
|
|
|
|
|
|
Makefile variables are looked up in the current environment. You can set
|
|
|
|
|
symbols or logicals in DCL and evaluate them in the Makefile via
|
|
|
|
|
$(<name-of-symbol-or-logical>). Variables defined in the Makefile
|
|
|
|
|
override VMS symbols/logicals !
|
|
|
|
|
|
|
|
|
|
Functions for file names are working now. See the GNU Make manual for
|
|
|
|
|
$(dir ...) and $(wildcard ...). Unix-style and VMS-style names are
|
|
|
|
|
supported as arguments.
|
|
|
|
|
|
|
|
|
|
The default rules are set up for GNU C. Building an executable from a
|
|
|
|
|
single source file is as easy as 'make file.exe'.
|
|
|
|
|
|
|
|
|
|
The variable $(ARCH) is predefined as ALPHA or VAX resp. Makefiles for
|
|
|
|
|
different VMS systems can now be written by checking $(ARCH) as in
|
|
|
|
|
ifeq ($(ARCH),ALPHA)
|
|
|
|
|
$(ECHO) "On the Alpha"
|
|
|
|
|
else
|
|
|
|
|
$(ECHO) "On the VAX"
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
Command lines of excessive length are correctly broken and written to a
|
|
|
|
|
batch file in sys$scratch for later execution. There's no limit to the
|
|
|
|
|
lengths of commands (and no need for .opt files :-) any more.
|
|
|
|
|
|
|
|
|
|
Empty commands are handled correctly and don't end in a new DCL process.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
New for 3.76:
|
|
|
|
|
|
|
|
|
|
John W. Eaton has updated the VMS port to support libraries and VPATH.
|
|
|
|
|
|
1996-03-20 14:57:41 +00:00
|
|
|
|
|
|
|
|
|
To build Make, simply type @makefile. This should compile all the
|
1997-08-27 20:30:54 +00:00
|
|
|
|
necessary files and link Make. There is also a file called
|
|
|
|
|
makefile.vms. If you already have GNU Make built you can just use
|
|
|
|
|
Make with this makefile to rebuild.
|
1996-03-20 14:57:41 +00:00
|
|
|
|
|
|
|
|
|
Here are some notes about GNU Make for VMS:
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
The cd command is supported if it's called as $(CD). This invokes
|
|
|
|
|
the 'builtin_cd' command which changes the directory.
|
|
|
|
|
Calling 'set def' doesn't do the trick, since a sub-shell is
|
|
|
|
|
spawned for this command, the directory is changed *in this sub-shell*
|
|
|
|
|
and the sub-shell ends.
|
|
|
|
|
|
|
|
|
|
Libraries are not supported. They were in GNU Make 3.60 but somehow I
|
|
|
|
|
didn't care porting the code. If there is enough interest, I'll do it at
|
|
|
|
|
some later time.
|
|
|
|
|
|
1996-03-20 14:57:41 +00:00
|
|
|
|
The variable $^ separates files with commas instead of spaces (It's the
|
|
|
|
|
natural thing to do for VMS).
|
|
|
|
|
|
|
|
|
|
See defaults.c for VMS default suffixes and my definitions for default
|
|
|
|
|
rules and variables.
|
|
|
|
|
|
|
|
|
|
The shell function is not implemented yet.
|
|
|
|
|
|
|
|
|
|
Load average routines haven't been implemented for VMS yet.
|
|
|
|
|
|
|
|
|
|
The default include directory for including other makefiles is
|
|
|
|
|
SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use
|
|
|
|
|
SYS$LIBRARY: instead; maybe it wouldn't work that way).
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
The default makefiles make looks for are: makefile.vms, gnumakefile,
|
|
|
|
|
makefile., and gnumakefile. .
|
1996-03-20 14:57:41 +00:00
|
|
|
|
|
|
|
|
|
The stat() function and handling of time stamps in VMS is broken, so I
|
|
|
|
|
replaced it with a hack in vmsfunctions.c. I will provide a full rewrite
|
|
|
|
|
somewhere in the future. Be warned, the time resolution inside make is
|
|
|
|
|
less than what vms provides. This might be a problem on the faster Alphas.
|
|
|
|
|
|
2013-04-30 13:37:03 +00:00
|
|
|
|
You can use a : in a filename only if you precede it with a backslash ('\').
|
1996-03-20 14:57:41 +00:00
|
|
|
|
E.g.- hobbes\:[bogas.files]
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
Make ignores success, informational, or warning errors (-S-, -I-, or
|
|
|
|
|
-W-). But it will stop on -E- and -F- errors. (unless you do something
|
|
|
|
|
to override this in your makefile, or whatever).
|
1996-03-20 14:57:41 +00:00
|
|
|
|
|
|
|
|
|
Remote stuff isn't implemented yet.
|
|
|
|
|
|
|
|
|
|
Multiple line DCL commands, such as "if" statements, must be put inside
|
|
|
|
|
command files. You can run a command file by using \@.
|
|
|
|
|
|
|
|
|
|
|
2000-01-22 05:43:03 +00:00
|
|
|
|
VMS changes made for 3.74.3
|
1998-07-30 20:54:47 +00:00
|
|
|
|
|
1996-03-20 14:57:41 +00:00
|
|
|
|
Lots of default settings are adapted for VMS. See default.c.
|
|
|
|
|
|
|
|
|
|
Long command lines are now converted to command files.
|
|
|
|
|
|
|
|
|
|
Comma (',') as a separator is now allowed. See makefile.vms for an example.
|
2006-02-11 19:02:21 +00:00
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
2013-05-17 05:46:11 +00:00
|
|
|
|
Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
2006-02-11 19:02:21 +00:00
|
|
|
|
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
|
2007-07-04 19:35:15 +00:00
|
|
|
|
Foundation; either version 3 of the License, or (at your option) any later
|
|
|
|
|
version.
|
2006-02-11 19:02:21 +00:00
|
|
|
|
|
|
|
|
|
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
|
2007-07-04 19:35:15 +00:00
|
|
|
|
this program. If not, see <http://www.gnu.org/licenses/>.
|