BUILD 7.4 KB

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