BUILD 9.0 KB

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