xref: /aosp_15_r20/frameworks/native/libs/binder/ndk/Android.bp (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker/*
2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker *
4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker *
8*38e8c45fSAndroid Build Coastguard Worker *      http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker *
10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker */
16*38e8c45fSAndroid Build Coastguard Worker
17*38e8c45fSAndroid Build Coastguard Worker// TODO(b/31559095): bionic on host should define this
18*38e8c45fSAndroid Build Coastguard Workerpackage {
19*38e8c45fSAndroid Build Coastguard Worker    default_applicable_licenses: ["frameworks_native_libs_binder_ndk_license"],
20*38e8c45fSAndroid Build Coastguard Worker}
21*38e8c45fSAndroid Build Coastguard Worker
22*38e8c45fSAndroid Build Coastguard Worker// Added automatically by a large-scale-change
23*38e8c45fSAndroid Build Coastguard Worker// See: http://go/android-license-faq
24*38e8c45fSAndroid Build Coastguard Workerlicense {
25*38e8c45fSAndroid Build Coastguard Worker    name: "frameworks_native_libs_binder_ndk_license",
26*38e8c45fSAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
27*38e8c45fSAndroid Build Coastguard Worker    license_kinds: [
28*38e8c45fSAndroid Build Coastguard Worker        "SPDX-license-identifier-Apache-2.0",
29*38e8c45fSAndroid Build Coastguard Worker    ],
30*38e8c45fSAndroid Build Coastguard Worker    license_text: [
31*38e8c45fSAndroid Build Coastguard Worker        "NOTICE",
32*38e8c45fSAndroid Build Coastguard Worker    ],
33*38e8c45fSAndroid Build Coastguard Worker}
34*38e8c45fSAndroid Build Coastguard Worker
35*38e8c45fSAndroid Build Coastguard Workercc_defaults {
36*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_ndk_common_defaults",
37*38e8c45fSAndroid Build Coastguard Worker    host_supported: true,
38*38e8c45fSAndroid Build Coastguard Worker    recovery_available: true,
39*38e8c45fSAndroid Build Coastguard Worker
40*38e8c45fSAndroid Build Coastguard Worker    export_include_dirs: [
41*38e8c45fSAndroid Build Coastguard Worker        "include_cpp",
42*38e8c45fSAndroid Build Coastguard Worker        "include_ndk",
43*38e8c45fSAndroid Build Coastguard Worker        "include_platform",
44*38e8c45fSAndroid Build Coastguard Worker    ],
45*38e8c45fSAndroid Build Coastguard Worker
46*38e8c45fSAndroid Build Coastguard Worker    cflags: [
47*38e8c45fSAndroid Build Coastguard Worker        "-Wall",
48*38e8c45fSAndroid Build Coastguard Worker        "-Wextra",
49*38e8c45fSAndroid Build Coastguard Worker        "-Wextra-semi",
50*38e8c45fSAndroid Build Coastguard Worker        "-Werror",
51*38e8c45fSAndroid Build Coastguard Worker    ],
52*38e8c45fSAndroid Build Coastguard Worker
53*38e8c45fSAndroid Build Coastguard Worker    srcs: [
54*38e8c45fSAndroid Build Coastguard Worker        "ibinder.cpp",
55*38e8c45fSAndroid Build Coastguard Worker        "libbinder.cpp",
56*38e8c45fSAndroid Build Coastguard Worker        "parcel.cpp",
57*38e8c45fSAndroid Build Coastguard Worker        "stability.cpp",
58*38e8c45fSAndroid Build Coastguard Worker        "status.cpp",
59*38e8c45fSAndroid Build Coastguard Worker    ],
60*38e8c45fSAndroid Build Coastguard Worker}
61*38e8c45fSAndroid Build Coastguard Worker
62*38e8c45fSAndroid Build Coastguard Workercc_library_host_shared {
63*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_ndk_sdk",
64*38e8c45fSAndroid Build Coastguard Worker
65*38e8c45fSAndroid Build Coastguard Worker    defaults: [
66*38e8c45fSAndroid Build Coastguard Worker        "libbinder_ndk_common_defaults",
67*38e8c45fSAndroid Build Coastguard Worker        "binder_sdk_defaults",
68*38e8c45fSAndroid Build Coastguard Worker    ],
69*38e8c45fSAndroid Build Coastguard Worker    cmake_snapshot_supported: true,
70*38e8c45fSAndroid Build Coastguard Worker
71*38e8c45fSAndroid Build Coastguard Worker    shared_libs: [
72*38e8c45fSAndroid Build Coastguard Worker        "libbinder_sdk",
73*38e8c45fSAndroid Build Coastguard Worker        "libutils_binder_sdk",
74*38e8c45fSAndroid Build Coastguard Worker    ],
75*38e8c45fSAndroid Build Coastguard Worker}
76*38e8c45fSAndroid Build Coastguard Worker
77*38e8c45fSAndroid Build Coastguard Workercc_library {
78*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_ndk",
79*38e8c45fSAndroid Build Coastguard Worker
80*38e8c45fSAndroid Build Coastguard Worker    defaults: ["libbinder_ndk_common_defaults"],
81*38e8c45fSAndroid Build Coastguard Worker    cmake_snapshot_supported: false,
82*38e8c45fSAndroid Build Coastguard Worker
83*38e8c45fSAndroid Build Coastguard Worker    llndk: {
84*38e8c45fSAndroid Build Coastguard Worker        symbol_file: "libbinder_ndk.map.txt",
85*38e8c45fSAndroid Build Coastguard Worker    },
86*38e8c45fSAndroid Build Coastguard Worker
87*38e8c45fSAndroid Build Coastguard Worker    cflags: [
88*38e8c45fSAndroid Build Coastguard Worker        "-DBINDER_WITH_KERNEL_IPC",
89*38e8c45fSAndroid Build Coastguard Worker    ],
90*38e8c45fSAndroid Build Coastguard Worker
91*38e8c45fSAndroid Build Coastguard Worker    srcs: [
92*38e8c45fSAndroid Build Coastguard Worker        "ibinder_jni.cpp",
93*38e8c45fSAndroid Build Coastguard Worker        "parcel_jni.cpp",
94*38e8c45fSAndroid Build Coastguard Worker        "persistable_bundle.cpp",
95*38e8c45fSAndroid Build Coastguard Worker        "process.cpp",
96*38e8c45fSAndroid Build Coastguard Worker        "service_manager.cpp",
97*38e8c45fSAndroid Build Coastguard Worker        "binder_rpc.cpp",
98*38e8c45fSAndroid Build Coastguard Worker    ],
99*38e8c45fSAndroid Build Coastguard Worker
100*38e8c45fSAndroid Build Coastguard Worker    static_libs: [
101*38e8c45fSAndroid Build Coastguard Worker        "libandroid_runtime_lazy",
102*38e8c45fSAndroid Build Coastguard Worker        "libbase",
103*38e8c45fSAndroid Build Coastguard Worker    ],
104*38e8c45fSAndroid Build Coastguard Worker
105*38e8c45fSAndroid Build Coastguard Worker    shared_libs: [
106*38e8c45fSAndroid Build Coastguard Worker        "libbinder",
107*38e8c45fSAndroid Build Coastguard Worker        "liblog",
108*38e8c45fSAndroid Build Coastguard Worker        "libutils",
109*38e8c45fSAndroid Build Coastguard Worker    ],
110*38e8c45fSAndroid Build Coastguard Worker
111*38e8c45fSAndroid Build Coastguard Worker    header_libs: [
112*38e8c45fSAndroid Build Coastguard Worker        "jni_headers",
113*38e8c45fSAndroid Build Coastguard Worker    ],
114*38e8c45fSAndroid Build Coastguard Worker    export_header_lib_headers: [
115*38e8c45fSAndroid Build Coastguard Worker        "jni_headers",
116*38e8c45fSAndroid Build Coastguard Worker    ],
117*38e8c45fSAndroid Build Coastguard Worker
118*38e8c45fSAndroid Build Coastguard Worker    target: {
119*38e8c45fSAndroid Build Coastguard Worker        android: {
120*38e8c45fSAndroid Build Coastguard Worker            // Only one copy of this library on an Android device
121*38e8c45fSAndroid Build Coastguard Worker            static: {
122*38e8c45fSAndroid Build Coastguard Worker                enabled: false,
123*38e8c45fSAndroid Build Coastguard Worker            },
124*38e8c45fSAndroid Build Coastguard Worker        },
125*38e8c45fSAndroid Build Coastguard Worker        linux: {
126*38e8c45fSAndroid Build Coastguard Worker            version_script: "libbinder_ndk.map.txt",
127*38e8c45fSAndroid Build Coastguard Worker        },
128*38e8c45fSAndroid Build Coastguard Worker        darwin: {
129*38e8c45fSAndroid Build Coastguard Worker            enabled: false,
130*38e8c45fSAndroid Build Coastguard Worker        },
131*38e8c45fSAndroid Build Coastguard Worker    },
132*38e8c45fSAndroid Build Coastguard Worker    stubs: {
133*38e8c45fSAndroid Build Coastguard Worker        symbol_file: "libbinder_ndk.map.txt",
134*38e8c45fSAndroid Build Coastguard Worker        versions: [
135*38e8c45fSAndroid Build Coastguard Worker            "29",
136*38e8c45fSAndroid Build Coastguard Worker            "30",
137*38e8c45fSAndroid Build Coastguard Worker        ],
138*38e8c45fSAndroid Build Coastguard Worker    },
139*38e8c45fSAndroid Build Coastguard Worker    sanitize: {
140*38e8c45fSAndroid Build Coastguard Worker        misc_undefined: ["integer"],
141*38e8c45fSAndroid Build Coastguard Worker    },
142*38e8c45fSAndroid Build Coastguard Worker    tidy: true,
143*38e8c45fSAndroid Build Coastguard Worker    tidy_flags: [
144*38e8c45fSAndroid Build Coastguard Worker        // Only check our headers
145*38e8c45fSAndroid Build Coastguard Worker        "--header-filter=^.*frameworks/native/libs/binder/.*.h$",
146*38e8c45fSAndroid Build Coastguard Worker    ],
147*38e8c45fSAndroid Build Coastguard Worker    tidy_checks_as_errors: [
148*38e8c45fSAndroid Build Coastguard Worker        // Explicitly list the checks that should not occur in this module.
149*38e8c45fSAndroid Build Coastguard Worker        "abseil-*",
150*38e8c45fSAndroid Build Coastguard Worker        "android-*",
151*38e8c45fSAndroid Build Coastguard Worker        "bugprone-*",
152*38e8c45fSAndroid Build Coastguard Worker        "-bugprone-branch-clone", // b/155034972
153*38e8c45fSAndroid Build Coastguard Worker        "cert-*",
154*38e8c45fSAndroid Build Coastguard Worker        "clang-analyzer-*",
155*38e8c45fSAndroid Build Coastguard Worker        "-clang-analyzer-core.CallAndMessage",
156*38e8c45fSAndroid Build Coastguard Worker        "-clang-analyzer-core.uninitialized.Assign",
157*38e8c45fSAndroid Build Coastguard Worker        "-clang-analyzer-unix.Malloc",
158*38e8c45fSAndroid Build Coastguard Worker        "-clang-analyzer-deadcode.DeadStores",
159*38e8c45fSAndroid Build Coastguard Worker        "-clang-analyzer-optin.cplusplus.UninitializedObject",
160*38e8c45fSAndroid Build Coastguard Worker        "google-*",
161*38e8c45fSAndroid Build Coastguard Worker        "-google-readability-*",
162*38e8c45fSAndroid Build Coastguard Worker        "-google-runtime-references",
163*38e8c45fSAndroid Build Coastguard Worker        "misc-*",
164*38e8c45fSAndroid Build Coastguard Worker        "-misc-no-recursion",
165*38e8c45fSAndroid Build Coastguard Worker        "-misc-non-private-member-variables-in-classes",
166*38e8c45fSAndroid Build Coastguard Worker        "-misc-redundant-expression",
167*38e8c45fSAndroid Build Coastguard Worker        "-misc-unused-parameters",
168*38e8c45fSAndroid Build Coastguard Worker        "-misc-unused-using-decls",
169*38e8c45fSAndroid Build Coastguard Worker        "performance*",
170*38e8c45fSAndroid Build Coastguard Worker        "portability*",
171*38e8c45fSAndroid Build Coastguard Worker    ],
172*38e8c45fSAndroid Build Coastguard Worker    afdo: true,
173*38e8c45fSAndroid Build Coastguard Worker}
174*38e8c45fSAndroid Build Coastguard Worker
175*38e8c45fSAndroid Build Coastguard Workercc_library {
176*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_ndk_on_trusty_mock",
177*38e8c45fSAndroid Build Coastguard Worker    defaults: [
178*38e8c45fSAndroid Build Coastguard Worker        "trusty_mock_defaults",
179*38e8c45fSAndroid Build Coastguard Worker    ],
180*38e8c45fSAndroid Build Coastguard Worker
181*38e8c45fSAndroid Build Coastguard Worker    export_include_dirs: [
182*38e8c45fSAndroid Build Coastguard Worker        "include_cpp",
183*38e8c45fSAndroid Build Coastguard Worker        "include_ndk",
184*38e8c45fSAndroid Build Coastguard Worker        "include_platform",
185*38e8c45fSAndroid Build Coastguard Worker    ],
186*38e8c45fSAndroid Build Coastguard Worker
187*38e8c45fSAndroid Build Coastguard Worker    srcs: [
188*38e8c45fSAndroid Build Coastguard Worker        "ibinder.cpp",
189*38e8c45fSAndroid Build Coastguard Worker        "libbinder.cpp",
190*38e8c45fSAndroid Build Coastguard Worker        "parcel.cpp",
191*38e8c45fSAndroid Build Coastguard Worker        "stability.cpp",
192*38e8c45fSAndroid Build Coastguard Worker        "status.cpp",
193*38e8c45fSAndroid Build Coastguard Worker    ],
194*38e8c45fSAndroid Build Coastguard Worker
195*38e8c45fSAndroid Build Coastguard Worker    shared_libs: [
196*38e8c45fSAndroid Build Coastguard Worker        "libbinder_on_trusty_mock",
197*38e8c45fSAndroid Build Coastguard Worker    ],
198*38e8c45fSAndroid Build Coastguard Worker
199*38e8c45fSAndroid Build Coastguard Worker    header_libs: [
200*38e8c45fSAndroid Build Coastguard Worker        "libbinder_trusty_ndk_headers",
201*38e8c45fSAndroid Build Coastguard Worker    ],
202*38e8c45fSAndroid Build Coastguard Worker    export_header_lib_headers: [
203*38e8c45fSAndroid Build Coastguard Worker        "libbinder_trusty_ndk_headers",
204*38e8c45fSAndroid Build Coastguard Worker    ],
205*38e8c45fSAndroid Build Coastguard Worker
206*38e8c45fSAndroid Build Coastguard Worker    cflags: [
207*38e8c45fSAndroid Build Coastguard Worker        "-Wall",
208*38e8c45fSAndroid Build Coastguard Worker        "-Wextra",
209*38e8c45fSAndroid Build Coastguard Worker        "-Werror",
210*38e8c45fSAndroid Build Coastguard Worker    ],
211*38e8c45fSAndroid Build Coastguard Worker
212*38e8c45fSAndroid Build Coastguard Worker    visibility: ["//frameworks/native/libs/binder:__subpackages__"],
213*38e8c45fSAndroid Build Coastguard Worker}
214*38e8c45fSAndroid Build Coastguard Worker
215*38e8c45fSAndroid Build Coastguard Workercc_library_headers {
216*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_headers_platform_shared",
217*38e8c45fSAndroid Build Coastguard Worker    export_include_dirs: ["include_cpp"],
218*38e8c45fSAndroid Build Coastguard Worker    vendor_available: true,
219*38e8c45fSAndroid Build Coastguard Worker    recovery_available: true,
220*38e8c45fSAndroid Build Coastguard Worker    host_supported: true,
221*38e8c45fSAndroid Build Coastguard Worker    // TODO(b/153609531): remove when no longer needed.
222*38e8c45fSAndroid Build Coastguard Worker    native_bridge_supported: true,
223*38e8c45fSAndroid Build Coastguard Worker    cmake_snapshot_supported: true,
224*38e8c45fSAndroid Build Coastguard Worker    target: {
225*38e8c45fSAndroid Build Coastguard Worker        darwin: {
226*38e8c45fSAndroid Build Coastguard Worker            enabled: false,
227*38e8c45fSAndroid Build Coastguard Worker        },
228*38e8c45fSAndroid Build Coastguard Worker    },
229*38e8c45fSAndroid Build Coastguard Worker    apex_available: [
230*38e8c45fSAndroid Build Coastguard Worker        "//apex_available:platform",
231*38e8c45fSAndroid Build Coastguard Worker        "//apex_available:anyapex",
232*38e8c45fSAndroid Build Coastguard Worker        "com.android.media",
233*38e8c45fSAndroid Build Coastguard Worker        "com.android.media.swcodec",
234*38e8c45fSAndroid Build Coastguard Worker    ],
235*38e8c45fSAndroid Build Coastguard Worker    min_sdk_version: "29",
236*38e8c45fSAndroid Build Coastguard Worker}
237*38e8c45fSAndroid Build Coastguard Worker
238*38e8c45fSAndroid Build Coastguard Worker// TODO: if you try to export libbinder_headers_platform_shared from libbinder_ndk.ndk, it will
239*38e8c45fSAndroid Build Coastguard Worker// not select the NDK variant of libbinder_headers_platform_shared and instead, it will error
240*38e8c45fSAndroid Build Coastguard Worker// that the NDK can't depend on glibc C++.
241*38e8c45fSAndroid Build Coastguard Workercc_library_headers {
242*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_headers_platform_shared_ndk",
243*38e8c45fSAndroid Build Coastguard Worker    export_include_dirs: ["include_cpp"],
244*38e8c45fSAndroid Build Coastguard Worker    sdk_version: "29",
245*38e8c45fSAndroid Build Coastguard Worker    min_sdk_version: "29",
246*38e8c45fSAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
247*38e8c45fSAndroid Build Coastguard Worker}
248*38e8c45fSAndroid Build Coastguard Worker
249*38e8c45fSAndroid Build Coastguard Workerndk_headers {
250*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_ndk_headers",
251*38e8c45fSAndroid Build Coastguard Worker    from: "include_ndk/android",
252*38e8c45fSAndroid Build Coastguard Worker    to: "android",
253*38e8c45fSAndroid Build Coastguard Worker    srcs: [
254*38e8c45fSAndroid Build Coastguard Worker        "include_ndk/android/*.h",
255*38e8c45fSAndroid Build Coastguard Worker    ],
256*38e8c45fSAndroid Build Coastguard Worker    license: "NOTICE",
257*38e8c45fSAndroid Build Coastguard Worker}
258*38e8c45fSAndroid Build Coastguard Worker
259*38e8c45fSAndroid Build Coastguard Worker// include_cpp are packaged in development/build/sdk.atree with the AIDL compiler
260*38e8c45fSAndroid Build Coastguard Worker
261*38e8c45fSAndroid Build Coastguard Workerndk_library {
262*38e8c45fSAndroid Build Coastguard Worker    name: "libbinder_ndk",
263*38e8c45fSAndroid Build Coastguard Worker    symbol_file: "libbinder_ndk.map.txt",
264*38e8c45fSAndroid Build Coastguard Worker    first_version: "29",
265*38e8c45fSAndroid Build Coastguard Worker    export_header_libs: [
266*38e8c45fSAndroid Build Coastguard Worker        // used to be part of the NDK, platform things depend on it
267*38e8c45fSAndroid Build Coastguard Worker        "libbinder_headers_platform_shared_ndk",
268*38e8c45fSAndroid Build Coastguard Worker    ],
269*38e8c45fSAndroid Build Coastguard Worker}
270