workspace(name = "atox") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # Android SDK/NDK setup # ========================================================= android_sdk_repository(name = "androidsdk") android_ndk_repository( name = "androidndk", api_level = 19, ) # Bazel # ========================================================= PLATFORMS_TAG = "0.0.10" # https://github.com/bazelbuild/platforms http_archive( name = "platforms", integrity = "sha256-IY7+juc20mo1cmY7N0olPAErcW2K8MB+hC6C8jigp+4=", url = "https://github.com/bazelbuild/platforms/releases/download/%s/platforms-%s.tar.gz" % (PLATFORMS_TAG, PLATFORMS_TAG), ) RULES_PKG_TAG = "1.0.1" # https://github.com/bazelbuild/rules_pkg http_archive( name = "rules_pkg", integrity = "sha256-0gyVGWDtd8t7NBwqWUiFNOSU1a0dMMSBjHNtV3cqn+8=", url = "https://github.com/bazelbuild/rules_pkg/releases/download/%s/rules_pkg-%s.tar.gz" % (RULES_PKG_TAG, RULES_PKG_TAG), ) # >=8.6.0 requires a newer version of com_google_protobuf which breaks rules_scala. RULES_JAVA_TAG = "7.12.3" # https://github.com/bazelbuild/rules_java http_archive( name = "rules_java", integrity = "sha256-wO5g+HV/FAwVf8LHr3A9gZUU3m4CXr9wOG04vdhfzoM=", url = "https://github.com/bazelbuild/rules_java/releases/download/%s/rules_java-%s.tar.gz" % (RULES_JAVA_TAG, RULES_JAVA_TAG), ) # >=7.0.0 requires a newer version of com_google_protobuf which breaks rules_scala. RULES_PROTO_TAG = "6.0.2" # https://github.com/bazelbuild/rules_proto http_archive( name = "rules_proto", integrity = "sha256-b7Z2fRvvU1MQVH4DJH91GLA0h3QMEbbGrbeVIDP+EpU=", strip_prefix = "rules_proto-%s" % RULES_PROTO_TAG, url = "https://github.com/bazelbuild/rules_proto/archive/%s.tar.gz" % RULES_PROTO_TAG, ) RULES_PYTHON_TAG = "0.40.0" # https://github.com/bazelbuild/rules_python http_archive( name = "rules_python", sha256 = "690e0141724abb568267e003c7b6d9a54925df40c275a870a4d934161dc9dd53", strip_prefix = "rules_python-%s" % RULES_PYTHON_TAG, url = "https://github.com/bazelbuild/rules_python/releases/download/%s/rules_python-%s.tar.gz" % (RULES_PYTHON_TAG, RULES_PYTHON_TAG), ) RULES_ANDROID_TAG = "0.1.1" # https://github.com/bazelbuild/rules_android http_archive( name = "rules_android", sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", strip_prefix = "rules_android-%s" % RULES_ANDROID_TAG, url = "https://github.com/bazelbuild/rules_android/archive/v%s.zip" % RULES_ANDROID_TAG, ) STARDOC_TAG = "0.7.2" # https://github.com/bazelbuild/stardoc http_archive( name = "io_bazel_stardoc", integrity = "sha256-Dh7UqY8m5xh3a9ZNBT0CuzTZhXLM0D1ro1URKhIFcGs=", url = "https://github.com/bazelbuild/stardoc/releases/download/%s/stardoc-%s.tar.gz" % (STARDOC_TAG, STARDOC_TAG), ) BAZEL_SKYLIB_TAG = "1.7.1" # https://github.com/bazelbuild/bazel-skylib http_archive( name = "bazel_skylib", integrity = "sha256-vCg8381SalLDIBJ5zaS8KYZS76iYsQtNsIN9xRZSdW8=", url = "https://github.com/bazelbuild/bazel-skylib/releases/download/%s/bazel-skylib-%s.tar.gz" % (BAZEL_SKYLIB_TAG, BAZEL_SKYLIB_TAG), ) RULES_KOTLIN_TAG = "v2.1.0" # https://github.com/bazelbuild/rules_kotlin http_archive( name = "io_bazel_rules_kotlin", integrity = "sha256-3TLxnnPHDzLMuaFmxhXAykrtjifnLEpjMMNSPq+hqlU=", url = "https://github.com/bazelbuild/rules_kotlin/releases/download/%s/rules_kotlin-%s.tar.gz" % (RULES_KOTLIN_TAG, RULES_KOTLIN_TAG), ) RULES_SCALA_TAG = "6.6.0" # https://github.com/bazelbuild/rules_scala http_archive( name = "io_bazel_rules_scala", sha256 = "e734eef95cf26c0171566bdc24d83bd82bdaf8ca7873bec6ce9b0d524bdaf05d", strip_prefix = "rules_scala-%s" % RULES_SCALA_TAG, url = "https://github.com/bazelbuild/rules_scala/releases/download/v%s/rules_scala-v%s.tar.gz" % (RULES_SCALA_TAG, RULES_SCALA_TAG), ) RULES_FUZZING_TAG = "0.5.2" # https://github.com/bazelbuild/rules_fuzzing http_archive( name = "rules_fuzzing", integrity = "sha256-5rwhm/rJ4fg7Mn3QkPcoqflz7pm5tdjloYSicy7whiM=", strip_prefix = "rules_fuzzing-%s" % RULES_FUZZING_TAG, urls = ["https://github.com/bazelbuild/rules_fuzzing/releases/download/v%s/rules_fuzzing-%s.zip" % (RULES_FUZZING_TAG, RULES_FUZZING_TAG)], ) # Bazel contrib # ========================================================= RULES_JVM_EXTERNAL_TAG = "5.3" # https://github.com/bazel-contrib/rules_jvm_external http_archive( name = "rules_jvm_external", integrity = "sha256-0x42m4VDIspQmOoSxp1xdd7ZcUNeVcGN2d1fKcxSSaw=", strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, url = "https://github.com/bazel-contrib/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG), ) # https://github.com/bazel-contrib/bazel_features http_archive( name = "bazel_features", integrity = "sha256-ixybdVhJgAD1reu8WEt78VtrK/GBRIpm9rL8W0yEIxw=", strip_prefix = "bazel_features-1.23.0", url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.23.0/bazel_features-v1.23.0.tar.gz", ) # Third-party # ========================================================= # Using protobuf 28.3 causes ProtoScalaPBRule to hang. Looking at issues in # rules_scala, it seems like 25.5 is the newest version of protobuf that # rules_scala can handle. # See: https://github.com/bazelbuild/rules_scala/issues/1647 PROTOBUF_TAG = "25.5" # https://github.com/protocolbuffers/protobuf http_archive( name = "com_google_protobuf", integrity = "sha256-PPfVsXxP8E/p8DgQTp0Mrm2gm4ziccE+RPisafUeTg8=", strip_prefix = "protobuf-%s" % PROTOBUF_TAG, url = "https://github.com/protocolbuffers/protobuf/releases/download/v%s/protobuf-%s.tar.gz" % (PROTOBUF_TAG, PROTOBUF_TAG), ) DAGGER_TAG = "2.54" # https://github.com/google/dagger http_archive( name = "dagger", integrity = "sha256-9/0XTvm7D+eyO1DFAPeOGbZM52IWn6epfHFxZY2Cg0w=", strip_prefix = "dagger-dagger-%s" % DAGGER_TAG, url = "https://github.com/google/dagger/archive/dagger-%s.zip" % DAGGER_TAG, ) ROBOLECTRIC_TAG = "4.7.3" # https://github.com/robolectric/robolectric-bazel http_archive( name = "robolectric", sha256 = "97f169d39f19412bdd07fd6c274dcda0a7c8f623f7f00aa5a3b94994fc6f0ec4", strip_prefix = "robolectric-bazel-%s" % ROBOLECTRIC_TAG, url = "https://github.com/robolectric/robolectric-bazel/archive/%s.tar.gz" % ROBOLECTRIC_TAG, ) LIBSODIUM_TAG = "1.0.18" # https://github.com/jedisct1/libsodium http_archive( name = "libsodium", build_file = "//bazel:libsodium.BUILD", sha256 = "1b72c0cdbc535ce42e14ac15e8fc7c089a3ee9ffe5183399fd77f0f3746ea794", strip_prefix = "libsodium-%s" % LIBSODIUM_TAG, url = "https://github.com/jedisct1/libsodium/archive/%s.zip" % LIBSODIUM_TAG, ) OPUS_TAG = "5c94ec3205c30171ffd01056f5b4622b7c0ab54c" # https://github.com/xiph/opus http_archive( name = "opus", build_file = "//bazel:opus.BUILD", sha256 = "09366bf588b02b76bda3fd1428a30b55ca995d6d2eac509a39919f337690329e", strip_prefix = "opus-%s" % OPUS_TAG, url = "https://github.com/xiph/opus/archive/%s.zip" % OPUS_TAG, ) LIBVPX_TAG = "3d28ff98039134325cf689d8d08996fc8dabb225" # https://github.com/webmproject/libvpx http_archive( name = "libvpx", build_file = "//bazel:libvpx.BUILD", sha256 = "27d082899b60dea79c596affc68341522db1f72c241f6d6096fc46bcf774f217", strip_prefix = "libvpx-%s" % LIBVPX_TAG, url = "https://github.com/webmproject/libvpx/archive/%s.zip" % LIBVPX_TAG, ) # aTox maven dependencies # ========================================================= load("@dagger//:workspace_defs.bzl", "DAGGER_ARTIFACTS", "DAGGER_REPOSITORIES") load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( artifacts = DAGGER_ARTIFACTS + [ "androidx.activity:activity:1.7.1", "androidx.annotation:annotation:1.1.0", "androidx.appcompat:appcompat:1.6.1", # TODO(robinlinden): androidx.core:core >1.5.0 causes # com.google.devtools.build.android.AndroidFrameworkAttrIdProvider$AttrLookupException: Android attribute not found: lStar "androidx.core:core-ktx:1.5.0", "androidx.core:core:1.5.0", "androidx.databinding:databinding-adapters:3.4.2", "androidx.databinding:databinding-common:3.4.2", "androidx.databinding:databinding-runtime:8.8.1", "androidx.fragment:fragment:1.8.6", "androidx.lifecycle:lifecycle-livedata-core:2.8.7", "androidx.lifecycle:lifecycle-livedata-ktx:2.8.7", "androidx.lifecycle:lifecycle-runtime-ktx:2.8.7", "androidx.lifecycle:lifecycle-runtime:2.8.7", "androidx.lifecycle:lifecycle-service:2.8.7", "androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7", "androidx.lifecycle:lifecycle-viewmodel:2.8.7", "androidx.navigation:navigation-fragment-ktx:2.8.7", "androidx.navigation:navigation-ui-ktx:2.8.7", "androidx.preference:preference:1.2.1", "androidx.room:room-compiler:2.6.1", "androidx.room:room-ktx:2.6.1", "androidx.room:room-runtime:2.6.1", "androidx.room:room-testing:2.6.1", "androidx.test.ext:junit:1.2.1", "com.google.android.material:material:1.12.0", "com.google.code.gson:gson:2.8.6", "com.google.guava:guava:33.4.0-android", "com.squareup.picasso:picasso:2.8", "com.typesafe.scala-logging:scala-logging_2.11:3.7.2", "javax.inject:javax.inject:1", "junit:junit:4.13.1", "org.jetbrains.kotlin:kotlin-test-junit:1.7.20", "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0", "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0", "org.jetbrains:annotations:13.0", "org.robolectric:robolectric:4.7.3", "org.scala-lang:scala-library:2.11.12", "org.slf4j:slf4j-api:1.7.25", ], repositories = DAGGER_REPOSITORIES + [ "https://repo1.maven.org/maven2/", "https://dl.google.com/dl/android/maven2/", ], version_conflict_policy = "pinned", ) # Tox # ========================================================= local_repository( name = "pthread", path = "bazel/pthread", ) local_repository( name = "psocket", path = "bazel/psocket", ) JVM_TOXCORE_API_TAG = "c0f37cfd77d79d5826ea566127f60fce838858c2" # https://github.com/TokTok/jvm-toxcore-api http_archive( name = "jvm-toxcore-api", build_file = "//bazel:jvm-toxcore-api.BUILD", sha256 = "ab129f7d845d87e1b6ee0a2b4bc34acede45480dd32a15f85a08e9dfca7cedf6", strip_prefix = "jvm-toxcore-api-%s" % JVM_TOXCORE_API_TAG, url = "https://github.com/TokTok/jvm-toxcore-api/archive/%s.tar.gz" % JVM_TOXCORE_API_TAG, ) JVM_TOXCORE_C_TAG = "f697eef5d0a16a025b187c3369288986e89bde2b" # https://github.com/TokTok/jvm-toxcore-c http_archive( name = "jvm-toxcore-c", build_file = "//bazel:jvm-toxcore-c.BUILD", sha256 = "93fb5cd0a1f45561e52cb585287cec98415d80b655d847278aa51c8d26f80124", strip_prefix = "jvm-toxcore-c-%s" % JVM_TOXCORE_C_TAG, url = "https://github.com/TokTok/jvm-toxcore-c/archive/%s.tar.gz" % JVM_TOXCORE_C_TAG, ) JVM_MACROS_TAG = "8e8991581bec396861678012cab302ba09ced629" # https://github.com/TokTok/jvm-macros http_archive( name = "jvm-macros", build_file = "//bazel:jvm-macros.BUILD", sha256 = "3f2e7c024347085596ad3c90d236e0e6fddf5c7c18c03a66a058c4d334f24888", strip_prefix = "jvm-macros-%s" % JVM_MACROS_TAG, url = "https://github.com/TokTok/jvm-macros/archive/%s.tar.gz" % JVM_MACROS_TAG, ) C_TOXCORE_TAG = "0.2.20" # https://github.com/TokTok/c-toxcore http_archive( name = "c-toxcore", integrity = "sha256-qciaja6nRdU+XXjnqsuZx7R5LEQApaaccSOPRdYWT0w=", patch_cmds = [ # Delete references to the "project" stuff that lives in toktok-stack. "sed -i /project/d BUILD.bazel", # Ignore the "other", "testing", and "auto_tests" bonus content. "echo other >.bazelignore", "echo testing >>.bazelignore", "echo auto_tests >>.bazelignore", # Delete references to the "no_undefined" cc_library that lives in toktok-stack. "sed -i /no_undefined/d toxencryptsave/BUILD.bazel", "sed -i /no_undefined/d toxav/BUILD.bazel", "sed -i /no_undefined/d toxcore/BUILD.bazel", "sed -i /no_undefined/d third_party/BUILD.bazel", # Replace toktok-stack selects w/ more standard versions. "sed -i 's|//tools/config:linux|@platforms//os:linux|g' toxcore/BUILD.bazel", # Replace "//c-toxcore/" w/ "@c-toxcore//" to get internal dependencies between libraries working. "sed -i 's|//c-toxcore/|@c-toxcore//|g' BUILD.bazel", "sed -i 's|//c-toxcore/|@c-toxcore//|g' toxcore/BUILD.bazel", "sed -i 's|//c-toxcore/|@c-toxcore//|g' toxav/BUILD.bazel", "sed -i 's|//c-toxcore/|@c-toxcore//|g' toxencryptsave/BUILD.bazel", # Fix some "//c-toxcore:" -> "@c-toxcore:" references. "sed -i 's|//c-toxcore:|@c-toxcore//:|g' toxcore/BUILD.bazel", "sed -i 's|//c-toxcore:|@c-toxcore//:|g' toxav/BUILD.bazel", "sed -i 's|//c-toxcore:|@c-toxcore//:|g' toxencryptsave/BUILD.bazel", "sed -i 's|//c-toxcore:|@c-toxcore//:|g' third_party/BUILD.bazel", # Flatten the gendir structure to deal with c-toxcore having its own workspace. "sed -i 's|$(GENDIR)/c-toxcore/|$(RULEDIR)/|g' BUILD.bazel", ], strip_prefix = "c-toxcore-%s" % C_TOXCORE_TAG, url = "https://github.com/TokTok/c-toxcore/releases/download/v%s/c-toxcore-%s.tar.gz" % (C_TOXCORE_TAG, C_TOXCORE_TAG), ) # Transitive dependencies and toolchain setup # ========================================================= # # These go last since we override a bunch of them. load("@bazel_features//:deps.bzl", "bazel_features_deps") bazel_features_deps() load("@rules_python//python:repositories.bzl", "py_repositories") py_repositories() load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") rules_pkg_dependencies() load("@io_bazel_rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories", "kotlinc_version") kotlin_repositories( compiler_release = kotlinc_version( release = "2.1.10", sha256 = "c6e9e2636889828e19c8811d5ab890862538c89dc2a3101956dfee3c2a8ba6b1", ), ) register_toolchains("//:kotlin_toolchain") load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") protobuf_deps() load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories") robolectric_repositories() load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config") scala_config(scala_version = "2.11.12") load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories") load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains") load("@io_bazel_rules_scala//scala_proto:scala_proto.bzl", "scala_proto_repositories") load("@io_bazel_rules_scala//scala_proto:toolchains.bzl", "scala_proto_register_enable_all_options_toolchain") scala_register_toolchains() scala_repositories() scala_proto_repositories() scala_proto_register_enable_all_options_toolchain() load("@rules_fuzzing//fuzzing:repositories.bzl", "rules_fuzzing_dependencies") rules_fuzzing_dependencies() load("@rules_fuzzing//fuzzing:init.bzl", "rules_fuzzing_init") rules_fuzzing_init()