| 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 = "1.0.0") | |
| bazel_dep(name = "rules_cc", version = "0.1.5") | |
| 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_go", version = "0.58.3", dev_dependency = True) | |
| bazel_dep(name = "rules_webtesting", version = "0.4.0", dev_dependency = True) | |
| bazel_dep(name = "emsdk", version = EMSDK_VERSION, 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") | |
| use_repo(go_sdk, go_sdk = "go_default_sdk") | |
| # 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_chromedp_chromedp", | |
| "com_github_flynn_json5", | |
| "com_github_golang_glog", | |
| "com_github_google_uuid", | |
| "com_github_jcgregorio_logger", | |
| "com_github_shirou_gopsutil", | |
| "com_github_stretchr_testify", | |
| "com_github_trietmn_go_wiki", | |
| "com_github_vektra_mockery_v2", | |
| "com_google_cloud_go_storage", | |
| "org_chromium_go_luci", | |
| "org_golang_google_api", | |
| "org_golang_google_protobuf", | |
| "org_golang_x_oauth2", | |
| "org_skia_go_infra", | |
| ) | |
| inject_repo( | |
| go_deps, | |
| go_sdk = "go_sdk", | |
| rules_go = "rules_go", | |
| ) | |
| 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.89.0", | |
| ], | |
| ) | |
| crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate") | |
| crate.spec( | |
| features = ["derive"], | |
| package = "bytemuck", | |
| version = "=1.23.2", | |
| ) | |
| crate.spec( | |
| # If this is updated, be sure to update BUILD.gn also | |
| package = "cxx", | |
| version = "=1.0.168", | |
| ) | |
| 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.12.6", | |
| ) | |
| crate.spec( | |
| features = [ | |
| "provider_test", | |
| "icu_casemap", | |
| "compiled_data", | |
| ], | |
| git = "https://github.com/unicode-org/icu4x.git", | |
| package = "icu_capi", | |
| rev = "bdb3caadfc4e3e750e819f8ea5f9db8b1f8d2fa7", | |
| ) | |
| crate.spec( | |
| package = "png", | |
| version = "=0.18.1", | |
| ) | |
| crate.annotation( | |
| crate = "png", | |
| patch_args = ["-p1"], | |
| patches = ["//bazel/external/image-png:captured-chunks.patch"], | |
| ) | |
| crate.spec( | |
| default_features = False, | |
| features = [ | |
| "bmp", | |
| "ico", | |
| ], | |
| # Using image crate with streaming/resumable BMP decoder API. | |
| # rows_decoded() returns RowsDecoded enum for orientation detection. | |
| git = "https://github.com/image-rs/image.git", | |
| package = "image", | |
| rev = "5d0418d0eff747c829d52738c092581312f775c9", | |
| ) | |
| crate.spec( | |
| package = "jpeg-encoder", | |
| version = "=0.6.0", | |
| ) | |
| crate.spec( | |
| # Pin a specific revision to enable rapid iteration with SkJpegRustCodec rather than | |
| # wait for a crate release. This is acceptable while SkJpegRustCodec is experimental | |
| # and is not shipping in Chromium or other Skia clients. | |
| git = "https://github.com/etemesi254/zune-image.git", | |
| package = "zune-jpeg", | |
| rev = "a1010cf1faa91980f011c32585b4f582caf10745", | |
| ) | |
| crate.spec( | |
| features = ["std"], | |
| package = "zune-core", | |
| version = "=0.5.3", | |
| ) | |
| 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.45.0", | |
| ) | |
| crate.spec( | |
| package = "regex", | |
| version = "=1.11.1", | |
| ) | |
| crate.spec( | |
| package = "skrifa", | |
| version = "=0.48.0", | |
| ) | |
| crate.spec( | |
| package = "thiserror", | |
| version = "=1.0.69", | |
| ) | |
| 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.168", | |
| ) | |
| 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, | |
| "d3d12allocator", | |
| "dawn", | |
| "delaunator", | |
| "dng_sdk", | |
| "egl_registry", | |
| "expat", | |
| "freetype", | |
| "harfbuzz", | |
| "icu", | |
| "icu4x", | |
| "imgui", | |
| "jinja2", | |
| "libavif", | |
| "libgav1", | |
| "libjpeg_turbo", | |
| "libjxl", | |
| "libpng", | |
| "libwebp", | |
| "libyuv", | |
| "markupsafe", | |
| "opengl_registry", | |
| "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") | |
| download_windows_amd64_toolchain = use_repo_rule("//toolchain:download_windows_amd64_toolchain.bzl", "download_windows_amd64_toolchain") | |
| download_windows_amd64_toolchain(name = "clang_windows_amd64") | |
| #toolchain_names = ["clang_windows_amd64", "clang_ios"], | |
| cipd_deps = use_extension("//bazel:cipd_deps.bzl", "cipd_deps") | |
| use_repo( | |
| cipd_deps, | |
| "cpython_linux_amd64", | |
| "cpython_mac_amd64", | |
| "cpython_mac_arm64", | |
| "cpython_windows_amd64", | |
| "git_linux_amd64", | |
| "gn_linux_amd64", | |
| "gn_mac_amd64", | |
| "gn_mac_arm64", | |
| ) |