MODULE.bazel 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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. """Bazel modules.
  5. If `MODULE.bazel.lock` changes locally, it means the host platform hasn't yet
  6. been added to the lock file. Running `bazel mod deps` provides a canonical
  7. update to `MODULE.bazel.lock`; create a PR with those changes in order to
  8. include the host platform.
  9. Platforms tested with GitHub actions are kept up-to-date. Other platforms may
  10. fall out of sync on dependency changes, and should be updated with a PR the same
  11. way a platform is added.
  12. """
  13. module(name = "carbon")
  14. http_archive = use_repo_rule(
  15. "@bazel_tools//tools/build_defs/repo:http.bzl",
  16. "http_archive",
  17. )
  18. bazel_dep(name = "bazel_skylib", version = "1.5.0")
  19. bazel_dep(
  20. name = "abseil-cpp",
  21. version = "20230802.0",
  22. repo_name = "com_google_absl",
  23. )
  24. bazel_dep(
  25. name = "re2",
  26. version = "2023-11-01",
  27. repo_name = "com_googlesource_code_re2",
  28. )
  29. bazel_dep(
  30. name = "googletest",
  31. version = "1.14.0.bcr.1",
  32. repo_name = "com_google_googletest",
  33. )
  34. google_benchmark_version = "1.8.3"
  35. bazel_dep(
  36. name = "google_benchmark",
  37. version = google_benchmark_version,
  38. repo_name = "com_github_google_benchmark",
  39. )
  40. archive_override(
  41. module_name = "google_benchmark",
  42. integrity = "sha256-a8GApX0j1NlRVRn5KwyD1hsFtbqxiJYfNqx7BrDZ6c4=",
  43. patch_strip = 1,
  44. patches = ["@//bazel/google_benchmark:0001-Use-libpfm-by-default-on-supported-platforms.patch"],
  45. strip_prefix = "benchmark-{0}".format(google_benchmark_version),
  46. urls = ["https://github.com/google/benchmark/archive/refs/tags/v{0}.tar.gz".format(google_benchmark_version)],
  47. )
  48. bazel_dep(
  49. name = "libpfm",
  50. # The registry only has an old version. We use that here to avoid a miss but
  51. # override it with a newer version.
  52. version = "4.11.0",
  53. )
  54. libpfm_version = "4.13.0"
  55. archive_override(
  56. module_name = "libpfm",
  57. integrity = "sha256-0YuXdkx1VSjBBR03bjNUXQ62DG6/hWgENoE/pbBMw9E=",
  58. patch_strip = 1,
  59. patches = ["@//bazel/libpfm:0001-Introduce-a-simple-native-Bazel-build.patch"],
  60. strip_prefix = "libpfm-{0}".format(libpfm_version),
  61. urls = ["https://sourceforge.net/projects/perfmon2/files/libpfm4/libpfm-{0}.tar.gz".format(libpfm_version)],
  62. )
  63. bazel_dep(name = "rules_bison", version = "0.2.2")
  64. bazel_dep(name = "rules_flex", version = "0.2.1")
  65. bazel_dep(name = "rules_m4", version = "0.2.3")
  66. bazel_dep(name = "rules_cc", version = "0.0.9")
  67. bazel_dep(name = "rules_proto", version = "6.0.0-rc1")
  68. bazel_dep(
  69. name = "protobuf",
  70. version = "21.7",
  71. repo_name = "com_google_protobuf",
  72. )
  73. libprotobuf_mutator_version = "1.1"
  74. http_archive(
  75. name = "com_google_libprotobuf_mutator",
  76. build_file = "@//:third_party/libprotobuf_mutator/BUILD.txt",
  77. sha256 = "fd299fd72c5cf664259d9bd43a72cb74dc6a8b9604d107fe2d2e90885aeb7c16",
  78. strip_prefix = "libprotobuf-mutator-{0}".format(libprotobuf_mutator_version),
  79. urls = ["https://github.com/google/libprotobuf-mutator/archive/v{0}.tar.gz".format(libprotobuf_mutator_version)],
  80. )
  81. clang_tidy_version = "d2aecc583d14c9554febeab185833c1e8cce5384"
  82. http_archive(
  83. name = "bazel_clang_tidy",
  84. patch_args = ["-p1"],
  85. patches = ["@carbon//bazel/bazel_clang_tidy:0001_Add_hdrs.patch"],
  86. sha256 = "89c198a9f544beac119bb41904d16d8870686ccb5fe946442c1576934c9e6869",
  87. strip_prefix = "bazel_clang_tidy-{0}".format(clang_tidy_version),
  88. urls = ["https://github.com/erenon/bazel_clang_tidy/archive/{0}.tar.gz".format(clang_tidy_version)],
  89. )
  90. bazel_cc_toolchain = use_extension(
  91. "//bazel/cc_toolchains:clang_configuration.bzl",
  92. "clang_toolchain_extension",
  93. )
  94. use_repo(bazel_cc_toolchain, "bazel_cc_toolchain")
  95. register_toolchains("@bazel_cc_toolchain//:all")
  96. bazel_dep(name = "hedron_compile_commands", dev_dependency = True)
  97. git_override(
  98. module_name = "hedron_compile_commands",
  99. # HEAD as of 2023-12-19.
  100. commit = "af167878427c469db96444b65f026d064ec62a4f",
  101. remote = "https://github.com/hedronvision/bazel-compile-commands-extractor.git",
  102. )
  103. # Required for llvm-project.
  104. bazel_dep(name = "platforms", version = "0.0.8")
  105. bazel_dep(name = "zlib", version = "1.3", repo_name = "llvm_zlib")
  106. bazel_dep(name = "zstd", version = "1.5.5", repo_name = "llvm_zstd")
  107. ###############################################################################
  108. # llvm-project
  109. ###############################################################################
  110. # We pin to specific upstream commits and try to track top-of-tree reasonably
  111. # closely rather than pinning to a specific release.
  112. # HEAD as of 2024-01-03.
  113. llvm_project_version = "82e33d6203f62c0be16f8da8d4178e7fa9e790ea"
  114. # Load a repository for the raw llvm-project, pre-overlay.
  115. http_archive(
  116. name = "llvm-raw",
  117. build_file_content = "# empty",
  118. patch_args = ["-p1"],
  119. patches = [
  120. "@carbon//bazel/llvm_project:0001_Patch_for_mallinfo2_when_using_Bazel_build_system.patch",
  121. "@carbon//bazel/llvm_project:0002_Added_Bazel_build_for_compiler_rt_fuzzer.patch",
  122. "@carbon//bazel/llvm_project:0003_Add_library_for_clangd.patch",
  123. ],
  124. sha256 = "402a6dc72452f24ff27ae8157c6d55ea74124de83c57855bbff89b85787fad1c",
  125. strip_prefix = "llvm-project-{0}".format(llvm_project_version),
  126. urls = ["https://github.com/llvm/llvm-project/archive/{0}.tar.gz".format(llvm_project_version)],
  127. )
  128. # Apply the overlay to produce llvm-project.
  129. llvm_project = use_extension(
  130. "//bazel/llvm_project:llvm_project.bzl",
  131. "llvm_project",
  132. )
  133. use_repo(llvm_project, "llvm-project")
  134. ###############################################################################
  135. # Python
  136. ###############################################################################
  137. bazel_dep(name = "rules_python", version = "0.27.1")
  138. python = use_extension("@rules_python//python/extensions:python.bzl", "python")
  139. python.toolchain(
  140. python_version = "3.11",
  141. )
  142. use_repo(python, "python_versions")
  143. # Create a central repo that knows about the pip dependencies.
  144. pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
  145. pip.parse(
  146. hub_name = "py_deps",
  147. python_version = "3.11",
  148. requirements_lock = "//github_tools:requirements.txt",
  149. )
  150. use_repo(pip, "py_deps")