xref: /aosp_15_r20/libcore/NativeCode.bp (revision 89a6322812dc8573315e60046e7959c50dad91d4)
1*89a63228SAndroid Build Coastguard Worker// Copyright (C) 2007 The Android Open Source Project
2*89a63228SAndroid Build Coastguard Worker//
3*89a63228SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*89a63228SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*89a63228SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*89a63228SAndroid Build Coastguard Worker//
7*89a63228SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*89a63228SAndroid Build Coastguard Worker//
9*89a63228SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*89a63228SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*89a63228SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*89a63228SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*89a63228SAndroid Build Coastguard Worker// limitations under the License.
14*89a63228SAndroid Build Coastguard Worker
15*89a63228SAndroid Build Coastguard Worker//
16*89a63228SAndroid Build Coastguard Worker// Definitions for building the native code needed for the core library.
17*89a63228SAndroid Build Coastguard Worker//
18*89a63228SAndroid Build Coastguard Worker
19*89a63228SAndroid Build Coastguard Worker// Defaults that apply to all of the modules
20*89a63228SAndroid Build Coastguard Worker
21*89a63228SAndroid Build Coastguard Workercc_defaults {
22*89a63228SAndroid Build Coastguard Worker    name: "core_native_default_flags",
23*89a63228SAndroid Build Coastguard Worker    host_supported: true,
24*89a63228SAndroid Build Coastguard Worker    cflags: [
25*89a63228SAndroid Build Coastguard Worker        "-Wall",
26*89a63228SAndroid Build Coastguard Worker        "-Wextra",
27*89a63228SAndroid Build Coastguard Worker        "-Werror",
28*89a63228SAndroid Build Coastguard Worker    ],
29*89a63228SAndroid Build Coastguard Worker    cppflags: ["-DU_USING_ICU_NAMESPACE=0"],
30*89a63228SAndroid Build Coastguard Worker
31*89a63228SAndroid Build Coastguard Worker    target: {
32*89a63228SAndroid Build Coastguard Worker        darwin: {
33*89a63228SAndroid Build Coastguard Worker            enabled: false,
34*89a63228SAndroid Build Coastguard Worker        },
35*89a63228SAndroid Build Coastguard Worker        windows: {
36*89a63228SAndroid Build Coastguard Worker            enabled: false,
37*89a63228SAndroid Build Coastguard Worker        },
38*89a63228SAndroid Build Coastguard Worker    },
39*89a63228SAndroid Build Coastguard Worker    min_sdk_version: "S",
40*89a63228SAndroid Build Coastguard Worker}
41*89a63228SAndroid Build Coastguard Worker
42*89a63228SAndroid Build Coastguard Workercc_defaults {
43*89a63228SAndroid Build Coastguard Worker    name: "core_native_default_libs",
44*89a63228SAndroid Build Coastguard Worker    header_libs: ["jni_headers"],
45*89a63228SAndroid Build Coastguard Worker    shared_libs: [
46*89a63228SAndroid Build Coastguard Worker        "libbase",
47*89a63228SAndroid Build Coastguard Worker        "liblog",
48*89a63228SAndroid Build Coastguard Worker        "libnativehelper#impl",
49*89a63228SAndroid Build Coastguard Worker    ],
50*89a63228SAndroid Build Coastguard Worker    static_libs: ["libnativehelper_compat_libc++"],
51*89a63228SAndroid Build Coastguard Worker}
52*89a63228SAndroid Build Coastguard Worker
53*89a63228SAndroid Build Coastguard Workercc_library_shared {
54*89a63228SAndroid Build Coastguard Worker    name: "libjavacore",
55*89a63228SAndroid Build Coastguard Worker    visibility: [
56*89a63228SAndroid Build Coastguard Worker        "//art/build/apex",
57*89a63228SAndroid Build Coastguard Worker        "//art/runtime",
58*89a63228SAndroid Build Coastguard Worker        "//art/tools/ahat",
59*89a63228SAndroid Build Coastguard Worker    ],
60*89a63228SAndroid Build Coastguard Worker    apex_available: [
61*89a63228SAndroid Build Coastguard Worker        "com.android.art",
62*89a63228SAndroid Build Coastguard Worker        "com.android.art.debug",
63*89a63228SAndroid Build Coastguard Worker    ],
64*89a63228SAndroid Build Coastguard Worker    defaults: [
65*89a63228SAndroid Build Coastguard Worker        "core_native_default_flags",
66*89a63228SAndroid Build Coastguard Worker        "core_native_default_libs",
67*89a63228SAndroid Build Coastguard Worker    ],
68*89a63228SAndroid Build Coastguard Worker    srcs: [
69*89a63228SAndroid Build Coastguard Worker        ":luni_native_srcs",
70*89a63228SAndroid Build Coastguard Worker    ],
71*89a63228SAndroid Build Coastguard Worker    shared_libs: [
72*89a63228SAndroid Build Coastguard Worker        "libandroidio",
73*89a63228SAndroid Build Coastguard Worker        "libicu",
74*89a63228SAndroid Build Coastguard Worker        "libexpat",
75*89a63228SAndroid Build Coastguard Worker        "libz",
76*89a63228SAndroid Build Coastguard Worker    ],
77*89a63228SAndroid Build Coastguard Worker    static_libs: [
78*89a63228SAndroid Build Coastguard Worker        "libcrypto_for_art",
79*89a63228SAndroid Build Coastguard Worker        "libziparchive",
80*89a63228SAndroid Build Coastguard Worker    ],
81*89a63228SAndroid Build Coastguard Worker    version_script: "libjavacore.map",
82*89a63228SAndroid Build Coastguard Worker}
83*89a63228SAndroid Build Coastguard Worker
84*89a63228SAndroid Build Coastguard Workercc_library_shared {
85*89a63228SAndroid Build Coastguard Worker    name: "libandroidio",
86*89a63228SAndroid Build Coastguard Worker    visibility: [
87*89a63228SAndroid Build Coastguard Worker        "//art/build/apex",
88*89a63228SAndroid Build Coastguard Worker        "//art/build/sdk",
89*89a63228SAndroid Build Coastguard Worker        "//art/tools/ahat",
90*89a63228SAndroid Build Coastguard Worker        "//external/conscrypt",
91*89a63228SAndroid Build Coastguard Worker    ],
92*89a63228SAndroid Build Coastguard Worker    apex_available: [
93*89a63228SAndroid Build Coastguard Worker        "com.android.art",
94*89a63228SAndroid Build Coastguard Worker        "com.android.art.debug",
95*89a63228SAndroid Build Coastguard Worker    ],
96*89a63228SAndroid Build Coastguard Worker    defaults: [
97*89a63228SAndroid Build Coastguard Worker        "core_native_default_flags",
98*89a63228SAndroid Build Coastguard Worker    ],
99*89a63228SAndroid Build Coastguard Worker    shared_libs: [
100*89a63228SAndroid Build Coastguard Worker        "liblog",
101*89a63228SAndroid Build Coastguard Worker    ],
102*89a63228SAndroid Build Coastguard Worker    srcs: [
103*89a63228SAndroid Build Coastguard Worker        ":libandroidio_srcs",
104*89a63228SAndroid Build Coastguard Worker    ],
105*89a63228SAndroid Build Coastguard Worker    stubs: {
106*89a63228SAndroid Build Coastguard Worker        symbol_file: "libandroidio.map.txt",
107*89a63228SAndroid Build Coastguard Worker        versions: ["1"],
108*89a63228SAndroid Build Coastguard Worker    },
109*89a63228SAndroid Build Coastguard Worker}
110*89a63228SAndroid Build Coastguard Worker
111*89a63228SAndroid Build Coastguard Workercc_defaults {
112*89a63228SAndroid Build Coastguard Worker    name: "libopenjdk_native_defaults",
113*89a63228SAndroid Build Coastguard Worker    defaults: [
114*89a63228SAndroid Build Coastguard Worker        "core_native_default_flags",
115*89a63228SAndroid Build Coastguard Worker        "core_native_default_libs",
116*89a63228SAndroid Build Coastguard Worker    ],
117*89a63228SAndroid Build Coastguard Worker    srcs: [":libopenjdk_native_srcs"],
118*89a63228SAndroid Build Coastguard Worker    local_include_dirs: [
119*89a63228SAndroid Build Coastguard Worker        "luni/src/main/native",
120*89a63228SAndroid Build Coastguard Worker    ],
121*89a63228SAndroid Build Coastguard Worker    cflags: [
122*89a63228SAndroid Build Coastguard Worker        // TODO(narayan): Prune down this list of exclusions once the underlying
123*89a63228SAndroid Build Coastguard Worker        // issues have been fixed. Most of these are small changes except for
124*89a63228SAndroid Build Coastguard Worker        // -Wunused-parameter.
125*89a63228SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
126*89a63228SAndroid Build Coastguard Worker        "-Wno-unused-variable",
127*89a63228SAndroid Build Coastguard Worker        "-Wno-parentheses-equality",
128*89a63228SAndroid Build Coastguard Worker        "-Wno-constant-logical-operand",
129*89a63228SAndroid Build Coastguard Worker        "-Wno-sometimes-uninitialized",
130*89a63228SAndroid Build Coastguard Worker    ],
131*89a63228SAndroid Build Coastguard Worker
132*89a63228SAndroid Build Coastguard Worker    shared_libs: [
133*89a63228SAndroid Build Coastguard Worker        "libandroidio",
134*89a63228SAndroid Build Coastguard Worker        "libicu",
135*89a63228SAndroid Build Coastguard Worker        "libz",
136*89a63228SAndroid Build Coastguard Worker    ],
137*89a63228SAndroid Build Coastguard Worker    static_libs: [
138*89a63228SAndroid Build Coastguard Worker        "libcrypto_for_art",
139*89a63228SAndroid Build Coastguard Worker        "libfdlibm",
140*89a63228SAndroid Build Coastguard Worker    ],
141*89a63228SAndroid Build Coastguard Worker
142*89a63228SAndroid Build Coastguard Worker    target: {
143*89a63228SAndroid Build Coastguard Worker        musl: {
144*89a63228SAndroid Build Coastguard Worker            cflags: [
145*89a63228SAndroid Build Coastguard Worker                // Sigh.
146*89a63228SAndroid Build Coastguard Worker                "-D_LARGEFILE64_SOURCE",
147*89a63228SAndroid Build Coastguard Worker                "-D_GNU_SOURCE",
148*89a63228SAndroid Build Coastguard Worker                "-DLINUX",
149*89a63228SAndroid Build Coastguard Worker            ],
150*89a63228SAndroid Build Coastguard Worker        },
151*89a63228SAndroid Build Coastguard Worker        glibc: {
152*89a63228SAndroid Build Coastguard Worker            cflags: [
153*89a63228SAndroid Build Coastguard Worker                "-D__GLIBC__",
154*89a63228SAndroid Build Coastguard Worker                // Sigh.
155*89a63228SAndroid Build Coastguard Worker                "-D_LARGEFILE64_SOURCE",
156*89a63228SAndroid Build Coastguard Worker                "-D_GNU_SOURCE",
157*89a63228SAndroid Build Coastguard Worker                "-DLINUX",
158*89a63228SAndroid Build Coastguard Worker            ],
159*89a63228SAndroid Build Coastguard Worker        },
160*89a63228SAndroid Build Coastguard Worker        android: {
161*89a63228SAndroid Build Coastguard Worker            shared_libs: [
162*89a63228SAndroid Build Coastguard Worker                "libdl_android",
163*89a63228SAndroid Build Coastguard Worker            ],
164*89a63228SAndroid Build Coastguard Worker        },
165*89a63228SAndroid Build Coastguard Worker    },
166*89a63228SAndroid Build Coastguard Worker}
167*89a63228SAndroid Build Coastguard Worker
168*89a63228SAndroid Build Coastguard Workercc_library_shared {
169*89a63228SAndroid Build Coastguard Worker    name: "libopenjdk",
170*89a63228SAndroid Build Coastguard Worker    visibility: [
171*89a63228SAndroid Build Coastguard Worker        "//art/build/apex",
172*89a63228SAndroid Build Coastguard Worker        "//art/tools/ahat",
173*89a63228SAndroid Build Coastguard Worker    ],
174*89a63228SAndroid Build Coastguard Worker    apex_available: [
175*89a63228SAndroid Build Coastguard Worker        "com.android.art",
176*89a63228SAndroid Build Coastguard Worker        "com.android.art.debug",
177*89a63228SAndroid Build Coastguard Worker    ],
178*89a63228SAndroid Build Coastguard Worker    defaults: ["libopenjdk_native_defaults"],
179*89a63228SAndroid Build Coastguard Worker    shared_libs: [
180*89a63228SAndroid Build Coastguard Worker        "libopenjdkjvm",
181*89a63228SAndroid Build Coastguard Worker    ],
182*89a63228SAndroid Build Coastguard Worker}
183*89a63228SAndroid Build Coastguard Worker
184*89a63228SAndroid Build Coastguard Worker// Debug version of libopenjdk. Depends on libopenjdkjvmd.
185*89a63228SAndroid Build Coastguard Workercc_library_shared {
186*89a63228SAndroid Build Coastguard Worker    name: "libopenjdkd",
187*89a63228SAndroid Build Coastguard Worker    visibility: [
188*89a63228SAndroid Build Coastguard Worker        "//art/build/apex",
189*89a63228SAndroid Build Coastguard Worker        "//art/tools/ahat",
190*89a63228SAndroid Build Coastguard Worker    ],
191*89a63228SAndroid Build Coastguard Worker    apex_available: [
192*89a63228SAndroid Build Coastguard Worker        "com.android.art.debug",
193*89a63228SAndroid Build Coastguard Worker    ],
194*89a63228SAndroid Build Coastguard Worker    defaults: ["libopenjdk_native_defaults"],
195*89a63228SAndroid Build Coastguard Worker    shared_libs: [
196*89a63228SAndroid Build Coastguard Worker        "libopenjdkjvmd",
197*89a63228SAndroid Build Coastguard Worker    ],
198*89a63228SAndroid Build Coastguard Worker}
199*89a63228SAndroid Build Coastguard Worker
200*89a63228SAndroid Build Coastguard Worker// Test JNI library.
201*89a63228SAndroid Build Coastguard Workercc_library_shared {
202*89a63228SAndroid Build Coastguard Worker    name: "libjavacoretests",
203*89a63228SAndroid Build Coastguard Worker    visibility: [
204*89a63228SAndroid Build Coastguard Worker        "//art/build/sdk",
205*89a63228SAndroid Build Coastguard Worker        "//cts/tests/libcore/luni",
206*89a63228SAndroid Build Coastguard Worker    ],
207*89a63228SAndroid Build Coastguard Worker    defaults: ["core_native_default_flags"],
208*89a63228SAndroid Build Coastguard Worker    host_supported: true,
209*89a63228SAndroid Build Coastguard Worker
210*89a63228SAndroid Build Coastguard Worker    srcs: [
211*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_dalvik_system_JniTest.cpp",
212*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_java_io_FileTest.cpp",
213*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_java_lang_OldStackTraceElementTest.cpp",
214*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_java_lang_ThreadTest.cpp",
215*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_java_nio_BufferTest.cpp",
216*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_java_time_TimeApisConsistencyTest.cpp",
217*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_libcore_util_NativeAllocationRegistryTest.cpp",
218*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/tests_support_AndroidProperties.cpp",
219*89a63228SAndroid Build Coastguard Worker    ],
220*89a63228SAndroid Build Coastguard Worker    shared_libs: [
221*89a63228SAndroid Build Coastguard Worker        "liblog",
222*89a63228SAndroid Build Coastguard Worker        "libnativehelper",
223*89a63228SAndroid Build Coastguard Worker    ],
224*89a63228SAndroid Build Coastguard Worker    static_libs: [
225*89a63228SAndroid Build Coastguard Worker        "libbase",
226*89a63228SAndroid Build Coastguard Worker    ],
227*89a63228SAndroid Build Coastguard Worker}
228*89a63228SAndroid Build Coastguard Worker
229*89a63228SAndroid Build Coastguard Worker// Set of gtest unit tests.
230*89a63228SAndroid Build Coastguard Workercc_test {
231*89a63228SAndroid Build Coastguard Worker    name: "libjavacore-unit-tests",
232*89a63228SAndroid Build Coastguard Worker    defaults: ["core_native_default_flags"],
233*89a63228SAndroid Build Coastguard Worker
234*89a63228SAndroid Build Coastguard Worker    // TODO(b/172480617): Fix this source dependency from
235*89a63228SAndroid Build Coastguard Worker    // platform_testing/build/tasks/tests/native_test_list.mk.
236*89a63228SAndroid Build Coastguard Worker    enabled: true,
237*89a63228SAndroid Build Coastguard Worker
238*89a63228SAndroid Build Coastguard Worker    // Add -fno-builtin so that the compiler doesn't attempt to inline
239*89a63228SAndroid Build Coastguard Worker    // memcpy calls that are not really aligned.
240*89a63228SAndroid Build Coastguard Worker    cflags: ["-fno-builtin"],
241*89a63228SAndroid Build Coastguard Worker    srcs: [
242*89a63228SAndroid Build Coastguard Worker        "luni/src/test/native/libcore_io_Memory_test.cpp",
243*89a63228SAndroid Build Coastguard Worker        // libcore_io_Memory_test.cpp includes libcore_io_Memory.cpp which
244*89a63228SAndroid Build Coastguard Worker        // depends on JniConstants.cpp (but these are not used in the tests).
245*89a63228SAndroid Build Coastguard Worker        "luni/src/main/native/JniConstants.cpp",
246*89a63228SAndroid Build Coastguard Worker    ],
247*89a63228SAndroid Build Coastguard Worker
248*89a63228SAndroid Build Coastguard Worker    shared_libs: [
249*89a63228SAndroid Build Coastguard Worker        "liblog",
250*89a63228SAndroid Build Coastguard Worker        "libnativehelper",
251*89a63228SAndroid Build Coastguard Worker    ],
252*89a63228SAndroid Build Coastguard Worker
253*89a63228SAndroid Build Coastguard Worker    static_libs: ["libnativehelper_compat_libc++"],
254*89a63228SAndroid Build Coastguard Worker}
255*89a63228SAndroid Build Coastguard Worker
256*89a63228SAndroid Build Coastguard Worker// Set of benchmarks for libjavacore functions.
257*89a63228SAndroid Build Coastguard Workercc_benchmark {
258*89a63228SAndroid Build Coastguard Worker    name: "libjavacore-benchmarks",
259*89a63228SAndroid Build Coastguard Worker    defaults: ["core_native_default_flags"],
260*89a63228SAndroid Build Coastguard Worker
261*89a63228SAndroid Build Coastguard Worker    // TODO(b/172480617): Fix this source dependency from
262*89a63228SAndroid Build Coastguard Worker    // platform_testing/build/tasks/tests/native_metric_test_list.mk.
263*89a63228SAndroid Build Coastguard Worker    enabled: true,
264*89a63228SAndroid Build Coastguard Worker
265*89a63228SAndroid Build Coastguard Worker    srcs: [
266*89a63228SAndroid Build Coastguard Worker        "luni/src/benchmark/native/libcore_io_Memory_bench.cpp",
267*89a63228SAndroid Build Coastguard Worker        // libcore_io_Memory_bench.cpp includes libcore_io_Memory.cpp which
268*89a63228SAndroid Build Coastguard Worker        // depends on JniConstants.cpp (but these are not used in the benchmark).
269*89a63228SAndroid Build Coastguard Worker        "luni/src/main/native/JniConstants.cpp",
270*89a63228SAndroid Build Coastguard Worker    ],
271*89a63228SAndroid Build Coastguard Worker    test_suites: ["device-tests"],
272*89a63228SAndroid Build Coastguard Worker
273*89a63228SAndroid Build Coastguard Worker    shared_libs: [
274*89a63228SAndroid Build Coastguard Worker        "liblog",
275*89a63228SAndroid Build Coastguard Worker        "libnativehelper",
276*89a63228SAndroid Build Coastguard Worker    ],
277*89a63228SAndroid Build Coastguard Worker}
278