1#
2# makefile for egcs
3#
4# Created by Klaus K"ampf, kkaempf@progis.de
5#
6
7# choose egcs or dec c
8#CC = gcc
9CC = cc
10
11# With or withou haifa scheduler ?
12#HAIFA=,"HAIFA"
13HAIFA=
14
15PWD=sys$$disk:[]
16RM=delete/nolog
17
18ifeq ($(CC),gcc)
19ifeq ($(ARCH),ALPHA)
20CFLAGS=/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))
21LIBS=,gnu_cc_library:libgcc.olb/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj
22else
23CFLAGS=/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))
24LIBS=,gnu_cc_library:libgcc.olb/lib,sys$$library:vaxcrtl.olb/lib
25endif
26LFLAGS=/map/full
27#LFLAGS=
28else
29ifeq ($(ARCH),ALPHA)
30CFLAGS=/names=as_is/float=ieee/noopt/debug/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))\
31/warning=disable=(missingreturn,implicitfunc,ptrmismatch,undefescap,longextern,duptypespec)
32else
33CFLAGS=/noopt/debug/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))
34endif
35LFLAGS=/nomap
36LIBS=,sys$$library:vaxcrtl.olb/lib
37endif
38
39BISON = bison
40BISON_FLAGS=  /Yacc/Define/Verbose
41RENAME=	rename/New_Version
42LINK  =	link		#/noshare/nosysshr
43EDIT  =	edit
44SEARCH=	search
45ABORT =	exit %x002C
46echo  =	write sys$$output
47
48CINCL1	=	/Incl=([],[.config])
49CINCL2	=	/Incl=([],[.ginclude],[.config])
50CINCL_SUB =	/Incl=([],[-],[-.ginclude],[-.config])
51CINCL_CP=	/Incl=([],[.config],[.cp],[.cp.inc])
52
53MDFILE = [.config.$(ARCH)]$(ARCH).md
54
55ifeq ($(HAIFA),)
56SCHED=sched
57else
58SCHED=haifa-sched
59endif
60
61GENOBJS=[]rtl.obj,obstack.obj
62
63INDEPOBJS= []toplev.obj,version.obj,tree.obj,print-tree.obj,stor-layout.obj,\
64fold-const.obj,function.obj,stmt.obj,except.obj,expr.obj,calls.obj,expmed.obj,\
65explow.obj,optabs.obj,varasm.obj,rtl.obj,print-rtl.obj,rtlanal.obj,\
66emit-rtl.obj,genrtl.obj,real.obj,regmove.obj,dbxout.obj,sdbout.obj,dwarfout.obj,\
67dwarf2out.obj,xcoffout.obj,bitmap.obj,alias.obj,\
68integrate.obj,jump.obj,cse.obj,loop.obj,unroll.obj,flow.obj,stupid.obj,\
69combine.obj,regclass.obj,local-alloc.obj,global.obj,reload.obj,\
70reload1.obj,caller-save.obj,insn-peep.obj,reorg.obj,$(SCHED).obj,\
71final.obj,recog.obj,reg-stack.obj,insn-opinit.obj,insn-recog.obj,\
72insn-extract.obj,insn-output.obj,insn-emit.obj,\
73profile.obj,insn-attrtab.obj,\
74aux-output.obj,getpwd.obj,convert.obj
75
76CC1OBJS=[]c-parse.obj,c-lang.obj,c-lex.obj,c-pragma.obj,c-decl.obj,\
77c-typeck.obj,c-convert.obj,c-aux-info.obj,c-common.obj,c-iterate.obj,\
78obstack.obj
79
80OBJCOBJS=
81
82# list copied from cc1plus-objs.opt
83
84CC1PLUSOBJS=[.cp]call.obj,[.cp]decl2.obj,\
85[.cp]except.obj,[.cp]pt.obj,\
86[.cp]spew.obj,[.cp]xref.obj,[.cp]class.obj,\
87[.cp]expr.obj,[.cp]lex.obj,\
88[.cp]ptree.obj,[.cp]tree.obj,[.cp]cvt.obj,\
89[.cp]errfn.obj,[.cp]rtti.obj,[.cp]method.obj,\
90[.cp]search.obj,[.cp]typeck.obj,[.cp]decl.obj,\
91[.cp]error.obj,[.cp]friend.obj,[.cp]init.obj,[.cp]parse.obj,\
92[.cp]sig.obj,[.cp]typeck2.obj,[.cp]repo.obj,\
93[.cp]input.obj,\
94[]obstack.obj,\
95[]c-common.obj,[]c-pragma.obj
96
97CCCPOBJS=[]cccp.obj,cexp.obj,version.obj,prefix.obj
98
99ALLOCA=,[]alloca.obj
100
101LIBIBERTY = [-.libiberty]libiberty.olb
102
103CXX_LIB2FUNCS = [.cp]tinfo.obj,[.cp]tinfo2.obj,\
104[.cp]new.obj,[.cp]new1.obj,[.cp]new2.obj,[.cp]exception.obj
105
106.c.obj:
107	$(CC) $(CFLAGS) $(CINCL1) $</obj=$@
108
109.cc.obj:
110	$(CC)/plus/CPP="-nostdinc++" $(CFLAGS) $(CINCL_CP) $</obj=$@
111
112INSN_INCLUDES=insn-attr.h insn-codes.h insn-config.h insn-flags.h
113
114#
115#
116#
117
118all: cpp.exe cc1.exe float.h limits.h libgcc2.olb
119
120allplus: cc1plus.exe libgccplus.olb
121
122libplus: libgccplus.olb
123
124cc1.exe: $(CC1OBJS) $(ALLOCA) $(INDEPOBJS)
125	$(LINK)$(LFLAGS)/exe=$@ version.opt/opt,cc1-objs.opt/Opt,independent.opt/Opt$(ALLOCA)$(LIBS)
126
127cpp.exe: $(CCCPOBJS) $(ALLOCA)
128	$(LINK)$(LFLAGS)/exe=$@ $(CCCPOBJS),version.opt/opt$(ALLOCA)$(LIBS)
129
130cc1plus.exe: $(CC1PLUSOBJS) $(ALLOCA) $(INDEPOBJS)
131	$(LINK)$(LFLAGS)/exe=$@ version.opt/opt,cc1plus-objs.opt/Opt,independent.opt/Opt$(ALLOCA)$(LIBS)
132
133gcc.exe: gcc.obj version.obj choose-temp.obj pexecute.obj prefix.obj obstack.obj
134	$(LINK)$(LFLAGS)/exe=$@ $^$(ALLOCA)$(LIBS)
135        
136install: cpp.exe cc1.exe gcc.exe libgcc2.olb
137	$(CP) $^ GNU_CC_LIBRARY
138
139installplus: cc1plus.exe libgccplus.olb
140	$(CP) $^ GNU_CC_LIBRARY
141
142float.h: enquire.exe
143	mcr $(PWD)enquire.exe -f > $@
144
145limits.h: enquire.exe
146	mcr $(PWD)enquire.exe -l > $@
147
148enquire.exe: enquire.obj
149	$(LINK)$(LFLAGS)/exe=$@ enquire.obj$(ALLOCA)$(LIBS)
150
151libgcc2.olb:
152	$$ @make-l2
153
154libgccplus.olb: $(CXX_LIB2FUNCS)
155	lib/create libgccplus $(CXX_LIB2FUNCS)
156
157genattr.exe: genattr.obj,$(GENOBJS)$(ALLOCA)
158	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
159
160insn-attr.h: genattr.exe $(MDFILE)
161	mcr $(PWD)genattr.exe $(MDFILE) > $@
162
163genflags.exe: genflags.obj,$(GENOBJS)$(ALLOCA)
164	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
165
166insn-flags.h: genflags.exe $(MDFILE)
167	mcr $(PWD)genflags.exe $(MDFILE) > $@
168
169gencodes.exe: gencodes.obj,$(GENOBJS)$(ALLOCA)
170	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
171
172insn-codes.h: gencodes.exe $(MDFILE)
173	mcr $(PWD)gencodes.exe $(MDFILE) > $@
174
175genconfig.exe: genconfig.obj,$(GENOBJS)$(ALLOCA)
176	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
177
178insn-config.h: genconfig.exe $(MDFILE)
179	mcr $(PWD)genconfig.exe $(MDFILE) > $@
180
181genpeep.exe: genpeep.obj,$(GENOBJS)$(ALLOCA)
182	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
183
184insn-peep.c: genpeep.exe $(MDFILE)
185	mcr $(PWD)genpeep.exe $(MDFILE) > $@
186
187genopinit.exe: genopinit.obj,$(GENOBJS)$(ALLOCA)
188	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
189
190insn-opinit.c: genopinit.exe $(MDFILE)
191	mcr $(PWD)genopinit.exe $(MDFILE) > $@
192
193genrecog.exe: genrecog.obj,$(GENOBJS)$(ALLOCA)
194	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
195
196insn-recog.c: genrecog.exe $(MDFILE)
197	mcr $(PWD)genrecog.exe $(MDFILE) > $@
198
199genextract.exe: genextract.obj,$(GENOBJS)$(ALLOCA)
200	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
201
202insn-extract.c: genextract.exe $(MDFILE)
203	mcr $(PWD)genextract.exe $(MDFILE) > $@
204
205genoutput.exe: genoutput.obj,$(GENOBJS)$(ALLOCA)
206	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
207
208insn-output.c: genoutput.exe $(MDFILE)
209	mcr $(PWD)genoutput.exe $(MDFILE) > $@
210
211genemit.exe: genemit.obj,$(GENOBJS)$(ALLOCA)
212	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
213
214insn-emit.c: genemit.exe $(MDFILE)
215	mcr $(PWD)genemit.exe $(MDFILE) > $@
216
217genattrtab.exe: genattrtab.obj,rtlanal.obj,$(GENOBJS)$(ALLOCA)
218	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
219
220insn-attrtab.c: genattrtab.exe $(MDFILE)
221	mcr $(PWD)genattrtab.exe $(MDFILE) > $@
222
223gengenrtl.exe: gengenrtl.obj,obstack.obj,$(ALLOCA)
224	$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
225
226genrtl.h genrtl.c: gengenrtl.exe
227	mcr $(PWD)gengenrtl.exe	genrtl.h genrtl.c
228
229cccp.obj: cccp.c config.h
230aux-output.obj: aux-output.c insn-attr.h insn-flags.h insn-config.h
231caller-save.obj: caller-save.c insn-config.h
232calls.obj: calls.c insn-flags.h
233combine.obj: combine.c insn-attr.h insn-flags.h insn-codes.h insn-config.h
234cse.obj: cse.c insn-config.h
235c-decl.obj: c-decl.c expr.h integrate.h insn-codes.h insn-config.h
236c-lex.obj: c-lex.c genrtl.h
237c-typeck.obj: c-typeck.c
238dbxout.obj: dbxout.c insn-config.h
239dwarfout.obj: dwarfout.c insn-config.h
240dwarf2out.obj: dwarf2out.c insn-config.h
241emit-rtl.obj: emit-rtl.c insn-config.h
242except.obj: except.c insn-flags.h insn-codes.h insn-config.h
243explow.obj: explow.c insn-flags.h insn-codes.h insn-config.h
244expmed.obj: expmed.c insn-flags.h insn-codes.h insn-config.h
245expr.obj: expr.c insn-flags.h insn-config.h
246final.obj: final.c tm.h insn-attr.h insn-flags.h insn-codes.h insn-config.h
247flow.obj: flow.c insn-config.h
248function.obj: function.c insn-flags.h insn-codes.h insn-config.h insn-codes.h insn-config.h
249genattrtab.obj: genattrtab.c insn-config.h
250genextract.obj: genextract.c insn-config.h
251global.obj: global.c insn-config.h
252integrate.obj: integrate.c integrate.h insn-flags.h insn-config.h
253jump.obj: jump.c insn-flags.h insn-config.h
254local-alloc.obj: local-alloc.c insn-config.h
255loop.obj: loop.c insn-flags.h insn-config.h
256optabs.obj: optabs.c insn-flags.h insn-codes.h insn-config.h
257print-rtl.obj: print-rtl.c
258profile.obj: profile.c insn-flags.h insn-config.h
259recog.obj: recog.c insn-attr.h insn-flags.h insn-codes.h insn-config.h
260regclass.obj: regclass.c insn-config.h
261reg-stack.obj: reg-stack.c insn-config.h
262reload.obj: reload.c insn-codes.h insn-config.h
263reload1.obj: reload1.c insn-flags.h insn-codes.h insn-config.h
264reorg.obj: reorg.c insn-attr.h insn-flags.h insn-config.h
265sched.obj: sched.c insn-attr.h insn-config.h
266haifa-sched.obj: haifa-sched.c insn-attr.h insn-config.h
267stmt.obj: stmt.c insn-flags.h insn-codes.h insn-config.h
268stor-layout.obj: stor-layout.c
269stupid.obj: stupid.c
270toplev.obj: toplev.c insn-attr.h insn-config.h
271unroll.obj: unroll.c insn-config.h
272
273insn-attrtab.obj: insn-attrtab.c insn-attr.h insn-config.h
274insn-output.obj: insn-output.c insn-attr.h insn-flags.h insn-codes.h
275insn-emit.obj: insn-emit.c insn-flags.h insn-codes.h insn-config.h
276insn-opinit.obj: insn-opinit.c insn-flags.h insn-codes.h insn-config.h
277insn-output.obj: insn-config.h
278insn-recog.obj: insn-config.h
279
280varasm.obj: varasm.c tm.h
281toplev.obj: toplev.c tm.h
282
283cexp.c: cexp.y
284	$(BISON) $(BISON_FLAGS)/output=$@ $<
285c-parse.c: c-parse.y
286	$(BISON) $(BISON_FLAGS)/output=$@ $<
287[.cp]parse.c: [.cp]parse.y
288	$(BISON) $(BISON_FLAGS)/output=$@ $<
289[.cp]parse.h: [.cp]parse.c
290	@$(ECHO) "Must copy YYEMPTY from [.cp]parse.c to [.cp]parse.h"
291	$$ stop
292aux-output.c: [.config.$(ARCH)]$(ARCH).c
293	copy $< $@
294
295expr.h: insn-codes.h
296reload.h: insn-config.h
297integrate.h: insn-config.h
298
299config.h:
300	$$ @vmsconfig
301
302cleancccp:
303	$$ purge
304	$(RM) cccp.obj;,cexp.obj;
305	$(RM) cpp.exe;
306
307cleanlib:
308	$$ purge
309	$(RM) libgcc2.olb;
310
311cleanlibplus:
312	$$ purge
313	$(RM) [.cp]tinfo.obj;
314	$(RM) [.cp]tinfo2.obj;
315	$(RM) [.cp]new.obj;
316	$(RM) [.cp]new1.obj;
317	$(RM) [.cp]new2.obj;
318	$(RM) [.cp]exception.obj;
319	$(RM) libgccplus.olb;
320
321clean:
322	$$ purge
323	$$ purge [.cp]
324	$(RM) *.obj;*
325	$(RM) [.cp]*.obj;*
326	$(RM) [.cp]parse.output;*
327	$(RM) *.cpp;*
328	$(RM) *.s;*
329	$(RM) *.rtl;*
330	$(RM) a.out;
331	$(RM) *.combine;
332	$(RM) *.cpp;
333	$(RM) *.cse;
334	$(RM) *.cse2;
335	$(RM) *.dbr;
336	$(RM) *.flow;
337	$(RM) *.greg;
338	$(RM) *.jump;
339	$(RM) *.jump2;
340	$(RM) *.loop;
341	$(RM) *.lreg;
342	$(RM) *.rtl;
343	$(RM) *.sched;
344	$(RM) *.sched2;
345	$(RM) *.map;
346	$(RM) genattr.exe;,insn-attr.h;
347	$(RM) genflags.exe;,insn-flags.h;
348	$(RM) gencodes.exe;,insn-codes.h;
349	$(RM) genconfig.exe;,insn-config.h;
350	$(RM) genpeep.exe;,insn-peep.c;
351	$(RM) genopinit.exe;,insn-opinit.c;
352	$(RM) genrecog.exe;,insn-recog.c;
353	$(RM) genextract.exe;,insn-extract.c;
354	$(RM) genoutput.exe;,insn-output.c;
355	$(RM) genemit.exe;,insn-emit.c;
356	$(RM) genattrtab.exe;,insn-attrtab.c;
357	$(RM) gengenrtl.exe;,genrtl.c;,genrtl.h;
358	$(RM) cc1.exe;
359	$(RM) cpp.exe;
360	$(RM) cc1plus.exe;
361	$(RM) libgcc2.olb;
362	$(RM) libgccplus.olb;
363	$(RM) enquire.exe;,float.h;,limits.h;
364#
365# clean everything axpconfig.com creates
366#
367distclean: clean cleancccp
368	purge [...]
369	$(RM) config.h;
370	$(RM) tconfig.h;
371	$(RM) hconfig.h;
372	$(RM) tm.h;
373	$(RM) options.h;
374	$(RM) specs.h;
375	$(RM) aux-output.c;
376
377[.cp]call.obj: [.cp]call.c
378[.cp]decl2.obj: [.cp]decl2.c
379[.cp]except.obj: [.cp]except.c insn-codes.h insn-flags.h
380[.cp]pt.obj: [.cp]pt.c
381[.cp]spew.obj: [.cp]spew.c
382[.cp]xref.obj: [.cp]xref.c
383[.cp]class.obj: [.cp]class.c
384[.cp]expr.obj: [.cp]expr.c insn-codes.h
385[.cp]lex.obj: [.cp]lex.c [.cp]parse.h
386[.cp]ptree.obj: [.cp]ptree.c
387[.cp]tree.obj: [.cp]tree.c
388[.cp]cvt.obj: [.cp]cvt.c
389[.cp]errfn.obj: [.cp]errfn.c
390[.cp]rtti.obj: [.cp]rtti.c
391[.cp]method.obj: [.cp]method.c insn-codes.h
392[.cp]search.obj: [.cp]search.c
393[.cp]typeck.obj: [.cp]typeck.c
394[.cp]decl.obj: [.cp]decl.c
395[.cp]error.obj: [.cp]error.c
396[.cp]friend.obj: [.cp]friend.c
397[.cp]init.obj: [.cp]init.c
398[.cp]parse.obj: [.cp]parse.c
399	$(CC) $(CFLAGS) $(CINCL_CP) $^/obj=$@
400[.cp]sig.obj: [.cp]sig.c
401[.cp]typeck2.obj: [.cp]typeck2.c
402[.cp]repo.obj: [.cp]repo.c
403[.cp]input.obj: [.cp]input.c
404	$(TOUCH) $@
405# g++ library
406[.cp]tinfo.obj: [.cp]tinfo.cc
407[.cp]tinfo2.obj: [.cp]tinfo2.cc
408[.cp]new.obj: [.cp]new.cc
409[.cp]new1.obj: [.cp]new1.cc
410[.cp]new2.obj: [.cp]new2.cc
411[.cp]exception.obj: [.cp]exception.cc
412
413#EOF
414