BUILD 7.4 KB

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