LiteRT-LM / WORKSPACE
SeaWolf-AI's picture
Upload full LiteRT-LM codebase
5f923cd verified
# buildifier: disable=load-on-top
workspace(name = "litert_lm")
# UPDATED = 2026-04-01
LITERT_REF = "5c42d07c5e457ea535d1a2144a376c95e79a06d5"
LITERT_SHA256 = "9e7f8f3e9152007a71766332147f6d2deecb3f9178749bc9ed9d76e69178a1c4"
TENSORFLOW_REF = "e6f36bd7a12f87aac6f21a5068719dfc91bed3eb"
TENSORFLOW_SHA256 = "643b8e3f23283fb0e6cacc4612e77b285a1d3cfd295aa10b3386fd8fcf6d651f"
# buildifier: disable=load-on-top
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_jar")
http_archive(
name = "rules_shell",
sha256 = "bc61ef94facc78e20a645726f64756e5e285a045037c7a61f65af2941f4c25e1",
strip_prefix = "rules_shell-0.4.1",
url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.1/rules_shell-v0.4.1.tar.gz",
)
load("@rules_shell//shell:repositories.bzl", "rules_shell_dependencies", "rules_shell_toolchains")
rules_shell_dependencies()
rules_shell_toolchains()
http_archive(
name = "rules_platform",
sha256 = "0aadd1bd350091aa1f9b6f2fbcac8cd98201476289454e475b28801ecf85d3fd",
url = "https://github.com/bazelbuild/rules_platform/releases/download/0.1.0/rules_platform-0.1.0.tar.gz",
)
# Use recent platoforms version to support uefi platform.
http_archive(
name = "platforms",
sha256 = "3384eb1c30762704fbe38e440204e114154086c8fc8a8c2e3e28441028c019a8",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/1.0.0/platforms-1.0.0.tar.gz",
"https://github.com/bazelbuild/platforms/releases/download/1.0.0/platforms-1.0.0.tar.gz",
],
)
# Use 3.22.0 (from 3.5.1 of tensorflow) to fix binary signing issue on MacOS Tahoe.
http_archive(
name = "build_bazel_rules_apple",
sha256 = "a78f26c22ac8d6e3f3fcaad50eace4d9c767688bd7254b75bdf4a6735b299f6a",
url = "https://github.com/bazelbuild/rules_apple/releases/download/3.22.0/rules_apple.3.22.0.tar.gz",
)
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
http_archive(
name = "build_bazel_rules_swift",
sha256 = "f7a67197cd8a79debfe70b8cef4dc19d03039af02cc561e31e0718e98cad83ac",
url = "https://github.com/bazelbuild/rules_swift/releases/download/2.9.0/rules_swift.2.9.0.tar.gz",
)
# Lower the version from 1.24.5 that tensorflow uses to 1.23.1, the highest version which don't have
# issues with missing LC_UUID, DEVELOPER_DIR or SDKROOT on MacOS Tahoe.
http_archive(
name = "build_bazel_apple_support",
sha256 = "ee20cc5c0bab47065473c8033d462374dd38d172406ecc8de5c8f08487943f2f",
url = "https://github.com/bazelbuild/apple_support/releases/download/1.23.1/apple_support.1.23.1.tar.gz",
)
http_archive(
name = "bazel_features",
sha256 = "c26b4e69cf02fea24511a108d158188b9d8174426311aac59ce803a78d107648",
strip_prefix = "bazel_features-1.43.0",
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.43.0/bazel_features-v1.43.0.tar.gz",
)
# TensorFlow
http_archive(
name = "org_tensorflow",
patches = ["@//:PATCH.tensorflow"],
sha256 = TENSORFLOW_SHA256,
strip_prefix = "tensorflow-" + TENSORFLOW_REF,
url = "https://github.com/tensorflow/tensorflow/archive/" + TENSORFLOW_REF + ".tar.gz",
)
# Initialize the TensorFlow repository and all dependencies.
#
# The cascade of load() statements and tf_workspace?() calls works around the
# restriction that load() statements need to be at the top of .bzl files.
# E.g. we can not retrieve a new repository with http_archive and then load()
# a macro from that repository in the same file.
load("@org_tensorflow//tensorflow:workspace3.bzl", "tf_workspace3")
tf_workspace3()
# Toolchains for ML projects
# Details: https://github.com/google-ml-infra/rules_ml_toolchain
http_archive(
name = "rules_ml_toolchain",
sha256 = "9dbee8f24cc1b430bf9c2a6661ab70cbca89979322ddc7742305a05ff637ab6b",
strip_prefix = "rules_ml_toolchain-545c80f1026d526ea9c7aaa410bf0b52c9a82e74",
url = "https://github.com/google-ml-infra/rules_ml_toolchain/archive/545c80f1026d526ea9c7aaa410bf0b52c9a82e74.tar.gz",
)
load(
"@rules_ml_toolchain//cc/deps:cc_toolchain_deps.bzl",
"cc_toolchain_deps",
)
cc_toolchain_deps()
# Initialize hermetic Python
load("@xla//third_party/py:python_init_rules.bzl", "python_init_rules")
python_init_rules()
load("@xla//third_party/py:python_init_repositories.bzl", "python_init_repositories")
python_init_repositories(
default_python_version = "system",
local_wheel_dist_folder = "dist",
local_wheel_inclusion_list = [
"tensorflow*",
"tf_nightly*",
],
local_wheel_workspaces = ["@org_tensorflow//:WORKSPACE"],
requirements = {
"3.10": "@org_tensorflow//:requirements_lock_3_10.txt",
"3.11": "@org_tensorflow//:requirements_lock_3_11.txt",
"3.12": "@org_tensorflow//:requirements_lock_3_12.txt",
"3.13": "@org_tensorflow//:requirements_lock_3_13.txt",
"3.14": "@org_tensorflow//:requirements_lock_3_14.txt",
},
)
load("@xla//third_party/py:python_init_toolchains.bzl", "python_init_toolchains")
python_init_toolchains()
load("@xla//third_party/py:python_init_pip.bzl", "python_init_pip")
python_init_pip()
load("@pypi//:requirements.bzl", "install_deps")
install_deps()
# End hermetic Python initialization
RULES_JVM_EXTERNAL_TAG = "6.8"
RULES_JVM_EXTERNAL_SHA = "704a0197e4e966f96993260418f2542568198490456c21814f647ae7091f56f2"
http_archive(
name = "rules_jvm_external",
sha256 = RULES_JVM_EXTERNAL_SHA,
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG),
)
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
name = "maven",
artifacts = [
"com.google.code.gson:gson:2.13.2",
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0",
"org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0",
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
load("@org_tensorflow//tensorflow:workspace2.bzl", "tf_workspace2")
tf_workspace2()
load("@org_tensorflow//tensorflow:workspace1.bzl", "tf_workspace1")
tf_workspace1()
load("@org_tensorflow//tensorflow:workspace0.bzl", "tf_workspace0")
tf_workspace0()
load(
"@xla//third_party/py:python_wheel.bzl",
"python_wheel_version_suffix_repository",
)
python_wheel_version_suffix_repository(name = "tf_wheel_version_suffix")
load(
"@rules_ml_toolchain//gpu/cuda:cuda_json_init_repository.bzl",
"cuda_json_init_repository",
)
cuda_json_init_repository()
load(
"@cuda_redist_json//:distributions.bzl",
"CUDA_REDISTRIBUTIONS",
"CUDNN_REDISTRIBUTIONS",
)
load(
"@rules_ml_toolchain//gpu/cuda:cuda_redist_init_repositories.bzl",
"cuda_redist_init_repositories",
"cudnn_redist_init_repository",
)
cuda_redist_init_repositories(
cuda_redistributions = CUDA_REDISTRIBUTIONS,
)
cudnn_redist_init_repository(
cudnn_redistributions = CUDNN_REDISTRIBUTIONS,
)
load(
"@rules_ml_toolchain//gpu/cuda:cuda_configure.bzl",
"cuda_configure",
)
cuda_configure(name = "local_config_cuda")
load(
"@rules_ml_toolchain//gpu/nccl:nccl_redist_init_repository.bzl",
"nccl_redist_init_repository",
)
nccl_redist_init_repository()
load(
"@rules_ml_toolchain//gpu/nccl:nccl_configure.bzl",
"nccl_configure",
)
nccl_configure(name = "local_config_nccl")
# Kotlin rules
http_archive(
name = "rules_kotlin",
sha256 = "e1448a56b2462407b2688dea86df5c375b36a0991bd478c2ddd94c97168125e2",
url = "https://github.com/bazelbuild/rules_kotlin/releases/download/v2.1.3/rules_kotlin-v2.1.3.tar.gz",
)
load("@rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories")
kotlin_repositories() # if you want the default. Otherwise see custom kotlinc distribution below
load("@rules_kotlin//kotlin:core.bzl", "kt_register_toolchains")
kt_register_toolchains() # to use the default toolchain, otherwise see toolchains below
# Rust (for HuggingFace Tokenizers)
http_archive(
name = "rules_rust",
patches = ["@//:PATCH.rules_rust"],
sha256 = "53c1bac7ec48f7ce48c4c1c6aa006f27515add2aeb05725937224e6e00ec7cea",
url = "https://github.com/bazelbuild/rules_rust/releases/download/0.61.0/rules_rust-0.61.0.tar.gz",
)
load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
rules_rust_dependencies()
rust_register_toolchains(
edition = "2021",
extra_target_triples = [
# Explicitly add toolchains for mobile. Desktop platforms are supported by default.
"aarch64-linux-android",
"aarch64-apple-ios",
"aarch64-apple-ios-sim",
"x86_64-linux-android",
],
)
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
crate_universe_dependencies()
load("@rules_rust//crate_universe:defs.bzl", "crate", "crates_repository")
load("@rules_rust//rust/platform:triple_mappings.bzl", "SUPPORTED_PLATFORM_TRIPLES")
crates_repository(
name = "crate_index",
annotations = {
"llguidance": [
crate.annotation(
additive_build_file = "@//:BUILD.llguidance",
gen_build_script = False,
patches = [
"@//:PATCH.llguidance_regexvec",
"@//:PATCH.llguidance_numeric",
"@//:PATCH.llguidance_grammar",
"@//:PATCH.llguidance_parser",
"@//:PATCH.llguidance_perf",
],
),
],
"toktrie": [
crate.annotation(
patches = ["@//:PATCH.toktrie"],
),
],
},
cargo_lockfile = "//:Cargo.lock",
lockfile = "//:cargo-bazel-lock.json",
manifests = [
"//:Cargo.toml",
],
supported_platform_triples = SUPPORTED_PLATFORM_TRIPLES + [
"x86_64-linux-android",
],
)
load("@crate_index//:defs.bzl", "crate_repositories")
crate_repositories()
# cxxbridge-cmd is a binary-only package so we follow the steps in
# https://bazelbuild.github.io/rules_rust/crate_universe_workspace.html#binary-dependencies.
http_archive(
name = "cxxbridge_cmd",
build_file = "//cxxbridge_cmd:BUILD.cxxbridge_cmd.bazel",
integrity = "sha256-pf/3kWu94FwtuZRp8J3PryA78lsJbMv052GgR5JBLhA=",
strip_prefix = "cxxbridge-cmd-1.0.149",
type = "tar.gz",
url = "https://static.crates.io/crates/cxxbridge-cmd/cxxbridge-cmd-1.0.149.crate",
)
crates_repository(
name = "cxxbridge_cmd_deps",
cargo_lockfile = "//cxxbridge_cmd:Cargo.lock",
manifests = ["@cxxbridge_cmd//:Cargo.toml"],
)
load("@cxxbridge_cmd_deps//:defs.bzl", cxxbridge_cmd_deps = "crate_repositories")
cxxbridge_cmd_deps()
# Same one downloaded by tensorflow, but refer contrib/minizip.
http_archive(
name = "minizip",
add_prefix = "minizip",
build_file = "@//:BUILD.minizip",
sha256 = "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23",
strip_prefix = "zlib-1.3.1/contrib/minizip",
url = "https://zlib.net/fossils/zlib-1.3.1.tar.gz",
)
http_archive(
name = "sentencepiece",
build_file = "@//:BUILD.sentencepiece",
patch_cmds = [
# Empty config.h seems enough.
"touch config.h",
# Replace third_party/absl/ with absl/ in *.h and *.cc files.
"sed -i -e 's|#include \"third_party/absl/|#include \"absl/|g' *.h *.cc",
# Replace third_party/darts_clone/ with include/ in *.h and *.cc files.
"sed -i -e 's|#include \"third_party/darts_clone/|#include \"include/|g' *.h *.cc",
],
patches = ["@//:PATCH.sentencepiece"],
sha256 = "9970f0a0afee1648890293321665e5b2efa04eaec9f1671fcf8048f456f5bb86",
strip_prefix = "sentencepiece-0.2.0/src",
url = "https://github.com/google/sentencepiece/archive/refs/tags/v0.2.0.tar.gz",
)
http_archive(
name = "litert",
patch_cmds = [
# Replace @//third_party with @litert//third_party in files under third_party/.
"sed -i -e 's|\"@//third_party/|\"@litert//third_party/|g' third_party/*/*",
],
sha256 = LITERT_SHA256,
strip_prefix = "LiteRT-" + LITERT_REF,
url = "https://github.com/google-ai-edge/LiteRT/archive/" + LITERT_REF + ".tar.gz",
)
http_archive(
name = "tokenizers_cpp",
build_file = "@//:BUILD.tokenizers_cpp",
sha256 = "3e0b9ec325a326b0a2cef5cf164ee94a74ac372c5881ae5af634036db0441823",
strip_prefix = "tokenizers-cpp-0.1.1",
url = "https://github.com/mlc-ai/tokenizers-cpp/archive/refs/tags/v0.1.1.tar.gz",
)
http_archive(
name = "absl_py",
sha256 = "8a3d0830e4eb4f66c4fa907c06edf6ce1c719ced811a12e26d9d3162f8471758",
strip_prefix = "abseil-py-2.1.0",
url = "https://github.com/abseil/abseil-py/archive/refs/tags/v2.1.0.tar.gz",
)
http_archive(
name = "nlohmann_json",
sha256 = "34660b5e9a407195d55e8da705ed26cc6d175ce5a6b1fb957e701fb4d5b04022",
strip_prefix = "json-3.12.0",
url = "https://github.com/nlohmann/json/archive/refs/tags/v3.12.0.zip",
)
http_archive(
name = "minja",
build_file = "@//:BUILD.minja",
patches = ["@//:PATCH.minja"],
sha256 = "752f47dd2a2f4920a66f497c952785073c1983f12f084b99e5c12bf89f96acfe",
strip_prefix = "minja-58568621432715b0ed38efd16238b0e7ff36c3ba",
url = "https://github.com/google/minja/archive/58568621432715b0ed38efd16238b0e7ff36c3ba.zip",
)
http_archive(
name = "miniaudio",
build_file = "@//:BUILD.miniaudio",
sha256 = "bcb07bfb27e6fa94d34da73ba2d5642d4940b208ec2a660dbf4e52e6b7cd492f",
strip_prefix = "miniaudio-0.11.22",
url = "https://github.com/mackron/miniaudio/archive/refs/tags/0.11.22.tar.gz",
)
http_archive(
name = "stb",
build_file = "@//:BUILD.stb",
sha256 = "119b9f3cca3e50225dc946ed1acd1b7a160943bc8bf549760109cea4e4e7c836",
strip_prefix = "stb-f58f558c120e9b32c217290b80bad1a0729fbb2c",
url = "https://github.com/nothings/stb/archive/f58f558c120e9b32c217290b80bad1a0729fbb2c.zip",
)
http_jar(
name = "javax_json",
sha256 = "0e1dec40a1ede965941251eda968aeee052cc4f50378bc316cc48e8159bdbeb4",
url = "https://jcenter.bintray.com/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jar",
)
# Android rules. Need latest rules_android_ndk to use NDK 26+.
load("@rules_android_ndk//:rules.bzl", "android_ndk_repository")
android_ndk_repository(name = "androidndk")
android_sdk_repository(name = "androidsdk")
# Configure Android NDK only when ANDROID_NDK_HOME is set.
# Creates current_android_ndk_env.bzl as a workaround since shell environment is available only
# through repository rule's context.
load("//:android_ndk_env.bzl", "check_android_ndk_env")
check_android_ndk_env(name = "android_ndk_env")
load("@android_ndk_env//:current_android_ndk_env.bzl", "ANDROID_NDK_HOME_IS_SET")
# Use "@android_ndk_env//:all" as a dummy toolchain target as register_toolchains() does not take
# an empty string.
register_toolchains("@androidndk//:all" if ANDROID_NDK_HOME_IS_SET else "@android_ndk_env//:all")
# VENDOR SDKS ######################################################################################
# QUALCOMM ---------------------------------------------------------------------------------------
# The actual macro call will be set during configure for now.
load("@litert//third_party/qairt:workspace.bzl", "qairt")
qairt()
# MEDIATEK ---------------------------------------------------------------------------------------
# Currently only works with local sdk
load("@litert//third_party/neuro_pilot:workspace.bzl", "neuro_pilot")
neuro_pilot()
# GOOGLE TENSOR ----------------------------------------------------------------------------------
load("@litert//third_party/google_tensor:workspace.bzl", "google_tensor")
google_tensor()
http_archive(
name = "nanobind_json",
build_file = "@//:BUILD.nanobind_json",
patches = ["@//:PATCH.nanobind_json"],
sha256 = "72cb4cdbf8108c7dd2dc669347669f2cc1acf4f943588f96661701f27f778912",
strip_prefix = "nanobind_json-e1953530697f61cbca9dc9b4f51561ea785cb09d",
urls = ["https://github.com/ianhbell/nanobind_json/archive/e1953530697f61cbca9dc9b4f51561ea785cb09d.zip"],
)
load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "custom_pip_deps",
requirements_lock = "//:requirements.txt",
)
load("@custom_pip_deps//:requirements.bzl", install_custom_deps = "install_deps")
install_custom_deps()