BUILD 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  2. # Exceptions. See /LICENSE for license information.
  3. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. load("@rules_shell//shell:sh_test.bzl", "sh_test")
  5. load("//bazel/cc_rules:defs.bzl", "cc_binary", "cc_library", "cc_test")
  6. load("//bazel/cc_toolchains:defs.bzl", "cc_env")
  7. load("//testing/fuzzing:rules.bzl", "cc_fuzz_test")
  8. package(default_visibility = ["//visibility:public"])
  9. filegroup(
  10. name = "testdata",
  11. srcs = glob([
  12. "testdata/**/*.carbon",
  13. "testdata/**/*.cpp",
  14. ]),
  15. )
  16. cc_library(
  17. name = "clang_runner",
  18. srcs = [
  19. "clang_runner.cpp",
  20. "clang_runtimes.cpp",
  21. ],
  22. hdrs = [
  23. "clang_runner.h",
  24. "clang_runtimes.h",
  25. ],
  26. deps = [
  27. ":llvm_runner",
  28. ":runtimes_cache",
  29. ":tool_runner_base",
  30. "//common:check",
  31. "//common:error",
  32. "//common:filesystem",
  33. "//common:latch",
  34. "//common:ostream",
  35. "//common:string_helpers",
  36. "//common:vlog",
  37. "//third_party/llvm:clang_cc1",
  38. "//toolchain/base:clang_invocation",
  39. "//toolchain/base:install_paths",
  40. "//toolchain/base:kind_switch",
  41. "//toolchain/base:runtimes_build_info",
  42. "@llvm-project//clang:basic",
  43. "@llvm-project//clang:clang-driver",
  44. "@llvm-project//clang:codegen",
  45. "@llvm-project//clang:driver",
  46. "@llvm-project//clang:frontend",
  47. "@llvm-project//clang:frontend_tool",
  48. "@llvm-project//clang:serialization",
  49. "@llvm-project//llvm:Core",
  50. "@llvm-project//llvm:Object",
  51. "@llvm-project//llvm:Support",
  52. "@llvm-project//llvm:TargetParser",
  53. ],
  54. )
  55. cc_test(
  56. name = "clang_runner_test",
  57. size = "small",
  58. srcs = ["clang_runner_test.cpp"],
  59. data = ["//toolchain/install:install_data"],
  60. deps = [
  61. ":clang_runner",
  62. ":llvm_runner",
  63. ":runtimes_cache",
  64. "//common:all_llvm_targets",
  65. "//common:check",
  66. "//common:error_test_helpers",
  67. "//common:ostream",
  68. "//common:raw_string_ostream",
  69. "//testing/base:capture_std_streams",
  70. "//testing/base:file_helpers",
  71. "//testing/base:global_exe_path",
  72. "//testing/base:gtest_main",
  73. "//toolchain/base:install_paths",
  74. "@googletest//:gtest",
  75. "@llvm-project//llvm:Object",
  76. "@llvm-project//llvm:Support",
  77. "@llvm-project//llvm:TargetParser",
  78. ],
  79. )
  80. cc_test(
  81. name = "clang_runtimes_test",
  82. size = "medium",
  83. srcs = ["clang_runtimes_test.cpp"],
  84. data = [
  85. "//toolchain/install:built_runtimes",
  86. "//toolchain/install:install_data",
  87. ],
  88. deps = [
  89. ":clang_runner",
  90. ":llvm_runner",
  91. ":runtimes_cache",
  92. "//common:all_llvm_targets",
  93. "//common:check",
  94. "//common:ostream",
  95. "//common:raw_string_ostream",
  96. "//testing/base:capture_std_streams",
  97. "//testing/base:file_helpers",
  98. "//testing/base:global_exe_path",
  99. "//testing/base:gtest_main",
  100. "//toolchain/base:install_paths",
  101. "//toolchain/base:llvm_tools",
  102. "@bazel_tools//tools/cpp/runfiles",
  103. "@googletest//:gtest",
  104. "@llvm-project//llvm:Object",
  105. "@llvm-project//llvm:Support",
  106. "@llvm-project//llvm:TargetParser",
  107. ],
  108. )
  109. cc_binary(
  110. name = "compile_benchmark",
  111. testonly = 1,
  112. srcs = ["compile_benchmark.cpp"],
  113. deps = [
  114. ":driver",
  115. "//common:all_llvm_targets",
  116. "//testing/base:benchmark_main",
  117. "//testing/base:global_exe_path",
  118. "//testing/base:source_gen_lib",
  119. "//toolchain/base:install_paths_test_helpers",
  120. "//toolchain/testing:compile_helper",
  121. "@google_benchmark//:benchmark",
  122. "@llvm-project//llvm:Support",
  123. ],
  124. )
  125. sh_test(
  126. name = "compile_benchmark_test",
  127. size = "small",
  128. srcs = [":compile_benchmark"],
  129. args = [
  130. "--benchmark_dry_run",
  131. # The `$$` is repeated for Bazel escaping of `$`.
  132. "--benchmark_filter=/256$$",
  133. ],
  134. env = cc_env(),
  135. )
  136. cc_library(
  137. name = "codegen_options",
  138. srcs = [
  139. "codegen_options.cpp",
  140. ],
  141. hdrs = [
  142. "codegen_options.h",
  143. ],
  144. deps = [
  145. "//common:command_line",
  146. "@llvm-project//llvm:Support",
  147. "@llvm-project//llvm:TargetParser",
  148. ],
  149. )
  150. cc_library(
  151. name = "driver",
  152. srcs = [
  153. "build_runtimes_subcommand.cpp",
  154. "build_runtimes_subcommand.h",
  155. "clang_subcommand.cpp",
  156. "clang_subcommand.h",
  157. "compile_subcommand.cpp",
  158. "compile_subcommand.h",
  159. "config_subcommand.cpp",
  160. "config_subcommand.h",
  161. "driver.cpp",
  162. "driver_env.h",
  163. "driver_subcommand.cpp",
  164. "format_subcommand.cpp",
  165. "format_subcommand.h",
  166. "language_server_subcommand.cpp",
  167. "language_server_subcommand.h",
  168. "link_subcommand.cpp",
  169. "link_subcommand.h",
  170. "lld_subcommand.cpp",
  171. "lld_subcommand.h",
  172. "llvm_subcommand.cpp",
  173. "llvm_subcommand.h",
  174. ],
  175. hdrs = [
  176. "driver.h",
  177. "driver_subcommand.h",
  178. ],
  179. data = [
  180. "//toolchain/install:all_data_files",
  181. ],
  182. textual_hdrs = ["flags.def"],
  183. deps = [
  184. ":clang_runner",
  185. ":codegen_options",
  186. ":lld_runner",
  187. ":llvm_runner",
  188. ":runtimes_cache",
  189. "//common:check",
  190. "//common:command_line",
  191. "//common:error",
  192. "//common:filesystem",
  193. "//common:ostream",
  194. "//common:pretty_stack_trace_function",
  195. "//common:raw_string_ostream",
  196. "//common:version",
  197. "//common:vlog",
  198. "//toolchain/base:clang_invocation",
  199. "//toolchain/base:install_paths",
  200. "//toolchain/base:llvm_tools",
  201. "//toolchain/base:shared_value_stores",
  202. "//toolchain/base:timings",
  203. "//toolchain/check",
  204. "//toolchain/codegen",
  205. "//toolchain/diagnostics:emitter",
  206. "//toolchain/diagnostics:format_providers",
  207. "//toolchain/diagnostics:sorting_consumer",
  208. "//toolchain/format",
  209. "//toolchain/language_server",
  210. "//toolchain/lex",
  211. "//toolchain/lower",
  212. "//toolchain/lower:options",
  213. "//toolchain/parse",
  214. "//toolchain/parse:tree",
  215. "//toolchain/sem_ir:file",
  216. "//toolchain/sem_ir:typed_insts",
  217. "//toolchain/source:source_buffer",
  218. "@llvm-project//clang:codegen",
  219. "@llvm-project//clang:frontend",
  220. "@llvm-project//clang:lex",
  221. "@llvm-project//llvm:Core",
  222. "@llvm-project//llvm:MC",
  223. "@llvm-project//llvm:Passes",
  224. "@llvm-project//llvm:Support",
  225. "@llvm-project//llvm:TargetParser",
  226. ],
  227. )
  228. cc_test(
  229. name = "driver_test",
  230. size = "small",
  231. srcs = ["driver_test.cpp"],
  232. data = ["//toolchain/install:install_data"],
  233. deps = [
  234. ":driver",
  235. "//common:all_llvm_targets",
  236. "//common:error_test_helpers",
  237. "//common:filesystem",
  238. "//common:raw_string_ostream",
  239. "//testing/base:capture_std_streams",
  240. "//testing/base:file_helpers",
  241. "//testing/base:global_exe_path",
  242. "//testing/base:gtest_main",
  243. "//toolchain/base:install_paths",
  244. "//toolchain/diagnostics:emitter",
  245. "//toolchain/lex:tokenized_buffer_test_helpers",
  246. "//toolchain/testing:yaml_test_helpers",
  247. "@googletest//:gtest",
  248. "@llvm-project//llvm:Object",
  249. "@llvm-project//llvm:Support",
  250. ],
  251. )
  252. cc_fuzz_test(
  253. name = "driver_fuzzer",
  254. size = "small",
  255. srcs = ["driver_fuzzer.cpp"],
  256. corpus = glob(["fuzzer_corpus/*"]),
  257. deps = [
  258. ":driver",
  259. "//common:exe_path",
  260. "//common:raw_string_ostream",
  261. "//testing/fuzzing:libfuzzer_header",
  262. "//toolchain/base:install_paths",
  263. "@llvm-project//llvm:Support",
  264. ],
  265. )
  266. cc_library(
  267. name = "lld_runner",
  268. srcs = ["lld_runner.cpp"],
  269. hdrs = ["lld_runner.h"],
  270. deps = [
  271. ":tool_runner_base",
  272. "//common:ostream",
  273. "//common:string_helpers",
  274. "//common:vlog",
  275. "//toolchain/base:install_paths",
  276. "@llvm-project//lld:Common",
  277. "@llvm-project//lld:ELF",
  278. "@llvm-project//lld:MachO",
  279. "@llvm-project//llvm:Support",
  280. ],
  281. )
  282. cc_test(
  283. name = "lld_runner_test",
  284. size = "small",
  285. srcs = ["lld_runner_test.cpp"],
  286. deps = [
  287. ":clang_runner",
  288. ":lld_runner",
  289. "//common:all_llvm_targets",
  290. "//common:check",
  291. "//common:ostream",
  292. "//common:raw_string_ostream",
  293. "//testing/base:capture_std_streams",
  294. "//testing/base:file_helpers",
  295. "//testing/base:global_exe_path",
  296. "//testing/base:gtest_main",
  297. "@googletest//:gtest",
  298. "@llvm-project//llvm:Object",
  299. "@llvm-project//llvm:Support",
  300. "@llvm-project//llvm:TargetParser",
  301. ],
  302. )
  303. cc_library(
  304. name = "llvm_runner",
  305. srcs = ["llvm_runner.cpp"],
  306. hdrs = ["llvm_runner.h"],
  307. deps = [
  308. ":tool_runner_base",
  309. "//common:ostream",
  310. "//common:string_helpers",
  311. "//common:vlog",
  312. "//toolchain/base:install_paths",
  313. "//toolchain/base:llvm_tools",
  314. "@llvm-project//lld:Common",
  315. "@llvm-project//lld:ELF",
  316. "@llvm-project//lld:MachO",
  317. "@llvm-project//llvm:Support",
  318. ],
  319. )
  320. cc_test(
  321. name = "llvm_runner_test",
  322. size = "small",
  323. srcs = ["llvm_runner_test.cpp"],
  324. deps = [
  325. ":llvm_runner",
  326. "//common:all_llvm_targets",
  327. "//common:ostream",
  328. "//common:raw_string_ostream",
  329. "//testing/base:capture_std_streams",
  330. "//testing/base:global_exe_path",
  331. "//testing/base:gtest_main",
  332. "@googletest//:gtest",
  333. "@llvm-project//llvm:Support",
  334. ],
  335. )
  336. cc_library(
  337. name = "runtimes_cache",
  338. srcs = ["runtimes_cache.cpp"],
  339. hdrs = ["runtimes_cache.h"],
  340. deps = [
  341. "//common:check",
  342. "//common:error",
  343. "//common:filesystem",
  344. "//common:ostream",
  345. "//common:version",
  346. "//common:vlog",
  347. "//toolchain/base:install_paths",
  348. "@llvm-project//llvm:Support",
  349. ],
  350. )
  351. cc_test(
  352. name = "runtimes_cache_test",
  353. size = "small",
  354. srcs = ["runtimes_cache_test.cpp"],
  355. data = ["//toolchain/install:install_data"],
  356. deps = [
  357. ":runtimes_cache",
  358. "//common:check",
  359. "//common:error_test_helpers",
  360. "//common:filesystem",
  361. "//common:ostream",
  362. "//common:raw_string_ostream",
  363. "//common:version",
  364. "//testing/base:capture_std_streams",
  365. "//testing/base:file_helpers",
  366. "//testing/base:global_exe_path",
  367. "//testing/base:gtest_main",
  368. "@googletest//:gtest",
  369. "@llvm-project//llvm:Support",
  370. ],
  371. )
  372. cc_library(
  373. name = "tool_runner_base",
  374. srcs = ["tool_runner_base.cpp"],
  375. hdrs = ["tool_runner_base.h"],
  376. data = [
  377. "//toolchain/install:all_data_files",
  378. ],
  379. deps = [
  380. "//common:ostream",
  381. "//common:vlog",
  382. "//toolchain/base:install_paths",
  383. "@llvm-project//llvm:Support",
  384. ],
  385. )