root/linux_lib.mak

Revision 183:190ba98276b3, 13.0 kB (checked in by Jacob Carlborg <doob@me.com>, 2 years ago)

Several changes to make it build on posix systems.
I've only tried to build on Mac OS X but it should build on Linux now as well.
This should also fix ticket #9.

Line 
1 C=backend
2 TK=tk
3 ROOT=root
4
5 CC=g++ -m32
6 #CC=/usr/bin/i686-unknown-linux-gnu-g++
7
8 #OPT=-g -g3
9 #OPT=-O2
10
11 #COV=-fprofile-arcs -ftest-coverage
12
13 GFLAGS = -Wno-deprecated -D__near= -D__pascal= -fno-exceptions -g -DDEBUG=1 $(COV)
14 #GFLAGS = -Wno-deprecated -D__near= -D__pascal= -fno-exceptions -O2
15
16 CFLAGS = $(GFLAGS) -I$(ROOT) -D__I86__=1 -DMARS=1 -DTARGET_LINUX=1 -D_DH
17 MFLAGS = $(GFLAGS) -I$C -I$(TK) -D__I86__=1 -DMARS=1 -DTARGET_LINUX=1 -D_DH
18
19 CH= $C/cc.h $C/global.h $C/parser.h $C/oper.h $C/code.h $C/type.h \
20     $C/dt.h $C/cgcv.h $C/el.h $C/iasm.h
21 TOTALH=
22
23 DMD_OBJS = \
24     access.o array.o attrib.o bcomplex.o bit.o blockopt.o \
25     cast.o code.o cg.o cg87.o cgcod.o cgcs.o cgcv.o cgelem.o cgen.o \
26     cgreg.o cgsched.o class.o cod1.o cod2.o cod3.o cod4.o cod5.o \
27     constfold.o irstate.o dchar.o cond.o debug.o \
28     declaration.o dsymbol.o dt.o dump.o e2ir.o ee.o eh.o el.o \
29     dwarf.o enum.o evalu8.o expression.o func.o gdag.o gflow.o \
30     glocal.o gloop.o glue.o gnuc.o go.o gother.o html.o iasm.o id.o \
31     identifier.o impcnvtab.o import.o inifile.o init.o inline.o \
32     lexer.o link.o lstring.o mangle.o mars.o rmem.o module.o msc.o mtype.o \
33     nteh.o cppmangle.o opover.o optimize.o os.o out.o outbuf.o \
34     parse.o ph.o ptrntab.o root.o rtlsym.o s2ir.o scope.o statement.o \
35     stringtable.o struct.o csymbol.o template.o tk.o tocsym.o todt.o \
36     type.o typinf.o util.o var.o version.o strtold.o utf.o staticassert.o \
37     unialpha.o toobj.o toctype.o toelfdebug.o entity.o doc.o macro.o \
38     hdrgen.o delegatize.o aa.o ti_achar.o toir.o interpret.o traits.o \
39     builtin.o clone.o aliasthis.o \
40     man.o arrayop.o port.o response.o async.o json.o \
41     libelf.o elfobj.o
42
43 SRC = win32.mak linux.mak osx.mak freebsd.mak solaris.mak \
44     mars.c enum.c struct.c dsymbol.c import.c idgen.c impcnvgen.c \
45     identifier.c mtype.c expression.c optimize.c template.h \
46     template.c lexer.c declaration.c cast.c cond.h cond.c link.c \
47     aggregate.h parse.c statement.c constfold.c version.h version.c \
48     inifile.c iasm.c module.c scope.c dump.c init.h init.c attrib.h \
49     attrib.c opover.c class.c mangle.c bit.c tocsym.c func.c inline.c \
50     access.c complex_t.h irstate.h irstate.c glue.c msc.c ph.c tk.c \
51     s2ir.c todt.c e2ir.c util.c identifier.h parse.h objfile.h \
52     scope.h enum.h import.h mars.h module.h mtype.h dsymbol.h \
53     declaration.h lexer.h expression.h irstate.h statement.h eh.c \
54     utf.h utf.c staticassert.h staticassert.c unialpha.c \
55     typinf.c toobj.c toctype.c tocvdebug.c toelfdebug.c entity.c \
56     doc.h doc.c macro.h macro.c hdrgen.h hdrgen.c arraytypes.h \
57     delegatize.c toir.h toir.c interpret.c traits.c cppmangle.c \
58     builtin.c clone.c lib.h libomf.c libelf.c libmach.c arrayop.c \
59     aliasthis.h aliasthis.c json.h json.c \
60     $C/cdef.h $C/cc.h $C/oper.h $C/ty.h $C/optabgen.c \
61     $C/global.h $C/parser.h $C/code.h $C/type.h $C/dt.h $C/cgcv.h \
62     $C/el.h $C/iasm.h $C/rtlsym.h $C/html.h \
63     $C/bcomplex.c $C/blockopt.c $C/cg.c $C/cg87.c \
64     $C/cgcod.c $C/cgcs.c $C/cgcv.c $C/cgelem.c $C/cgen.c $C/cgobj.c \
65     $C/cgreg.c $C/var.c $C/strtold.c \
66     $C/cgsched.c $C/cod1.c $C/cod2.c $C/cod3.c $C/cod4.c $C/cod5.c \
67     $C/code.c $C/symbol.c $C/debug.c $C/dt.c $C/ee.c $C/el.c \
68     $C/evalu8.c $C/go.c $C/gflow.c $C/gdag.c \
69     $C/gother.c $C/glocal.c $C/gloop.c $C/html.c $C/newman.c \
70     $C/nteh.c $C/os.c $C/out.c $C/outbuf.c $C/ptrntab.c $C/rtlsym.c \
71     $C/type.c $C/melf.h $C/mach.h $C/bcomplex.h \
72     $C/cdeflnx.h $C/outbuf.h $C/token.h $C/tassert.h \
73     $C/elfobj.c $C/cv4.h $C/dwarf2.h $C/cpp.h $C/exh.h $C/go.h \
74     $C/dwarf.c $C/dwarf.h $C/aa.h $C/aa.c $C/tinfo.h $C/ti_achar.c \
75     $C/machobj.c \
76     $(TK)/filespec.h $(TK)/mem.h $(TK)/list.h $(TK)/vec.h \
77     $(TK)/filespec.c $(TK)/mem.c $(TK)/vec.c $(TK)/list.c \
78     $(ROOT)/dchar.h $(ROOT)/dchar.c $(ROOT)/lstring.h \
79     $(ROOT)/lstring.c $(ROOT)/root.h $(ROOT)/root.c $(ROOT)/array.c \
80     $(ROOT)/rmem.h $(ROOT)/rmem.c $(ROOT)/port.h $(ROOT)/port.c \
81     $(ROOT)/gnuc.h $(ROOT)/gnuc.c $(ROOT)/man.c \
82     $(ROOT)/stringtable.h $(ROOT)/stringtable.c \
83     $(ROOT)/response.c $(ROOT)/async.h $(ROOT)/async.c
84
85
86 all: dmd
87
88 dmd: id.o optabgen $(DMD_OBJS)
89     ar rs libdmd.a $(DMD_OBJS)
90
91 clean:
92     rm -f $(DMD_OBJS) dmd optab.o id.o impcnvgen idgen id.c id.h \
93     impcnvtab.c optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \
94     tytab.c core \
95     *.cov *.gcda *.gcno
96
97 ######## optabgen generates some source
98
99 optabgen: $C/optabgen.c $C/cc.h $C/oper.h
100     $(CC) $(MFLAGS) $< -o optabgen
101     ./optabgen
102
103 debtab.c optab.c cdxxx.c elxxx.c fltables.c tytab.c : optabgen
104     ./optabgen
105
106 ######## idgen generates some source
107
108 id.h id.c : idgen
109     ./idgen
110
111 idgen : idgen.c
112     $(CC) idgen.c -o idgen
113
114 id.o : id.h id.c
115     $(CC) -c $(CFLAGS) id.c
116
117 ######### impcnvgen generates some source
118
119 impcnvtab.c : impcnvgen
120     ./impcnvgen
121
122 impcnvgen : mtype.h impcnvgen.c
123     $(CC) $(CFLAGS) impcnvgen.c -o impcnvgen
124
125 #########
126
127 aa.o: $C/aa.h $C/tinfo.h $C/aa.c
128     $(CC) -c $(MFLAGS) -I. $C/aa.c
129
130 access.o: access.c
131     $(CC) -c $(CFLAGS) $<
132
133 aliasthis.o: aliasthis.c
134     $(CC) -c $(CFLAGS) $<
135
136 array.o: $(ROOT)/array.c
137     $(CC) -c $(GFLAGS) -I$(ROOT) $<
138
139 arrayop.o: arrayop.c
140     $(CC) -c $(CFLAGS) $<
141
142 async.o: $(ROOT)/async.c
143     $(CC) -c $(GFLAGS) -I$(ROOT) $<
144
145 attrib.o: attrib.c
146     $(CC) -c $(CFLAGS) $<
147
148 bcomplex.o: $C/bcomplex.c
149     $(CC) -c $(MFLAGS) $C/bcomplex.c
150
151 bit.o: expression.h bit.c
152     $(CC) -c -I$(ROOT) $(MFLAGS) bit.c
153
154 blockopt.o: $C/blockopt.c
155     $(CC) -c $(MFLAGS) $C/blockopt.c
156
157 builtin.o: builtin.c
158     $(CC) -c $(CFLAGS) $<
159
160 cast.o: cast.c
161     $(CC) -c $(CFLAGS) $<
162
163 cg.o: fltables.c $C/cg.c
164     $(CC) -c $(MFLAGS) -I. $C/cg.c
165
166 cg87.o: $C/cg87.c
167     $(CC) -c $(MFLAGS) $<
168
169 cgcod.o: $C/cgcod.c
170     $(CC) -c $(MFLAGS) -I. $<
171
172 cgcs.o: $C/cgcs.c
173     $(CC) -c $(MFLAGS) $<
174
175 cgcv.o: $C/cgcv.c
176     $(CC) -c $(MFLAGS) $<
177
178 cgelem.o: $C/rtlsym.h $C/cgelem.c
179     $(CC) -c $(MFLAGS) -I. $C/cgelem.c
180
181 cgen.o: $C/rtlsym.h $C/cgen.c
182     $(CC) -c $(MFLAGS) $C/cgen.c
183
184 cgobj.o: $C/cgobj.c
185     $(CC) -c $(MFLAGS) $<
186
187 cgreg.o: $C/cgreg.c
188     $(CC) -c $(MFLAGS) $<
189
190 cgsched.o: $C/rtlsym.h $C/cgsched.c
191     $(CC) -c $(MFLAGS) $C/cgsched.c
192
193 class.o: class.c
194     $(CC) -c $(CFLAGS) $<
195
196 clone.o: clone.c
197     $(CC) -c $(CFLAGS) $<
198
199 cod1.o: $C/rtlsym.h $C/cod1.c
200     $(CC) -c $(MFLAGS) $C/cod1.c
201
202 cod2.o: $C/rtlsym.h $C/cod2.c
203     $(CC) -c $(MFLAGS) $C/cod2.c
204
205 cod3.o: $C/rtlsym.h $C/cod3.c
206     $(CC) -c $(MFLAGS) $C/cod3.c
207
208 cod4.o: $C/cod4.c
209     $(CC) -c $(MFLAGS) $<
210
211 cod5.o: $C/cod5.c
212     $(CC) -c $(MFLAGS) $<
213
214 code.o: $C/code.c
215     $(CC) -c $(MFLAGS) $<
216
217 constfold.o: constfold.c
218     $(CC) -c $(CFLAGS) $<
219
220 irstate.o: irstate.h irstate.c
221     $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c
222
223 csymbol.o : $C/symbol.c
224     $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o
225
226 dchar.o: $(ROOT)/dchar.c
227     $(CC) -c $(GFLAGS) -I$(ROOT) $<
228
229 cond.o: cond.c
230     $(CC) -c $(CFLAGS) $<
231
232 cppmangle.o: cppmangle.c
233     $(CC) -c $(CFLAGS) $<
234
235 debug.o: $C/debug.c
236     $(CC) -c $(MFLAGS) -I. $<
237
238 declaration.o: declaration.c
239     $(CC) -c $(CFLAGS) $<
240
241 delegatize.o: delegatize.c
242     $(CC) -c $(CFLAGS) $<
243
244 doc.o: doc.c
245     $(CC) -c $(CFLAGS) $<
246
247 dsymbol.o: dsymbol.c
248     $(CC) -c $(CFLAGS) $<
249
250 dt.o: $C/dt.h $C/dt.c
251     $(CC) -c $(MFLAGS) $C/dt.c
252
253 dump.o: dump.c
254     $(CC) -c $(CFLAGS) $<
255
256 dwarf.o: $C/dwarf.h $C/dwarf.c
257     $(CC) -c $(MFLAGS) -I. $C/dwarf.c
258
259 e2ir.o: $C/rtlsym.h expression.h toir.h e2ir.c
260     $(CC) -c -I$(ROOT) $(MFLAGS) e2ir.c
261
262 ee.o: $C/ee.c
263     $(CC) -c $(MFLAGS) $<
264
265 eh.o : $C/cc.h $C/code.h $C/type.h $C/dt.h eh.c
266     $(CC) -c $(MFLAGS) eh.c
267
268 el.o: $C/rtlsym.h $C/el.h $C/el.c
269     $(CC) -c $(MFLAGS) $C/el.c
270
271 elfobj.o: $C/elfobj.c
272     $(CC) -c $(MFLAGS) $<
273
274 entity.o: entity.c
275     $(CC) -c $(CFLAGS) $<
276
277 enum.o: enum.c
278     $(CC) -c $(CFLAGS) $<
279
280 evalu8.o: $C/evalu8.c
281     $(CC) -c $(MFLAGS) $<
282
283 expression.o: expression.c
284     $(CC) -c $(CFLAGS) $<
285
286 func.o: func.c
287     $(CC) -c $(CFLAGS) $<
288
289 gdag.o: $C/gdag.c
290     $(CC) -c $(MFLAGS) $<
291
292 gflow.o: $C/gflow.c
293     $(CC) -c $(MFLAGS) $<
294
295 #globals.o: globals.c
296 #   $(CC) -c $(CFLAGS) $<
297
298 glocal.o: $C/rtlsym.h $C/glocal.c
299     $(CC) -c $(MFLAGS) $C/glocal.c
300
301 gloop.o: $C/gloop.c
302     $(CC) -c $(MFLAGS) $<
303
304 glue.o: $(CH) $(TOTALH) $C/rtlsym.h mars.h module.h glue.c
305     $(CC) -c $(MFLAGS) -I$(ROOT) glue.c
306
307 gnuc.o: $(ROOT)/gnuc.h $(ROOT)/gnuc.c
308     $(CC) -c $(GFLAGS) $(ROOT)/gnuc.c
309
310 go.o: $C/go.c
311     $(CC) -c $(MFLAGS) $<
312
313 gother.o: $C/gother.c
314     $(CC) -c $(MFLAGS) $<
315
316 hdrgen.o: hdrgen.c
317     $(CC) -c $(CFLAGS) $<
318
319 html.o: $(CH) $(TOTALH) $C/html.h $C/html.c
320     $(CC) -c -I$(ROOT) $(MFLAGS) $C/html.c
321
322 iasm.o : $(CH) $(TOTALH) $C/iasm.h iasm.c
323     $(CC) -c $(MFLAGS) -I$(ROOT) iasm.c
324
325 identifier.o: identifier.c
326     $(CC) -c $(CFLAGS) $<
327
328 impcnvtab.o: mtype.h impcnvtab.c
329     $(CC) -c $(CFLAGS) -I$(ROOT) impcnvtab.c
330
331 import.o: import.c
332     $(CC) -c $(CFLAGS) $<
333
334 inifile.o: inifile.c
335     $(CC) -c $(CFLAGS) $<
336
337 init.o: init.c
338     $(CC) -c $(CFLAGS) $<
339
340 inline.o: inline.c
341     $(CC) -c $(CFLAGS) $<
342
343 interpret.o: interpret.c
344     $(CC) -c $(CFLAGS) $<
345
346 json.o: json.c
347     $(CC) -c $(CFLAGS) $<
348
349 lexer.o: lexer.c
350     $(CC) -c $(CFLAGS) $<
351
352 libelf.o: libelf.c $C/melf.h
353     $(CC) -c $(CFLAGS) -I$C $<
354
355 libmach.o: libmach.c $C/mach.h
356     $(CC) -c $(CFLAGS) -I$C $<
357
358 link.o: link.c
359     $(CC) -c $(CFLAGS) $<
360
361 lstring.o: $(ROOT)/lstring.c
362     $(CC) -c $(GFLAGS) -I$(ROOT) $<
363
364 machobj.o: $C/machobj.c
365     $(CC) -c $(MFLAGS) $<
366
367 macro.o: macro.c
368     $(CC) -c $(CFLAGS) $<
369
370 man.o: $(ROOT)/man.c
371     $(CC) -c $(GFLAGS) -I$(ROOT) $<
372
373 mangle.o: mangle.c
374     $(CC) -c $(CFLAGS) $<
375
376 mars.o: mars.c
377     $(CC) -c $(CFLAGS) $<
378
379 rmem.o: $(ROOT)/rmem.c
380     $(CC) -c $(GFLAGS) -I$(ROOT) $(ROOT)/rmem.c
381
382 module.o: $(TOTALH) $C/html.h module.c
383     $(CC) -c $(CFLAGS) -I$C module.c
384
385 msc.o: $(CH) mars.h msc.c
386     $(CC) -c $(MFLAGS) msc.c
387
388 mtype.o: mtype.c
389     $(CC) -c $(CFLAGS) $<
390
391 nteh.o: $C/rtlsym.h $C/nteh.c
392     $(CC) -c $(MFLAGS) $C/nteh.c
393
394 opover.o: opover.c
395     $(CC) -c $(CFLAGS) $<
396
397 optimize.o: optimize.c
398     $(CC) -c $(CFLAGS) $<
399
400 os.o: $C/os.c
401     $(CC) -c $(MFLAGS) $<
402
403 out.o: $C/out.c
404     $(CC) -c $(MFLAGS) $<
405
406 outbuf.o : $C/outbuf.h $C/outbuf.c
407     $(CC) -c $(MFLAGS) $C/outbuf.c
408
409 parse.o: parse.c
410     $(CC) -c $(CFLAGS) $<
411
412 ph.o: ph.c
413     $(CC) -c $(MFLAGS) $<
414
415 port.o: $(ROOT)/port.c
416     $(CC) -c $(GFLAGS) -I$(ROOT) $<
417
418 ptrntab.o: $C/iasm.h $C/ptrntab.c
419     $(CC) -c $(MFLAGS) $C/ptrntab.c
420
421 response.o: $(ROOT)/response.c
422     $(CC) -c $(GFLAGS) -I$(ROOT) $<
423
424 root.o: $(ROOT)/root.c
425     $(CC) -c $(GFLAGS) -I$(ROOT) $<
426
427 rtlsym.o: $C/rtlsym.h $C/rtlsym.c
428     $(CC) -c $(MFLAGS) $C/rtlsym.c
429
430 s2ir.o : $C/rtlsym.h statement.h s2ir.c
431     $(CC) -c -I$(ROOT) $(MFLAGS) s2ir.c
432
433 scope.o: scope.c
434     $(CC) -c $(CFLAGS) $<
435
436 statement.o: statement.c
437     $(CC) -c $(CFLAGS) $<
438
439 staticassert.o: staticassert.h staticassert.c
440     $(CC) -c $(CFLAGS) staticassert.c
441
442 stringtable.o: $(ROOT)/stringtable.c
443     $(CC) -c $(GFLAGS) -I$(ROOT) $<
444
445 strtold.o: $C/strtold.c
446     gcc -m32 -c $C/strtold.c
447
448 struct.o: struct.c
449     $(CC) -c $(CFLAGS) $<
450
451 template.o: template.c
452     $(CC) -c $(CFLAGS) $<
453
454 ti_achar.o: $C/tinfo.h $C/ti_achar.c
455     $(CC) -c $(MFLAGS) -I. $C/ti_achar.c
456
457 tk.o: tk.c
458     $(CC) -c $(MFLAGS) tk.c
459
460 tocsym.o: $(CH) $(TOTALH) mars.h module.h tocsym.c
461     $(CC) -c $(MFLAGS) -I$(ROOT) tocsym.c
462
463 toctype.o: $(CH) $(TOTALH) $C/rtlsym.h mars.h module.h toctype.c
464     $(CC) -c $(MFLAGS) -I$(ROOT) toctype.c
465
466 todt.o : mtype.h expression.h $C/dt.h todt.c
467     $(CC) -c -I$(ROOT) $(MFLAGS) todt.c
468
469 toelfdebug.o: $(CH) $(TOTALH) mars.h toelfdebug.c
470     $(CC) -c $(MFLAGS) -I$(ROOT) toelfdebug.c
471
472 toir.o: $C/rtlsym.h expression.h toir.h toir.c
473     $(CC) -c -I$(ROOT) $(MFLAGS) toir.c
474
475 toobj.o: $(CH) $(TOTALH) mars.h module.h toobj.c
476     $(CC) -c $(MFLAGS) -I$(ROOT) toobj.c
477
478 traits.o: $(TOTALH) traits.c
479     $(CC) -c $(CFLAGS) $<
480
481 type.o: $C/type.c
482     $(CC) -c $(MFLAGS) $C/type.c
483
484 typinf.o: $(CH) $(TOTALH) mars.h module.h mtype.h typinf.c
485     $(CC) -c $(MFLAGS) -I$(ROOT) typinf.c
486
487 util.o: util.c
488     $(CC) -c $(MFLAGS) $<
489
490 utf.o: utf.h utf.c
491     $(CC) -c $(CFLAGS) utf.c
492
493 unialpha.o: unialpha.c
494     $(CC) -c $(CFLAGS) $<
495
496 var.o: $C/var.c optab.c
497     $(CC) -c $(MFLAGS) -I. $C/var.c
498
499 version.o: version.c
500     $(CC) -c $(CFLAGS) $<
501
502 ######################################################
503
504 gcov:
505     gcov access.c
506     gcov aliasthis.c
507     gcov arrayop.c
508     gcov attrib.c
509     gcov bit.c
510     gcov builtin.c
511     gcov cast.c
512     gcov class.c
513     gcov clone.c
514     gcov cond.c
515     gcov constfold.c
516     gcov declaration.c
517     gcov delegatize.c
518     gcov doc.c
519     gcov dsymbol.c
520     gcov dump.c
521     gcov e2ir.c
522     gcov eh.c
523     gcov entity.c
524     gcov enum.c
525     gcov expression.c
526     gcov func.c
527     gcov glue.c
528     gcov iasm.c
529     gcov identifier.c
530     gcov import.c
531     gcov inifile.c
532     gcov init.c
533     gcov inline.c
534     gcov interpret.c
535     gcov irstate.c
536     gcov json.c
537     gcov lexer.c
538     gcov libelf.c
539     gcov link.c
540     gcov macro.c
541     gcov mangle.c
542     gcov mars.c
543     gcov module.c
544     gcov msc.c
545     gcov mtype.c
546     gcov opover.c
547     gcov optimize.c
548     gcov parse.c
549     gcov ph.c
550     gcov scope.c
551     gcov statement.c
552     gcov staticassert.c
553     gcov s2ir.c
554     gcov struct.c
555     gcov template.c
556     gcov tk.c
557     gcov tocsym.c
558     gcov todt.c
559     gcov toobj.c
560     gcov toctype.c
561     gcov toelfdebug.c
562     gcov typinf.c
563     gcov unialpha.c
564     gcov utf.c
565     gcov util.c
566     gcov version.c
567
568 #   gcov hdrgen.c
569 #   gcov tocvdebug.c
570
571 ######################################################
572
573 zip:
574     -rm -f dmdsrc.zip
575     zip dmdsrc $(SRC)
Note: See TracBrowser for help on using the browser.