VirtualBox

source: kBuild/vendor/gnumake/2005-05-16/readme.vms@ 1989

Last change on this file since 1989 was 280, checked in by bird, 20 years ago

Current make snaphot, 2005-05-16.

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