llvm/test/Makefile.tests
John Criswell ee29d2aa20 Checkin of autoconf-style object root.
Use QMTest for the feature and Regression tests.
Continue using the Makefile system for the Programs tests.
Adjusted the Makefile rules to handle building outside the source directory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8381 91177308-0d34-0410-b5e6-96231b3b80d8
2003-09-06 15:12:21 +00:00

156 lines
4.4 KiB
Makefile

##----------------------------------------------------------*- 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
# Specify ENABLE_STATS on the command line to enable -stats and -time-passes
# output from gccas and gccld.
ifdef ENABLE_STATS
STATS = -stats -time-passes
endif
.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
TOOLS = $(LLVMTOOLCURRENT)
# LLVM Tool Definitions...
#
LCC = $(LLVMGCC) ## FIXME: remove these definitions, use LLVMGCC directly
LCXX = $(LLVMGXX) ## FIXME: remove these definitions, use LLVMGXX directly
LAS = $(LLVMAS) ## FIXME: remove these definitions, use LLVMAS directly
LLI = $(TOOLS)/lli
LLC = $(TOOLS)/llc
LGCCAS = $(TOOLS)/gccas
LGCCLD = $(TOOLS)/gccld -L$(LLVMGCCDIR)/lib/gcc/$(LLVMGCCARCH) -L$(LLVMGCCDIR)/lib
LGCCLDPROG = $(TOOLS)/gccld
LDIS = $(TOOLS)/llvm-dis
LOPT = $(TOOLS)/opt
LLINK = $(TOOLS)/link
LANALYZE = $(TOOLS)/analyze
LBUGPOINT= $(TOOLS)/bugpoint
LCCFLAGS += -O2 -Wall
LCXXFLAGS += -O2 -Wall
LLCFLAGS =
FAILURE = $(LLVM_SRC_ROOT)/test/Failure.sh
TESTRUNR = @echo Running test: $<; \
PATH=$(LLVMTOOLCURRENT):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH) \
$(LLVM_SRC_ROOT)/test/TestRunner.sh
# Native Tool Definitions
NATGCC = $(CC)
CP = /bin/cp -f
## If TRACE or TRACEM is "yes", set the appropriate llc flag (-trace or -tracem)
## mark that tracing on, and set the TRACELIBS variable.
TRACEFLAGS =
ifeq ($(TRACE), yes)
TRACEFLAGS = -trace
TRACELIBS := -L$(LEVEL)/test/Libraries/Output -linstr.$(ARCH)
endif
ifeq ($(TRACEM), yes)
TRACEFLAGS = -tracem
TRACELIBS := -L$(LEVEL)/test/Libraries/Output -linstr.$(ARCH)
endif
LLCLIBS := $(LLCLIBS) -lm
clean::
$(RM) -f a.out core
$(RM) -rf Output/
# Compile from X.c to Output/X.ll
Output/%.ll: $(SourceDir)/%.c $(LCC1) Output/.dir $(INCLUDES)
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@
Output/%.ll: %.c $(LCC1) Output/.dir $(INCLUDES)
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@
# Compile from X.cpp to Output/X.ll
Output/%.ll: $(SourceDir)/%.cpp $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
Output/%.ll: %.cpp $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
# Compile from X.cc to Output/X.ll
Output/%.ll: $(SourceDir)/%.cc $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
Output/%.ll: %.cc $(LCC1XX) Output/.dir $(INCLUDES)
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
# LLVM Assemble from Output/X.ll to Output/X.bc. Output/X.ll must have come
# from GCC output, so use GCCAS.
#
Output/%.bc: Output/%.ll $(LGCCAS)
$(LGCCAS) $(STATS) $< -o $@
# LLVM Assemble from X.ll to Output/X.bc. Because we are coming directly from
# LLVM source, use the non-transforming assembler.
#
Output/%.bc: $(SourceDir)/%.ll $(LAS) Output/.dir
$(LAS) -f $< -o $@
#
# Testing versions of provided utilities...
#
Output/%.tll: $(SourceDir)/%.c $(LCC1) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tll: %.c $(LCC1) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tll: $(SourceDir)/%.cpp $(LCC1XX) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tll: %.cpp $(LCC1XX) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
Output/%.tbc: Output/%.tll $(LAS)
@echo "======== Assembling $<"
$(LAS) -f $< -o $@ || \
( rm -f $@; $(FAILURE) $@ )
## Cancel built-in implicit rules that override above rules
%: %.s
%: %.c
%.o: %.c