1LOCAL_PATH := $(call my-dir)
2CLANG_ROOT_PATH := $(LOCAL_PATH)
3
4FORCE_BUILD_LLVM_DISABLE_NDEBUG ?= false
5# Legality check: FORCE_BUILD_LLVM_DISABLE_NDEBUG should consist of one word -- either "true" or "false".
6ifneq "$(words $(FORCE_BUILD_LLVM_DISABLE_NDEBUG))$(words $(filter-out true false,$(FORCE_BUILD_LLVM_DISABLE_NDEBUG)))" "10"
7  $(error FORCE_BUILD_LLVM_DISABLE_NDEBUG may only be true, false, or unset)
8endif
9
10FORCE_BUILD_LLVM_DEBUG ?= false
11# Legality check: FORCE_BUILD_LLVM_DEBUG should consist of one word -- either "true" or "false".
12ifneq "$(words $(FORCE_BUILD_LLVM_DEBUG))$(words $(filter-out true false,$(FORCE_BUILD_LLVM_DEBUG)))" "10"
13  $(error FORCE_BUILD_LLVM_DEBUG may only be true, false, or unset)
14endif
15
16.PHONY: clang-toolchain llvm-tools
17clang-toolchain: \
18    clang \
19    FileCheck \
20    llvm-as \
21    llvm-dis \
22    llvm-link \
23    LLVMgold \
24    libprofile_rt
25
26llvm-tools: \
27    bugpoint \
28    BugpointPasses \
29    count \
30    llc \
31    lli \
32    lli-child-target \
33    LLVMHello \
34    llvm-ar \
35    llvm-as \
36    llvm-bcanalyzer \
37    llvm-config \
38    llvm-cov \
39    llvm-c-test \
40    llvm-cxxdump \
41    llvm-diff \
42    llvm-dis \
43    llvm-dsymutil \
44    llvm-dwarfdump \
45    llvm-dwp \
46    llvm-extract \
47    llvm-link \
48    llvm-lto \
49    llvm-mc \
50    llvm-mcmarkup \
51    llvm-nm \
52    llvm-objdump \
53    llvm-pdbdump \
54    llvm-profdata \
55    llvm-readobj \
56    llvm-rtdyld \
57    llvm-size \
58    llvm-split \
59    llvm-symbolizer \
60    not \
61    obj2yaml \
62    opt \
63    sancov \
64    verify-uselistorder \
65    yaml2obj \
66    yaml-bench
67
68ifneq ($(HOST_OS),darwin)
69clang-toolchain: \
70    host_cross_clang \
71    libasan \
72    libasan_32 \
73    libasan_cxx \
74    libasan_cxx_32 \
75    libprofile_rt_32 \
76    libtsan \
77    libtsan_cxx \
78    libubsan_standalone \
79    libubsan_standalone_32 \
80    libubsan_standalone_cxx \
81    libubsan_standalone_cxx_32
82
83endif
84
85ifneq (,$(filter arm arm64 x86,$(TARGET_ARCH)))
86clang-toolchain: \
87    $(ADDRESS_SANITIZER_RUNTIME_LIBRARY)
88
89endif
90
91include $(CLEAR_VARS)
92
93subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \
94  lib/Analysis \
95  lib/AST \
96  lib/ASTMatchers \
97  lib/ARCMigrate \
98  lib/Basic \
99  lib/CodeGen \
100  lib/Driver \
101  lib/Edit \
102  lib/Format \
103  lib/Frontend \
104  lib/Frontend/Rewrite \
105  lib/FrontendTool \
106  lib/Index \
107  lib/Lex \
108  lib/Parse \
109  lib/Rewrite \
110  lib/Sema \
111  lib/Serialization \
112  lib/StaticAnalyzer/Checkers \
113  lib/StaticAnalyzer/Core \
114  lib/StaticAnalyzer/Frontend \
115  lib/Tooling \
116  tools/driver \
117  tools/libclang \
118  utils/TableGen \
119  ))
120
121include $(LOCAL_PATH)/clang.mk
122include $(LOCAL_PATH)/shared_clang.mk
123
124include $(subdirs)
125