// Copyright (C) 2023 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package { default_applicable_licenses: ["external_federated_compute_license"], } license { name: "external_federated_compute_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-Apache-2.0", ], license_text: [ "LICENSE", ], } cc_library_headers { name: "libfederatedcompute_headers", export_include_dirs: ["."], sdk_version: "current", min_sdk_version: "33", apex_available: ["com.android.ondevicepersonalization"], } java_library_static { name: "federated-compute-java-proto-lite", proto: { type: "lite", canonical_path_from_root: false, include_dirs: [ "external/protobuf/src", "external/protobuf/java", "external/tensorflow", ], }, srcs: [ "fcp/protos/ondevicepersonalization/task_assignments.proto", "fcp/protos/ondevicepersonalization/eligibility_spec.proto", "fcp/protos/federatedcompute/common.proto", "fcp/protos/plan.proto", "fcp/client/**/*.proto", ":libprotobuf-internal-protos", ], static_libs: [ "libprotobuf-java-lite", "tensorflow_core_proto_java_lite", ], sdk_version: "current", min_sdk_version: "33", apex_available: ["com.android.ondevicepersonalization"], } cc_library { name: "federated-compute-cc-proto-lite", srcs: [ "fcp/secagg/shared/secagg_messages.proto", "fcp/secagg/server/secagg_server_enums.proto", "fcp/client/**/*.proto", "fcp/protos/**/*.proto", "fcp/dictionary/*.proto", ":libprotobuf-internal-protos", ], proto: { type: "lite", export_proto_headers: true, canonical_path_from_root: false, include_dirs: [ "external/protobuf/src", "external/tensorflow", ], }, static_libs: [ "tensorflow_core_proto_cpp_lite", ], shared_libs: [ "liblog", ], stl: "libc++_static", apex_available: ["com.android.ondevicepersonalization"], sdk_version: "current", min_sdk_version: "33", } cc_library_static { name: "libfederatedcompute", srcs: [ "fcp/client/fcp_runner.cc", "fcp/client/interruptible_runner.cc", "fcp/client/simple_task_environment.cc", "fcp/client/engine/*.cc", "fcp/tensorflow/*.cc", "fcp/dictionary/dictionary.cc", "fcp/base/base_name.cc", "fcp/base/monitoring.cc", "fcp/base/platform.cc", "fcp/base/clock.cc", "fcp/base/random_token.cc", "fcp/base/scheduler.cc", ], exclude_srcs: [ "fcp/**/*test*.cc", "fcp/client/fake_*.cc", // Exclude tfmobile engine dependencies. "fcp/client/engine/tf_wrapper.cc", "fcp/client/engine/simple_plan_engine.cc", "fcp/tensorflow/tf_session.cc", ], static_libs: [ "federated-compute-cc-proto-lite", ], whole_static_libs: [ "libtflite_flex_delegate", ], export_include_dirs: ["."], header_libs: [ "flatbuffer_headers", "libeigen", "libtextclassifier_hash_headers", ], shared_libs: [ "libcrypto", ], visibility: [ "//packages/modules/OnDevicePersonalization:__subpackages__", ], cflags: [ "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", "-Wno-ignored-qualifiers", "-Wno-unused-parameter", "-Wno-missing-field-initializers", "-Wno-defaulted-function-deleted", "-Wno-deprecated-declarations", ], stl: "libc++_static", sdk_version: "current", apex_available: ["com.android.ondevicepersonalization"], min_sdk_version: "33", } filegroup { name: "fcp_native_wrapper", srcs: ["fcp/java_src/main/java/com/google/fcp/client/CallFromNativeWrapper.java"], visibility: [ "//packages/modules/OnDevicePersonalization:__subpackages__", ], } filegroup { name: "fcp_artifacts_testdata", srcs: [ "fcp/testdata/federation_client_only_plan.pb", "fcp/testdata/federation_proxy_train_examples.pb", "fcp/testdata/federation_test_checkpoint.client.ckp", "fcp/testdata/federation_test_select_checkpoints.pb", ], visibility: [ "//packages/modules/OnDevicePersonalization:__subpackages__", ], } cc_test { name: "fcp_plan_engine_test", srcs: [ "fcp/client/engine/tflite_plan_engine_test.cc", "fcp/client/engine/example_query_plan_engine_test.cc", "fcp/tensorflow/file_descriptor_filesystem_test.cc", "fcp/client/test_helpers.cc", ], test_suites: [ "general-tests", ], static_libs: [ "federated-compute-cc-proto-lite", "libabsl", "libbase_ndk", "libc++fs", // used by filesystem "libgmock", "liblog", "libprotobuf-cpp-lite-ndk", ], whole_static_libs: [ "libfederatedcompute", ], shared_libs: [ "libcurl", "libcrypto", ], header_libs: [ "libeigen", ], stl: "libc++_static", data: [ "fcp/testdata/federation_client_only_plan.pb", "fcp/testdata/federation_proxy_train_examples.pb", "fcp/testdata/federation_test_checkpoint.client.ckp", "fcp/testdata/federation_test_select_checkpoints.pb", ], cflags: [ "-Wno-unused-parameter", "-Wno-ignored-qualifiers", "-Wno-missing-field-initializers", ], }