Fix integer undefined behavior due to signed left shift overflow in LLVM.
[lldb.git] / clang-tools-extra / test / Makefile
1 CLANG_LEVEL := ..
2 include $(CLANG_LEVEL)/Makefile
3
4 # Test in all immediate subdirectories if unset.
5 ifdef TESTSUITE
6 TESTDIRS := $(TESTSUITE:%=$(PROJ_SRC_DIR)/%)
7 else
8 TESTDIRS ?= $(PROJ_SRC_DIR)
9 endif
10
11 # 'lit' wants objdir paths, so it will pick up the lit.site.cfg.
12 TESTDIRS := $(TESTDIRS:$(PROJ_SRC_DIR)%=$(PROJ_OBJ_DIR)%)
13
14 # Allow EXTRA_TESTDIRS to provide additional test directories.
15 TESTDIRS += $(EXTRA_TESTDIRS)
16
17 ifndef TESTARGS
18 ifdef VERBOSE
19 TESTARGS = -v
20 else
21 TESTARGS = -s -v
22 endif
23 endif
24
25 # Make sure any extra test suites can find the main site config.
26 LIT_ARGS := --param clang_site_config=$(PROJ_OBJ_DIR)/lit.site.cfg
27
28 ifdef VG
29   LIT_ARGS += "--vg"
30 endif
31
32 all:: lit.site.cfg Unit/lit.site.cfg
33         @ echo '--- Running clang tests for $(TARGET_TRIPLE) ---'
34         @ $(PYTHON) $(LLVM_SRC_ROOT)/utils/lit/lit.py \
35           $(LIT_ARGS) $(TESTARGS) $(TESTDIRS)
36
37 FORCE:
38
39 lit.site.cfg: FORCE
40         @echo "Making Clang 'lit.site.cfg' file..."
41         @$(ECHOPATH) s=@LLVM_SOURCE_DIR@=$(LLVM_SRC_ROOT)=g > lit.tmp
42         @$(ECHOPATH) s=@LLVM_BINARY_DIR@=$(LLVM_OBJ_ROOT)=g >> lit.tmp
43         @$(ECHOPATH) s=@LLVM_TOOLS_DIR@=$(ToolDir)=g >> lit.tmp
44         @$(ECHOPATH) s=@LLVM_LIBS_DIR@=$(LibDir)=g >> lit.tmp
45         @$(ECHOPATH) s=@CLANG_SOURCE_DIR@=$(PROJ_SRC_DIR)/..=g >> lit.tmp
46         @$(ECHOPATH) s=@CLANG_BINARY_DIR@=$(PROJ_OBJ_DIR)/..=g >> lit.tmp
47         @$(ECHOPATH) s=@TARGET_TRIPLE@=$(TARGET_TRIPLE)=g >> lit.tmp
48         @sed -f lit.tmp $(PROJ_SRC_DIR)/lit.site.cfg.in > $@
49         @-rm -f lit.tmp
50
51 Unit/lit.site.cfg: FORCE
52         @echo "Making Clang 'Unit/lit.site.cfg' file..."
53         @$(MKDIR) $(dir $@)
54         @$(ECHOPATH) s=@LLVM_SOURCE_DIR@=$(LLVM_SRC_ROOT)=g > unit.tmp
55         @$(ECHOPATH) s=@LLVM_BINARY_DIR@=$(LLVM_OBJ_ROOT)=g >> unit.tmp
56         @$(ECHOPATH) s=@LLVM_TOOLS_DIR@=$(ToolDir)=g >> unit.tmp
57         @$(ECHOPATH) s=@LLVM_LIBS_DIR@=$(LibDir)=g >> unit.tmp
58         @$(ECHOPATH) s=@CLANG_SOURCE_DIR@=$(PROJ_SRC_DIR)/..=g >> unit.tmp
59         @$(ECHOPATH) s=@CLANG_BINARY_DIR@=$(PROJ_OBJ_DIR)/..=g >> unit.tmp
60         @$(ECHOPATH) s=@TARGET_TRIPLE@=$(TARGET_TRIPLE)=g >> unit.tmp
61         @$(ECHOPATH) s=@LLVM_BUILD_MODE@=$(BuildMode)=g >> unit.tmp
62         @$(ECHOPATH) s=@ENABLE_SHARED@=$(ENABLE_SHARED)=g >> unit.tmp
63         @$(ECHOPATH) s=@SHLIBDIR@=$(SharedLibDir)=g >> unit.tmp
64         @$(ECHOPATH) s=@SHLIBPATH_VAR@=$(SHLIBPATH_VAR)=g >> unit.tmp
65         @sed -f unit.tmp $(PROJ_SRC_DIR)/Unit/lit.site.cfg.in > $@
66         @-rm -f unit.tmp
67
68 clean::
69         @ find . -name Output | xargs rm -fr
70
71 .PHONY: all report clean