# Makefile to build the compiler runtime D library for Linux # Designed to work with GNU make # Targets: # make # Same as make all # make lib # Build the compiler runtime library # make doc # Generate documentation # make clean # Delete unneeded files created by build process LIB_TARGET=libdruntime-rt-dmd.a LIB_MASK=libdruntime-rt-dmd*.a CP=cp -f RM=rm -f MD=mkdir -p CFLAGS=-O $(ADD_CFLAGS) #CFLAGS=-g $(ADD_CFLAGS) DFLAGS=-release -O -inline -w -nofloat -version=Posix $(ADD_DFLAGS) #DFLAGS=-g -w -nofloat -version=Posix $(ADD_DFLAGS) TFLAGS=-O -inline -w -nofloat -version=Posix $(ADD_DFLAGS) #TFLAGS=-g -w -nofloat -version=Posix $(ADD_DFLAGS) DOCFLAGS=-version=DDoc -version=Posix CC=gcc LC=$(AR) -qsv DC=dmd LIB_DEST=../../../lib .SUFFIXES: .s .S .c .cpp .d .html .o .s.o: $(CC) -c $(CFLAGS) $< -o$@ .S.o: $(CC) -c $(CFLAGS) $< -o$@ .c.o: $(CC) -c $(CFLAGS) $< -o$@ .cpp.o: g++ -c $(CFLAGS) $< -o$@ .d.o: $(DC) -c $(DFLAGS) $< -of$@ .d.html: $(DC) -c -o- $(DOCFLAGS) -Df$*.html dmd.ddoc $< targets : lib doc all : lib doc lib : dmd.lib doc : dmd.doc ###################################################### OBJ_BASE= \ aaA.o \ aApply.o \ aApplyR.o \ adi.o \ alloca.o \ arrayassign.o \ arraybyte.o \ arraycast.o \ arraycat.o \ arraydouble.o \ arrayfloat.o \ arrayint.o \ arrayreal.o \ arrayshort.o \ cast_.o \ cmath2.o \ complex.o \ cover.o \ critical.o \ deh2.o \ dmain2.o \ invariant.o \ invariant_.o \ lifetime.o \ llmath.o \ memory.o \ memset.o \ monitor.o \ obj.o \ object_.o \ qsort.o \ switch_.o \ trace.o # NOTE: trace.obj and cover.obj are not necessary for a successful build # as both are used for debugging features (profiling and coverage) # NOTE: a pre-compiled minit.obj has been provided in dmd for Win32 and # minit.asm is not used by dmd for linux # NOTE: deh.o is only needed for Win32, linux uses deh2.o OBJ_UTIL= \ util/console.o \ util/cpuid.o \ util/ctype.o \ util/string.o \ util/utf.o OBJ_TI= \ typeinfo/ti_AC.o \ typeinfo/ti_Acdouble.o \ typeinfo/ti_Acfloat.o \ typeinfo/ti_Acreal.o \ typeinfo/ti_Adouble.o \ typeinfo/ti_Afloat.o \ typeinfo/ti_Ag.o \ typeinfo/ti_Aint.o \ typeinfo/ti_Along.o \ typeinfo/ti_Areal.o \ typeinfo/ti_Ashort.o \ typeinfo/ti_byte.o \ typeinfo/ti_C.o \ typeinfo/ti_cdouble.o \ typeinfo/ti_cfloat.o \ typeinfo/ti_char.o \ typeinfo/ti_creal.o \ typeinfo/ti_dchar.o \ typeinfo/ti_delegate.o \ typeinfo/ti_double.o \ typeinfo/ti_float.o \ typeinfo/ti_idouble.o \ typeinfo/ti_ifloat.o \ typeinfo/ti_int.o \ typeinfo/ti_ireal.o \ typeinfo/ti_long.o \ typeinfo/ti_ptr.o \ typeinfo/ti_real.o \ typeinfo/ti_short.o \ typeinfo/ti_ubyte.o \ typeinfo/ti_uint.o \ typeinfo/ti_ulong.o \ typeinfo/ti_ushort.o \ typeinfo/ti_void.o \ typeinfo/ti_wchar.o ALL_OBJS= \ $(OBJ_BASE) \ $(OBJ_UTIL) \ $(OBJ_TI) ###################################################### ALL_DOCS= ###################################################### dmd.lib : $(LIB_TARGET) $(LIB_TARGET) : $(ALL_OBJS) $(RM) $@ $(LC) $@ $(ALL_OBJS) dmd.doc : $(ALL_DOCS) echo No documentation available. ###################################################### clean : find . -name "*.di" | xargs $(RM) $(RM) $(ALL_OBJS) $(RM) $(ALL_DOCS) $(RM) $(LIB_MASK) install : $(MD) $(LIB_DEST) $(CP) $(LIB_MASK) $(LIB_DEST)/.