MODULE.bazel 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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. `MODULE.bazel.lock` may change locally when `bazel` is executed. This means one
  6. of:
  7. 1. `MODULE.bazel` is changing.
  8. - Running `bazel mod deps` provides a canonical update to
  9. `MODULE.bazel.lock`; include the changes.
  10. - GitHub test actions may also identify platform-specific lockfile
  11. updates.
  12. 2. The `bazel` version doesn't match the version used to generate the
  13. `MODULE.bazel.lock`.
  14. - Bazel releases can change the lock file contents.
  15. - We use Bazelisk in order to keep everyone using the same version:
  16. https://bazel.build/install/bazelisk
  17. - Developers are encouraged to alias `bazel` to `bazelisk` for
  18. ease-of-use; some setups, like Homebrew, will include that with a
  19. `bazelisk` install.
  20. - Contribution tools documentation includes `bazelisk` setup:
  21. https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/contribution_tools.md
  22. - Make sure `bazelisk --version` (or `bazel --version`) matches the
  23. version in `.bazeliskrc`.
  24. 3. The host platform hasn't yet been added to the lock file.
  25. - Platforms tested with GitHub actions are kept up-to-date. Other
  26. platforms may fall out of sync due to `bazel` or dependency changes,
  27. and should be updated with a PR the same way a platform is added.
  28. - Running `bazel mod deps` provides a canonical update to
  29. `MODULE.bazel.lock`; create a PR with those changes in order to include
  30. the host platform.
  31. """
  32. module(name = "carbon")
  33. http_archive = use_repo_rule(
  34. "@bazel_tools//tools/build_defs/repo:http.bzl",
  35. "http_archive",
  36. )
  37. bazel_dep(name = "bazel_skylib", version = "1.7.1")
  38. bazel_dep(name = "rules_pkg", version = "0.10.1")
  39. bazel_dep(name = "abseil-cpp", version = "20240116.2")
  40. bazel_dep(name = "re2", version = "2024-06-01")
  41. bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
  42. bazel_dep(name = "google_benchmark", version = "1.8.4")
  43. # The registry only has an old version. We use that here to avoid a miss but
  44. # override it with a newer version.
  45. bazel_dep(name = "libpfm", version = "4.11.0")
  46. libpfm_version = "4.13.0"
  47. # The official site is https://perfmon2.sourceforge.net/, but SourceForge makes
  48. # it difficult to download from bazel. On GitHub action runners,
  49. # https://git.code.sf.net/p/perfmon2/libpfm4 seems to be blocked. As a
  50. # consequence, use a mirror.
  51. archive_override(
  52. module_name = "libpfm",
  53. integrity = "sha256-sGBx1+UoQCplBCc+pwA1Tr/PS2L/4jnLZHH82wSuPz0=",
  54. patch_strip = 1,
  55. patches = ["@//bazel/libpfm:0001-Introduce-a-simple-native-Bazel-build.patch"],
  56. strip_prefix = "libpfm4-{0}".format(libpfm_version),
  57. urls = ["https://github.com/wcohen/libpfm4/archive/v{0}.tar.gz".format(libpfm_version)],
  58. )
  59. # The registry has a snapshot, but upstream is active and not regularly marking
  60. # releases. We start with the BCR snapshot to avoid a miss and then override it
  61. # with a more recent commit.
  62. bazel_dep(name = "tcmalloc", version = "0.0.0-20240411-5ed309d", dev_dependency = True)
  63. git_override(
  64. module_name = "tcmalloc",
  65. # HEAD as of 2024-07-14.
  66. commit = "923df94c922e0cd2d0512c1662d374f63c2c0c96",
  67. remote = "https://github.com/google/tcmalloc.git",
  68. )
  69. bazel_dep(name = "rules_bison", version = "0.2.2")
  70. bazel_dep(name = "rules_flex", version = "0.2.1")
  71. bazel_dep(name = "rules_m4", version = "0.2.3")
  72. bazel_dep(name = "rules_cc", version = "0.0.9")
  73. bazel_dep(name = "rules_proto", version = "6.0.2")
  74. bazel_dep(name = "protobuf", version = "27.1")
  75. libprotobuf_mutator_version = "1.3"
  76. http_archive(
  77. name = "com_google_libprotobuf_mutator",
  78. build_file = "@//:third_party/libprotobuf_mutator/BUILD.txt",
  79. sha256 = "1ee3473a6b0274494fce599539605bb19305c0efadc62b58d645812132c31baa",
  80. strip_prefix = "libprotobuf-mutator-{0}".format(libprotobuf_mutator_version),
  81. urls = ["https://github.com/google/libprotobuf-mutator/archive/v{0}.tar.gz".format(libprotobuf_mutator_version)],
  82. )
  83. bazel_dep(name = "bazel_clang_tidy", dev_dependency = True)
  84. git_override(
  85. module_name = "bazel_clang_tidy",
  86. # HEAD as of 2024-03-12.
  87. commit = "bff5c59c843221b05ef0e37cef089ecc9d24e7da",
  88. remote = "https://github.com/erenon/bazel_clang_tidy.git",
  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 2024-03-12.
  100. commit = "204aa593e002cbd177d30f11f54cff3559110bb9",
  101. remote = "https://github.com/hedronvision/bazel-compile-commands-extractor.git",
  102. )
  103. boost_unordered_version = "1.85.0"
  104. http_archive(
  105. name = "boost_unordered",
  106. build_file = "@//:third_party/boost_unordered/BUILD.bazel",
  107. integrity = "sha256-2dQ4IQH/xFiK1iWCkrMYLeR8zsSQqGchKOdTuf1u0zI=",
  108. strip_prefix = "boost_unordered-{0}".format(boost_unordered_version),
  109. urls = ["https://github.com/MikePopoloski/boost_unordered/archive/v{0}.tar.gz".format(boost_unordered_version)],
  110. )
  111. # Required for llvm-project.
  112. bazel_dep(name = "platforms", version = "0.0.10")
  113. bazel_dep(name = "zlib", version = "1.3.1.bcr.3", repo_name = "llvm_zlib")
  114. bazel_dep(name = "zstd", version = "1.5.6", repo_name = "llvm_zstd")
  115. ###############################################################################
  116. # llvm-project
  117. ###############################################################################
  118. # We pin to specific upstream commits and try to track top-of-tree reasonably
  119. # closely rather than pinning to a specific release.
  120. # HEAD as of 2024-10-17.
  121. llvm_project_version = "5033ea73bb01061feb09b3216c74619e1fbefdeb"
  122. # Load a repository for the raw llvm-project, pre-overlay.
  123. http_archive(
  124. name = "llvm-raw",
  125. build_file_content = "# empty",
  126. patch_args = ["-p1"],
  127. patches = [
  128. "@carbon//bazel/llvm_project:0001_Patch_for_mallinfo2_when_using_Bazel_build_system.patch",
  129. "@carbon//bazel/llvm_project:0002_Added_Bazel_build_for_compiler_rt_fuzzer.patch",
  130. ],
  131. sha256 = "9964d7643f3cb1cfabde913b747a2fa2524c469adc847fceee4dd883dbc0482a",
  132. strip_prefix = "llvm-project-{0}".format(llvm_project_version),
  133. urls = ["https://github.com/llvm/llvm-project/archive/{0}.tar.gz".format(llvm_project_version)],
  134. )
  135. # Apply the overlay to produce llvm-project.
  136. llvm_project = use_extension(
  137. "//bazel/llvm_project:llvm_project.bzl",
  138. "llvm_project",
  139. )
  140. use_repo(llvm_project, "llvm-project")
  141. ###############################################################################
  142. # Python
  143. ###############################################################################
  144. bazel_dep(name = "rules_python", version = "0.33.1")
  145. python = use_extension("@rules_python//python/extensions:python.bzl", "python")
  146. python.toolchain(
  147. python_version = "3.11",
  148. )
  149. use_repo(python, "python_versions")