| // 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 |
| } |
| |
| // This library contains code that is compatible with |
| // both ART and JVM. All code specific to ART should go |
| // inside libnativehelper directly. |
| cc_library_static { |
| name: "libnativehelper_any_vm", |
| defaults: ["libnativehelper_defaults"], |
| host_supported: true, |
| srcs: [ |
| "DlHelp.c", |
| "ExpandableString.c", |
| "JNIHelp.c", |
| "JniInvocation.c", |
| ], |
| export_include_dirs: [ |
| "header_only_include", |
| "include", |
| "include_jni", |
| "include_platform", |
| "include_platform_header_only", |
| ], |
| visibility: ["//frameworks/base/libs/nativehelper_jvm"], |
| stl: "none", |
| apex_available: [ |
| "com.android.art", |
| "com.android.art.debug", |
| ], |
| min_sdk_version: "S", // 31 |
| target: { |
| windows: { |
| enabled: true, |
| }, |
| }, |
| } |
| |
| cc_library_shared { |
| name: "libnativehelper", |
| defaults: ["libnativehelper_defaults"], |
| bootstrap: false, |
| host_supported: true, |
| srcs: [ |
| "JNIPlatformHelp.c", |
| "JniConstants.c", |
| "file_descriptor_jni.c", |
| ], |
| whole_static_libs: ["libnativehelper_any_vm"], |
| export_static_lib_headers: ["libnativehelper_any_vm"], |
| 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", |
| ] |