| 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", |
| ) |