@@ -145,9 +145,10 @@ endif
145145ifdef ENABLE_DEBUG
146146CFLAGS += -g -g3 -DDEBUG=1 -DUNITTEST
147147DFLAGS += -g -debug
148- else
148+ endif
149+ ifdef ENABLE_RELEASE
149150CFLAGS += -O2
150- DFLAGS += -O -inline
151+ DFLAGS += -O -release - inline
151152endif
152153ifdef ENABLE_PROFILING
153154CFLAGS += -pg -fprofile-arcs -ftest-coverage
@@ -176,39 +177,25 @@ D_OBJC := 1
176177endif
177178endif
178179
179- DMD_OBJS = \
180- access.o attrib.o \
181- cast.o \
182- class.o \
183- constfold.o cond.o \
184- declaration.o dsymbol.o \
185- enum.o expression.o func.o nogc.o \
186- id.o \
187- identifier.o impcnvtab.o import.o inifile.o init.o inline.o \
188- lexer.o link.o mangle.o mars.o module.o mtype.o \
189- cppmangle.o opover.o optimize.o \
190- parse.o scope.o statement.o \
191- struct.o template.o \
192- version.o utf.o staticassert.o \
193- entity.o doc.o macro.o \
194- hdrgen.o delegatize.o interpret.o traits.o \
195- builtin.o ctfeexpr.o clone.o aliasthis.o \
196- arrayop.o json.o unittests.o \
197- imphint.o argtypes.o apply.o sapply.o sideeffect.o \
198- intrange.o canthrow.o target.o nspace.o errors.o \
199- escape.o tokens.o globals.o
180+
181+ DMD_SRCS =$(addsuffix .d,access aggregate aliasthis apply argtypes arrayop \
182+ arraytypes attrib backend builtin canthrow clone complex cond constfold \
183+ cppmangle ctfeexpr dcast dclass declaration delegatize denum dimport \
184+ dinifile dinterpret dmacro dmangle dmodule doc dscope dstruct dsymbol \
185+ dtemplate dunittest dversion entity errors escape expression func \
186+ globals hdrgen id identifier impcnvtab imphint init inline intrange \
187+ json lexer lib link mars mtype nogc nspace opover optimize parse sapply \
188+ sideeffect statement staticassert target tokens traits utf visitor)
200189
201190ifeq ($(D_OBJC ) ,1)
202- DMD_OBJS += objc.o
191+ DMD_SRCS += objc.d
203192else
204- DMD_OBJS += objc_stubs.o
193+ DMD_SRCS += objc_stubs.d
205194endif
206195
207- ROOT_OBJS = \
208- rmem.o port.o man.o stringtable.o response.o \
209- aav.o speller.o outbuffer.o object.o \
210- filename.o file.o async.o checkedint.o \
211- newdelete.o
196+ ROOT_SRCS = $(addsuffix .d,$(addprefix $(ROOT ) /,aav array file filename \
197+ longdouble man outbuffer port response rmem rootobject speller \
198+ stringtable) )
212199
213200GLUE_OBJS = \
214201 glue.o msc.o s2ir.o todt.o e2ir.o tocsym.o \
@@ -248,43 +235,17 @@ else
248235 BACK_OBJS += elfobj.o
249236endif
250237
251- SRC = win32.mak posix.mak osmodel.mak \
252- mars.c enum.c struct.c dsymbol.c import.c idgen.d impcnvgen.c \
253- identifier.c mtype.c expression.c optimize.c template.h \
254- template.c lexer.c declaration.c cast.c cond.h cond.c link.c \
255- aggregate.h parse.c statement.c constfold.c version.h version.c \
256- inifile.c module.c scope.c init.h init.c attrib.h \
257- attrib.c opover.c class.c mangle.c func.c nogc.c inline.c \
258- access.c complex_t.h \
259- identifier.h parse.h \
260- scope.h enum.h import.h mars.h module.h mtype.h dsymbol.h \
261- declaration.h lexer.h expression.h statement.h \
262- utf.h utf.c staticassert.h staticassert.c \
263- entity.c \
264- doc.h doc.c macro.h macro.c hdrgen.h hdrgen.c arraytypes.h \
265- delegatize.c interpret.c traits.c cppmangle.c \
266- builtin.c clone.c lib.h arrayop.c \
267- aliasthis.h aliasthis.c json.h json.c unittests.c imphint.c \
268- argtypes.c apply.c sapply.c sideeffect.c \
269- intrange.h intrange.c canthrow.c target.c target.h \
270- scanmscoff.c scanomf.c ctfe.h ctfeexpr.c \
271- ctfe.h ctfeexpr.c visitor.h nspace.h nspace.c errors.h errors.c \
272- escape.c tokens.h tokens.c globals.h globals.c objc.c objc.h objc_stubs.c
273-
274- ROOT_SRC = $(ROOT ) /root.h \
275- $(ROOT ) /array.h \
276- $(ROOT ) /rmem.h $(ROOT ) /rmem.c $(ROOT ) /port.h $(ROOT ) /port.c \
277- $(ROOT ) /man.c $(ROOT ) /newdelete.c \
278- $(ROOT ) /checkedint.h $(ROOT ) /checkedint.c \
279- $(ROOT ) /stringtable.h $(ROOT ) /stringtable.c \
280- $(ROOT ) /response.c $(ROOT ) /async.h $(ROOT ) /async.c \
281- $(ROOT ) /aav.h $(ROOT ) /aav.c \
282- $(ROOT ) /longdouble.h $(ROOT ) /longdouble.c \
283- $(ROOT ) /speller.h $(ROOT ) /speller.c \
284- $(ROOT ) /outbuffer.h $(ROOT ) /outbuffer.c \
285- $(ROOT ) /object.h $(ROOT ) /object.c \
286- $(ROOT ) /filename.h $(ROOT ) /filename.c \
287- $(ROOT ) /file.h $(ROOT ) /file.c
238+ SRC = win32.mak posix.mak osmodel.mak aggregate.h aliasthis.h arraytypes.h \
239+ attrib.h complex_t.h cond.h ctfe.h ctfe.h declaration.h doc.h dsymbol.h \
240+ enum.h errors.h expression.h globals.h hdrgen.h identifier.h idgen.d \
241+ impcnvgen.c import.h init.h intrange.h json.h lexer.h lib.h macro.h \
242+ mars.h module.h mtype.h nspace.h objc.h parse.h scanmscoff.c scanomf.c \
243+ scope.h statement.h staticassert.h target.h template.h tokens.h utf.h \
244+ version.h visitor.h $(DMD_SRCS )
245+
246+ ROOT_SRC = $(addprefix $(ROOT ) /,aav.h array.h checkedint.c checkedint.h file.h \
247+ filename.h longdouble.c longdouble.h newdelete.c object.c object.h \
248+ outbuffer.h port.h rmem.c rmem.h root.h speller.h stringtable.h)
288249
289250GLUE_SRC = glue.c msc.c s2ir.c todt.c e2ir.c tocsym.c \
290251 toobj.c toctype.c tocvdebug.c toir.h toir.c \
@@ -319,39 +280,32 @@ TK_SRC = \
319280 $(TK ) /filespec.h $(TK ) /mem.h $(TK ) /list.h $(TK ) /vec.h \
320281 $(TK ) /filespec.c $(TK ) /mem.c $(TK ) /vec.c $(TK ) /list.c
321282
322- DEPS = $(patsubst % .o,% .deps,$(DMD_OBJS ) $(ROOT_OBJS ) $( GLUE_OBJS ) $(BACK_OBJS ) )
283+ DEPS = $(patsubst % .o,% .deps,$(DMD_OBJS ) $(GLUE_OBJS ) $(BACK_OBJS ) )
323284
324285all : dmd
325286
326- auto-tester-build : dmd checkwhitespace ddmd
287+ auto-tester-build : dmd checkwhitespace
327288.PHONY : auto-tester-build
328289
329- frontend.a : $(DMD_OBJS )
330- $(AR ) rcs frontend.a $(DMD_OBJS )
331-
332- root.a : $(ROOT_OBJS )
333- $(AR ) rcs root.a $(ROOT_OBJS )
334-
335290glue.a : $(GLUE_OBJS )
336291 $(AR ) rcs glue.a $(GLUE_OBJS )
337292
338293backend.a : $(BACK_OBJS )
339294 $(AR ) rcs backend.a $(BACK_OBJS )
340295
341296ifdef ENABLE_LTO
342- dmd : $(DMD_OBJS ) $(ROOT_OBJS ) $(GLUE_OBJS ) $(BACK_OBJS )
343- $(HOST_CC ) -o dmd $(MODEL_FLAG ) $^ $(LDFLAGS )
297+ dmd : $(DMD_SRCS ) $(ROOT_SRCS ) newdelete.o $(GLUE_OBJS ) $(BACK_OBJS ) verstr.h
298+ CC= $(HOST_CC ) $( HOST_DMD_RUN ) -of $@ $(MODEL_FLAG ) -vtls -J. -d $( DFLAGS ) $(filter-out verstr.h, $^ )
344299else
345- dmd : frontend.a root.a glue.a backend.a
346- $(HOST_CC ) -o dmd $(MODEL_FLAG ) frontend.a root.a glue.a backend.a $(LDFLAGS )
300+ dmd : $( DMD_SRCS ) $( ROOT_SRCS ) newdelete.o glue.a backend.a verstr.h
301+ CC= $(HOST_CC ) $( HOST_DMD_RUN ) -of $@ $(MODEL_FLAG ) -vtls -J. -d $( DFLAGS ) $(filter-out verstr.h, $^ )
347302endif
348303
349304clean :
350- rm -f $(DMD_OBJS ) $(ROOT_OBJS ) $(GLUE_OBJS ) $(BACK_OBJS ) dmd optab.o id.o impcnvgen idgen id.c id.h \
351- impcnvtab.d id.d impcnvtab.c optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \
352- tytab.c verstr.h core \
353- * .cov * .deps * .gcda * .gcno * .a \
354- $(GENSRC ) $(MAGICPORT )
305+ rm -f $(GLUE_OBJS ) $(BACK_OBJS ) dmd optab.o id.o impcnvgen idgen id.d id.h \
306+ impcnvtab.{c,d} optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \
307+ tytab.c git.ver core \
308+ * .cov * .deps * .gcda * .gcno * .a
355309 @[ ! -d ${PGO_DIR} ] || echo You should issue manually: rm -rf ${PGO_DIR}
356310
357311# ####### Download and install the last dmd buildable without dmd
@@ -429,7 +383,7 @@ $(shell test \"$(VERSION)\" != "`cat verstr.h 2> /dev/null`" \
429383
430384# ########
431385
432- $(DMD_OBJS ) $( GLUE_OBJS ) : $(idgen_output ) $(impcnvgen_output )
386+ $(GLUE_OBJS ) : $(idgen_output ) $(impcnvgen_output )
433387$(BACK_OBJS ) : $(optabgen_output )
434388
435389
@@ -450,8 +404,6 @@ iasm.o: CFLAGS += -fexceptions
450404
451405inifile.o : CFLAGS += -DSYSCONFDIR='"$(SYSCONFDIR ) "'
452406
453- mars.o : verstr.h
454-
455407var.o : optab.c tytab.c
456408
457409
@@ -461,10 +413,6 @@ var.o: optab.c tytab.c
461413# matching below.
462414vpath % .c $(C )
463415
464- $(DMD_OBJS ) : % .o: % .c posix.mak
465- @echo " (CC) DMD_OBJS $<"
466- $(CC ) -c $(CFLAGS ) $(DMD_FLAGS ) $(MMD ) $<
467-
468416$(BACK_OBJS ) : % .o: % .c posix.mak
469417 @echo " (CC) BACK_OBJS $<"
470418 $(CC ) -c $(CFLAGS ) $(BACK_FLAGS ) $(MMD ) $<
@@ -473,7 +421,7 @@ $(GLUE_OBJS): %.o: %.c posix.mak
473421 @echo " (CC) GLUE_OBJS $<"
474422 $(CC ) -c $(CFLAGS ) $(GLUE_FLAGS ) $(MMD ) $<
475423
476- $( ROOT_OBJS ) : % .o: $(ROOT ) /% .c posix.mak
424+ newdelete.o : % .o: $(ROOT ) /% .c posix.mak
477425 @echo " (CC) ROOT_OBJS $<"
478426 $(CC ) -c $(CFLAGS ) $(ROOT_FLAGS ) $(MMD ) $<
479427
@@ -492,185 +440,25 @@ install: all
492440
493441# #####################################################
494442
495- checkwhitespace :
496- CC=$(HOST_CC ) $(HOST_DMD_RUN ) -run checkwhitespace $(SRC ) $(GLUE_SRC ) $(ROOT_SRC )
443+ checkwhitespace : $( HOST_DC )
444+ CC=$(HOST_CC ) $(HOST_DC_RUN ) -run checkwhitespace $(SRC ) $(GLUE_SRC ) $(ROOT_SRCS )
497445
498446# #####################################################
499447
500448gcov :
501- gcov access.c
502- gcov aliasthis.c
503- gcov apply.c
504- gcov arrayop.c
505- gcov attrib.c
506- gcov builtin.c
507- gcov canthrow.c
508- gcov cast.c
509- gcov class.c
510- gcov clone.c
511- gcov cond.c
512- gcov constfold.c
513- gcov declaration.c
514- gcov delegatize.c
515- gcov doc.c
516- gcov dsymbol.c
517- gcov e2ir.c
518- gcov eh.c
519- gcov entity.c
520- gcov enum.c
521- gcov expression.c
522- gcov func.c
523- gcov nogc.c
524- gcov glue.c
525- gcov iasm.c
526- gcov identifier.c
527- gcov imphint.c
528- gcov import.c
529- gcov inifile.c
530- gcov init.c
531- gcov inline.c
532- gcov interpret.c
533- gcov ctfeexpr.c
534- gcov irstate.c
535- gcov json.c
536- gcov lexer.c
537- ifeq (osx,$(OS ) )
538- gcov libmach.c
539- else
540- gcov libelf.c
541- endif
542- gcov link.c
543- gcov macro.c
544- gcov mangle.c
545- gcov mars.c
546- gcov module.c
547- gcov msc.c
548- gcov mtype.c
549- gcov nspace.c
550- ifeq ($(D_OBJC ) ,1)
551- gcov objc.c
552- gcov objc_glue.c
553- else
554- gcov objc_stubs.c
555- gcov objc_glue_stubs.c
556- endif
557- gcov opover.c
558- gcov optimize.c
559- gcov parse.c
560- gcov scope.c
561- gcov sideeffect.c
562- gcov statement.c
563- gcov staticassert.c
564- gcov s2ir.c
565- gcov struct.c
566- gcov template.c
567- gcov tk.c
568- gcov tocsym.c
569- gcov todt.c
570- gcov toobj.c
571- gcov toctype.c
572- gcov toelfdebug.c
573- gcov typinf.c
574- gcov utf.c
575- gcov version.c
576- gcov intrange.c
577- gcov target.c
578-
579- # gcov hdrgen.c
580- # gcov tocvdebug.c
449+ gcov $(filter % .c,$(SRC ) $(GLUE_SRC ) )
581450
582451# #####################################################
583452
584453zip :
585454 -rm -f dmdsrc.zip
586- zip dmdsrc $(SRC ) $(ROOT_SRC ) $(GLUE_SRC ) $(BACK_SRC ) $(TK_SRC )
455+ zip dmdsrc $(SRC ) $(ROOT_SRCS ) $(GLUE_SRC ) $(BACK_SRC ) $(TK_SRC )
587456
588457# #####################################################
589458
590459../changelog.html : ../changelog.dd
591460 $(HOST_DMD_RUN ) -Df$@ $<
592461
593- # ############################ DDMD stuff ############################
594-
595- MAGICPORTDIR = magicport
596- MAGICPORTSRC = \
597- $(MAGICPORTDIR ) /magicport2.d $(MAGICPORTDIR ) /ast.d \
598- $(MAGICPORTDIR ) /scanner.d $(MAGICPORTDIR ) /tokens.d \
599- $(MAGICPORTDIR ) /parser.d $(MAGICPORTDIR ) /dprinter.d \
600- $(MAGICPORTDIR ) /typenames.d $(MAGICPORTDIR ) /visitor.d \
601- $(MAGICPORTDIR ) /namer.d
602-
603- MAGICPORT = $(MAGICPORTDIR ) /magicport2
604-
605- $(MAGICPORT ) : $(MAGICPORTSRC )
606- CC=$(HOST_CC ) $(HOST_DMD_RUN ) -of$(MAGICPORT ) $(MAGICPORTSRC )
607-
608- GENSRC =access.d aggregate.d aliasthis.d apply.d \
609- argtypes.d arrayop.d arraytypes.d \
610- attrib.d builtin.d canthrow.d dcast.d \
611- dclass.d clone.d cond.d constfold.d \
612- cppmangle.d ctfeexpr.d declaration.d \
613- delegatize.d doc.d dsymbol.d \
614- denum.d expression.d func.d \
615- hdrgen.d identifier.d imphint.d \
616- dimport.d dinifile.d inline.d init.d \
617- dinterpret.d json.d lexer.d link.d \
618- dmacro.d dmangle.d mars.d \
619- dmodule.d mtype.d opover.d optimize.d \
620- parse.d sapply.d dscope.d sideeffect.d \
621- statement.d staticassert.d dstruct.d \
622- target.d dtemplate.d traits.d dunittest.d \
623- utf.d dversion.d visitor.d lib.d \
624- nogc.d nspace.d errors.d tokens.d \
625- globals.d escape.d \
626- $(ROOT ) /aav.d $(ROOT ) /outbuffer.d $(ROOT ) /stringtable.d \
627- $(ROOT ) /file.d $(ROOT ) /filename.d $(ROOT ) /speller.d \
628- $(ROOT ) /man.d $(ROOT ) /response.d
629-
630- MANUALSRC = \
631- intrange.d complex.d \
632- entity.d backend.d \
633- $(ROOT ) /array.d $(ROOT ) /longdouble.d \
634- $(ROOT ) /rootobject.d $(ROOT ) /port.d \
635- $(ROOT ) /rmem.d id.d impcnvtab.d
636-
637- ifeq ($(D_OBJC ) ,1)
638- GENSRC += objc.d
639- else
640- MANUALSRC += objc_stubs.d
641- endif
642-
643- mars.d : $(SRC ) $(ROOT_SRC ) magicport.json $(MAGICPORT )
644- $(MAGICPORT ) . .
645-
646- DSRC = $(GENSRC ) $(MANUALSRC )
647-
648- ddmd : mars.d $(MANUALSRC ) newdelete.o glue.a backend.a verstr.h
649- CC=$(HOST_CC ) $(HOST_DMD_RUN ) $(MODEL_FLAG ) $(DSRC ) -ofddmd newdelete.o glue.a backend.a -vtls -J. -d $(DFLAGS )
650-
651- DELSRCS =access.c aliasthis.c apply.c argtypes.c arrayop.c attrib.c builtin.c \
652- canthrow.c cast.c class.c clone.c cond.c constfold.c cppmangle.c \
653- ctfeexpr.c declaration.c delegatize.c doc.c dsymbol.c entity.c enum.c \
654- errors.c escape.c expression.c func.c globals.c hdrgen.c identifier.c \
655- imphint.c import.c inifile.c init.c inline.c interpret.c intrange.c \
656- json.c lexer.c link.c macro.c mangle.c mars.c module.c mtype.c nogc.c \
657- nspace.c objc.c objc_stubs.c opover.c optimize.c parse.c sapply.c \
658- scope.c sideeffect.c statement.c staticassert.c struct.c target.c \
659- template.c tokens.c traits.c unittests.c utf.c version.c $(addprefix \
660- $(ROOT ) /,aav.c async.c async.h checkedint.c checkedint.h file.c \
661- filename.c longdouble.c man.c object.c outbuffer.c port.c response.c \
662- rmem.c speller.c stringtable.c)
663-
664- convert_tree : $(SRC ) $(ROOT_SRC ) magicport.json $(MAGICPORT )
665- $(MAGICPORT ) . .
666- rm $(DELSRCS )
667- rm $(MAGICPORT ) $(MAGICPORTDIR ) /* .o
668-
669- convert_index : $(SRC ) $(ROOT_SRC ) magicport.json $(MAGICPORT )
670- $(MAGICPORT ) . .
671- git add $(GENSRC ) objc.d
672- git rm $(DELSRCS )
673-
674462# ############################
675463
676464.DELETE_ON_ERROR : # GNU Make directive (delete output files on error)
0 commit comments