BUILD 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  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:vlog",
  36. "//third_party/llvm:clang_cc1",
  37. "//toolchain/base:install_paths",
  38. "//toolchain/base:kind_switch",
  39. "//toolchain/base:runtime_sources",
  40. "@llvm-project//clang:basic",
  41. "@llvm-project//clang:clang-driver",
  42. "@llvm-project//clang:codegen",
  43. "@llvm-project//clang:driver",
  44. "@llvm-project//clang:frontend",
  45. "@llvm-project//clang:frontend_tool",
  46. "@llvm-project//clang:serialization",
  47. "@llvm-project//llvm:Core",
  48. "@llvm-project//llvm:Object",
  49. "@llvm-project//llvm:Support",
  50. "@llvm-project//llvm:TargetParser",
  51. ],
  52. )
  53. cc_test(
  54. name = "clang_runner_test",
  55. size = "small",
  56. srcs = ["clang_runner_test.cpp"],
  57. data = ["//toolchain/install:install_data"],
  58. deps = [
  59. ":clang_runner",
  60. ":llvm_runner",
  61. ":runtimes_cache",
  62. "//common:all_llvm_targets",
  63. "//common:check",
  64. "//common:ostream",
  65. "//common:raw_string_ostream",
  66. "//testing/base:capture_std_streams",
  67. "//testing/base:file_helpers",
  68. "//testing/base:global_exe_path",
  69. "//testing/base:gtest_main",
  70. "//toolchain/base:install_paths",
  71. "@googletest//:gtest",
  72. "@llvm-project//llvm:Object",
  73. "@llvm-project//llvm:Support",
  74. "@llvm-project//llvm:TargetParser",
  75. ],
  76. )
  77. cc_test(
  78. name = "clang_runtimes_test",
  79. size = "medium",
  80. srcs = ["clang_runtimes_test.cpp"],
  81. data = ["//toolchain/install:install_data"],
  82. deps = [
  83. ":clang_runner",
  84. ":llvm_runner",
  85. ":runtimes_cache",
  86. "//common:all_llvm_targets",
  87. "//common:check",
  88. "//common:ostream",
  89. "//common:raw_string_ostream",
  90. "//testing/base:capture_std_streams",
  91. "//testing/base:file_helpers",
  92. "//testing/base:global_exe_path",
  93. "//testing/base:gtest_main",
  94. "//toolchain/base:install_paths",
  95. "//toolchain/base:llvm_tools",
  96. "@googletest//:gtest",
  97. "@llvm-project//llvm:Object",
  98. "@llvm-project//llvm:Support",
  99. "@llvm-project//llvm:TargetParser",
  100. ],
  101. )
  102. cc_binary(
  103. name = "compile_benchmark",
  104. testonly = 1,
  105. srcs = ["compile_benchmark.cpp"],
  106. deps = [
  107. ":driver",
  108. "//common:all_llvm_targets",
  109. "//testing/base:benchmark_main",
  110. "//testing/base:global_exe_path",
  111. "//testing/base:source_gen_lib",
  112. "//toolchain/base:install_paths_test_helpers",
  113. "//toolchain/testing:compile_helper",
  114. "@google_benchmark//:benchmark",
  115. "@llvm-project//llvm:Support",
  116. ],
  117. )
  118. sh_test(
  119. name = "compile_benchmark_test",
  120. size = "small",
  121. srcs = [":compile_benchmark"],
  122. args = [
  123. "--benchmark_dry_run",
  124. # The `$$` is repeated for Bazel escaping of `$`.
  125. "--benchmark_filter=/256$$",
  126. ],
  127. env = cc_env(),
  128. )
  129. cc_library(
  130. name = "driver",
  131. srcs = [
  132. "build_runtimes_subcommand.cpp",
  133. "build_runtimes_subcommand.h",
  134. "clang_subcommand.cpp",
  135. "clang_subcommand.h",
  136. "codegen_options.cpp",
  137. "codegen_options.h",
  138. "compile_subcommand.cpp",
  139. "compile_subcommand.h",
  140. "driver.cpp",
  141. "driver_env.h",
  142. "driver_subcommand.cpp",
  143. "format_subcommand.cpp",
  144. "format_subcommand.h",
  145. "language_server_subcommand.cpp",
  146. "language_server_subcommand.h",
  147. "link_subcommand.cpp",
  148. "link_subcommand.h",
  149. "lld_subcommand.cpp",
  150. "lld_subcommand.h",
  151. "llvm_subcommand.cpp",
  152. "llvm_subcommand.h",
  153. ],
  154. hdrs = [
  155. "driver.h",
  156. "driver_subcommand.h",
  157. ],
  158. data = [
  159. "//toolchain/install:install_data.no_driver",
  160. ],
  161. textual_hdrs = ["flags.def"],
  162. deps = [
  163. ":clang_runner",
  164. ":lld_runner",
  165. ":llvm_runner",
  166. ":runtimes_cache",
  167. "//common:command_line",
  168. "//common:error",
  169. "//common:ostream",
  170. "//common:pretty_stack_trace_function",
  171. "//common:raw_string_ostream",
  172. "//common:version",
  173. "//common:vlog",
  174. "//toolchain/base:clang_invocation",
  175. "//toolchain/base:install_paths",
  176. "//toolchain/base:llvm_tools",
  177. "//toolchain/base:shared_value_stores",
  178. "//toolchain/base:timings",
  179. "//toolchain/check",
  180. "//toolchain/codegen",
  181. "//toolchain/diagnostics:diagnostic_emitter",
  182. "//toolchain/diagnostics:sorting_diagnostic_consumer",
  183. "//toolchain/format",
  184. "//toolchain/language_server",
  185. "//toolchain/lex",
  186. "//toolchain/lower",
  187. "//toolchain/lower:options",
  188. "//toolchain/parse",
  189. "//toolchain/parse:tree",
  190. "//toolchain/sem_ir:file",
  191. "//toolchain/sem_ir:typed_insts",
  192. "//toolchain/source:source_buffer",
  193. "@llvm-project//llvm:Core",
  194. "@llvm-project//llvm:MC",
  195. "@llvm-project//llvm:Passes",
  196. "@llvm-project//llvm:Support",
  197. "@llvm-project//llvm:TargetParser",
  198. ],
  199. )
  200. cc_test(
  201. name = "driver_test",
  202. size = "small",
  203. srcs = ["driver_test.cpp"],
  204. deps = [
  205. ":driver",
  206. "//common:all_llvm_targets",
  207. "//common:raw_string_ostream",
  208. "//testing/base:file_helpers",
  209. "//testing/base:global_exe_path",
  210. "//testing/base:gtest_main",
  211. "//toolchain/base:install_paths",
  212. "//toolchain/diagnostics:diagnostic_emitter",
  213. "//toolchain/lex:tokenized_buffer_test_helpers",
  214. "//toolchain/testing:yaml_test_helpers",
  215. "@googletest//:gtest",
  216. "@llvm-project//llvm:Object",
  217. "@llvm-project//llvm:Support",
  218. ],
  219. )
  220. cc_fuzz_test(
  221. name = "driver_fuzzer",
  222. size = "small",
  223. srcs = ["driver_fuzzer.cpp"],
  224. corpus = glob(["fuzzer_corpus/*"]),
  225. deps = [
  226. ":driver",
  227. "//common:exe_path",
  228. "//common:raw_string_ostream",
  229. "//testing/fuzzing:libfuzzer_header",
  230. "//toolchain/base:install_paths",
  231. "@llvm-project//llvm:Support",
  232. ],
  233. )
  234. cc_library(
  235. name = "lld_runner",
  236. srcs = ["lld_runner.cpp"],
  237. hdrs = ["lld_runner.h"],
  238. deps = [
  239. ":tool_runner_base",
  240. "//common:ostream",
  241. "//common:vlog",
  242. "//toolchain/base:install_paths",
  243. "@llvm-project//lld:Common",
  244. "@llvm-project//lld:ELF",
  245. "@llvm-project//lld:MachO",
  246. "@llvm-project//llvm:Support",
  247. ],
  248. )
  249. cc_test(
  250. name = "lld_runner_test",
  251. size = "small",
  252. srcs = ["lld_runner_test.cpp"],
  253. deps = [
  254. ":clang_runner",
  255. ":lld_runner",
  256. "//common:all_llvm_targets",
  257. "//common:check",
  258. "//common:ostream",
  259. "//common:raw_string_ostream",
  260. "//testing/base:capture_std_streams",
  261. "//testing/base:file_helpers",
  262. "//testing/base:global_exe_path",
  263. "//testing/base:gtest_main",
  264. "@googletest//:gtest",
  265. "@llvm-project//llvm:Object",
  266. "@llvm-project//llvm:Support",
  267. "@llvm-project//llvm:TargetParser",
  268. ],
  269. )
  270. cc_library(
  271. name = "llvm_runner",
  272. srcs = ["llvm_runner.cpp"],
  273. hdrs = ["llvm_runner.h"],
  274. deps = [
  275. ":tool_runner_base",
  276. "//common:ostream",
  277. "//common:vlog",
  278. "//toolchain/base:install_paths",
  279. "//toolchain/base:llvm_tools",
  280. "@llvm-project//lld:Common",
  281. "@llvm-project//lld:ELF",
  282. "@llvm-project//lld:MachO",
  283. "@llvm-project//llvm:Support",
  284. ],
  285. )
  286. cc_test(
  287. name = "llvm_runner_test",
  288. size = "small",
  289. srcs = ["llvm_runner_test.cpp"],
  290. deps = [
  291. ":llvm_runner",
  292. "//common:all_llvm_targets",
  293. "//common:ostream",
  294. "//common:raw_string_ostream",
  295. "//testing/base:capture_std_streams",
  296. "//testing/base:global_exe_path",
  297. "//testing/base:gtest_main",
  298. "@googletest//:gtest",
  299. "@llvm-project//llvm:Support",
  300. ],
  301. )
  302. cc_library(
  303. name = "runtimes_cache",
  304. srcs = ["runtimes_cache.cpp"],
  305. hdrs = ["runtimes_cache.h"],
  306. deps = [
  307. "//common:check",
  308. "//common:error",
  309. "//common:filesystem",
  310. "//common:ostream",
  311. "//common:version",
  312. "//common:vlog",
  313. "//toolchain/base:install_paths",
  314. "@llvm-project//llvm:Support",
  315. ],
  316. )
  317. cc_test(
  318. name = "runtimes_cache_test",
  319. size = "small",
  320. srcs = ["runtimes_cache_test.cpp"],
  321. data = ["//toolchain/install:install_data"],
  322. deps = [
  323. ":runtimes_cache",
  324. "//common:check",
  325. "//common:error_test_helpers",
  326. "//common:filesystem",
  327. "//common:ostream",
  328. "//common:raw_string_ostream",
  329. "//common:version",
  330. "//testing/base:capture_std_streams",
  331. "//testing/base:file_helpers",
  332. "//testing/base:global_exe_path",
  333. "//testing/base:gtest_main",
  334. "@googletest//:gtest",
  335. "@llvm-project//llvm:Support",
  336. ],
  337. )
  338. cc_library(
  339. name = "tool_runner_base",
  340. srcs = ["tool_runner_base.cpp"],
  341. hdrs = ["tool_runner_base.h"],
  342. data = [
  343. "//toolchain/install:install_data.no_driver",
  344. ],
  345. deps = [
  346. "//common:ostream",
  347. "//common:vlog",
  348. "//toolchain/base:install_paths",
  349. "@llvm-project//llvm:Support",
  350. ],
  351. )