mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
f6afae2f49
--enable-shared configure flag to have the tools linked shared. (2.7svn is just $(LLVMVersion) so it'll change to "2.7" in the release.) Always link the example programs shared to test that the shared library keeps working. On my mac laptop, Debug libLLVM2.7svn.dylib is 39MB, and opt (for example) is 16M static vs 440K shared. Two things are less than ideal here: 1) The library doesn't include any version information. Since we expect to break the ABI with every release, this shouldn't be much of a problem. If we do release a compatible 2.7.1, we may be able to hack its library to work with binaries compiled against 2.7.0, or we can just ask them to recompile. I'm hoping to get a real packaging expert to look at this for the 2.8 release. 2) llvm-config doesn't yet have an option to print link options for the shared library. I'll add this as a subsequent patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96559 91177308-0d34-0410-b5e6-96231b3b80d8
206 lines
7.0 KiB
Makefile
206 lines
7.0 KiB
Makefile
#===- test/Makefile ----------------------------------------*- Makefile -*--===#
|
|
#
|
|
# The LLVM Compiler Infrastructure
|
|
#
|
|
# This file is distributed under the University of Illinois Open Source
|
|
# License. See LICENSE.TXT for details.
|
|
#
|
|
#===------------------------------------------------------------------------===#
|
|
|
|
LEVEL = ..
|
|
DIRS =
|
|
|
|
#
|
|
# Make Dejagnu the default for testing
|
|
#
|
|
all:: check-local
|
|
|
|
# Include other test rules
|
|
include Makefile.tests
|
|
|
|
#===------------------------------------------------------------------------===#
|
|
# DejaGNU testing support
|
|
#===------------------------------------------------------------------------===#
|
|
|
|
ifneq ($(GREP_OPTIONS),)
|
|
$(warning GREP_OPTIONS environment variable may interfere with test results)
|
|
endif
|
|
|
|
ifdef VERBOSE
|
|
RUNTESTFLAGS := $(VERBOSE)
|
|
LIT_ARGS := -v
|
|
else
|
|
LIT_ARGS := -s -v
|
|
endif
|
|
|
|
ifdef TESTSUITE
|
|
LIT_TESTSUITE := $(TESTSUITE)
|
|
CLEANED_TESTSUITE := $(patsubst %/,%,$(TESTSUITE))
|
|
CLEANED_TESTSUITE := $(patsubst test/%,%,$(CLEANED_TESTSUITE))
|
|
RUNTESTFLAGS += --tool $(CLEANED_TESTSUITE)
|
|
else
|
|
LIT_TESTSUITE := .
|
|
endif
|
|
|
|
ifdef VG
|
|
VALGRIND := valgrind --tool=memcheck --quiet --trace-children=yes --error-exitcode=3 --leak-check=full $(VALGRIND_EXTRA_ARGS)
|
|
endif
|
|
|
|
# Check what to run for -all.
|
|
LIT_ALL_TESTSUITES := $(LIT_TESTSUITE)
|
|
|
|
extra-lit-site-cfgs::
|
|
.PHONY: extra-lit-site-cfgs
|
|
|
|
ifneq ($(strip $(filter check-local-all,$(MAKECMDGOALS))),)
|
|
ifndef TESTSUITE
|
|
ifeq ($(shell test -d $(PROJ_SRC_DIR)/../tools/clang && echo OK), OK)
|
|
LIT_ALL_TESTSUITES += $(PROJ_OBJ_DIR)/../tools/clang/test
|
|
|
|
# Force creation of Clang's lit.site.cfg.
|
|
clang-lit-site-cfg: FORCE
|
|
$(MAKE) -C $(PROJ_OBJ_DIR)/../tools/clang/test lit.site.cfg
|
|
extra-lit-site-cfgs:: clang-lit-site-cfg
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
IGNORE_TESTS :=
|
|
|
|
ifndef RUNLLVM2CPP
|
|
IGNORE_TESTS += llvm2cpp.exp
|
|
endif
|
|
|
|
ifdef IGNORE_TESTS
|
|
RUNTESTFLAGS += --ignore "$(strip $(IGNORE_TESTS))"
|
|
endif
|
|
|
|
# ulimits like these are redundantly enforced by the buildbots, so
|
|
# just removing them here won't work.
|
|
# Both AuroraUX & Solaris do not have the -m flag for ulimit
|
|
ifeq ($(HOST_OS),SunOS)
|
|
ULIMIT=ulimit -t 600 ; ulimit -d 512000 ; ulimit -v 512000 ;
|
|
else # !SunOS
|
|
ifeq ($(HOST_OS),AuroraUX)
|
|
ULIMIT=ulimit -t 600 ; ulimit -d 512000 ; ulimit -v 512000 ;
|
|
else # !AuroraUX
|
|
ULIMIT=ulimit -t 600 ; ulimit -d 512000 ; ulimit -m 512000 ; ulimit -v 512000 ;
|
|
endif # AuroraUX
|
|
endif # SunOS
|
|
|
|
ifneq ($(RUNTEST),)
|
|
check-local:: site.exp
|
|
( $(ULIMIT) \
|
|
PATH="$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(LLVMGCCDIR)/bin:$(PATH)" \
|
|
$(RUNTEST) $(RUNTESTFLAGS) )
|
|
else
|
|
check-local:: site.exp
|
|
@echo "*** dejagnu not found. Make sure 'runtest' is in your PATH, then reconfigure LLVM."
|
|
endif
|
|
|
|
check-local-lit:: lit.site.cfg Unit/lit.site.cfg
|
|
( $(ULIMIT) \
|
|
$(LLVM_SRC_ROOT)/utils/lit/lit.py $(LIT_ARGS) $(LIT_TESTSUITE) )
|
|
|
|
check-local-all:: lit.site.cfg Unit/lit.site.cfg extra-lit-site-cfgs
|
|
( $(ULIMIT) \
|
|
$(LLVM_SRC_ROOT)/utils/lit/lit.py $(LIT_ARGS) $(LIT_ALL_TESTSUITES) )
|
|
|
|
ifdef TESTONE
|
|
CLEANED_TESTONE := $(patsubst %/,%,$(TESTONE))
|
|
CLEANED_TESTONE := $(patsubst test/%,%,$(CLEANED_TESTONE))
|
|
SUBDIR := $(shell dirname $(CLEANED_TESTONE))
|
|
TESTPATH := $(LLVM_SRC_ROOT)/test/$(CLEANED_TESTONE)
|
|
check-one: site.exp $(TCLSH)
|
|
$(Verb)( echo "source $(LLVM_OBJ_ROOT)/test/site.exp" ; \
|
|
echo "set subdir $(SUBDIR)" ; \
|
|
echo "proc pass { msg } { puts \"PASS: \$$msg\" } "; \
|
|
echo "proc fail { msg } { puts \"FAIL: \$$msg\" }" ; \
|
|
echo "proc xfail { msg } { puts \"XFAIL: \$$msg\" }" ; \
|
|
echo "proc xpass { msg } { puts \"XPASS: \$$msg\" }" ; \
|
|
echo "proc verbose args { }" ; \
|
|
echo "source $(LLVM_SRC_ROOT)/test/lib/llvm.exp" ; \
|
|
echo "RunLLVMTests $(TESTPATH)" ) | \
|
|
( $(ULIMIT) \
|
|
PATH="$(LLVMToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$(PATH)" \
|
|
$(TCLSH) )
|
|
endif
|
|
|
|
clean::
|
|
$(RM) -rf `find $(LLVM_OBJ_ROOT)/test -name Output -type d -print`
|
|
|
|
# dsymutil is used on the Darwin to manipulate DWARF debugging information.
|
|
ifeq ($(TARGET_OS),Darwin)
|
|
DSYMUTIL=dsymutil
|
|
else
|
|
DSYMUTIL=true
|
|
endif
|
|
ifdef TargetCommonOpts
|
|
BUGPOINT_TOPTS="-gcc-tool-args $(TargetCommonOpts)"
|
|
else
|
|
BUGPOINT_TOPTS=""
|
|
endif
|
|
|
|
ifneq ($(OCAMLOPT),)
|
|
CC_FOR_OCAMLOPT := $(shell $(OCAMLOPT) -config | grep native_c_compiler | sed -e 's/native_c_compiler: //')
|
|
CXX_FOR_OCAMLOPT := $(subst gcc,g++,$(CC_FOR_OCAMLOPT))
|
|
endif
|
|
|
|
FORCE:
|
|
|
|
site.exp: FORCE
|
|
@echo 'Making a new site.exp file...'
|
|
@echo '## Autogenerated by LLVM configuration.' > site.tmp
|
|
@echo '# Do not edit!' >> site.tmp
|
|
@echo 'set target_triplet "$(TARGET_TRIPLE)"' >> site.tmp
|
|
@echo 'set TARGETS_TO_BUILD "$(TARGETS_TO_BUILD)"' >> site.tmp
|
|
@echo 'set llvmgcc_langs "$(LLVMGCC_LANGS)"' >> site.tmp
|
|
@echo 'set llvmgcc_version "$(LLVMGCC_VERSION)"' >> site.tmp
|
|
@echo 'set llvmtoolsdir "$(ToolDir)"' >>site.tmp
|
|
@echo 'set llvmlibsdir "$(LibDir)"' >>site.tmp
|
|
@echo 'set llvm_bindings "$(BINDINGS_TO_BUILD)"' >> site.tmp
|
|
@echo 'set srcroot "$(LLVM_SRC_ROOT)"' >>site.tmp
|
|
@echo 'set objroot "$(LLVM_OBJ_ROOT)"' >>site.tmp
|
|
@echo 'set srcdir "$(LLVM_SRC_ROOT)/test"' >>site.tmp
|
|
@echo 'set objdir "$(LLVM_OBJ_ROOT)/test"' >>site.tmp
|
|
@echo 'set gccpath "$(CC)"' >>site.tmp
|
|
@echo 'set gxxpath "$(CXX)"' >>site.tmp
|
|
@echo 'set compile_c "' $(CC) $(CPP.Flags) $(TargetCommonOpts) $(CompileCommonOpts) -c '"' >>site.tmp
|
|
@echo 'set compile_cxx "' $(CXX) $(CPP.Flags) $(CXX.Flags) $(TargetCommonOpts) $(CompileCommonOpts) -c '"' >> site.tmp
|
|
@echo 'set link "' $(CXX) $(CPP.Flags) $(CXX.Flags) $(TargetCommonOpts) $(CompileCommonOpts) $(LD.Flags) '"' >>site.tmp
|
|
@echo 'set llvmgcc "$(LLVMGCC) $(TargetCommonOpts) $(EXTRA_OPTIONS)"' >> site.tmp
|
|
@echo 'set llvmgxx "$(LLVMGCC) $(TargetCommonOpts) $(EXTRA_OPTIONS)"' >> site.tmp
|
|
@echo 'set llvmgccmajvers "$(LLVMGCC_MAJVERS)"' >> site.tmp
|
|
@echo 'set bugpoint_topts $(BUGPOINT_TOPTS)' >> site.tmp
|
|
@echo 'set shlibext "$(SHLIBEXT)"' >> site.tmp
|
|
@echo 'set ocamlopt "$(OCAMLOPT) -cc \"$(CXX_FOR_OCAMLOPT)\" -I $(LibDir)/ocaml"' >> site.tmp
|
|
@echo 'set valgrind "$(VALGRIND)"' >> site.tmp
|
|
@echo 'set grep "$(GREP)"' >>site.tmp
|
|
@echo 'set gas "$(GAS)"' >>site.tmp
|
|
@echo 'set llvmdsymutil "$(DSYMUTIL)"' >>site.tmp
|
|
@echo '## All variables above are generated by configure. Do Not Edit ## ' >>site.tmp
|
|
@test ! -f site.exp || \
|
|
sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
|
|
@-rm -f site.bak
|
|
@test ! -f site.exp || mv site.exp site.bak
|
|
@mv site.tmp site.exp
|
|
|
|
lit.site.cfg: site.exp
|
|
@echo "Making LLVM 'lit.site.cfg' file..."
|
|
@sed -e "s#@LLVM_SOURCE_DIR@#$(LLVM_SRC_ROOT)#g" \
|
|
-e "s#@LLVM_BINARY_DIR@#$(LLVM_OBJ_ROOT)#g" \
|
|
-e "s#@LLVM_TOOLS_DIR@#$(ToolDir)#g" \
|
|
-e "s#@LLVMGCCDIR@#$(LLVMGCCDIR)#g" \
|
|
$(PROJ_SRC_DIR)/lit.site.cfg.in > $@
|
|
|
|
Unit/lit.site.cfg: $(PROJ_OBJ_DIR)/Unit/.dir FORCE
|
|
@echo "Making LLVM unittest 'lit.site.cfg' file..."
|
|
@sed -e "s#@LLVM_SOURCE_DIR@#$(LLVM_SRC_ROOT)#g" \
|
|
-e "s#@LLVM_BINARY_DIR@#$(LLVM_OBJ_ROOT)#g" \
|
|
-e "s#@LLVM_TOOLS_DIR@#$(ToolDir)#g" \
|
|
-e "s#@LLVMGCCDIR@#$(LLVMGCCDIR)#g" \
|
|
-e "s#@LLVM_BUILD_MODE@#$(BuildMode)#g" \
|
|
-e "s#@ENABLE_SHARED@#$(ENABLE_SHARED)#g" \
|
|
-e "s#@SHLIBPATH_VAR@#$(SHLIBPATH_VAR)#g" \
|
|
$(PROJ_SRC_DIR)/Unit/lit.site.cfg.in > $@
|