1 cc_defaults { 2 name: "clang-defaults", 3 defaults: [ 4 "llvm-defaults", 5 ], 6 7 header_libs: ["clang-headers"], 8 9 cflags: [ 10 "-pedantic", 11 "-Wno-cast-qual", 12 "-Wno-long-long", 13 "-Wno-unused-private-field", 14 "-Wno-unused-lambda-capture", 15 ], 16 17 include_dirs: [ 18 "external/clang/include", 19 "external/clang/lib/CodeGen", 20 ], 21 22 tidy_checks: [ 23 "-google-runtime-member-string-references", 24 ], 25 26 target: { 27 windows: { 28 enabled: true, 29 cflags: [ 30 // This triggers an assertion on cross Windows builds. 31 "-Wno-error=uninitialized", 32 ], 33 }, 34 not_windows: { 35 cflags: [ 36 "-Wno-unused-lambda-capture", 37 ], 38 }, 39 }, 40 41 } 42 43 clang_generated_headers = [ 44 "clang-gen-options", 45 "clang-gen-attributes", 46 "clang-gen-checkers", 47 "clang-gen-comment-commands", 48 "clang-gen-comment-html-named-character-references", 49 "clang-gen-html-tags", 50 "clang-gen-comment-nodes", 51 "clang-gen-diagnostics", 52 "clang-gen-declnodes", 53 "clang-gen-statnodes", 54 "clang-gen-arm-neon", 55 "clang-version", 56 "llvm-gen-attributes", 57 "llvm-gen-intrinsics", 58 ] 59 60 cc_library_headers { 61 name: "clang-headers", 62 vendor_available: true, 63 host_supported: true, 64 generated_headers: clang_generated_headers, 65 export_include_dirs: ["include"], 66 export_generated_headers: clang_generated_headers, 67 target: { 68 windows: { 69 enabled: true, 70 }, 71 }, 72 } 73 74 llvm_tblgen { 75 name: "clang-gen-options", 76 in: "include/clang/Driver/Options.td", 77 outs: ["clang/Driver/Options.inc"], 78 } 79 80 clang_tblgen { 81 name: "clang-gen-attributes", 82 in: "include/clang/Basic/Attr.td", 83 outs: [ 84 "clang/AST/AttrDump.inc", 85 "clang/AST/AttrImpl.inc", 86 "clang/AST/Attrs.inc", 87 "clang/AST/AttrVisitor.inc", 88 "clang/Basic/AttrHasAttributeImpl.inc", 89 "clang/Basic/AttrList.inc", 90 "clang/Parse/AttrParserStringSwitches.inc", 91 "clang/Sema/AttrParsedAttrImpl.inc", 92 "clang/Sema/AttrParsedAttrKinds.inc", 93 "clang/Sema/AttrParsedAttrList.inc", 94 "clang/Sema/AttrSpellingListIndex.inc", 95 "clang/Sema/AttrTemplateInstantiate.inc", 96 "clang/Serialization/AttrPCHRead.inc", 97 "clang/Serialization/AttrPCHWrite.inc", 98 ], 99 } 100 101 clang_tblgen { 102 name: "clang-gen-checkers", 103 in: "include/clang/StaticAnalyzer/Checkers/Checkers.td", 104 outs: ["clang/StaticAnalyzer/Checkers/Checkers.inc"], 105 } 106 107 clang_tblgen { 108 name: "clang-gen-comment-commands", 109 in: "include/clang/AST/CommentCommands.td", 110 outs: [ 111 "clang/AST/CommentCommandInfo.inc", 112 "clang/AST/CommentCommandList.inc", 113 ], 114 } 115 116 clang_tblgen { 117 name: "clang-gen-comment-html-named-character-references", 118 in: "include/clang/AST/CommentHTMLNamedCharacterReferences.td", 119 outs: ["clang/AST/CommentHTMLNamedCharacterReferences.inc"], 120 } 121 122 clang_tblgen { 123 name: "clang-gen-html-tags", 124 in: "include/clang/AST/CommentHTMLTags.td", 125 outs: [ 126 "clang/AST/CommentHTMLTagsProperties.inc", 127 "clang/AST/CommentHTMLTags.inc", 128 ], 129 } 130 131 clang_tblgen { 132 name: "clang-gen-comment-nodes", 133 in: "include/clang/Basic/CommentNodes.td", 134 outs: ["clang/AST/CommentNodes.inc"], 135 } 136 137 clang_tblgen { 138 name: "clang-gen-diagnostics", 139 in: "include/clang/Basic/Diagnostic.td", 140 outs: [ 141 "clang/Basic/DiagnosticAnalysisKinds.inc", 142 "clang/Basic/DiagnosticASTKinds.inc", 143 "clang/Basic/DiagnosticCommentKinds.inc", 144 "clang/Basic/DiagnosticCommonKinds.inc", 145 "clang/Basic/DiagnosticDriverKinds.inc", 146 "clang/Basic/DiagnosticFrontendKinds.inc", 147 "clang/Basic/DiagnosticLexKinds.inc", 148 "clang/Basic/DiagnosticParseKinds.inc", 149 "clang/Basic/DiagnosticSemaKinds.inc", 150 "clang/Basic/DiagnosticSerializationKinds.inc", 151 "clang/Basic/DiagnosticGroups.inc", 152 "clang/Basic/DiagnosticIndexName.inc", 153 ], 154 } 155 156 clang_tblgen { 157 name: "clang-gen-declnodes", 158 in: "include/clang/Basic/DeclNodes.td", 159 outs: ["clang/AST/DeclNodes.inc"], 160 } 161 162 clang_tblgen { 163 name: "clang-gen-statnodes", 164 in: "include/clang/Basic/StmtNodes.td", 165 outs: ["clang/AST/StmtNodes.inc"], 166 } 167 168 clang_tblgen { 169 name: "clang-gen-arm-neon", 170 in: "include/clang/Basic/arm_neon.td", 171 outs: [ 172 "clang/Basic/arm_neon.inc", 173 "clang/Basic/arm_neon.h", 174 ], 175 } 176 177 genrule { 178 name: "clang-version", 179 cmd: "$(location) $(in) > $(out)", 180 tool_files: [ 181 "clang-version-inc.py", 182 "version.py", 183 ], 184 srcs: [ 185 "include/clang/Basic/Version.inc.in", 186 ], 187 out: ["clang/Basic/Version.inc"], 188 } 189 190 cc_library_shared { 191 name: "libclang_android", 192 defaults: [ 193 "clang-defaults", 194 "force_build_llvm_components", 195 ], 196 197 host_supported: true, 198 199 whole_static_libs: [ 200 "libclangAnalysis", 201 "libclangAST", 202 "libclangASTMatchers", 203 "libclangBasic", 204 "libclangCodeGen", 205 "libclangDriver", 206 "libclangEdit", 207 "libclangFormat", 208 "libclangFrontend", 209 "libclangIndex", 210 "libclangLex", 211 "libclangLibclang", 212 "libclangParse", 213 "libclangRewrite", 214 "libclangRewriteFrontend", 215 "libclangSema", 216 "libclangSerialization", 217 "libclangTooling", 218 "libclangToolingCore", 219 ], 220 221 export_shared_lib_headers: ["libLLVM_android"], 222 shared_libs: ["libLLVM_android"], 223 export_header_lib_headers: ["clang-headers"], 224 225 target: { 226 windows: { 227 host_ldlibs: [ 228 "-limagehlp", 229 "-lpsapi", 230 "-lversion", 231 ], 232 }, 233 not_windows: { 234 shared_libs: ["libc++"], 235 }, 236 }, 237 238 product_variables: { 239 unbundled_build: { 240 // Don't build the library in unbundled branches. 241 enabled: false, 242 }, 243 }, 244 } 245 246 subdirs = [ 247 "lib", 248 "soong", 249 "utils/TableGen", 250 "tools/clang-check", 251 "tools/clang-format", 252 "tools/driver", 253 "tools/libclang", 254 ] 255