##----------------------------------------------------------*- Makefile -*-===##
##
## Common rules for generating, linking, and compiling via LLVM.  This is
## used to implement a robust testing framework for LLVM
##
##-------------------------------------------------------------------------===##

# If the user specified a TEST= option on the command line, we do not want to do
# the default testing type.  Instead, we change the default target to be the
# test:: target.
#
ifdef TEST
test::
endif

# We do not want to make .d files for tests! 
DISABLE_AUTO_DEPENDENCIES=1

include ${LEVEL}/Makefile.common

STATS = -stats -time-passes

.PHONY: clean default

# These files, which might be intermediate results, should not be deleted by
# make
.PRECIOUS: Output/%.bc  Output/%.ll
.PRECIOUS: Output/%.tbc Output/%.tll
.PRECIOUS: Output/.dir
.PRECIOUS: Output/%.llvm.bc
.PRECIOUS: Output/%.llvm

FAILURE  = $(LLVM_SRC_ROOT)/test/Failure.sh
LLCLIBS := $(LLCLIBS) -lm

clean::
	$(RM) -f a.out core
	$(RM) -rf Output/

# Compile from X.c to Output/X.bc
Output/%.bc: %.c $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
	-$(LCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm

# Compile from X.cpp to Output/X.bc
Output/%.bc: %.cpp $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
	-$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm

# Compile from X.cc to Output/X.bc
Output/%.bc: %.cc $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
	-$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm

# Compile from X.C to Output/X.bc
Output/%.bc: %.C $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
	-$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm

# Compile from X.m to Output/X.bc
Output/%.bc: %.m $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
	-$(LCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm

# Compile from X.mm to Output/X.bc
Output/%.bc: %.mm $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
	-$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm

# LLVM Assemble from X.ll to Output/X.bc.  Because we are coming directly from
# LLVM source, use the non-transforming assembler.
#
Output/%.bc: %.ll $(LLVMAS) Output/.dir
	-$(LLVMAS) $< -o $@

## Cancel built-in implicit rules that override above rules
%: %.s

%: %.c

%.o: %.c

%.o: %.m

%.o: %.mm
