# buildifier: disable=load-on-top workspace(name = "litert") # buildifier: disable=load-on-top load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 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", urls = [ "https://github.com/bazelbuild/rules_platform/releases/download/0.1.0/rules_platform-0.1.0.tar.gz", ], ) # Download coremltools of the same version of tensorflow, but with a custom patchcmd until # tensorflow is updated to do the same patchcmd. http_archive( name = "coremltools", build_file = "@//third_party/coremltools:coremltools.BUILD", patch_cmds = [ # Append "mlmodel/format/" to the import path of all proto files. "sed -i -e 's|import public \"|import public \"mlmodel/format/|g' mlmodel/format/*.proto", ], sha256 = "37d4d141718c70102f763363a8b018191882a179f4ce5291168d066a84d01c9d", strip_prefix = "coremltools-8.0", url = "https://github.com/apple/coremltools/archive/8.0.tar.gz", ) # Load the custom repository rule to select either a local TensorFlow source or a remote http_archive. load("//litert:tensorflow_source_rules.bzl", "tensorflow_source_repo") tensorflow_source_repo( name = "org_tensorflow", sha256 = "09377e9c6e719fd26a5b41fad3c2a909d24757fd523bb30d8895411cb5ac876b", strip_prefix = "tensorflow-8bb1b4215c096c0800f99b19567856948b0ab332", urls = ["https://github.com/tensorflow/tensorflow/archive/8bb1b4215c096c0800f99b19567856948b0ab332.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() # Initialize hermetic Python load("@local_xla//third_party/py:python_init_rules.bzl", "python_init_rules") python_init_rules() load("@local_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.9": "@org_tensorflow//:requirements_lock_3_9.txt", "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", }, ) load("@local_xla//third_party/py:python_init_toolchains.bzl", "python_init_toolchains") python_init_toolchains() load("@local_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 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( "@local_xla//third_party/py:python_wheel.bzl", "python_wheel_version_suffix_repository", ) python_wheel_version_suffix_repository(name = "tf_wheel_version_suffix") # Toolchains for ML projects hermetic builds. # Details: https://github.com/google-ml-infra/rules_ml_toolchain http_archive( name = "rules_ml_toolchain", sha256 = "9dbee8f24cc1b430bf9c2a6661ab70cbca89979322ddc7742305a05ff637ab6b", strip_prefix = "rules_ml_toolchain-545c80f1026d526ea9c7aaa410bf0b52c9a82e74", urls = [ "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() register_toolchains("@rules_ml_toolchain//cc:linux_x86_64_linux_x86_64") load( "@rules_ml_toolchain//third_party/gpus/cuda/hermetic: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//third_party/gpus/cuda/hermetic: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//third_party/gpus/cuda/hermetic:cuda_configure.bzl", "cuda_configure", ) cuda_configure(name = "local_config_cuda") load( "@rules_ml_toolchain//third_party/nccl/hermetic:nccl_redist_init_repository.bzl", "nccl_redist_init_repository", ) nccl_redist_init_repository() load( "@rules_ml_toolchain//third_party/nccl/hermetic:nccl_configure.bzl", "nccl_configure", ) nccl_configure(name = "local_config_nccl") load("//third_party/tqdm:workspace.bzl", tqdm = "repo") tqdm() load("//third_party/dawn:workspace.bzl", dawn = "repo") dawn() load("//third_party/lark:workspace.bzl", lark = "repo") lark() load("//third_party/xdsl:workspace.bzl", xdsl = "repo") xdsl() load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( name = "litert_maven", artifacts = [ "androidx.lifecycle:lifecycle-common:2.8.7", "com.google.android.play:ai-delivery:0.1.1-alpha01", "com.google.guava:guava:33.4.6-android", "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.1", "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.10.1", "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.1", ], repositories = [ "https://jcenter.bintray.com", "https://maven.google.com", "https://dl.google.com/dl/android/maven2", "https://repo1.maven.org/maven2", ], version_conflict_policy = "pinned", ) # 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", ) # Sentencepiece 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", ) # Darts Clone http_archive( name = "darts_clone", build_file = "@//:BUILD.darts_clone", sha256 = "4a562824ec2fbb0ef7bd0058d9f73300173d20757b33bb69baa7e50349f65820", strip_prefix = "darts-clone-e40ce4627526985a7767444b6ed6893ab6ff8983", url = "https://github.com/s-yata/darts-clone/archive/e40ce4627526985a7767444b6ed6893ab6ff8983.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 load("//third_party/stblib:workspace.bzl", stblib = "repo") stblib() # TEST DATA ######################################################################################## load("//third_party/models:workspace.bzl", "models") models() # VENDOR SDKS ###################################################################################### # QUALCOMM --------------------------------------------------------------------------------------- # The actual macro call will be set during configure for now. load("//third_party/qairt:workspace.bzl", "qairt") qairt() # MEDIATEK --------------------------------------------------------------------------------------- # Currently only works with local sdk load("//third_party/neuro_pilot:workspace.bzl", "neuro_pilot") neuro_pilot() # GOOGLE TENSOR ---------------------------------------------------------------------------------- load("//third_party/google_tensor:workspace.bzl", "google_tensor") google_tensor() # LiteRT GPU ---------------------------------------------------------------------------------- load("//third_party/litert_gpu:workspace.bzl", "litert_gpu") litert_gpu() # INTEL OPENVINO --------------------------------------------------------------------------------- load("//third_party/intel_openvino:openvino.bzl", "openvino_configure") openvino_configure()