xref: /aosp_15_r20/external/federated-compute/Android.bp (revision 14675a029014e728ec732f129a32e299b2da0601)
1*14675a02SAndroid Build Coastguard Worker// Copyright (C) 2023 The Android Open Source Project
2*14675a02SAndroid Build Coastguard Worker//
3*14675a02SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*14675a02SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*14675a02SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*14675a02SAndroid Build Coastguard Worker//
7*14675a02SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*14675a02SAndroid Build Coastguard Worker//
9*14675a02SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*14675a02SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*14675a02SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*14675a02SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*14675a02SAndroid Build Coastguard Worker// limitations under the License.
14*14675a02SAndroid Build Coastguard Worker
15*14675a02SAndroid Build Coastguard Workerpackage {
16*14675a02SAndroid Build Coastguard Worker    default_applicable_licenses: ["external_federated_compute_license"],
17*14675a02SAndroid Build Coastguard Worker}
18*14675a02SAndroid Build Coastguard Worker
19*14675a02SAndroid Build Coastguard Workerlicense {
20*14675a02SAndroid Build Coastguard Worker    name: "external_federated_compute_license",
21*14675a02SAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
22*14675a02SAndroid Build Coastguard Worker    license_kinds: [
23*14675a02SAndroid Build Coastguard Worker        "SPDX-license-identifier-Apache-2.0",
24*14675a02SAndroid Build Coastguard Worker    ],
25*14675a02SAndroid Build Coastguard Worker    license_text: [
26*14675a02SAndroid Build Coastguard Worker        "LICENSE",
27*14675a02SAndroid Build Coastguard Worker    ],
28*14675a02SAndroid Build Coastguard Worker}
29*14675a02SAndroid Build Coastguard Worker
30*14675a02SAndroid Build Coastguard Workercc_library_headers {
31*14675a02SAndroid Build Coastguard Worker    name: "libfederatedcompute_headers",
32*14675a02SAndroid Build Coastguard Worker    export_include_dirs: ["."],
33*14675a02SAndroid Build Coastguard Worker    sdk_version: "current",
34*14675a02SAndroid Build Coastguard Worker    min_sdk_version: "33",
35*14675a02SAndroid Build Coastguard Worker    apex_available: ["com.android.ondevicepersonalization"],
36*14675a02SAndroid Build Coastguard Worker}
37*14675a02SAndroid Build Coastguard Worker
38*14675a02SAndroid Build Coastguard Workerjava_library_static {
39*14675a02SAndroid Build Coastguard Worker    name: "federated-compute-java-proto-lite",
40*14675a02SAndroid Build Coastguard Worker    proto: {
41*14675a02SAndroid Build Coastguard Worker        type: "lite",
42*14675a02SAndroid Build Coastguard Worker        canonical_path_from_root: false,
43*14675a02SAndroid Build Coastguard Worker        include_dirs: [
44*14675a02SAndroid Build Coastguard Worker            "external/protobuf/src",
45*14675a02SAndroid Build Coastguard Worker            "external/protobuf/java",
46*14675a02SAndroid Build Coastguard Worker            "external/tensorflow",
47*14675a02SAndroid Build Coastguard Worker        ],
48*14675a02SAndroid Build Coastguard Worker    },
49*14675a02SAndroid Build Coastguard Worker    srcs: [
50*14675a02SAndroid Build Coastguard Worker        "fcp/protos/ondevicepersonalization/task_assignments.proto",
51*14675a02SAndroid Build Coastguard Worker        "fcp/protos/ondevicepersonalization/eligibility_spec.proto",
52*14675a02SAndroid Build Coastguard Worker        "fcp/protos/ondevicepersonalization/exception_reporting.proto",
53*14675a02SAndroid Build Coastguard Worker        "fcp/protos/ondevicepersonalization/common.proto",
54*14675a02SAndroid Build Coastguard Worker        "fcp/protos/federatedcompute/common.proto",
55*14675a02SAndroid Build Coastguard Worker        "fcp/protos/plan.proto",
56*14675a02SAndroid Build Coastguard Worker        "fcp/client/**/*.proto",
57*14675a02SAndroid Build Coastguard Worker        ":libprotobuf-internal-protos",
58*14675a02SAndroid Build Coastguard Worker    ],
59*14675a02SAndroid Build Coastguard Worker    static_libs: [
60*14675a02SAndroid Build Coastguard Worker        "libprotobuf-java-lite",
61*14675a02SAndroid Build Coastguard Worker        "tensorflow_core_proto_java_lite",
62*14675a02SAndroid Build Coastguard Worker    ],
63*14675a02SAndroid Build Coastguard Worker    sdk_version: "current",
64*14675a02SAndroid Build Coastguard Worker    min_sdk_version: "33",
65*14675a02SAndroid Build Coastguard Worker    apex_available: ["com.android.ondevicepersonalization"],
66*14675a02SAndroid Build Coastguard Worker}
67*14675a02SAndroid Build Coastguard Worker
68*14675a02SAndroid Build Coastguard Workercc_library {
69*14675a02SAndroid Build Coastguard Worker    name: "federated-compute-cc-proto-lite",
70*14675a02SAndroid Build Coastguard Worker    srcs: [
71*14675a02SAndroid Build Coastguard Worker        "fcp/secagg/shared/secagg_messages.proto",
72*14675a02SAndroid Build Coastguard Worker        "fcp/secagg/server/secagg_server_enums.proto",
73*14675a02SAndroid Build Coastguard Worker        "fcp/client/**/*.proto",
74*14675a02SAndroid Build Coastguard Worker        "fcp/protos/**/*.proto",
75*14675a02SAndroid Build Coastguard Worker        "fcp/dictionary/*.proto",
76*14675a02SAndroid Build Coastguard Worker        ":libprotobuf-internal-protos",
77*14675a02SAndroid Build Coastguard Worker    ],
78*14675a02SAndroid Build Coastguard Worker    proto: {
79*14675a02SAndroid Build Coastguard Worker        type: "lite",
80*14675a02SAndroid Build Coastguard Worker        export_proto_headers: true,
81*14675a02SAndroid Build Coastguard Worker        canonical_path_from_root: false,
82*14675a02SAndroid Build Coastguard Worker        include_dirs: [
83*14675a02SAndroid Build Coastguard Worker            "external/protobuf/src",
84*14675a02SAndroid Build Coastguard Worker            "external/tensorflow",
85*14675a02SAndroid Build Coastguard Worker        ],
86*14675a02SAndroid Build Coastguard Worker    },
87*14675a02SAndroid Build Coastguard Worker    static_libs: [
88*14675a02SAndroid Build Coastguard Worker        "tensorflow_core_proto_cpp_lite",
89*14675a02SAndroid Build Coastguard Worker    ],
90*14675a02SAndroid Build Coastguard Worker    shared_libs: [
91*14675a02SAndroid Build Coastguard Worker        "liblog",
92*14675a02SAndroid Build Coastguard Worker    ],
93*14675a02SAndroid Build Coastguard Worker    stl: "libc++_static",
94*14675a02SAndroid Build Coastguard Worker    apex_available: ["com.android.ondevicepersonalization"],
95*14675a02SAndroid Build Coastguard Worker    sdk_version: "current",
96*14675a02SAndroid Build Coastguard Worker    min_sdk_version: "33",
97*14675a02SAndroid Build Coastguard Worker}
98*14675a02SAndroid Build Coastguard Worker
99*14675a02SAndroid Build Coastguard Workercc_library_static {
100*14675a02SAndroid Build Coastguard Worker    name: "libfederatedcompute",
101*14675a02SAndroid Build Coastguard Worker    srcs: [
102*14675a02SAndroid Build Coastguard Worker        "fcp/client/fcp_runner.cc",
103*14675a02SAndroid Build Coastguard Worker        "fcp/client/interruptible_runner.cc",
104*14675a02SAndroid Build Coastguard Worker        "fcp/client/simple_task_environment.cc",
105*14675a02SAndroid Build Coastguard Worker        "fcp/client/engine/*.cc",
106*14675a02SAndroid Build Coastguard Worker        "fcp/tensorflow/*.cc",
107*14675a02SAndroid Build Coastguard Worker        "fcp/dictionary/dictionary.cc",
108*14675a02SAndroid Build Coastguard Worker        "fcp/base/base_name.cc",
109*14675a02SAndroid Build Coastguard Worker        "fcp/base/monitoring.cc",
110*14675a02SAndroid Build Coastguard Worker        "fcp/base/platform.cc",
111*14675a02SAndroid Build Coastguard Worker        "fcp/base/clock.cc",
112*14675a02SAndroid Build Coastguard Worker        "fcp/base/random_token.cc",
113*14675a02SAndroid Build Coastguard Worker        "fcp/base/scheduler.cc",
114*14675a02SAndroid Build Coastguard Worker    ],
115*14675a02SAndroid Build Coastguard Worker    exclude_srcs: [
116*14675a02SAndroid Build Coastguard Worker        "fcp/**/*test*.cc",
117*14675a02SAndroid Build Coastguard Worker        "fcp/client/fake_*.cc",
118*14675a02SAndroid Build Coastguard Worker        // Exclude tfmobile engine dependencies.
119*14675a02SAndroid Build Coastguard Worker        "fcp/client/engine/tf_wrapper.cc",
120*14675a02SAndroid Build Coastguard Worker        "fcp/client/engine/simple_plan_engine.cc",
121*14675a02SAndroid Build Coastguard Worker        "fcp/tensorflow/tf_session.cc",
122*14675a02SAndroid Build Coastguard Worker    ],
123*14675a02SAndroid Build Coastguard Worker    static_libs: [
124*14675a02SAndroid Build Coastguard Worker        "federated-compute-cc-proto-lite",
125*14675a02SAndroid Build Coastguard Worker    ],
126*14675a02SAndroid Build Coastguard Worker    whole_static_libs: [
127*14675a02SAndroid Build Coastguard Worker        "libtflite_flex_delegate",
128*14675a02SAndroid Build Coastguard Worker    ],
129*14675a02SAndroid Build Coastguard Worker    export_include_dirs: ["."],
130*14675a02SAndroid Build Coastguard Worker    header_libs: [
131*14675a02SAndroid Build Coastguard Worker        "flatbuffer_headers",
132*14675a02SAndroid Build Coastguard Worker        "libeigen",
133*14675a02SAndroid Build Coastguard Worker        "libtextclassifier_hash_headers",
134*14675a02SAndroid Build Coastguard Worker    ],
135*14675a02SAndroid Build Coastguard Worker    shared_libs: [
136*14675a02SAndroid Build Coastguard Worker        "libcrypto",
137*14675a02SAndroid Build Coastguard Worker    ],
138*14675a02SAndroid Build Coastguard Worker    visibility: [
139*14675a02SAndroid Build Coastguard Worker        "//packages/modules/OnDevicePersonalization:__subpackages__",
140*14675a02SAndroid Build Coastguard Worker    ],
141*14675a02SAndroid Build Coastguard Worker    cflags: [
142*14675a02SAndroid Build Coastguard Worker        "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash",
143*14675a02SAndroid Build Coastguard Worker        "-Wno-ignored-qualifiers",
144*14675a02SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
145*14675a02SAndroid Build Coastguard Worker        "-Wno-missing-field-initializers",
146*14675a02SAndroid Build Coastguard Worker        "-Wno-defaulted-function-deleted",
147*14675a02SAndroid Build Coastguard Worker        "-Wno-deprecated-declarations",
148*14675a02SAndroid Build Coastguard Worker    ],
149*14675a02SAndroid Build Coastguard Worker    stl: "libc++_static",
150*14675a02SAndroid Build Coastguard Worker    sdk_version: "current",
151*14675a02SAndroid Build Coastguard Worker    apex_available: ["com.android.ondevicepersonalization"],
152*14675a02SAndroid Build Coastguard Worker    min_sdk_version: "33",
153*14675a02SAndroid Build Coastguard Worker}
154*14675a02SAndroid Build Coastguard Worker
155*14675a02SAndroid Build Coastguard Workerfilegroup {
156*14675a02SAndroid Build Coastguard Worker    name: "fcp_native_wrapper",
157*14675a02SAndroid Build Coastguard Worker    srcs: ["fcp/java_src/main/java/com/google/fcp/client/CallFromNativeWrapper.java"],
158*14675a02SAndroid Build Coastguard Worker    visibility: [
159*14675a02SAndroid Build Coastguard Worker        "//packages/modules/OnDevicePersonalization:__subpackages__",
160*14675a02SAndroid Build Coastguard Worker    ],
161*14675a02SAndroid Build Coastguard Worker}
162*14675a02SAndroid Build Coastguard Worker
163*14675a02SAndroid Build Coastguard Workerfilegroup {
164*14675a02SAndroid Build Coastguard Worker    name: "fcp_artifacts_testdata",
165*14675a02SAndroid Build Coastguard Worker    srcs: [
166*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_client_only_plan.pb",
167*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_proxy_train_examples.pb",
168*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_test_checkpoint.client.ckp",
169*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_test_select_checkpoints.pb",
170*14675a02SAndroid Build Coastguard Worker    ],
171*14675a02SAndroid Build Coastguard Worker    visibility: [
172*14675a02SAndroid Build Coastguard Worker        "//packages/modules/OnDevicePersonalization:__subpackages__",
173*14675a02SAndroid Build Coastguard Worker    ],
174*14675a02SAndroid Build Coastguard Worker}
175*14675a02SAndroid Build Coastguard Worker
176*14675a02SAndroid Build Coastguard Workercc_test {
177*14675a02SAndroid Build Coastguard Worker    name: "fcp_plan_engine_test",
178*14675a02SAndroid Build Coastguard Worker    srcs: [
179*14675a02SAndroid Build Coastguard Worker        "fcp/client/engine/tflite_plan_engine_test.cc",
180*14675a02SAndroid Build Coastguard Worker        "fcp/client/engine/example_query_plan_engine_test.cc",
181*14675a02SAndroid Build Coastguard Worker        "fcp/tensorflow/file_descriptor_filesystem_test.cc",
182*14675a02SAndroid Build Coastguard Worker        "fcp/client/test_helpers.cc",
183*14675a02SAndroid Build Coastguard Worker    ],
184*14675a02SAndroid Build Coastguard Worker    test_suites: [
185*14675a02SAndroid Build Coastguard Worker        "general-tests",
186*14675a02SAndroid Build Coastguard Worker    ],
187*14675a02SAndroid Build Coastguard Worker    static_libs: [
188*14675a02SAndroid Build Coastguard Worker        "federated-compute-cc-proto-lite",
189*14675a02SAndroid Build Coastguard Worker        "libabsl",
190*14675a02SAndroid Build Coastguard Worker        "libbase_ndk",
191*14675a02SAndroid Build Coastguard Worker        "libc++fs", // used by filesystem
192*14675a02SAndroid Build Coastguard Worker        "libgmock",
193*14675a02SAndroid Build Coastguard Worker        "liblog",
194*14675a02SAndroid Build Coastguard Worker        "libprotobuf-cpp-lite-ndk",
195*14675a02SAndroid Build Coastguard Worker    ],
196*14675a02SAndroid Build Coastguard Worker    whole_static_libs: [
197*14675a02SAndroid Build Coastguard Worker        "libfederatedcompute",
198*14675a02SAndroid Build Coastguard Worker    ],
199*14675a02SAndroid Build Coastguard Worker    shared_libs: [
200*14675a02SAndroid Build Coastguard Worker        "libcurl",
201*14675a02SAndroid Build Coastguard Worker        "libcrypto",
202*14675a02SAndroid Build Coastguard Worker    ],
203*14675a02SAndroid Build Coastguard Worker    header_libs: [
204*14675a02SAndroid Build Coastguard Worker        "libeigen",
205*14675a02SAndroid Build Coastguard Worker    ],
206*14675a02SAndroid Build Coastguard Worker    stl: "libc++_static",
207*14675a02SAndroid Build Coastguard Worker    data: [
208*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_client_only_plan.pb",
209*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_proxy_train_examples.pb",
210*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_test_checkpoint.client.ckp",
211*14675a02SAndroid Build Coastguard Worker        "fcp/testdata/federation_test_select_checkpoints.pb",
212*14675a02SAndroid Build Coastguard Worker    ],
213*14675a02SAndroid Build Coastguard Worker    cflags: [
214*14675a02SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
215*14675a02SAndroid Build Coastguard Worker        "-Wno-ignored-qualifiers",
216*14675a02SAndroid Build Coastguard Worker        "-Wno-missing-field-initializers",
217*14675a02SAndroid Build Coastguard Worker    ],
218*14675a02SAndroid Build Coastguard Worker}
219