xref: /aosp_15_r20/system/libfmq/Android.bp (revision be431cd81a9a2349eaea34eb56fcf6d1608da596)
1*be431cd8SAndroid Build Coastguard Worker// Copyright (C) 2016 The Android Open Source Project
2*be431cd8SAndroid Build Coastguard Worker//
3*be431cd8SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*be431cd8SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*be431cd8SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*be431cd8SAndroid Build Coastguard Worker//
7*be431cd8SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*be431cd8SAndroid Build Coastguard Worker//
9*be431cd8SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*be431cd8SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*be431cd8SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*be431cd8SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*be431cd8SAndroid Build Coastguard Worker// limitations under the License.
14*be431cd8SAndroid Build Coastguard Worker
15*be431cd8SAndroid Build Coastguard Workerpackage {
16*be431cd8SAndroid Build Coastguard Worker    default_applicable_licenses: ["Android-Apache-2.0"],
17*be431cd8SAndroid Build Coastguard Worker}
18*be431cd8SAndroid Build Coastguard Worker
19*be431cd8SAndroid Build Coastguard Workercc_library {
20*be431cd8SAndroid Build Coastguard Worker    name: "libfmq",
21*be431cd8SAndroid Build Coastguard Worker    shared_libs: [
22*be431cd8SAndroid Build Coastguard Worker        "libbase",
23*be431cd8SAndroid Build Coastguard Worker        "liblog",
24*be431cd8SAndroid Build Coastguard Worker        "libcutils",
25*be431cd8SAndroid Build Coastguard Worker        "libutils",
26*be431cd8SAndroid Build Coastguard Worker    ],
27*be431cd8SAndroid Build Coastguard Worker    export_shared_lib_headers: [
28*be431cd8SAndroid Build Coastguard Worker        "libcutils",
29*be431cd8SAndroid Build Coastguard Worker        "libutils",
30*be431cd8SAndroid Build Coastguard Worker    ],
31*be431cd8SAndroid Build Coastguard Worker    apex_available: [
32*be431cd8SAndroid Build Coastguard Worker        "//apex_available:platform",
33*be431cd8SAndroid Build Coastguard Worker        "//apex_available:anyapex",
34*be431cd8SAndroid Build Coastguard Worker    ],
35*be431cd8SAndroid Build Coastguard Worker    export_include_dirs: ["include"],
36*be431cd8SAndroid Build Coastguard Worker    local_include_dirs: ["include"],
37*be431cd8SAndroid Build Coastguard Worker    header_libs: [
38*be431cd8SAndroid Build Coastguard Worker        "libfmq-base",
39*be431cd8SAndroid Build Coastguard Worker    ],
40*be431cd8SAndroid Build Coastguard Worker    export_header_lib_headers: [
41*be431cd8SAndroid Build Coastguard Worker        "libfmq-base",
42*be431cd8SAndroid Build Coastguard Worker    ],
43*be431cd8SAndroid Build Coastguard Worker    srcs: [
44*be431cd8SAndroid Build Coastguard Worker        "EventFlag.cpp",
45*be431cd8SAndroid Build Coastguard Worker        "FmqInternal.cpp",
46*be431cd8SAndroid Build Coastguard Worker    ],
47*be431cd8SAndroid Build Coastguard Worker    cflags: [
48*be431cd8SAndroid Build Coastguard Worker        "-Wall",
49*be431cd8SAndroid Build Coastguard Worker        "-Werror",
50*be431cd8SAndroid Build Coastguard Worker    ],
51*be431cd8SAndroid Build Coastguard Worker    vendor_available: true,
52*be431cd8SAndroid Build Coastguard Worker    product_available: true,
53*be431cd8SAndroid Build Coastguard Worker    // TODO(b/153609531): remove when no longer needed.
54*be431cd8SAndroid Build Coastguard Worker    native_bridge_supported: true,
55*be431cd8SAndroid Build Coastguard Worker    double_loadable: true,
56*be431cd8SAndroid Build Coastguard Worker    min_sdk_version: "29",
57*be431cd8SAndroid Build Coastguard Worker    host_supported: true,
58*be431cd8SAndroid Build Coastguard Worker}
59*be431cd8SAndroid Build Coastguard Worker
60*be431cd8SAndroid Build Coastguard Worker// Header only lib to share type between HIDL and AIDL MQDescriptor
61*be431cd8SAndroid Build Coastguard Workercc_library_headers {
62*be431cd8SAndroid Build Coastguard Worker    name: "libfmq-base",
63*be431cd8SAndroid Build Coastguard Worker    host_supported: true,
64*be431cd8SAndroid Build Coastguard Worker    vendor_available: true,
65*be431cd8SAndroid Build Coastguard Worker    product_available: true,
66*be431cd8SAndroid Build Coastguard Worker    native_bridge_supported: true,
67*be431cd8SAndroid Build Coastguard Worker    recovery_available: true,
68*be431cd8SAndroid Build Coastguard Worker    apex_available: [
69*be431cd8SAndroid Build Coastguard Worker        "//apex_available:anyapex",
70*be431cd8SAndroid Build Coastguard Worker        "//apex_available:platform",
71*be431cd8SAndroid Build Coastguard Worker    ],
72*be431cd8SAndroid Build Coastguard Worker    export_include_dirs: ["base"],
73*be431cd8SAndroid Build Coastguard Worker    min_sdk_version: "29",
74*be431cd8SAndroid Build Coastguard Worker}
75*be431cd8SAndroid Build Coastguard Worker
76*be431cd8SAndroid Build Coastguard Workercc_library {
77*be431cd8SAndroid Build Coastguard Worker    name: "libfmq_erased",
78*be431cd8SAndroid Build Coastguard Worker    shared_libs: [
79*be431cd8SAndroid Build Coastguard Worker        "libbase",
80*be431cd8SAndroid Build Coastguard Worker        "liblog",
81*be431cd8SAndroid Build Coastguard Worker        "libcutils",
82*be431cd8SAndroid Build Coastguard Worker        "libfmq",
83*be431cd8SAndroid Build Coastguard Worker        "android.hardware.common.fmq-V1-ndk",
84*be431cd8SAndroid Build Coastguard Worker    ],
85*be431cd8SAndroid Build Coastguard Worker    srcs: [
86*be431cd8SAndroid Build Coastguard Worker        "ErasedMessageQueue.cpp",
87*be431cd8SAndroid Build Coastguard Worker    ],
88*be431cd8SAndroid Build Coastguard Worker    cflags: [
89*be431cd8SAndroid Build Coastguard Worker        "-Wall",
90*be431cd8SAndroid Build Coastguard Worker        "-Werror",
91*be431cd8SAndroid Build Coastguard Worker    ],
92*be431cd8SAndroid Build Coastguard Worker    vendor_available: true,
93*be431cd8SAndroid Build Coastguard Worker    product_available: true,
94*be431cd8SAndroid Build Coastguard Worker    min_sdk_version: "29",
95*be431cd8SAndroid Build Coastguard Worker    host_supported: true,
96*be431cd8SAndroid Build Coastguard Worker}
97*be431cd8SAndroid Build Coastguard Worker
98*be431cd8SAndroid Build Coastguard Workerrust_bindgen {
99*be431cd8SAndroid Build Coastguard Worker    name: "libfmq_bindgen",
100*be431cd8SAndroid Build Coastguard Worker    wrapper_src: "ErasedMessageQueue.hpp",
101*be431cd8SAndroid Build Coastguard Worker    crate_name: "fmq_bindgen",
102*be431cd8SAndroid Build Coastguard Worker    edition: "2021",
103*be431cd8SAndroid Build Coastguard Worker    host_supported: true,
104*be431cd8SAndroid Build Coastguard Worker    vendor_available: true,
105*be431cd8SAndroid Build Coastguard Worker    product_available: true,
106*be431cd8SAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
107*be431cd8SAndroid Build Coastguard Worker    source_stem: "fmq",
108*be431cd8SAndroid Build Coastguard Worker    bindgen_flags: [
109*be431cd8SAndroid Build Coastguard Worker        "--no-recursive-allowlist",
110*be431cd8SAndroid Build Coastguard Worker        "--use-core",
111*be431cd8SAndroid Build Coastguard Worker        "--ctypes-prefix=core::ffi",
112*be431cd8SAndroid Build Coastguard Worker        "--raw-line=#![no_std]",
113*be431cd8SAndroid Build Coastguard Worker        "--raw-line=pub use android_hardware_common_fmq::aidl::android::hardware::common::fmq::{MQDescriptor::MQDescriptor, UnsynchronizedWrite::UnsynchronizedWrite, SynchronizedReadWrite::SynchronizedReadWrite, GrantorDescriptor::GrantorDescriptor};",
114*be431cd8SAndroid Build Coastguard Worker        "--raw-line=pub use android_hardware_common::{aidl::android::hardware::common::NativeHandle::NativeHandle, binder::ParcelFileDescriptor};",
115*be431cd8SAndroid Build Coastguard Worker        "--raw-line=pub enum android_MQErased {}",
116*be431cd8SAndroid Build Coastguard Worker        "--raw-line=#[repr(C)]",
117*be431cd8SAndroid Build Coastguard Worker        "--raw-line=pub struct aidl_android_hardware_common_fmq_GrantorDescriptor {",
118*be431cd8SAndroid Build Coastguard Worker        "--raw-line=    pub fdIndex: i32,",
119*be431cd8SAndroid Build Coastguard Worker        "--raw-line=    pub offset: i32,",
120*be431cd8SAndroid Build Coastguard Worker        "--raw-line=    pub extent: i64,",
121*be431cd8SAndroid Build Coastguard Worker        "--raw-line=}",
122*be431cd8SAndroid Build Coastguard Worker        "--opaque-type=ErasedMessageQueueDesc",
123*be431cd8SAndroid Build Coastguard Worker        "--opaque-type=.*AidlMessageQueue",
124*be431cd8SAndroid Build Coastguard Worker        "--with-derive-default",
125*be431cd8SAndroid Build Coastguard Worker        "--no-default=MessageQueueDesc",
126*be431cd8SAndroid Build Coastguard Worker        "--no-default=ErasedMessageQueue",
127*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=convertGrantor",
128*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=convertDesc",
129*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=freeDesc",
130*be431cd8SAndroid Build Coastguard Worker        "--allowlist-type=ndk::ScopedFileDescriptor",
131*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descGrantors",
132*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descNumGrantors",
133*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descHandleFDs",
134*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descHandleNumFDs",
135*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descHandleInts",
136*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descHandleNumInts",
137*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descQuantum",
138*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=descFlags",
139*be431cd8SAndroid Build Coastguard Worker        "--allowlist-type=\\bErasedMessageQueue",
140*be431cd8SAndroid Build Coastguard Worker        "--allowlist-type=\\bErasedMessageQueueDesc",
141*be431cd8SAndroid Build Coastguard Worker        "--allowlist-type=\\bMemTransaction",
142*be431cd8SAndroid Build Coastguard Worker        "--allowlist-type=.*MemTransaction.*MemRegion.*",
143*be431cd8SAndroid Build Coastguard Worker        "--blocklist-type=std::.+",
144*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=.*ErasedMessageQueue.*",
145*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=.*beginWrite",
146*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=.*beginRead",
147*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=.*commitWrite",
148*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=.*commitRead",
149*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=getAddress",
150*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=getLength.*",
151*be431cd8SAndroid Build Coastguard Worker        "--allowlist-function=get(First|Second)Region",
152*be431cd8SAndroid Build Coastguard Worker    ],
153*be431cd8SAndroid Build Coastguard Worker    rustlibs: [
154*be431cd8SAndroid Build Coastguard Worker        "android.hardware.common.fmq-V1-rust",
155*be431cd8SAndroid Build Coastguard Worker        "android.hardware.common-V2-rust",
156*be431cd8SAndroid Build Coastguard Worker    ],
157*be431cd8SAndroid Build Coastguard Worker    static_libs: [
158*be431cd8SAndroid Build Coastguard Worker        "libfmq",
159*be431cd8SAndroid Build Coastguard Worker    ],
160*be431cd8SAndroid Build Coastguard Worker    whole_static_libs: [
161*be431cd8SAndroid Build Coastguard Worker        "libfmq_erased",
162*be431cd8SAndroid Build Coastguard Worker    ],
163*be431cd8SAndroid Build Coastguard Worker    shared_libs: [
164*be431cd8SAndroid Build Coastguard Worker        "libc++",
165*be431cd8SAndroid Build Coastguard Worker        "liblog",
166*be431cd8SAndroid Build Coastguard Worker        "android.hardware.common.fmq-V1-ndk",
167*be431cd8SAndroid Build Coastguard Worker    ],
168*be431cd8SAndroid Build Coastguard Worker    apex_available: [
169*be431cd8SAndroid Build Coastguard Worker    ],
170*be431cd8SAndroid Build Coastguard Worker}
171*be431cd8SAndroid Build Coastguard Worker
172*be431cd8SAndroid Build Coastguard Workerrust_test {
173*be431cd8SAndroid Build Coastguard Worker    host_supported: true,
174*be431cd8SAndroid Build Coastguard Worker    name: "libfmq_bindgen_test",
175*be431cd8SAndroid Build Coastguard Worker    srcs: [":libfmq_bindgen"],
176*be431cd8SAndroid Build Coastguard Worker    crate_name: "fmq_bindgen_test",
177*be431cd8SAndroid Build Coastguard Worker    test_suites: ["general-tests"],
178*be431cd8SAndroid Build Coastguard Worker    auto_gen_config: true,
179*be431cd8SAndroid Build Coastguard Worker    clippy_lints: "none",
180*be431cd8SAndroid Build Coastguard Worker    lints: "none",
181*be431cd8SAndroid Build Coastguard Worker    rustlibs: [
182*be431cd8SAndroid Build Coastguard Worker        "android.hardware.common.fmq-V1-rust",
183*be431cd8SAndroid Build Coastguard Worker        "android.hardware.common-V2-rust",
184*be431cd8SAndroid Build Coastguard Worker    ],
185*be431cd8SAndroid Build Coastguard Worker}
186*be431cd8SAndroid Build Coastguard Worker
187*be431cd8SAndroid Build Coastguard Workerrust_defaults {
188*be431cd8SAndroid Build Coastguard Worker    name: "libfmq_rust_defaults",
189*be431cd8SAndroid Build Coastguard Worker    host_supported: true,
190*be431cd8SAndroid Build Coastguard Worker    vendor_available: true,
191*be431cd8SAndroid Build Coastguard Worker    product_available: true,
192*be431cd8SAndroid Build Coastguard Worker    visibility: [
193*be431cd8SAndroid Build Coastguard Worker        ":__subpackages__",
194*be431cd8SAndroid Build Coastguard Worker        "//system/software_defined_vehicle/core_services/sdv_comms:__subpackages__",
195*be431cd8SAndroid Build Coastguard Worker    ],
196*be431cd8SAndroid Build Coastguard Worker    crate_name: "fmq",
197*be431cd8SAndroid Build Coastguard Worker    srcs: ["libfmq.rs"],
198*be431cd8SAndroid Build Coastguard Worker    edition: "2021",
199*be431cd8SAndroid Build Coastguard Worker    rustlibs: [
200*be431cd8SAndroid Build Coastguard Worker        "libfmq_bindgen",
201*be431cd8SAndroid Build Coastguard Worker        "liblog_rust",
202*be431cd8SAndroid Build Coastguard Worker        "libzerocopy",
203*be431cd8SAndroid Build Coastguard Worker    ],
204*be431cd8SAndroid Build Coastguard Worker    proc_macros: [],
205*be431cd8SAndroid Build Coastguard Worker}
206*be431cd8SAndroid Build Coastguard Worker
207*be431cd8SAndroid Build Coastguard Workerrust_library {
208*be431cd8SAndroid Build Coastguard Worker    name: "libfmq_rust",
209*be431cd8SAndroid Build Coastguard Worker    defaults: ["libfmq_rust_defaults"],
210*be431cd8SAndroid Build Coastguard Worker}
211*be431cd8SAndroid Build Coastguard Worker
212*be431cd8SAndroid Build Coastguard Workerrust_test {
213*be431cd8SAndroid Build Coastguard Worker    name: "libfmq_rust_unit_test",
214*be431cd8SAndroid Build Coastguard Worker    defaults: ["libfmq_rust_defaults"],
215*be431cd8SAndroid Build Coastguard Worker    test_options: {
216*be431cd8SAndroid Build Coastguard Worker        unit_test: true,
217*be431cd8SAndroid Build Coastguard Worker    },
218*be431cd8SAndroid Build Coastguard Worker}
219