mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
This takes the installation layout and replicates it using `rules_pkg` to build either a tarball or a zip file of the toolchain. Correctly manages file permissions and symlinks, etc. There are some big remaining things here: - Figure out how we want to test this. We can add shell tests maybe? A bit awkward. Nicer would be to make the `//examples` tree build using this rather than the more native-bazel install data, however building these is quite slow and it seems bad to pay that cost constantly so dedicated testing is probably better. For now, I've tested these manually. - Need to add versions to the toolchain and then thread them through here so they install properly as a versioned release. But my primary goal for now is just to be able to validate that the install tree is working outside of Bazel and this does enough for that. The above will be longer-term things.
144 lines
5.4 KiB
Python
144 lines
5.4 KiB
Python
# 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",
|
|
)
|
|
|
|
# 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")
|