blob: 8bd49c5d6b2deddc596a872de774fb47fff57df4 [file] [log] [blame]
// Copyright (C) 2009 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package {
default_applicable_licenses: ["libnativehelper_license"],
default_team: "trendy_team_art_mainline",
}
// Added automatically by a large-scale-change
// http://go/android-license-faq
license {
name: "libnativehelper_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
],
license_text: [
"NOTICE",
],
}
cc_defaults {
name: "libnativehelper_defaults",
cflags: [
"-fvisibility=protected",
"-std=c11",
],
shared_libs: ["liblog"],
export_shared_lib_headers: ["liblog"],
}
cc_library_headers {
name: "jni_headers",
host_supported: true,
export_include_dirs: ["include_jni"],
native_bridge_supported: true,
product_available: true,
vendor_available: true,
target: {
windows: {
enabled: true,
},
},
apex_available: [
"//apex_available:platform",
"//apex_available:anyapex",
],
ramdisk_available: true,
// recovery_available currently required for libchrome (https://r.android.com/799940).
recovery_available: true,
visibility: ["//visibility:public"],
stl: "none",
system_shared_libs: [],
// The minimum sdk version required by users of this module.
sdk_version: "minimum",
// As part of mainline modules(APEX), it should support at least 29(Q)
min_sdk_version: "29",
}
cc_library_headers {
name: "libnativehelper_header_only",
host_supported: true,
export_include_dirs: [
"header_only_include",
],
header_libs: ["jni_headers"],
export_header_lib_headers: ["jni_headers"],
// As part of mainline modules(APEX), it should support at least 29(Q)
min_sdk_version: "29",
sdk_version: "minimum",
apex_available: [
"//apex_available:platform",
"//apex_available:anyapex",
],
}
cc_library_headers {
name: "jni_platform_headers",
host_supported: true,
export_include_dirs: [
"include_platform_header_only",
],
header_libs: ["jni_headers"],
export_header_lib_headers: ["jni_headers"],
sdk_version: "minimum",
apex_available: [
"//apex_available:platform",
"com.android.art",
"com.android.art.debug",
],
min_sdk_version: "S", // 31
}
cc_library_shared {
name: "libnativehelper",
defaults: ["libnativehelper_defaults"],
bootstrap: false,
host_supported: true,
srcs: [
"DlHelp.c",
"ExpandableString.c",
"JNIHelp.c",
"JNIPlatformHelp.c",
"JniConstants.c",
"JniInvocation.c",
"file_descriptor_jni.c",
],
export_include_dirs: [
"header_only_include",
"include",
"include_jni",
"include_platform",
"include_platform_header_only",
],
stl: "none",
stubs: {
symbol_file: "libnativehelper.map.txt",
versions: ["S"],
},
// Only distributed in the ART Module.
apex_available: [
"com.android.art",
"com.android.art.debug",
],
min_sdk_version: "S", // 31
}
// Lazy loading version of libnativehelper that can be used by code
// that is running before the ART APEX is mounted and
// libnativehelper.so is available.
cc_library_static {
name: "libnativehelper_lazy",
defaults: ["libnativehelper_defaults"],
bootstrap: true,
host_supported: true,
export_include_dirs: [
"header_only_include",
"include",
"include_jni",
"include_platform",
"include_platform_header_only",
],
apex_available: ["//apex_available:platform"],
srcs: ["libnativehelper_lazy.c"],
target: {
linux: {
version_script: "libnativehelper.map.txt",
},
},
}
// NDK-only build for the target (device).
// - Relies only on NDK exposed functionality.
// - This doesn't include JniInvocation.
// - This library is less than 20 KB - it is recommended that callers link it statically.
// - Used to link libc++ (hence the name) but no longer does.
cc_library {
name: "libnativehelper_compat_libc++",
defaults: ["libnativehelper_defaults"],
host_supported: true,
cflags: ["-Werror"],
header_libs: ["jni_headers"],
export_header_lib_headers: ["jni_headers"],
export_include_dirs: [
"header_only_include",
"include",
],
local_include_dirs: [
"include_platform_header_only",
],
srcs: [
"ExpandableString.c",
"JNIHelp.c",
],
min_sdk_version: "29",
sdk_version: "19",
stl: "none",
apex_available: [
"//apex_available:anyapex",
"//apex_available:platform",
],
}
// The NDK module definitions reside in
// system/extras/module_ndk_libs/libnativehelper in platform, with copies of
// these headers and map.txt. Any changes here should be synced there and vice
// versa.
//
// TODO(b/170644498): Improve tooling to remove this duplication.
//
// ndk_headers {
// name: "ndk_jni.h",
// from: "include_jni",
// to: "",
// srcs: ["include_jni/jni.h"],
// license: "NOTICE",
// }
//
// ndk_headers {
// name: "libnativehelper_ndk_headers",
// from: "include",
// to: "",
// srcs: ["include/android/*.h"],
// license: "NOTICE",
// }
//
// ndk_library {
// name: "libnativehelper",
// symbol_file: "libnativehelper.map.txt",
// first_version: "S",
// }
//
// Tests.
//
subdirs = [
"tests",
"tests_mts",
]