##==- MultiSource/Makefile.multisrc ------------------------*- Makefile -*-===##
#
# This makefile should be used by subdirectories that have multiple source files
# to be linked together.  This contains all of the common makefile code required
# to link an application together based on the $(Source) variable.
#
# Variables to be defined before including this makefile:
#
# 1. LEVEL - Must be set as per normal semantics: The depth from the top of tree
#
##===----------------------------------------------------------------------===##

LCCFLAGS := $(CFLAGS) $(CPPFLAGS)
PROGRAMS_TO_TEST := $(PROG)

## LLVM bytecode libraries that must be linked with an application
# FIXME: LIBS SHOULD BE SPECIFIED
LIBS += -lm

include $(LEVEL)/Makefile.programs

# Figure out what object files we want to build...
LObjs    := $(sort $(addsuffix .rbc, $(notdir $(basename $(Source)))))
LObjects := $(addprefix Output/,$(LObjs))

NObjs    := $(sort $(addsuffix .o, $(notdir $(basename $(Source)))))
NObjects := $(addprefix Output/,$(NObjs))

.PRECIOUS: $(LObjects) $(NObjects) Output/%.linked.rll

Output/%.o: %.c Output/.dir
	$(CC) $(CPPFLAGS) $(CFLAGS) -O2 -c $< -o $@

Output/%.o: %.cpp Output/.dir
	$(CC) $(CPPFLAGS) $(CXXFLAGS) -O2 -c $< -o $@

Output/%.o: %.cc Output/.dir
	$(CC) $(CPPFLAGS) $(CXXFLAGS) -O2 -c $< -o $@

bugpoint-gccas: Output/$(PROG).bugpoint-gccas
bugpoint-gccld: Output/$(PROG).bugpoint-gccld
bugpoint-jit:   Output/$(PROG).bugpoint-jit
bugpoint-llc:   Output/$(PROG).bugpoint-llc
bugpoint-llc-ls: Output/$(PROG).bugpoint-llc-ls

# Raw bytecode files are files created by simply assembling the output of the
# GCC frontend, without running any optimizations.
#
Output/%.rbc: Output/%.ll $(LGCCAS)
	-$(LGCCAS) -disable-opt $< -o $@

ifndef USE_PRECOMPILED_BYTECODE

$(PROGRAMS_TO_TEST:%=Output/%.linked.rbc): \
Output/%.linked.rbc: $(LObjects) $(LGCCLDPROG)
	-$(LGCCLDPROG) -link-as-library -disable-opt $(LObjects) -o $@

# Output/*.linked.ll is all of the bytecode files of the program linked together
# without any libraries linked in...
#
$(PROGRAMS_TO_TEST:%=Output/%.linked.rll): \
Output/%.linked.rll: Output/%.linked.rbc $(LDIS)
	-$(LDIS) $< -o $@ -f

$(PROGRAMS_TO_TEST:%=Output/%.LOC.txt): \
Output/%.LOC.txt: $(Source)
	cat $^ $(wildcard $(SourceDir)/*.h) | wc -l > $@

endif

Output/%.native: $(NObjects)
	$(CC) -o $@ $(NObjects) $(LDFLAGS) $(CFLAGS)
