blob: bc5436b520ff53cf042796931d537752914e6400 [file] [log] [blame]
module(
name = "skia",
)
# Bazel and Toolchain deps
EMSDK_VERSION = "4.0.7"
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "buildifier_prebuilt", version = "8.0.3")
bazel_dep(name = "gazelle", version = "0.43.0")
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "rules_cc", version = "0.1.1")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_python", version = "1.3.0")
bazel_dep(name = "rules_rust", version = "0.60.0")
bazel_dep(name = "rules_shell", version = "0.4.1")
bazel_dep(name = "rules_webtesting", version = "0.4.0", dev_dependency = True)
bazel_dep(name = "emsdk", version = EMSDK_VERSION, dev_dependency = True)
bazel_dep(name = "rules_go", version = "0.54.0", dev_dependency = True)
# C++ deps
bazel_dep(name = "skia_user_config") # local
# Configuration
git_override(
module_name = "emsdk",
remote = "https://github.com/emscripten-core/emsdk.git",
strip_prefix = "bazel",
tag = EMSDK_VERSION,
)
# use the go version specified in go.mod
# https://github.com/bazel-contrib/rules_go/blob/f0d3aa796ba9723ce89057f8f4b04f2165d38a72/docs/go/core/bzlmod.md
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk", dev_dependency = True)
go_sdk.from_file(go_mod = "//:go.mod")
# Get all the direct and indirect dependencies specified in go.mod.
# We only need to label the direct ones.
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.from_file(go_mod = "//:go.mod")
go_deps.gazelle_override(
build_file_generation = "on", # overwrite existing Bazel files (for go code)
directives = [
# This module is distributed with pre-generated .pb.go files, so we disable generation of
# go_proto_library targets. Trying to enable them anyway runs into issues because they
# copy some protos from googleapis.
"gazelle:proto disable",
],
path = "go.chromium.org/luci",
)
use_repo(
go_deps,
"com_github_flynn_json5",
"com_github_golang_glog",
"com_github_google_uuid",
"com_github_shirou_gopsutil",
"com_github_stretchr_testify",
"com_github_trietmn_go_wiki",
"com_github_vektra_mockery_v2",
"com_google_cloud_go_pubsub",
"com_google_cloud_go_storage",
"org_chromium_go_luci",
"org_golang_google_api",
"org_golang_google_protobuf",
"org_golang_x_exp",
"org_skia_go_infra",
)
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(
python_version = "3.13",
)
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "py_deps",
python_version = "3.13",
requirements_lock = "//:requirements.txt",
)
use_repo(pip, "py_deps")
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
rust.toolchain(
edition = "2021",
extra_target_triples = [
"x86_64-apple-darwin",
"aarch64-apple-darwin",
"aarch64-apple-ios",
],
versions = [
# supported versions from https://github.com/bazelbuild/rules_rust/blob/6bdae371374a3740e97370bd9379da5b3ecab389/util/fetch_shas/fetch_shas_VERSIONS.txt
# The rust rules validate a toolchain by sha256 hash, as listed in https://github.com/bazelbuild/rules_rust/blob/6bdae371374a3740e97370bd9379da5b3ecab389/rust/known_shas.bzl
"1.86.0",
],
)
crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate")
crate.spec(
features = ["derive"],
package = "bytemuck",
version = "1.16.0",
)
crate.spec(
package = "cxx",
version = "1.0.158",
)
crate.annotation(
# We want a custom build rule so we can use a different include path
additive_build_file = "//bazel/external/cxx:BUILD.bazel.skia",
crate = "cxx",
extra_aliased_targets = {
"cxx_cc": "cxx_cc",
},
gen_build_script = "off",
)
crate.spec(
package = "font-types",
version = "0.9",
)
crate.spec(
features = [
"provider_test",
"icu_casemap",
"compiled_data",
],
git = "https://chromium.googlesource.com/external/github.com/unicode-org/icu4x.git",
package = "icu_capi",
tag = "upstream/ind/icu_capi@1.4.1",
)
crate.spec(
package = "png",
version = "0.18.0-rc",
)
crate.spec(
features = [
"wgsl-in",
"msl-out",
],
package = "naga",
version = "0.20.0",
)
crate.spec(
package = "peniko",
version = "0.1.1",
)
crate.spec(
package = "read-fonts",
version = "0.29.2",
)
crate.spec(
package = "regex",
version = "1.8.1",
)
crate.spec(
package = "skrifa",
version = "0.31.3",
)
crate.spec(
package = "thiserror",
version = "1.0.60",
)
crate.from_specs(
# by default, intel macs are not included in this list, but we have CI hardware
# that still uses them, so we add them to the list.
# https://bazelbuild.github.io/rules_rust/crate_universe_bzlmod.html#crate.from_specs-supported_platform_triples
supported_platform_triples = [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"wasm32-unknown-unknown",
"wasm32-wasip1",
"x86_64-apple-darwin",
"x86_64-pc-windows-msvc",
"x86_64-unknown-linux-gnu",
],
)
use_repo(crate, "crates")
# cxxbridge-cmd is a binary only Rust crate, so we follow these instructions for it
# https://bazelbuild.github.io/rules_rust/crate_universe_bzlmod.html#binary-dependencies
cargo_bindeps = use_extension("@rules_rust//crate_universe:extension.bzl", "crate")
cargo_bindeps.spec(
artifact = "bin",
package = "cxxbridge-cmd",
version = "1.0.158",
)
cargo_bindeps.annotation(
crate = "cxxbridge-cmd",
gen_all_binaries = True,
)
cargo_bindeps.from_specs(
name = "cargo_bindeps",
host_tools_repo = "rust_host_tools_nightly",
supported_platform_triples = [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"wasm32-unknown-unknown",
"wasm32-wasip1",
"x86_64-apple-darwin",
"x86_64-pc-windows-msvc",
"x86_64-unknown-linux-gnu",
],
)
use_repo(
cargo_bindeps,
"cargo_bindeps",
)
# TODO(kjlubick): Switch to a release version once it's available in BCR.
# We should be able to clean up rules_scala also
git_override(
module_name = "rules_webtesting",
commit = "c884a863c09001776b001a76886e14f87ca8fd12",
remote = "https://github.com/bazelbuild/rules_webtesting.git",
)
bazel_dep(name = "rules_scala", dev_dependency = True, repo_name = "io_bazel_rules_scala")
git_override(
module_name = "rules_scala",
commit = "219e63983e8e483e66ebf70372969ba227382001",
remote = "https://github.com/mbland/rules_scala",
)
scala_deps = use_extension(
"@io_bazel_rules_scala//scala/extensions:deps.bzl",
"scala_deps",
dev_dependency = True,
)
scala_deps.settings(
fetch_sources = True,
)
scala_deps.toolchains(
scalatest = True,
)
# Bazel deps we make ourselves
local_path_override(
module_name = "skia_user_config",
path = "include/config",
)
cpp_modules = use_extension("//bazel:cpp_modules.bzl", "cpp_modules")
cpp_modules.from_file(deps_json = "//bazel:deps.json")
use_repo(
cpp_modules,
"dawn",
"delaunator",
"dng_sdk",
"expat",
"freetype",
"harfbuzz",
"icu",
"icu4x",
"imgui",
"libavif",
"libgav1",
"libjpeg_turbo",
"libjxl",
"libpng",
"libwebp",
"libyuv",
"perfetto",
"piex",
"spirv_cross",
"spirv_headers",
"spirv_tools",
"vello",
"vulkan_headers",
"vulkan_tools",
"vulkan_utility_libraries",
"vulkanmemoryallocator",
"wuffs",
"zlib",
)
download_linux_amd64_toolchain = use_repo_rule("//toolchain:download_linux_amd64_toolchain.bzl", "download_linux_amd64_toolchain")
download_linux_amd64_toolchain(name = "clang_linux_amd64")
download_clang_mac_toolchain = use_repo_rule("//toolchain:download_mac_toolchain.bzl", "download_mac_toolchain")
download_clang_mac_toolchain(name = "clang_mac")
download_ndk_linux_amd64_toolchain = use_extension("//toolchain:download_ndk_linux_amd64_toolchain.bzl", "download_ndk_linux_amd64_toolchain")
use_repo(download_ndk_linux_amd64_toolchain, "ndk_linux_amd64")
#toolchain_names = ["clang_windows_amd64", "clang_ios"],
cipd_deps = use_extension("//bazel:cipd_deps.bzl", "cipd_deps")
use_repo(
cipd_deps,
"git_linux_amd64",
"gn_linux_amd64",
"gn_mac_amd64",
"gn_mac_arm64",
)