| load("@bazel_skylib//rules:build_test.bzl", "build_test") | |
| load("@rules_cc//cc:cc_library.bzl", "cc_library") | |
| load("@rules_cc//cc/toolchains:cc_toolchain.bzl", "cc_toolchain") | |
| load("@rules_java//java:java_library.bzl", "java_library") | |
| load("//rules:rules.bzl", "android_binary", "android_library") | |
| load(":test.bzl", "fake_cc_toolchain_config", "multiple_android_platforms_test") | |
| filegroup(name = "empty") | |
| fake_cc_toolchain_config( | |
| name = "fake_cc_toolchain_config", | |
| ) | |
| cc_toolchain( | |
| name = "fake_cc_toolchain", | |
| all_files = ":empty", | |
| compiler_files = ":empty", | |
| dwp_files = ":empty", | |
| linker_files = ":empty", | |
| objcopy_files = ":empty", | |
| strip_files = ":empty", | |
| supports_param_files = 0, | |
| toolchain_config = ":fake_cc_toolchain_config", | |
| toolchain_identifier = "linux_x86_64-toolchain", | |
| ) | |
| toolchain( | |
| name = "fake_arm64-v8a_toolchain", | |
| target_compatible_with = [ | |
| "@platforms//os:android", | |
| "@platforms//cpu:aarch64", | |
| ], | |
| toolchain = ":fake_cc_toolchain", | |
| toolchain_type = "@rules_cc//cc:toolchain_type", | |
| ) | |
| toolchain( | |
| name = "fake_armeabi-v7a_toolchain", | |
| target_compatible_with = [ | |
| "@platforms//os:android", | |
| "@platforms//cpu:armv7", | |
| ], | |
| toolchain = ":fake_cc_toolchain", | |
| toolchain_type = "@rules_cc//cc:toolchain_type", | |
| ) | |
| genrule( | |
| name = "native_cc", | |
| outs = ["native.cc"], | |
| cmd = "echo 'int native() {return 0;}' > $@", | |
| ) | |
| cc_library( | |
| name = "native_lib", | |
| srcs = ["native.cc"], | |
| target_compatible_with = [ | |
| # Somehow this doesn't work with MacOS. | |
| # The functionality tested by this library/descendants is | |
| # OS-agnostic and occurs at the rule level. | |
| "@platforms//os:linux", | |
| ], | |
| ) | |
| genrule( | |
| name = "Foo_java", | |
| outs = ["Foo.java"], | |
| cmd = "echo 'package com.example; public class Foo {}' > $@", | |
| ) | |
| java_library( | |
| name = "Foo_java_lib", | |
| srcs = ["Foo.java"], | |
| deps = [":native_lib"], | |
| ) | |
| android_binary( | |
| name = "basicapp", | |
| srcs = ["java/com/binary/AJavaClass.java"], | |
| custom_package = "com.binary", | |
| manifest = "AndroidManifest.xml", | |
| resource_files = ["res/layout/main.xml"], | |
| deps = [":basiclib"], | |
| ) | |
| android_library( | |
| name = "basiclib", | |
| srcs = ["java/com/foo/AJavaClass.java"], | |
| ) | |
| multiple_android_platforms_test( | |
| name = "multiple_android_platforms_test", | |
| target_under_test = ":basicapp", | |
| ) | |
| android_library( | |
| name = "basiclib_with_native_dep", | |
| srcs = [ | |
| "java/com/foo/AJavaClass.java", | |
| ], | |
| deps = [":native_lib"], | |
| ) | |
| android_binary( | |
| name = "basicapp_with_native_dep_from_java_lib", | |
| srcs = ["java/com/binary/AJavaClass.java"], | |
| custom_package = "com.binary", | |
| manifest = "AndroidManifest.xml", | |
| resource_files = ["res/layout/main.xml"], | |
| deps = [":basiclib_with_native_dep"], | |
| ) | |
| genrule( | |
| name = "so_file_from_app", | |
| srcs = [":basicapp_with_native_dep_from_java_lib.apk"], | |
| outs = ["lib_from_app.so"], | |
| cmd = "set -e; unzip -q $(SRCS); find lib -name \"*.so\" -exec cp {} $@ \\;", | |
| ) | |
| build_test( | |
| name = "so_file_from_app_test", | |
| size = "small", | |
| targets = [ | |
| ":so_file_from_app", | |
| ], | |
| ) |