BUILD 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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(["testdata/**/*.carbon"]),
  11. )
  12. cc_library(
  13. name = "clang_runner",
  14. srcs = ["clang_runner.cpp"],
  15. hdrs = ["clang_runner.h"],
  16. data = [
  17. "//toolchain/install:llvm_link_data",
  18. ],
  19. deps = [
  20. "//common:command_line",
  21. "//common:ostream",
  22. "//common:vlog",
  23. "//toolchain/install:install_paths",
  24. "@llvm-project//clang:basic",
  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. "//testing/base:global_exe_path",
  42. "//testing/base:gtest_main",
  43. "//testing/base:test_raw_ostream",
  44. "@googletest//:gtest",
  45. "@llvm-project//llvm:Object",
  46. "@llvm-project//llvm:Support",
  47. "@llvm-project//llvm:TargetParser",
  48. ],
  49. )
  50. cc_binary(
  51. name = "compile_benchmark",
  52. testonly = 1,
  53. srcs = ["compile_benchmark.cpp"],
  54. deps = [
  55. ":driver",
  56. "//testing/base:benchmark_main",
  57. "//testing/base:global_exe_path",
  58. "//testing/base:source_gen_lib",
  59. "//toolchain/install:install_paths_test_helpers",
  60. "@google_benchmark//:benchmark",
  61. "@llvm-project//llvm:Support",
  62. ],
  63. )
  64. sh_test(
  65. name = "compile_benchmark_test",
  66. srcs = ["compile_benchmark_test.sh"],
  67. data = [":compile_benchmark"],
  68. )
  69. cc_library(
  70. name = "driver",
  71. srcs = [
  72. "codegen_options.cpp",
  73. "codegen_options.h",
  74. "compile_subcommand.cpp",
  75. "compile_subcommand.h",
  76. "driver.cpp",
  77. "driver_env.h",
  78. "link_subcommand.cpp",
  79. "link_subcommand.h",
  80. ],
  81. hdrs = [
  82. "driver.h",
  83. "driver_subcommand.h",
  84. ],
  85. data = [
  86. "//toolchain/install:install_lib_data",
  87. ],
  88. textual_hdrs = ["flags.def"],
  89. deps = [
  90. ":clang_runner",
  91. "//common:command_line",
  92. "//common:ostream",
  93. "//common:version",
  94. "//common:vlog",
  95. "//toolchain/base:value_store",
  96. "//toolchain/check",
  97. "//toolchain/codegen",
  98. "//toolchain/diagnostics:diagnostic_emitter",
  99. "//toolchain/diagnostics:sorting_diagnostic_consumer",
  100. "//toolchain/install:install_paths",
  101. "//toolchain/lex",
  102. "//toolchain/lower",
  103. "//toolchain/parse",
  104. "//toolchain/parse:tree",
  105. "//toolchain/sem_ir:file",
  106. "//toolchain/sem_ir:formatter",
  107. "//toolchain/sem_ir:inst_namer",
  108. "//toolchain/source:source_buffer",
  109. "@llvm-project//llvm:Core",
  110. "@llvm-project//llvm:Support",
  111. "@llvm-project//llvm:TargetParser",
  112. ],
  113. )
  114. cc_test(
  115. name = "driver_test",
  116. size = "small",
  117. srcs = ["driver_test.cpp"],
  118. deps = [
  119. ":driver",
  120. "//common:all_llvm_targets",
  121. "//testing/base:global_exe_path",
  122. "//testing/base:gtest_main",
  123. "//testing/base:test_raw_ostream",
  124. "//toolchain/diagnostics:diagnostic_emitter",
  125. "//toolchain/install:install_paths",
  126. "//toolchain/lex:tokenized_buffer_test_helpers",
  127. "//toolchain/testing:yaml_test_helpers",
  128. "@googletest//:gtest",
  129. "@llvm-project//llvm:Object",
  130. "@llvm-project//llvm:Support",
  131. ],
  132. )
  133. cc_fuzz_test(
  134. name = "driver_fuzzer",
  135. size = "small",
  136. srcs = ["driver_fuzzer.cpp"],
  137. corpus = glob(["fuzzer_corpus/*"]),
  138. deps = [
  139. ":driver",
  140. "//common:exe_path",
  141. "//testing/base:test_raw_ostream",
  142. "//testing/fuzzing:libfuzzer_header",
  143. "//toolchain/install:install_paths",
  144. "@llvm-project//llvm:Support",
  145. ],
  146. )
  147. # This target doesn't include prelude libraries. To get a target that has the
  148. # prelude available, use //toolchain.
  149. cc_binary(
  150. name = "carbon",
  151. srcs = ["driver_main.cpp"],
  152. env = cc_env(),
  153. deps = [
  154. ":driver",
  155. "//common:all_llvm_targets",
  156. "//common:bazel_working_dir",
  157. "//common:exe_path",
  158. "//common:init_llvm",
  159. "//common:version_stamp",
  160. "//toolchain/install:install_paths",
  161. "@llvm-project//llvm:Support",
  162. ],
  163. )