BUILD 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
  5. load("//bazel/cc_toolchains:defs.bzl", "cc_env")
  6. load("//testing/fuzzing:rules.bzl", "cc_fuzz_test")
  7. package(default_visibility = ["//visibility:public"])
  8. filegroup(
  9. name = "testdata",
  10. data = 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. data = [
  20. "//toolchain/install:install_data.no_driver",
  21. ],
  22. deps = [
  23. "//common:command_line",
  24. "//common:ostream",
  25. "//common:vlog",
  26. "//toolchain/install:install_paths",
  27. "@llvm-project//clang:basic",
  28. "@llvm-project//clang:clang-driver",
  29. "@llvm-project//clang:driver",
  30. "@llvm-project//clang:frontend",
  31. "@llvm-project//llvm:Core",
  32. "@llvm-project//llvm:Support",
  33. "@llvm-project//llvm:TargetParser",
  34. ],
  35. )
  36. cc_test(
  37. name = "clang_runner_test",
  38. size = "small",
  39. srcs = ["clang_runner_test.cpp"],
  40. deps = [
  41. ":clang_runner",
  42. "//common:all_llvm_targets",
  43. "//common:check",
  44. "//common:ostream",
  45. "//testing/base:global_exe_path",
  46. "//testing/base:gtest_main",
  47. "//testing/base:test_raw_ostream",
  48. "@googletest//:gtest",
  49. "@llvm-project//llvm:Object",
  50. "@llvm-project//llvm:Support",
  51. "@llvm-project//llvm:TargetParser",
  52. ],
  53. )
  54. cc_binary(
  55. name = "compile_benchmark",
  56. testonly = 1,
  57. srcs = ["compile_benchmark.cpp"],
  58. deps = [
  59. ":driver",
  60. "//testing/base:benchmark_main",
  61. "//testing/base:global_exe_path",
  62. "//testing/base:source_gen_lib",
  63. "//toolchain/install:install_paths_test_helpers",
  64. "@google_benchmark//:benchmark",
  65. "@llvm-project//llvm:Support",
  66. ],
  67. )
  68. sh_test(
  69. name = "compile_benchmark_test",
  70. srcs = ["compile_benchmark_test.sh"],
  71. data = [":compile_benchmark"],
  72. )
  73. cc_library(
  74. name = "driver",
  75. srcs = [
  76. "clang_subcommand.cpp",
  77. "clang_subcommand.h",
  78. "codegen_options.cpp",
  79. "codegen_options.h",
  80. "compile_subcommand.cpp",
  81. "compile_subcommand.h",
  82. "driver.cpp",
  83. "driver_env.h",
  84. "format_subcommand.cpp",
  85. "format_subcommand.h",
  86. "link_subcommand.cpp",
  87. "link_subcommand.h",
  88. ],
  89. hdrs = [
  90. "driver.h",
  91. "driver_subcommand.h",
  92. ],
  93. data = [
  94. "//toolchain/install:install_data.no_driver",
  95. ],
  96. textual_hdrs = ["flags.def"],
  97. deps = [
  98. ":clang_runner",
  99. "//common:command_line",
  100. "//common:ostream",
  101. "//common:version",
  102. "//common:vlog",
  103. "//toolchain/base:pretty_stack_trace_function",
  104. "//toolchain/base:value_store",
  105. "//toolchain/check",
  106. "//toolchain/codegen",
  107. "//toolchain/diagnostics:diagnostic_emitter",
  108. "//toolchain/diagnostics:sorting_diagnostic_consumer",
  109. "//toolchain/format",
  110. "//toolchain/install:install_paths",
  111. "//toolchain/lex",
  112. "//toolchain/lower",
  113. "//toolchain/parse",
  114. "//toolchain/parse:tree",
  115. "//toolchain/sem_ir:file",
  116. "//toolchain/sem_ir:formatter",
  117. "//toolchain/sem_ir:inst_namer",
  118. "//toolchain/source:source_buffer",
  119. "@llvm-project//llvm:Core",
  120. "@llvm-project//llvm:Support",
  121. "@llvm-project//llvm:TargetParser",
  122. ],
  123. )
  124. cc_test(
  125. name = "driver_test",
  126. size = "small",
  127. srcs = ["driver_test.cpp"],
  128. deps = [
  129. ":driver",
  130. "//common:all_llvm_targets",
  131. "//testing/base:global_exe_path",
  132. "//testing/base:gtest_main",
  133. "//testing/base:test_raw_ostream",
  134. "//toolchain/diagnostics:diagnostic_emitter",
  135. "//toolchain/install:install_paths",
  136. "//toolchain/lex:tokenized_buffer_test_helpers",
  137. "//toolchain/testing:yaml_test_helpers",
  138. "@googletest//:gtest",
  139. "@llvm-project//llvm:Object",
  140. "@llvm-project//llvm:Support",
  141. ],
  142. )
  143. cc_fuzz_test(
  144. name = "driver_fuzzer",
  145. size = "small",
  146. srcs = ["driver_fuzzer.cpp"],
  147. corpus = glob(["fuzzer_corpus/*"]),
  148. deps = [
  149. ":driver",
  150. "//common:exe_path",
  151. "//testing/base:test_raw_ostream",
  152. "//testing/fuzzing:libfuzzer_header",
  153. "//toolchain/install:install_paths",
  154. "@llvm-project//llvm:Support",
  155. ],
  156. )
  157. # This target doesn't include prelude libraries. To get a target that has the
  158. # prelude available, use //toolchain.
  159. cc_binary(
  160. name = "carbon",
  161. srcs = ["driver_main.cpp"],
  162. env = cc_env(),
  163. deps = [
  164. ":driver",
  165. "//common:all_llvm_targets",
  166. "//common:bazel_working_dir",
  167. "//common:exe_path",
  168. "//common:init_llvm",
  169. "//common:version_stamp",
  170. "//toolchain/install:install_paths",
  171. "@llvm-project//llvm:Support",
  172. ],
  173. )