llvm/test/Makefile.tests
Chris Lattner baed07333f Move llvm tools to the start of the testrunner path, which allows the llvm 'as'
tool to be found in preference to the system 'as' tool.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6775 91177308-0d34-0410-b5e6-96231b3b80d8
2003-06-18 19:39:06 +00:00

135 lines
3.5 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
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 = $(LLVMGCCDIR)/bin/gcc
LCC1 = $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1
LCXX = $(LLVMGCCDIR)/bin/g++
LCC1XX = $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1plus
LLI = $(TOOLS)/lli
LLC = $(TOOLS)/llc
LAS = $(TOOLS)/as
LGCCAS = $(TOOLS)/gccas
LGCCLD = $(TOOLS)/gccld -L$(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH) -L$(LLVMGCCDIR)/lib
LDIS = $(TOOLS)/dis
LOPT = $(TOOLS)/opt
LLINK = $(TOOLS)/link
LANALYZE = $(TOOLS)/analyze
LBUGPOINT= $(TOOLS)/bugpoint
LCCFLAGS += -O2 -Wall
LCXXFLAGS += -O2 -Wall
LLCFLAGS =
FAILURE = $(LEVEL)/test/Failure.sh
TESTRUNR = PATH=$(LLVMTOOLCURRENT):$(PATH) $(LEVEL)/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
DOTRACING = yes
else
ifeq ($(TRACEM), yes)
TRACEFLAGS += -tracem
DOTRACING = yes
endif
endif
ifeq ($(DOTRACING), yes)
TRACELIBS := -L$(LEVEL)/test/Libraries/Output -linstr64
endif
LLCLIBS := $(LLCLIBS) -lm
clean::
$(RM) 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 $@
# Compile from X.cpp to Output/X.ll
Output/%.ll: $(SourceDir)%.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 $@
# 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: %.ll $(LAS) Output/.dir
$(LAS) -f $< -o $@
#
# Testing versions of provided utilities...
#
Output/%.tll: %.c $(LCC1) Output/.dir $(INCLUDES)
@echo "======== Compiling $<"
$(LCC) $(CPPFLAGS) $(LCCFLAGS) -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