## -*-Makefile-*- ##------------------------------------------------------------------------ ## Common rules for generating, linking, and compiling via LLVM. ##------------------------------------------------------------------------ .PHONY: clean default ## keep %.linked.bc and %.s from being deleted while we're debugging .PRECIOUS: %.linked.bc %.s TOOLS = $(LEVEL)/tools/Debug LLC = $(TOOLS)/llc LAS = $(TOOLS)/as LDIS = $(TOOLS)/dis LOPT = $(TOOLS)/opt LLINK = $(TOOLS)/link LLCFLAGS = LCC = /home/vadve/lattner/cvs/gcc_install/bin/gcc LCFLAGS = -O2 $(LOCAL_LCFLAGS) -Wall LLCLIB = $(LEVEL)/test/runtime.o LIBS = $(LLCLIB) $(LOCAL_LIBS) ifeq ($(TRACE), yes) LLCFLAGS := $(LLCFLAGS) -trace endif CC = /opt/SUNWspro/bin/cc AS = /opt/SUNWspro/bin/cc DIS = /usr/ccs/bin/dis CP = /bin/cp -p CFLAGS = -g -xarch=v9 $(LOCAL_CFLAGS) CCFLAGS = $(CFLAGS) LDFLAGS = $(CFLAGS) $(LOCAL_LDFLAGS) ASFLAGS = -c $(CFLAGS) ## Special targets to build a program from multiple source files ## ifdef PROG default: $(PROG) $(PROG).native ifeq ($(strip $(OBJS)),) BCOBJS = $(PROG).bc else BCOBJS = $(OBJS:.o=.bc) endif $(PROG).linked.bc: $(BCOBJS) $(LLINK) -f $(BCOBJS) -o $(PROG).tmp.bc $(LOPT) -cleangcc -raise -constprop -dce $(PROG).tmp.bc -o $@ -f $(RM) $(PROG).tmp.bc $(PROG).native: $(OBJS:.o=.c) $(CC) $(OBJS:.o=.c) -O $(LOCAL_LCFLAGS) $(CFLAGS) -lm -o $@ endif ## Special target to force target-dependent library to be compiled ## directly to native code. ## $(LLCLIB): $(LLCLIB:.o=.c) cd $(LEVEL)/test; $(MAKE) $(@F) runtime.o: runtime.c $(CC) -c $(CCFLAGS) $< clean : $(RM) *.[123] *.bc *.mc *.s *.o a.out core $(PROG) $(PROG).native %.mc: %.bc $(LLC) $(AS) @echo "Generating machine instructions for $<" $(LLC) -f -dsched y $(LLCFLAGS) $< > $@ %.trace.bc: %.bc $(LLC) $(LLC) -f -trace $(LLCFLAGS) $< ## Leave this rule out to avoid problems in tests that have both .c and .ll ## %.ll: %.c ## $(LCC) $(LCFLAGS) -S $< -o $*.ll %.bc: %.c $(LCC) $(LCFLAGS) -c $< -o $@ %.bc: %.ll $(LAS) -f $< %.linked.bc: %.bc $(CP) $< $@ %.s: %.linked.bc $(LLC) -f $(LLCFLAGS) $< -o $@ %: %.o $(LIBS) $(CC) $(LDFLAGS) $< $(LIBS) -o $@ ## Cancel built-in implicit rules that override above rules %: %.s %: %.c %.o: %.c ## The next two rules are for disassembling an executable or an object file %.dis: % $(DIS) $< > $@ %.dis: %.o $(DIS) $< > $@