##==- test/Programs/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)/test/Programs/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

# 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)
