BUILD 7.8 KB

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