# Part of the Carbon Language project, under the Apache License v2.0 with LLVM # Exceptions. See /LICENSE for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception """Bazel modules. If `MODULE.bazel.lock` changes locally, it means the host platform hasn't yet been added to the lock file. Running `bazel mod deps` provides a canonical update to `MODULE.bazel.lock`; create a PR with those changes in order to include the host platform. Platforms tested with GitHub actions are kept up-to-date. Other platforms may fall out of sync on dependency changes, and should be updated with a PR the same way a platform is added. """ module(name = "carbon") http_archive = use_repo_rule( "@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", ) bazel_dep(name = "bazel_skylib", version = "1.5.0") bazel_dep(name = "rules_pkg", version = "0.10.1") bazel_dep(name = "abseil-cpp", version = "20240116.1") bazel_dep(name = "re2", version = "2024-03-01") bazel_dep(name = "googletest", version = "1.14.0.bcr.1") google_benchmark_version = "1.8.3" bazel_dep(name = "google_benchmark", version = google_benchmark_version) archive_override( module_name = "google_benchmark", integrity = "sha256-a8GApX0j1NlRVRn5KwyD1hsFtbqxiJYfNqx7BrDZ6c4=", patch_strip = 1, patches = ["@//bazel/google_benchmark:0001-Use-libpfm-by-default-on-supported-platforms.patch"], strip_prefix = "benchmark-{0}".format(google_benchmark_version), urls = ["https://github.com/google/benchmark/archive/refs/tags/v{0}.tar.gz".format(google_benchmark_version)], ) # The registry only has an old version. We use that here to avoid a miss but # override it with a newer version. bazel_dep(name = "libpfm", version = "4.11.0") libpfm_version = "4.13.0" archive_override( module_name = "libpfm", integrity = "sha256-0YuXdkx1VSjBBR03bjNUXQ62DG6/hWgENoE/pbBMw9E=", patch_strip = 1, patches = ["@//bazel/libpfm:0001-Introduce-a-simple-native-Bazel-build.patch"], strip_prefix = "libpfm-{0}".format(libpfm_version), urls = ["https://sourceforge.net/projects/perfmon2/files/libpfm4/libpfm-{0}.tar.gz".format(libpfm_version)], ) bazel_dep(name = "rules_bison", version = "0.2.2") bazel_dep(name = "rules_flex", version = "0.2.1") bazel_dep(name = "rules_m4", version = "0.2.3") bazel_dep(name = "rules_cc", version = "0.0.9") bazel_dep(name = "rules_proto", version = "6.0.0-rc2") bazel_dep(name = "protobuf", version = "21.7") libprotobuf_mutator_version = "1.1" http_archive( name = "com_google_libprotobuf_mutator", build_file = "@//:third_party/libprotobuf_mutator/BUILD.txt", sha256 = "fd299fd72c5cf664259d9bd43a72cb74dc6a8b9604d107fe2d2e90885aeb7c16", strip_prefix = "libprotobuf-mutator-{0}".format(libprotobuf_mutator_version), urls = ["https://github.com/google/libprotobuf-mutator/archive/v{0}.tar.gz".format(libprotobuf_mutator_version)], ) bazel_dep(name = "bazel_clang_tidy", dev_dependency = True) git_override( module_name = "bazel_clang_tidy", # HEAD as of 2024-03-12. commit = "bff5c59c843221b05ef0e37cef089ecc9d24e7da", remote = "https://github.com/erenon/bazel_clang_tidy.git", ) bazel_cc_toolchain = use_extension( "//bazel/cc_toolchains:clang_configuration.bzl", "clang_toolchain_extension", ) use_repo(bazel_cc_toolchain, "bazel_cc_toolchain") register_toolchains("@bazel_cc_toolchain//:all") bazel_dep(name = "hedron_compile_commands", dev_dependency = True) git_override( module_name = "hedron_compile_commands", # HEAD as of 2024-03-12. commit = "204aa593e002cbd177d30f11f54cff3559110bb9", remote = "https://github.com/hedronvision/bazel-compile-commands-extractor.git", ) boost_unordered_version = "1.85.0" http_archive( name = "boost_unordered", build_file = "@//:third_party/boost_unordered/BUILD.bazel", integrity = "sha256-2dQ4IQH/xFiK1iWCkrMYLeR8zsSQqGchKOdTuf1u0zI=", strip_prefix = "boost_unordered-{0}".format(boost_unordered_version), urls = ["https://github.com/MikePopoloski/boost_unordered/archive/v{0}.tar.gz".format(boost_unordered_version)], ) # Required for llvm-project. bazel_dep(name = "platforms", version = "0.0.8") bazel_dep(name = "zlib", version = "1.3.1.bcr.1", repo_name = "llvm_zlib") bazel_dep(name = "zstd", version = "1.5.5.bcr.1", repo_name = "llvm_zstd") ############################################################################### # llvm-project ############################################################################### # We pin to specific upstream commits and try to track top-of-tree reasonably # closely rather than pinning to a specific release. # HEAD as of 2024-05-17. llvm_project_version = "a68d20e986053ec571223a9f3ead3e146a27dc82" # Load a repository for the raw llvm-project, pre-overlay. http_archive( name = "llvm-raw", build_file_content = "# empty", patch_args = ["-p1"], patches = [ "@carbon//bazel/llvm_project:0001_Patch_for_mallinfo2_when_using_Bazel_build_system.patch", "@carbon//bazel/llvm_project:0002_Added_Bazel_build_for_compiler_rt_fuzzer.patch", ], sha256 = "4c53512522cfd625a75aa7f201e6932f18ebf3fbe8ee89e05883c3d30ca935ac", strip_prefix = "llvm-project-{0}".format(llvm_project_version), urls = ["https://github.com/llvm/llvm-project/archive/{0}.tar.gz".format(llvm_project_version)], ) # Apply the overlay to produce llvm-project. llvm_project = use_extension( "//bazel/llvm_project:llvm_project.bzl", "llvm_project", ) use_repo(llvm_project, "llvm-project") ############################################################################### # Python ############################################################################### bazel_dep(name = "rules_python", version = "0.31.0") python = use_extension("@rules_python//python/extensions:python.bzl", "python") python.toolchain( python_version = "3.11", ) use_repo(python, "python_versions")