include Makefile.inc #VPATH = $(INCDIR) DIR=Kernel OBJDIR=${BUILDDIR}/${OBJ}/runtime/${DIR} OSRCS = mutator.c mutlib.c main.c SSRCS = newtables.c newbuiltin.c ASRCS = haskellInit.c dump.c inscount.c collector.c mark.c \ cdata.c timeUnix.c xlib_debug.c stableptr.c closureval.c ffiexport.c ifneq "${PROFILING}" "" ASRCS += profile.c remark.c xmem.c retainer.c timer.c endif ifneq "${TPROF}" "" ASRCS += tprof.c timer.c TPLOBJS = $(patsubst %,${OBJDIR}/tpl%Builtin.o,1 2 3) endif OOBJS = $(patsubst %.c,${OBJDIR}/%.o,${OSRCS}) SOBJS = $(patsubst %.c,${OBJDIR}/%.o,${SSRCS}) AOBJS = $(patsubst %.c,${OBJDIR}/%.o,${ASRCS}) ifeq "$(CFG)" "" ARCHIVE=${OBJDIR}/Runtime.a else ARCHIVE=${OBJDIR}/Runtime.${CFG}.a endif OBJS = ${AOBJS} ${SOBJS} ${OOBJS} CFLAGSNOOPT = ${DCFG} ${BUGFIX} ${ENDIAN} ${ARCH} -I${INCDIR} \ -DVERSION="\"$(VERSION)\"" $(shell echo ${COPTS}) #-DBYTECODE_PROF CFLAGS = ${CFLAGSNOOPT} ${OPT} CPP = $(CC) ${DCFG} ${ENDIAN} -E LDFLAGS = -r AS = $(CC) -c ${AOBJS} ${OOBJS}: ${OBJDIR}/%.o: %.c ${CC} -c ${CFLAGS} -o $@ $< ${SOBJS}: ${OBJDIR}/%.o: %.c ${CC} -S ${CFLAGSNOOPT} -o - $< |\ sed -e '/.align 32/s/32/4/' -e '/.p2align 5/s/5/2/' |\ ${CC} -c -x assembler-with-cpp ${CFLAGSNOOPT} -o $@ - LINKS = bytecode.h cinterface.h mutlib.h newmacros.h \ node.h runtime.h stableptr.h newbytecode.h bytecode_o.h links: @cd ${INCDIR}; \ for f in ${LINKS}; do \ ln -s ../src/runtime/${DIR}/$$f >/dev/null 2>&1 || \ echo "Link ${INCDIR}/$$f already exists."; \ done nolinks: @for f in ${LINKS}; do \ rm -f ${INCDIR}/$$f; \ done xxx: echo ${BUILDDIR} ifeq "${TPROF}" "" ${ARCHIVE}: ${AOBJS} ${SOBJS} cd ${OBJDIR}; \ $(AR) $(ARFLAGS) $@ $(patsubst ${OBJDIR}/%,%,${AOBJS} ${SOBJS}) else ${ARCHIVE}: ${AOBJS} ${SOBJS} ${TPLOBJS} cd ${OBJDIR}; $(AR) $(ARFLAGS) $@ \ $(patsubst ${OBJDIR}/%,%,${TPLOBJS} ${AOBJS} ${SOBJS}) rm -f ${TPLOBJS} ${TPLOBJS}: echo "int TMIP_$(patsubst ${OBJDIR}/tpl%.o,%,$@)[] = {0};" \ > ${OBJDIR}/tpltmp.c ${CC} -c ${CFLAGS} -o $@ ${OBJDIR}/tpltmp.c rm ${OBJDIR}/tpltmp.c endif all: links bytecode_o.h ${OOBJS} ${ARCHIVE} ${OBJDIR}: mkdir -p ${OBJDIR} objdir: ${OBJDIR} codemacros.h: bytecode.h macros.h touch codemacros.h cinterface.h: runtime.h touch cinterface.h node.h: runtime.h newmacros.h # newmacros was formerly: codemacros.h touch node.h clean: rm -f ${OBJDIR}/*.o ${OBJDIR}/*.a #tables.s builtin.s newtables.o: newtables.c newmacros.h newbuiltin.o: newbuiltin.c newmacros.h dump.o: dump.c runtime.h bytecode.h node.h inscount.o: inscount.c runtime.h bytecode.h node.h fake.o: fake.c cinterface.h node.h haskellInit.o: haskellInit.c runtime.h mutlib.h node.h ../../../Makefile.inc main.o: main.c runtime.h mutlib.h node.h mutator.o: mutator.c runtime.h bytecode.h node.h mutlib.h cinterface.h mutlib.o: mutlib.c runtime.h mutlib.h newmacros.h collector.o: collector.c node.h newmacros.h runtime.h mark.h mark.o: mark.c runtime.h node.h newmacros.h bytecode.h cdata.o: cdata.c runtime.h timeUnix.o: timeUnix.c runtime.h remark.o: remark.c runtime.h node.h newmacros.h mark.h profile.o: profile.c runtime.h xmem.h profile.h xmem.o: xmem.c xmem.h retainer.o: retainer.c profile.h xmem.h stableptr.o: stableptr.c mark.h runtime.h node.h closureval.o: closureval.c mutlib.h runtime.h newmacros.h ffiexport.o: ffiexport.c mutlib.h runtime.h newmacros.h timer.o: timer.c runtime.h tprof.o: tprof.c runtime.h newmacros.h bytecode_o.h: newbytecode.h $(LOCAL)mangler newbytecode.h bytecode_o.h #all: prof0 $(OBJS) # #$(LD) $(LDFLAGS) -o Runtime0.o $(OBJS_O) # cp mutlib.o mutlib0.o # cp mutator.o mutator0.o # $(AR) $(ARFLAGS) Runtime0.a $(OBJS_A) # #all1: prof1 $(OBJS) $(POBJS) # #$(LD) $(LDFLAGS) -o Runtime1.o $(OBJS_O) # cp mutlib.o mutlib1.o # cp mutator.o mutator1.o # $(AR) $(ARFLAGS) Runtime1.a $(OBJS_A) $(POBJS) # #allt: prof0t $(OBJS) # #$(LD) $(LDFLAGS) -o Runtime0t.o $(OBJS_O) # cp mutlib.o mutlib0t.o # cp mutator.o mutator0t.o # $(AR) $(ARFLAGS) Runtime0t.a $(OBJS_A) # #all1t: prof1t $(OBJS) $(POBJS) # #$(LD) $(LDFLAGS) -o Runtime1t.o $(OBJS_O) # cp mutlib.o mutlib1t.o # cp mutator.o mutator1t.o # $(AR) $(ARFLAGS) Runtime1t.a $(OBJS_A) $(POBJS) #prof0: # $(MAKE) clean # rm -f prof? # rm -f prof?? # touch prof0 # #prof1: # $(MAKE) clean # rm -f prof? # rm -f prof?? # touch prof1 # #prof0t: # $(MAKE) clean # rm -f prof? # rm -f prof?? # touch prof0t # #prof1t: # $(MAKE) clean # rm -f prof? # rm -f prof?? # touch prof1t #tables.s: tables.c codemacros.h # $(CPP) $(OPT) tables.c > tables.s # #builtin.s: builtin.c codemacros.h # $(CPP) $(OPT) builtin.c > builtin.s # #tables.o: tables.s # $(AS) tables.s # #builtin.o: builtin.s # $(AS) builtin.s