BUILD 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. deps = [
  17. "//common:command_line",
  18. "//common:ostream",
  19. "//common:vlog",
  20. "@llvm-project//clang:basic",
  21. "@llvm-project//clang:driver",
  22. "@llvm-project//clang:frontend",
  23. "@llvm-project//llvm:Core",
  24. "@llvm-project//llvm:Support",
  25. "@llvm-project//llvm:TargetParser",
  26. ],
  27. )
  28. cc_test(
  29. name = "clang_runner_test",
  30. size = "small",
  31. srcs = ["clang_runner_test.cpp"],
  32. deps = [
  33. ":clang_runner",
  34. "//common:all_llvm_targets",
  35. "//common:check",
  36. "//common:ostream",
  37. "//testing/base:gtest_main",
  38. "//testing/base:test_raw_ostream",
  39. "@googletest//:gtest",
  40. "@llvm-project//llvm:Object",
  41. "@llvm-project//llvm:Support",
  42. "@llvm-project//llvm:TargetParser",
  43. ],
  44. )
  45. cc_library(
  46. name = "driver",
  47. srcs = ["driver.cpp"],
  48. hdrs = ["driver.h"],
  49. data = ["//core:prelude"],
  50. textual_hdrs = ["flags.def"],
  51. deps = [
  52. ":clang_runner",
  53. "//common:command_line",
  54. "//common:vlog",
  55. "//toolchain/base:value_store",
  56. "//toolchain/check",
  57. "//toolchain/codegen",
  58. "//toolchain/diagnostics:diagnostic_emitter",
  59. "//toolchain/diagnostics:sorting_diagnostic_consumer",
  60. "//toolchain/lex",
  61. "//toolchain/lower",
  62. "//toolchain/parse",
  63. "//toolchain/sem_ir:file",
  64. "//toolchain/sem_ir:formatter",
  65. "//toolchain/sem_ir:inst_namer",
  66. "//toolchain/source:source_buffer",
  67. "@llvm-project//llvm:Core",
  68. "@llvm-project//llvm:Support",
  69. "@llvm-project//llvm:TargetParser",
  70. ],
  71. )
  72. cc_test(
  73. name = "driver_test",
  74. size = "small",
  75. srcs = ["driver_test.cpp"],
  76. deps = [
  77. ":driver",
  78. "//common:all_llvm_targets",
  79. "//testing/base:gtest_main",
  80. "//testing/base:test_raw_ostream",
  81. "//toolchain/diagnostics:diagnostic_emitter",
  82. "//toolchain/lex:tokenized_buffer_test_helpers",
  83. "//toolchain/testing:yaml_test_helpers",
  84. "@googletest//:gtest",
  85. "@llvm-project//llvm:Object",
  86. "@llvm-project//llvm:Support",
  87. ],
  88. )
  89. cc_fuzz_test(
  90. name = "driver_fuzzer",
  91. size = "small",
  92. srcs = ["driver_fuzzer.cpp"],
  93. corpus = glob(["fuzzer_corpus/*"]),
  94. deps = [
  95. ":driver",
  96. "//testing/base:test_raw_ostream",
  97. "@llvm-project//llvm:Support",
  98. ],
  99. )
  100. cc_binary(
  101. name = "carbon",
  102. srcs = ["driver_main.cpp"],
  103. env = cc_env(),
  104. deps = [
  105. ":driver",
  106. "//common:all_llvm_targets",
  107. "//common:bazel_working_dir",
  108. "//common:init_llvm",
  109. "@llvm-project//llvm:Support",
  110. ],
  111. )