]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/byacc/vmsbuild.com
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / byacc / vmsbuild.com
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