xref: /aosp_15_r20/libnativehelper/Android.bp (revision 0797b24ee566c78eb48500180cb4bf71f81c8aab)
1*0797b24eSAndroid Build Coastguard Worker// Copyright (C) 2009 The Android Open Source Project
2*0797b24eSAndroid Build Coastguard Worker//
3*0797b24eSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*0797b24eSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*0797b24eSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*0797b24eSAndroid Build Coastguard Worker//
7*0797b24eSAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*0797b24eSAndroid Build Coastguard Worker//
9*0797b24eSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*0797b24eSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*0797b24eSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*0797b24eSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*0797b24eSAndroid Build Coastguard Worker// limitations under the License.
14*0797b24eSAndroid Build Coastguard Worker
15*0797b24eSAndroid Build Coastguard Workerpackage {
16*0797b24eSAndroid Build Coastguard Worker    default_applicable_licenses: ["libnativehelper_license"],
17*0797b24eSAndroid Build Coastguard Worker    default_team: "trendy_team_art_mainline",
18*0797b24eSAndroid Build Coastguard Worker}
19*0797b24eSAndroid Build Coastguard Worker
20*0797b24eSAndroid Build Coastguard Worker// Added automatically by a large-scale-change
21*0797b24eSAndroid Build Coastguard Worker// http://go/android-license-faq
22*0797b24eSAndroid Build Coastguard Workerlicense {
23*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper_license",
24*0797b24eSAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
25*0797b24eSAndroid Build Coastguard Worker    license_kinds: [
26*0797b24eSAndroid Build Coastguard Worker        "SPDX-license-identifier-Apache-2.0",
27*0797b24eSAndroid Build Coastguard Worker    ],
28*0797b24eSAndroid Build Coastguard Worker    license_text: [
29*0797b24eSAndroid Build Coastguard Worker        "NOTICE",
30*0797b24eSAndroid Build Coastguard Worker    ],
31*0797b24eSAndroid Build Coastguard Worker}
32*0797b24eSAndroid Build Coastguard Worker
33*0797b24eSAndroid Build Coastguard Workercc_defaults {
34*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper_defaults",
35*0797b24eSAndroid Build Coastguard Worker    cflags: [
36*0797b24eSAndroid Build Coastguard Worker        "-fvisibility=protected",
37*0797b24eSAndroid Build Coastguard Worker        "-std=c11",
38*0797b24eSAndroid Build Coastguard Worker    ],
39*0797b24eSAndroid Build Coastguard Worker    shared_libs: ["liblog"],
40*0797b24eSAndroid Build Coastguard Worker    export_shared_lib_headers: ["liblog"],
41*0797b24eSAndroid Build Coastguard Worker}
42*0797b24eSAndroid Build Coastguard Worker
43*0797b24eSAndroid Build Coastguard Workercc_library_headers {
44*0797b24eSAndroid Build Coastguard Worker    name: "jni_headers",
45*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
46*0797b24eSAndroid Build Coastguard Worker    export_include_dirs: ["include_jni"],
47*0797b24eSAndroid Build Coastguard Worker    native_bridge_supported: true,
48*0797b24eSAndroid Build Coastguard Worker    product_available: true,
49*0797b24eSAndroid Build Coastguard Worker    vendor_available: true,
50*0797b24eSAndroid Build Coastguard Worker    target: {
51*0797b24eSAndroid Build Coastguard Worker        windows: {
52*0797b24eSAndroid Build Coastguard Worker            enabled: true,
53*0797b24eSAndroid Build Coastguard Worker        },
54*0797b24eSAndroid Build Coastguard Worker    },
55*0797b24eSAndroid Build Coastguard Worker    apex_available: [
56*0797b24eSAndroid Build Coastguard Worker        "//apex_available:platform",
57*0797b24eSAndroid Build Coastguard Worker        "//apex_available:anyapex",
58*0797b24eSAndroid Build Coastguard Worker    ],
59*0797b24eSAndroid Build Coastguard Worker    ramdisk_available: true,
60*0797b24eSAndroid Build Coastguard Worker    // recovery_available currently required for libchrome (https://r.android.com/799940).
61*0797b24eSAndroid Build Coastguard Worker    recovery_available: true,
62*0797b24eSAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
63*0797b24eSAndroid Build Coastguard Worker    stl: "none",
64*0797b24eSAndroid Build Coastguard Worker    system_shared_libs: [],
65*0797b24eSAndroid Build Coastguard Worker    // The minimum sdk version required by users of this module.
66*0797b24eSAndroid Build Coastguard Worker    sdk_version: "minimum",
67*0797b24eSAndroid Build Coastguard Worker    // As part of mainline modules(APEX), it should support at least 29(Q)
68*0797b24eSAndroid Build Coastguard Worker    min_sdk_version: "29",
69*0797b24eSAndroid Build Coastguard Worker}
70*0797b24eSAndroid Build Coastguard Worker
71*0797b24eSAndroid Build Coastguard Workercc_library_headers {
72*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper_header_only",
73*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
74*0797b24eSAndroid Build Coastguard Worker    export_include_dirs: [
75*0797b24eSAndroid Build Coastguard Worker        "header_only_include",
76*0797b24eSAndroid Build Coastguard Worker    ],
77*0797b24eSAndroid Build Coastguard Worker    header_libs: ["jni_headers"],
78*0797b24eSAndroid Build Coastguard Worker    export_header_lib_headers: ["jni_headers"],
79*0797b24eSAndroid Build Coastguard Worker    // As part of mainline modules(APEX), it should support at least 29(Q)
80*0797b24eSAndroid Build Coastguard Worker    min_sdk_version: "29",
81*0797b24eSAndroid Build Coastguard Worker    sdk_version: "minimum",
82*0797b24eSAndroid Build Coastguard Worker    apex_available: [
83*0797b24eSAndroid Build Coastguard Worker        "//apex_available:platform",
84*0797b24eSAndroid Build Coastguard Worker        "//apex_available:anyapex",
85*0797b24eSAndroid Build Coastguard Worker    ],
86*0797b24eSAndroid Build Coastguard Worker}
87*0797b24eSAndroid Build Coastguard Worker
88*0797b24eSAndroid Build Coastguard Workercc_library_headers {
89*0797b24eSAndroid Build Coastguard Worker    name: "jni_platform_headers",
90*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
91*0797b24eSAndroid Build Coastguard Worker    export_include_dirs: [
92*0797b24eSAndroid Build Coastguard Worker        "include_platform_header_only",
93*0797b24eSAndroid Build Coastguard Worker    ],
94*0797b24eSAndroid Build Coastguard Worker    header_libs: ["jni_headers"],
95*0797b24eSAndroid Build Coastguard Worker    export_header_lib_headers: ["jni_headers"],
96*0797b24eSAndroid Build Coastguard Worker    sdk_version: "minimum",
97*0797b24eSAndroid Build Coastguard Worker    apex_available: [
98*0797b24eSAndroid Build Coastguard Worker        "//apex_available:platform",
99*0797b24eSAndroid Build Coastguard Worker        "com.android.art",
100*0797b24eSAndroid Build Coastguard Worker        "com.android.art.debug",
101*0797b24eSAndroid Build Coastguard Worker    ],
102*0797b24eSAndroid Build Coastguard Worker    min_sdk_version: "S", // 31
103*0797b24eSAndroid Build Coastguard Worker}
104*0797b24eSAndroid Build Coastguard Worker
105*0797b24eSAndroid Build Coastguard Worker// This library contains code that is compatible with
106*0797b24eSAndroid Build Coastguard Worker// both ART and JVM. All code specific to ART should go
107*0797b24eSAndroid Build Coastguard Worker// inside libnativehelper directly.
108*0797b24eSAndroid Build Coastguard Workercc_library_static {
109*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper_any_vm",
110*0797b24eSAndroid Build Coastguard Worker    defaults: ["libnativehelper_defaults"],
111*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
112*0797b24eSAndroid Build Coastguard Worker    srcs: [
113*0797b24eSAndroid Build Coastguard Worker        "DlHelp.c",
114*0797b24eSAndroid Build Coastguard Worker        "ExpandableString.c",
115*0797b24eSAndroid Build Coastguard Worker        "JNIHelp.c",
116*0797b24eSAndroid Build Coastguard Worker        "JniInvocation.c",
117*0797b24eSAndroid Build Coastguard Worker    ],
118*0797b24eSAndroid Build Coastguard Worker    export_include_dirs: [
119*0797b24eSAndroid Build Coastguard Worker        "header_only_include",
120*0797b24eSAndroid Build Coastguard Worker        "include",
121*0797b24eSAndroid Build Coastguard Worker        "include_jni",
122*0797b24eSAndroid Build Coastguard Worker        "include_platform",
123*0797b24eSAndroid Build Coastguard Worker        "include_platform_header_only",
124*0797b24eSAndroid Build Coastguard Worker    ],
125*0797b24eSAndroid Build Coastguard Worker    visibility: ["//frameworks/base/libs/nativehelper_jvm"],
126*0797b24eSAndroid Build Coastguard Worker    stl: "none",
127*0797b24eSAndroid Build Coastguard Worker    apex_available: [
128*0797b24eSAndroid Build Coastguard Worker        "com.android.art",
129*0797b24eSAndroid Build Coastguard Worker        "com.android.art.debug",
130*0797b24eSAndroid Build Coastguard Worker    ],
131*0797b24eSAndroid Build Coastguard Worker    min_sdk_version: "S", // 31
132*0797b24eSAndroid Build Coastguard Worker    target: {
133*0797b24eSAndroid Build Coastguard Worker        windows: {
134*0797b24eSAndroid Build Coastguard Worker            enabled: true,
135*0797b24eSAndroid Build Coastguard Worker        },
136*0797b24eSAndroid Build Coastguard Worker    },
137*0797b24eSAndroid Build Coastguard Worker}
138*0797b24eSAndroid Build Coastguard Worker
139*0797b24eSAndroid Build Coastguard Workercc_library_shared {
140*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper",
141*0797b24eSAndroid Build Coastguard Worker    defaults: ["libnativehelper_defaults"],
142*0797b24eSAndroid Build Coastguard Worker    bootstrap: false,
143*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
144*0797b24eSAndroid Build Coastguard Worker    srcs: [
145*0797b24eSAndroid Build Coastguard Worker        "JNIPlatformHelp.c",
146*0797b24eSAndroid Build Coastguard Worker        "JniConstants.c",
147*0797b24eSAndroid Build Coastguard Worker        "file_descriptor_jni.c",
148*0797b24eSAndroid Build Coastguard Worker    ],
149*0797b24eSAndroid Build Coastguard Worker    whole_static_libs: ["libnativehelper_any_vm"],
150*0797b24eSAndroid Build Coastguard Worker    export_static_lib_headers: ["libnativehelper_any_vm"],
151*0797b24eSAndroid Build Coastguard Worker    stl: "none",
152*0797b24eSAndroid Build Coastguard Worker    stubs: {
153*0797b24eSAndroid Build Coastguard Worker        symbol_file: "libnativehelper.map.txt",
154*0797b24eSAndroid Build Coastguard Worker        versions: ["S"],
155*0797b24eSAndroid Build Coastguard Worker    },
156*0797b24eSAndroid Build Coastguard Worker    // Only distributed in the ART Module.
157*0797b24eSAndroid Build Coastguard Worker    apex_available: [
158*0797b24eSAndroid Build Coastguard Worker        "com.android.art",
159*0797b24eSAndroid Build Coastguard Worker        "com.android.art.debug",
160*0797b24eSAndroid Build Coastguard Worker    ],
161*0797b24eSAndroid Build Coastguard Worker    min_sdk_version: "S", // 31
162*0797b24eSAndroid Build Coastguard Worker}
163*0797b24eSAndroid Build Coastguard Worker
164*0797b24eSAndroid Build Coastguard Worker// Lazy loading version of libnativehelper that can be used by code
165*0797b24eSAndroid Build Coastguard Worker// that is running before the ART APEX is mounted and
166*0797b24eSAndroid Build Coastguard Worker// libnativehelper.so is available.
167*0797b24eSAndroid Build Coastguard Workercc_library_static {
168*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper_lazy",
169*0797b24eSAndroid Build Coastguard Worker    defaults: ["libnativehelper_defaults"],
170*0797b24eSAndroid Build Coastguard Worker    bootstrap: true,
171*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
172*0797b24eSAndroid Build Coastguard Worker    export_include_dirs: [
173*0797b24eSAndroid Build Coastguard Worker        "header_only_include",
174*0797b24eSAndroid Build Coastguard Worker        "include",
175*0797b24eSAndroid Build Coastguard Worker        "include_jni",
176*0797b24eSAndroid Build Coastguard Worker        "include_platform",
177*0797b24eSAndroid Build Coastguard Worker        "include_platform_header_only",
178*0797b24eSAndroid Build Coastguard Worker    ],
179*0797b24eSAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
180*0797b24eSAndroid Build Coastguard Worker    srcs: ["libnativehelper_lazy.c"],
181*0797b24eSAndroid Build Coastguard Worker    target: {
182*0797b24eSAndroid Build Coastguard Worker        linux: {
183*0797b24eSAndroid Build Coastguard Worker            version_script: "libnativehelper.map.txt",
184*0797b24eSAndroid Build Coastguard Worker        },
185*0797b24eSAndroid Build Coastguard Worker    },
186*0797b24eSAndroid Build Coastguard Worker}
187*0797b24eSAndroid Build Coastguard Worker
188*0797b24eSAndroid Build Coastguard Worker// NDK-only build for the target (device).
189*0797b24eSAndroid Build Coastguard Worker// - Relies only on NDK exposed functionality.
190*0797b24eSAndroid Build Coastguard Worker// - This doesn't include JniInvocation.
191*0797b24eSAndroid Build Coastguard Worker// - This library is less than 20 KB - it is recommended that callers link it statically.
192*0797b24eSAndroid Build Coastguard Worker// - Used to link libc++ (hence the name) but no longer does.
193*0797b24eSAndroid Build Coastguard Workercc_library {
194*0797b24eSAndroid Build Coastguard Worker    name: "libnativehelper_compat_libc++",
195*0797b24eSAndroid Build Coastguard Worker    defaults: ["libnativehelper_defaults"],
196*0797b24eSAndroid Build Coastguard Worker    host_supported: true,
197*0797b24eSAndroid Build Coastguard Worker    cflags: ["-Werror"],
198*0797b24eSAndroid Build Coastguard Worker
199*0797b24eSAndroid Build Coastguard Worker    header_libs: ["jni_headers"],
200*0797b24eSAndroid Build Coastguard Worker    export_header_lib_headers: ["jni_headers"],
201*0797b24eSAndroid Build Coastguard Worker    export_include_dirs: [
202*0797b24eSAndroid Build Coastguard Worker        "header_only_include",
203*0797b24eSAndroid Build Coastguard Worker        "include",
204*0797b24eSAndroid Build Coastguard Worker    ],
205*0797b24eSAndroid Build Coastguard Worker    local_include_dirs: [
206*0797b24eSAndroid Build Coastguard Worker        "include_platform_header_only",
207*0797b24eSAndroid Build Coastguard Worker    ],
208*0797b24eSAndroid Build Coastguard Worker    srcs: [
209*0797b24eSAndroid Build Coastguard Worker        "ExpandableString.c",
210*0797b24eSAndroid Build Coastguard Worker        "JNIHelp.c",
211*0797b24eSAndroid Build Coastguard Worker    ],
212*0797b24eSAndroid Build Coastguard Worker
213*0797b24eSAndroid Build Coastguard Worker    min_sdk_version: "29",
214*0797b24eSAndroid Build Coastguard Worker    sdk_version: "19",
215*0797b24eSAndroid Build Coastguard Worker    stl: "none",
216*0797b24eSAndroid Build Coastguard Worker    apex_available: [
217*0797b24eSAndroid Build Coastguard Worker        "//apex_available:anyapex",
218*0797b24eSAndroid Build Coastguard Worker        "//apex_available:platform",
219*0797b24eSAndroid Build Coastguard Worker    ],
220*0797b24eSAndroid Build Coastguard Worker}
221*0797b24eSAndroid Build Coastguard Worker
222*0797b24eSAndroid Build Coastguard Worker// The NDK module definitions reside in
223*0797b24eSAndroid Build Coastguard Worker// system/extras/module_ndk_libs/libnativehelper in platform, with copies of
224*0797b24eSAndroid Build Coastguard Worker// these headers and map.txt. Any changes here should be synced there and vice
225*0797b24eSAndroid Build Coastguard Worker// versa.
226*0797b24eSAndroid Build Coastguard Worker//
227*0797b24eSAndroid Build Coastguard Worker// TODO(b/170644498): Improve tooling to remove this duplication.
228*0797b24eSAndroid Build Coastguard Worker//
229*0797b24eSAndroid Build Coastguard Worker// ndk_headers {
230*0797b24eSAndroid Build Coastguard Worker//     name: "ndk_jni.h",
231*0797b24eSAndroid Build Coastguard Worker//     from: "include_jni",
232*0797b24eSAndroid Build Coastguard Worker//     to: "",
233*0797b24eSAndroid Build Coastguard Worker//     srcs: ["include_jni/jni.h"],
234*0797b24eSAndroid Build Coastguard Worker//     license: "NOTICE",
235*0797b24eSAndroid Build Coastguard Worker// }
236*0797b24eSAndroid Build Coastguard Worker//
237*0797b24eSAndroid Build Coastguard Worker// ndk_headers {
238*0797b24eSAndroid Build Coastguard Worker//     name: "libnativehelper_ndk_headers",
239*0797b24eSAndroid Build Coastguard Worker//     from: "include",
240*0797b24eSAndroid Build Coastguard Worker//     to: "",
241*0797b24eSAndroid Build Coastguard Worker//     srcs: ["include/android/*.h"],
242*0797b24eSAndroid Build Coastguard Worker//     license: "NOTICE",
243*0797b24eSAndroid Build Coastguard Worker// }
244*0797b24eSAndroid Build Coastguard Worker//
245*0797b24eSAndroid Build Coastguard Worker// ndk_library {
246*0797b24eSAndroid Build Coastguard Worker//     name: "libnativehelper",
247*0797b24eSAndroid Build Coastguard Worker//     symbol_file: "libnativehelper.map.txt",
248*0797b24eSAndroid Build Coastguard Worker//     first_version: "S",
249*0797b24eSAndroid Build Coastguard Worker// }
250*0797b24eSAndroid Build Coastguard Worker
251*0797b24eSAndroid Build Coastguard Worker//
252*0797b24eSAndroid Build Coastguard Worker// Tests.
253*0797b24eSAndroid Build Coastguard Worker//
254*0797b24eSAndroid Build Coastguard Worker
255*0797b24eSAndroid Build Coastguard Workersubdirs = [
256*0797b24eSAndroid Build Coastguard Worker    "tests",
257*0797b24eSAndroid Build Coastguard Worker    "tests_mts",
258*0797b24eSAndroid Build Coastguard Worker]
259