vmsbuild.com revision 1.1.1.3.2.1 1 $! Id: vmsbuild.com,v 1.1 2000/11/21 00:38:46 tom Exp
2 $! VMS build-script for BYACC. Requires installed C compiler
3 $!
4 $! Screen Configurations
5 $! ---------------------
6 $! To build BYACC, type:
7 $! $ @vmsbuild [BYACC [<compiler> [bld_target]]]
8 $!
9 $! where:
10 $! <compiler> :== { decc | vaxc }
11 $!
12 $! The default compiler on VAX hosts is vaxc, else decc (Alpha hosts).
13 $!
14 $! -----------------------------------------------------------
15 $ hlp = f$edit("''p1'", "UPCASE")
16 $ if "''hlp'" .eqs. "HELP" .or. -
17 "''hlp'" .eqs. "-H" .or. -
18 "''hlp'" .eqs. "-?" .or. -
19 "''hlp'" .eqs. "?" then gosub usage
20 $ goto start
21 $!
22 $ vaxc_config:
23 $ comp = "__vaxc__=1"
24 $ CFLAGS = "/VAXC"
25 $ DEFS = ",HAVE_STRERROR"
26 $ using_vaxc = 1
27 $ return
28 $!
29 $ decc_config:
30 $ comp = "__decc__=1"
31 $ CFLAGS = "/DECC/prefix=all"
32 $ DEFS = ",HAVE_ALARM,HAVE_STRERROR"
33 $ return
34 $!
35 $ usage:
36 $ write sys$output "usage: "
37 $ write sys$output " $ @vmsbuild [BYACC [{decc | vaxc} [<bldtarget>]]]"
38 $ exit 2
39 $!
40 $ start:
41 $! -----------------------------------------------------------
42 $! pickup user's compiler choice, if any
43 $! -----------------------------------------------------------
44 $!
45 $ comp = ""
46 $ using_vaxc = 0
47 $ if "''p2'" .nes. ""
48 $ then
49 $ comp = f$edit(p2, "UPCASE")
50 $ if "''comp'" .eqs. "VAXC"
51 $ then
52 $ gosub vaxc_config
53 $ else
54 $ if "''comp'" .eqs. "DECC"
55 $ then
56 $ gosub decc_config
57 $ else
58 $ gosub usage
59 $ endif
60 $ endif
61 $ endif
62 $! -----------------------------------------------------------
63 $! Build the option-file
64 $!
65 $ open/write optf vms_link.opt
66 $ write optf "closure.obj"
67 $ write optf "error.obj"
68 $ write optf "lalr.obj"
69 $ write optf "lr0.obj"
70 $ write optf "mkpar.obj"
71 $ write optf "output.obj"
72 $ write optf "reader.obj"
73 $ write optf "skeleton.obj"
74 $ write optf "symtab.obj"
75 $ write optf "verbose.obj"
76 $ write optf "warshall.obj"
77 $! ----------------------------------
78 $! Look for the compiler used and specify architecture.
79 $!
80 $ CC = "CC"
81 $ if f$getsyi("HW_MODEL").ge.1024
82 $ then
83 $ arch = "__alpha__=1"
84 $ if "''comp'" .eqs. "" then gosub decc_config
85 $ else
86 $ arch = "__vax__=1"
87 $ if "''comp'" .nes. "" then goto screen_config
88 $ if f$search("SYS$SYSTEM:VAXC.EXE").nes.""
89 $ then
90 $ gosub vaxc_config
91 $ else
92 $ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes.""
93 $ then
94 $ gosub decc_config
95 $ else
96 $ DEFS = ",HAVE_STRERROR"
97 $ if f$trnlnm("GNU_CC").eqs.""
98 $ then
99 $ write sys$output "C compiler required to rebuild BYACC"
100 $ close optf
101 $ exit
102 $ else
103 $ write optf "gnu_cc:[000000]gcclib.olb/lib"
104 $ comp = "__gcc__=1"
105 $ CC = "GCC"
106 $ endif
107 $ endif
108 $ endif
109 $ endif
110 $!
111 $ screen_config:
112 $!
113 $ if using_vaxc .eq. 1 then write optf "sys$library:vaxcrtl.exe/share"
114 $ close optf
115 $! -------------- vms_link.opt is created -------------
116 $ if f$edit("''p1'", "UPCASE") .eqs. "VMS_LINK.OPT"
117 $ then
118 $! mms called this script to build vms_link.opt. all done
119 $ exit
120 $ endif
121 $!
122 $ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
123 $ then
124 $! can also use /Debug /Listing, /Show=All
125 $
126 $ CFLAGS := 'CFLAGS/Diagnostics /Define=("''DEFS'") /Include=([])
127 $
128 $ if "''p3'" .nes. "" then goto 'p3
129 $!
130 $!
131 $ all :
132 $!
133 $ call make closure
134 $ call make error
135 $ call make lalr
136 $ call make lr0
137 $ call make main
138 $ call make mkpar
139 $ call make output
140 $ call make reader
141 $ call make skeleton
142 $ call make symtab
143 $ call make verbose
144 $ call make warshall
145 $!
146 $ link /exec='target/map/cross main.obj, vms_link/opt
147 $ goto build_last
148 $!
149 $ install :
150 $ WRITE SYS$ERROR "** no rule for install"
151 $ goto build_last
152 $!
153 $ clobber :
154 $ if f$search("BYACC.com") .nes. "" then delete BYACC.com;*
155 $ if f$search("*.exe") .nes. "" then delete *.exe;*
156 $! fallthru
157 $!
158 $ clean :
159 $ if f$search("*.obj") .nes. "" then delete *.obj;*
160 $ if f$search("*.bak") .nes. "" then delete *.bak;*
161 $ if f$search("*.lis") .nes. "" then delete *.lis;*
162 $ if f$search("*.log") .nes. "" then delete *.log;*
163 $ if f$search("*.map") .nes. "" then delete *.map;*
164 $ if f$search("*.opt") .nes. "" then delete *.opt;*
165 $! fallthru
166 $!
167 $ build_last :
168 $ if f$search("*.dia") .nes. "" then delete *.dia;*
169 $ if f$search("*.lis") .nes. "" then purge *.lis
170 $ if f$search("*.obj") .nes. "" then purge *.obj
171 $ if f$search("*.map") .nes. "" then purge *.map
172 $ if f$search("*.opt") .nes. "" then purge *.opt
173 $ if f$search("*.exe") .nes. "" then purge *.exe
174 $ if f$search("*.log") .nes. "" then purge *.log
175 $! fallthru
176 $!
177 $ vms_link_opt :
178 $ exit 1
179 $!
180 $! Runs BYACC from the current directory (used for testing)
181 $ byacc_com :
182 $ if "''f$search("BYACC.com")'" .nes. "" then delete BYACC.com;*
183 $ copy nl: BYACC.com
184 $ open/append test_script BYACC.com
185 $ write test_script "$ temp = f$environment(""procedure"")"
186 $ write test_script "$ temp = temp -"
187 $ write test_script " - f$parse(temp,,,""version"",""syntax_only"") -"
188 $ write test_script " - f$parse(temp,,,""type"",""syntax_only"")"
189 $ write test_script "$ BYACC :== $ 'temp'.exe"
190 $ write test_script "$ define/user_mode sys$input sys$command"
191 $ write test_script "$ define/user_mode sys$output sys$command"
192 $ write test_script "$ BYACC 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8"
193 $ close test_script
194 $ write sys$output "** made BYACC.com"
195 $ exit
196 $!
197 $ else
198 $ mms/ignore=warning/macro=('comp','mmstar','arch') 'p3
199 $ endif
200 $ exit
201 $ make: subroutine
202 $ if f$search("''p1'.obj") .eqs. ""
203 $ then
204 $ write sys$output "compiling ''p1'"
205 $ 'CC 'CFLAGS 'p1.c
206 $ if f$search("''p1'.dia") .nes. "" then delete 'p1.dia;*
207 $ endif
208 $exit
209 $ return
210 $ endsubroutine
211