|
|
1.1 root 1: $! Set the def dir to proper place for use in batch. Works for interactive too.
2: $flnm = f$enviroment("PROCEDURE") ! get current procedure name
3: $set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
4: $!
5: $!
6: $! CAUTION: If you want to link gcc-cc1 to the sharable image library
7: $! VAXCRTL, see the notes in gcc.texinfo (or INSTALL) first.
8: $!
9: $! Build a GNU compiler on VMS
10: $!
11: $! First we figure out what needs to be done. This is sort of like a limited
12: $! make facility - the command line options specify exactly what components
13: $! we want to build. The following options are understood:
14: $!
15: $! LINK: Assume that the object modules for the selected compiler(s)
16: $! have already been compiled, perform link phase only.
17: $!
18: $! CC1: Compile and link "C" compiler.
19: $!
20: $! CC1PLUS:Compile and link "C++" compiler.
21: $!
22: $! CC1OBJ: Compile and link objective C compiler.
23: $!
24: $! ALL: Compile and link all of the CC1 passes.
25: $!
26: $! INDEPENDENT:
27: $! Compile language independent source modules. (On by default).
28: $!
29: $! DEBUG: Link images with /debug.
30: $!
31: $! If you want to list more than one option, you should use a spaces to
32: $! separate them.
33: $!
34: $! Any one of the above options can be prefaced with a "NO". For example,
35: $! if you had already built GCC, and you wanted to build G++, you could use the
36: $! "CC1PLUS NOINDEPENDENT" options, which would only compile the C++ language
37: $! specific source files, and then link the C++ compiler.
38: $!
39: $! If you do not specify which compiler you want to build, it is assumed that
40: $! you want to build GNU-C ("CC1").
41: $!
42: $p1 = p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7
43: $p1 = f$edit(p1,"COMPRESS")
44: $i=0
45: $DO_ALL = 0
46: $DO_LINK = 0
47: $DO_DEBUG = 0
48: $DO_CC1 = 0
49: $DO_CC1PLUS = 0
50: $DO_CC1OBJ = 0
51: $DO_INDEPENDENT = 1
52: $DO_DEFAULT = 1
53: $loop:
54: $string = f$element(i," ",p1)
55: $if string.eqs." " then goto done
56: $flag = 1
57: $if string.eqs."CC1PLUS" then DO_DEFAULT = 0
58: $if string.eqs."CC1OBJ" then DO_DEFAULT = 0
59: $if f$extract(0,2,string).nes."NO" then goto parse_option
60: $ string=f$extract(2,f$length(string)-2,string)
61: $ flag = 0
62: $parse_option:
63: $DO_'string' = flag
64: $i=i+1
65: $goto loop
66: $!
67: $done:
68: $if DO_DEFAULT.eq.1 then DO_CC1 = 1
69: $if DO_ALL.eq.1 then DO_CC1 = 1
70: $if DO_ALL.eq.1 then DO_CC1PLUS = 1
71: $if DO_ALL.eq.1 then DO_CC1OBJ = 1
72: $say:==write sys$Output
73: $say "This command file will now perform the following actions:
74: $if DO_LINK.eq.1 then goto link_only
75: $if DO_CC1.eq.1 then say " Compile C specific object modules."
76: $if DO_CC1PLUS.eq.1 then say " Compile C++ specific object modules."
77: $if DO_CC1OBJ.eq.1 then say " Compile obj-C specific object modules."
78: $if DO_INDEPENDENT.eq.1 then say " Compile language independent object modules."
79: $link_only:
80: $if DO_CC1.eq.1 then say " Link C compiler (gcc-cc1.exe)."
81: $if DO_CC1PLUS.eq.1 then say " Link C++ compiler (gcc-cc1plus.exe)."
82: $if DO_CC1OBJ.eq.1 then say " Link objective-C compiler (gcc-cc1obj.exe)."
83: $if DO_DEBUG.eq.1 then say " Link images to run under debugger."
84: $type sys$input
85:
86: Note: GCC 2.0 treats external variables differently than GCC 1.40 does.
87: Before you use GCC 2.0, you should obtain a version of the assembler which
88: contains the patches to work with GCC 2.0 (GCC-AS 1.38 does not contain
89: these patches - whatever comes after this probably will).
90:
91: If you do not update the assembler, the compiler will still work,
92: but `extern const' variables will be treated as `extern'. This will result
93: in linker warning messages about mismatched psect attributes, and these
94: variables will be placed in read/write storage.
95:
96: $!
97: $!
98: $!
99: $! CAUTION: If you want to link gcc-cc1 to the sharable image library
100: $! VAXCRTL, see the notes in gcc.texinfo (or INSTALL) first.
101: $!
102: $! Build the GNU "C" compiler on VMS
103: $! (To try to build with VAX C, replace `gcc' with `cc/noopt'
104: $! and delete `cc1_options="-mpcc-alignment"'.
105: $! Also add `/sel' after `gcclib/lib' except in the last link.
106: $! You also need to get alloca.mar from Bison
107: $! and to make definitions for bzero, bcopy and bcmp.)
108: $!
109: $! C compiler
110: $!
111: $ CC := gcc
112: $ BISON := bison
113: $ RENAME := rename
114: $ LINK := link
115: $!
116: $! Compiler options
117: $!
118: $ CFLAGS = "/debug/cc1_options=""-mpcc-alignment""/inc=([],[.config])"
119: $!
120: $! Link options
121: $!
122: $ LDFLAGS := /nomap
123: $ if DO_DEBUG.eq.1 then LDFLAGS :='LDFLAGS'/debug
124: $!
125: $! Link libraries
126: $!
127: $ LIBS := gnu_cc:[000000]gcclib/libr,sys$share:vaxcrtl/libr
128: $!
129: $!
130: $!
131: $!
132: $! Language independent object and header files.
133: $!
134: $! create a linker options file that lists all of the language independent
135: $! object modules.
136: $!
137: $create independent.opt
138: !
139: ! List of object files for the linker - these are language independent
140: ! (i.e. the same files will be used for all of the compilers).
141: !
142: toplev,tree,print-tree,stor-layout,fold-const,varasm,rtl,rtlanal,expr,stmt
143: expmed,explow,optabs,emit-rtl,insn-emit,jump,cse,loop,flow,stupid,combine
144: regclass,local-alloc,global-alloc,reload,reload1,insn-peep,final,recog
145: insn-recog,insn-extract,insn-output,obstack,integrate,caller-save,calls
146: dwarfout,function,insn-attrtab,reorg,sched,sdbout,dbxout,unroll,reg-stack
147: aux-output,print-rtl,version
148: $!
149: $pur/nolog independent.opt
150: $!
151: $ if DO_LINK.eq.1 then goto compile_cc1
152: $if DO_INDEPENDENT.eq.0 THEN GOTO compile_cc1
153: $!
154: $! First build a couple of header files from the machine description
155: $! These are used by many of the source modules, so we build them now.
156: $!
157: $ 'CC 'CFLAGS rtl.c
158: $ 'CC 'CFLAGS obstack.c
159: $ 'CC 'CFLAGS print-rtl.c
160: $! Generate insn-attr.h
161: $ 'CC 'CFLAGS genattr.c
162: $ link 'LDFLAGS' genattr,rtl,obstack, 'LIBS'
163: $ assign/user insn-attr.h sys$output:
164: $ mcr sys$disk:[]genattr md
165: $! Generate insn-flags.h
166: $ 'CC 'CFLAGS genflags.c
167: $ link 'LDFLAGS' genflags,rtl,obstack, 'LIBS'
168: $ assign/user insn-flags.h sys$output:
169: $ mcr sys$disk:[]genflags md
170: $! Generate insn-codes.h
171: $ 'CC 'CFLAGS gencodes.c
172: $ link 'LDFLAGS' gencodes,rtl,obstack, 'LIBS'
173: $ assign/user insn-codes.h sys$output:
174: $ mcr sys$disk:[]gencodes md
175: $! Generate insn-config.h
176: $ 'CC 'CFLAGS genconfig.c
177: $ link 'LDFLAGS' genconfig,rtl,obstack, 'LIBS'
178: $ assign/user insn-config.h sys$output:
179: $ mcr sys$disk:[]genconfig md
180: $!
181: $! Now compile the source modules
182: $!
183: $ 'CC 'CFLAGS toplev.c
184: $ 'CC 'CFLAGS version.c
185: $ 'CC 'CFLAGS tree.c
186: $ 'CC 'CFLAGS print-tree.c
187: $ 'CC 'CFLAGS stor-layout.c
188: $ 'CC 'CFLAGS fold-const.c
189: $ 'CC 'CFLAGS varasm.c
190: $ 'CC 'CFLAGS expr.c
191: $ 'CC 'CFLAGS stmt.c
192: $ 'CC 'CFLAGS expmed.c
193: $ 'CC 'CFLAGS explow.c
194: $ 'CC 'CFLAGS optabs.c
195: $ 'CC 'CFLAGS rtlanal.c
196: $ 'CC 'CFLAGS emit-rtl.c
197: $! Generate insn-emit.c
198: $ 'CC 'CFLAGS genemit.c
199: $ link 'LDFLAGS' genemit,rtl,obstack, 'LIBS'
200: $ assign/user insn-emit.c sys$output:
201: $ mcr sys$disk:[]genemit md
202: $!
203: $ 'CC 'CFLAGS insn-emit.c
204: $ 'CC 'CFLAGS jump.c
205: $ 'CC 'CFLAGS cse.c
206: $ 'CC 'CFLAGS loop.c
207: $ 'CC 'CFLAGS flow.c
208: $ 'CC 'CFLAGS stupid.c
209: $ 'CC 'CFLAGS combine.c
210: $ 'CC 'CFLAGS regclass.c
211: $ 'CC 'CFLAGS local-alloc.c
212: $ 'CC 'CFLAGS global-alloc.c
213: $ 'CC 'CFLAGS reload.c
214: $ 'CC 'CFLAGS reload1.c
215: $! Generate insn-peep.c
216: $ 'CC 'CFLAGS genpeep.c
217: $ link 'LDFLAGS' genpeep,rtl,obstack, 'LIBS'
218: $ assign/user insn-peep.c sys$output:
219: $ mcr sys$disk:[]genpeep md
220: $!
221: $ 'CC 'CFLAGS insn-peep.c
222: $ 'CC 'CFLAGS final.c
223: $ 'CC 'CFLAGS recog.c
224: $! Generate insn-recog.c
225: $ 'CC 'CFLAGS genrecog.c
226: $ link 'LDFLAGS' genrecog,rtl,obstack, 'LIBS'
227: $ assign/user insn-recog.c sys$output:
228: $ mcr sys$disk:[]genrecog md
229: $!
230: $ 'CC 'CFLAGS insn-recog.c
231: $! Generate insn-extract.c
232: $ 'CC 'CFLAGS genextract.c
233: $ link 'LDFLAGS' genextract,rtl,obstack, 'LIBS'
234: $ assign/user insn-extract.c sys$output:
235: $ mcr sys$disk:[]genextract md
236: $!
237: $ 'CC 'CFLAGS insn-extract.c
238: $! Generate insn-output.c
239: $ 'CC 'CFLAGS genoutput.c
240: $ link 'LDFLAGS' genoutput,rtl,obstack, 'LIBS'
241: $ assign/user insn-output.c sys$output:
242: $ mcr sys$disk:[]genoutput md
243: $!
244: $ 'CC 'CFLAGS insn-output.c
245: $ 'CC 'CFLAGS integrate.c
246: $ 'CC 'CFLAGS caller-save.c
247: $ 'CC 'CFLAGS calls.c
248: $ 'CC 'CFLAGS dwarfout.c
249: $ 'CC 'CFLAGS dbxout.c
250: $ 'CC 'CFLAGS reg-stack.c
251: $ 'CC 'CFLAGS function.c
252: $ 'CC 'CFLAGS reorg.c
253: $ 'CC 'CFLAGS sched.c
254: $ 'CC 'CFLAGS sdbout.c
255: $ 'CC 'CFLAGS unroll.c
256: $! Generate insn-attrtab.c
257: $ 'CC 'CFLAGS genattrtab.c
258: $ link 'LDFLAGS' genattrtab,rtl,rtlanal,obstack, 'LIBS'
259: $ assign/user insn-attrtab.c sys$output:
260: $ mcr sys$disk:[]genattrtab md
261: $ 'CC 'CFLAGS insn-attrtab.c
262: $ 'CC 'CFLAGS aux-output.c
263: $!
264: $compile_cc1:
265: $!
266: $! C language specific modules
267: $!
268: $if DO_CC1.eq.0 then goto compile_cc1plus
269: $if DO_LINK.eq.1 then goto link_cc1
270: $!
271: $ if (f$search("C-PARSE.C") .eqs. "") then goto gcc_bison
272: $ if (f$cvtime(f$file_attributes("C-PARSE.Y","RDT")).les. -
273: f$cvtime(f$file_attributes("C-PARSE.C","RDT"))) -
274: then goto gcc_nobison
275: $gcc_bison: 'BISON' /define /verbose c-parse.y
276: $ 'RENAME' c-parse_tab.c c-parse.c
277: $ 'RENAME' c-parse_tab.h c-parse.h
278: $gcc_nobison:
279: $ 'CC 'CFLAGS c-parse.c
280: $ 'CC 'CFLAGS c-lex.c
281: $ 'CC 'CFLAGS c-decl.c
282: $ 'CC 'CFLAGS c-typeck.c
283: $ 'CC 'CFLAGS c-convert.c
284: $ 'CC 'CFLAGS c-aux-info.c
285: $ 'CC 'CFLAGS c-common.c
286: $ 'CC 'CFLAGS c-lang.c
287: $!
288: $! CAUTION: If you want to link gcc-cc1 to the sharable image library
289: $! VAXCRTL, see the notes in gcc.texinfo (or INSTALL) first.
290: $!
291: $link_cc1:
292: $ link 'LDFLAGS' /exe=gcc-cc1 version.opt/opt,sys$input:/opt, -
293: independent.opt/opt,'LIBS'
294: !
295: ! "CC1" Linker options file
296: !
297: !
298: c-parse,c-decl,c-typeck,c-convert,c-aux-info,c-common,c-lang,c-lex
299: $!
300: $! C++ language specific modules
301: $!
302: $compile_cc1plus:
303: $!
304: $if DO_CC1PLUS.eq.0 then goto compile_cc1obj
305: $if DO_LINK.eq.1 then goto link_cc1plus
306: $!
307: $ if (f$search("CP-PARSE.C") .eqs. "") then goto cplus_bison
308: $ if (f$cvtime(f$file_attributes("CP-PARSE.Y","RDT")).les. -
309: f$cvtime(f$file_attributes("CP-PARSE.C","RDT"))) -
310: then goto cplus_nobison
311: $cplus_bison:
312: $ 'BISON' /define /verbose cp-parse.y
313: $ 'RENAME' cp-parse_tab.c cp-parse.c
314: $ 'RENAME' cp-parse_tab.h cp-parse.h
315: $cplus_nobison:
316: $!
317: $ 'CC 'CFLAGS cp-parse.c
318: $ 'CC 'CFLAGS cp-decl.c
319: $ 'CC 'CFLAGS cp-decl2.c
320: $ 'CC 'CFLAGS cp-typeck.c
321: $ 'CC 'CFLAGS cp-type2.c
322: $ 'CC 'CFLAGS cp-tree.c
323: $ 'CC 'CFLAGS cp-ptree.c
324: $ 'CC 'CFLAGS cp-cvt.c
325: $ 'CC 'CFLAGS cp-search.c
326: $ 'CC 'CFLAGS cp-lex.c
327: $ 'CC 'CFLAGS cp-gc.c
328: $ 'CC 'CFLAGS cp-call.c
329: $ 'CC 'CFLAGS cp-class.c
330: $ 'CC 'CFLAGS cp-init.c
331: $ 'CC 'CFLAGS cp-method.c
332: $ 'CC 'CFLAGS cp-except.c
333: $ 'CC 'CFLAGS cp-expr.c
334: $ 'CC 'CFLAGS cp-pt.c
335: $ 'CC 'CFLAGS cp-edsel.c
336: $ 'CC 'CFLAGS cp-xref.c
337: $ 'CC 'CFLAGS cp-spew.c
338: $ 'CC 'CFLAGS c-common.c
339: $!
340: $link_cc1plus:
341: $ link 'LDFLAGS' /exe=gcc-cc1plus version.opt/opt,sys$input:/opt, -
342: independent.opt/opt,'LIBS'
343: !
344: ! "CC1PLUS" Linker options file
345: !
346: cp-parse,cp-decl,cp-decl2,cp-typeck,cp-type2,cp-tree
347: cp-ptree,cp-cvt,cp-search,cp-lex,cp-gc,cp-call,cp-class
348: cp-init,cp-method,cp-except,cp-expr,cp-pt,cp-edsel
349: cp-xref,cp-spew,c-common
350: $!
351: $! objective language specific modules
352: $!
353: $compile_cc1obj:
354: $if DO_CC1OBJ.eq.0 then goto all_done
355: $if DO_LINK.eq.1 then goto LINK_CC1OBJ
356: $!
357: $ if (f$search("OBJC-PARSE.C") .eqs. "") then goto objc_bison
358: $ if (f$cvtime(f$file_attributes("OBJC-PARSE.Y","RDT")).les. -
359: f$cvtime(f$file_attributes("OBJC-PARSE.C","RDT"))) -
360: then goto objc_nobison
361: $objc_bison:
362: $ 'BISON' /define /verbose OBJC-PARSE.y
363: $ 'RENAME' OBJC-PARSE_tab.c OBJC-PARSE.c
364: $ 'RENAME' OBJC-PARSE_tab.h OBJC-PARSE.h
365: $objc_nobison:
366: $ 'CC 'CFLAGS objc-parse.c
367: $ 'CC 'CFLAGS objc-actions.c
368: $!
369: $! If have also built CC1, we do not need to recompile these modules.
370: $!
371: $if DO_CC1.eq.1 then goto LINK_CC1OBJ
372: $ 'CC 'CFLAGS c-lex.c
373: $ 'CC 'CFLAGS c-decl.c
374: $ 'CC 'CFLAGS c-typeck.c
375: $ 'CC 'CFLAGS c-convert.c
376: $ 'CC 'CFLAGS c-aux-info.c
377: $ 'CC 'CFLAGS c-common.c
378: $!
379: $!
380: $LINK_CC1OBJ:
381: $ link 'LDFLAGS' /exe=gcc-cc1obj version.opt/opt,sys$input:/opt, -
382: independent.opt/opt,'LIBS'
383: !
384: ! "Objective C" Linker options file
385: !
386: objc-parse,objc-actions,c-lex,c-decl,c-typeck,c-convert,c-aux-info,c-common
387: $!
388: $all_done:
389: $!
390: $! Done
391: $!
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.