VirtualBox

source: kBuild/trunk/src/gmake/readme.vms@ 225

Last change on this file since 225 was 53, checked in by bird, 21 years ago

Initial revision

  • Property svn:eol-style set to native
File size: 7.0 KB
Line 
1This is the VMS port of GNU Make done by [email protected].
2
3It is based on the specific version 3.77k and on 3.78.1. 3.77k was done
4by Klaus Kämpf <[email protected]>, the code was based on the VMS port of
5GNU Make 3.60 by Mike Moretti.
6
7It was ported on OpenVMS/Alpha V7.1, DECC V5.7-006. It was re-build and
8tested on OpenVMS/Alpha V7.2, OpenVMS/VAX 7.1 and 5.5-2. Different
9versions of DECC were used. VAXC was tried: it fails; but it doesn't
10seem worth to get it working. There are still some PTRMISMATCH warnings
11during the compile. Although perl is working on VMS the test scripts
12don't work. The function $shell is still missing.
13
14There is a known bug in some of the VMS CRTLs. It is in the shipped
15versions of VMS V7.2 and V7.2-1 and in the currently (October 1999)
16available ECOs for VMS V7.1 and newer versions. It is fixed in versions
17shipped with newer VMS versions and all ECO kits after October 1999. It
18only shows up during the daylight saving time period (DST): stat()
19returns a modification time 1 hour ahead. This results in GNU make
20warning messages. For a just created source you will see:
21
22 $ gmake x.exe
23 gmake.exe;1: *** Warning: File `x.c' has modification time in the future (940582863 > 940579269)
24 cc /obj=x.obj x.c
25 link x.obj /exe=x.exe
26 gmake.exe;1: *** Warning: Clock skew detected. Your build may be incomplete.
27
28
29New in 3.78.1:
30
31Fix a problem with automatically remaking makefiles. GNU make uses an
32execve to restart itself after a successful remake of the makefile. On
33UNIX systems execve replaces the running program with a new one and
34resets all signal handling to the default. On VMS execve creates a child
35process, signal and exit handlers of the parent are still active, and,
36unfortunately, corrupt the exit code from the child. Fix in job.c:
37ignore SIGCHLD.
38
39Added some switches to reflect latest features of DECC. Modifications in
40makefile.vms.
41
42Set some definitions to reflect latest features of DECC. Modifications in
43config.h-vms (which is copied to config.h).
44
45Added extern strcmpi declaration to avoid 'implicitly declared' messages.
46Modification in make.h.
47
48Default rule for C++, conditionals for gcc (GCC_IS_NATIVE) or DEC/Digital/
49Compaq c/c++ compilers. Modifications in default.c.
50
51Usage of opendir() and friends, suppress file version. Modifications in dir.c.
52
53Added VMS specific code to handle ctrl+c and ctrl+y to abort make.
54Modifications in job.c.
55
56Added support to have case sensitive targets and dependencies but to
57still use case blind file names. This is especially useful for Java
58makefiles on VMS:
59
60 .SUFFIXES :
61 .SUFFIXES : .class .java
62 .java.class :
63 javac "$<
64 HelloWorld.class : HelloWorld.java
65
66A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced.
67It needs to be enabled to get this feature; default is disabled. The
68macro HAVE_CASE_INSENSITIVE_FS must not be touched: it is still enabled.
69Modifications in file.c and config.h-vms.
70
71Bootstrap make to start building make is still makefile.com, but make
72needs to be re-made with a make to make a correct version: ignore all
73possible warnings, delete all objects, rename make.exe to a different
74name and run it.
75
76Made some minor modifications to the bootstrap build makefile.com.
77
78
79This is the VMS port of GNU Make.
80
81It is based on the VMS port of GNU Make 3.60 by Mike Moretti.
82
83This port was done by Klaus Kämpf <[email protected]>
84
85There is first-level support available from proGIS Software, Germany.
86Visit their web-site at http://www.progis.de to get information
87about other vms software and forthcoming updates to gnu make.
88
89New for 3.77:
90
91/bin/sh style I/O redirection is supported. You can now write lines like
92 mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt
93
94Makefile variables are looked up in the current environment. You can set
95symbols or logicals in DCL and evaluate them in the Makefile via
96$(<name-of-symbol-or-logical>). Variables defined in the Makefile
97override VMS symbols/logicals !
98
99Functions for file names are working now. See the GNU Make manual for
100$(dir ...) and $(wildcard ...). Unix-style and VMS-style names are
101supported as arguments.
102
103The default rules are set up for GNU C. Building an executable from a
104single source file is as easy as 'make file.exe'.
105
106The variable $(ARCH) is predefined as ALPHA or VAX resp. Makefiles for
107different VMS systems can now be written by checking $(ARCH) as in
108 ifeq ($(ARCH),ALPHA)
109 $(ECHO) "On the Alpha"
110 else
111 $(ECHO) "On the VAX"
112 endif
113
114Command lines of excessive length are correctly broken and written to a
115batch file in sys$scratch for later execution. There's no limit to the
116lengths of commands (and no need for .opt files :-) any more.
117
118Empty commands are handled correctly and don't end in a new DCL process.
119
120
121New for 3.76:
122
123John W. Eaton has updated the VMS port to support libraries and VPATH.
124
125
126To build Make, simply type @makefile. This should compile all the
127necessary files and link Make. There is also a file called
128makefile.vms. If you already have GNU Make built you can just use
129Make with this makefile to rebuild.
130
131Here are some notes about GNU Make for VMS:
132
133The cd command is supported if it's called as $(CD). This invokes
134the 'builtin_cd' command which changes the directory.
135Calling 'set def' doesn't do the trick, since a sub-shell is
136spawned for this command, the directory is changed *in this sub-shell*
137and the sub-shell ends.
138
139Libraries are not supported. They were in GNU Make 3.60 but somehow I
140didn't care porting the code. If there is enough interest, I'll do it at
141some later time.
142
143The variable $^ separates files with commas instead of spaces (It's the
144natural thing to do for VMS).
145
146See defaults.c for VMS default suffixes and my definitions for default
147rules and variables.
148
149The shell function is not implemented yet.
150
151Load average routines haven't been implemented for VMS yet.
152
153The default include directory for including other makefiles is
154SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use
155SYS$LIBRARY: instead; maybe it wouldn't work that way).
156
157The default makefiles make looks for are: makefile.vms, gnumakefile,
158makefile., and gnumakefile. .
159
160The stat() function and handling of time stamps in VMS is broken, so I
161replaced it with a hack in vmsfunctions.c. I will provide a full rewrite
162somewhere in the future. Be warned, the time resolution inside make is
163less than what vms provides. This might be a problem on the faster Alphas.
164
165You can use a : in a filename only if you preceed it with a backslash ('\').
166E.g.- hobbes\:[bogas.files]
167
168Make ignores success, informational, or warning errors (-S-, -I-, or
169-W-). But it will stop on -E- and -F- errors. (unless you do something
170to override this in your makefile, or whatever).
171
172Remote stuff isn't implemented yet.
173
174Multiple line DCL commands, such as "if" statements, must be put inside
175command files. You can run a command file by using \@.
176
177
178VMS changes made for 3.74.3
179
180Lots of default settings are adapted for VMS. See default.c.
181
182Long command lines are now converted to command files.
183
184Comma (',') as a separator is now allowed. See makefile.vms for an example.
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette