// 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"], } // 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"], } 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", } 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", } // 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), using libc++. // - Relies only on NDK exposed functionality. // - This doesn't include JniInvocation. // cc_library { name: "libnativehelper_compat_libc++", defaults: ["libnativehelper_defaults"], header_libs: ["jni_headers"], cflags: ["-Werror"], export_header_lib_headers: ["jni_headers"], export_include_dirs: [ "header_only_include", "include", ], host_supported: true, local_include_dirs: [ "header_only_include", "include_platform_header_only", ], srcs: [ "ExpandableString.c", "JNIHelp.c", ], min_sdk_version: "29", sdk_version: "19", stl: "none", apex_available: [ "//apex_available:platform", "com.android.art", "com.android.art.debug", "com.android.extservices", "com.android.tethering", ], visibility: [ "//art:__subpackages__", "//cts:__subpackages__", "//external/perfetto:__subpackages__", "//frameworks/base/packages/Connectivity/tests/integration:__pkg__", "//frameworks/base/packages/ConnectivityT:__subpackages__", // TODO: remove after code move "//frameworks/base/packages/Tethering:__subpackages__", "//frameworks/libs/net/common/native/bpfmapjni", "//frameworks/libs/net/common/native/bpfutiljni", "//libcore:__subpackages__", "//packages/modules/Connectivity:__subpackages__", "//packages/modules/ExtServices:__subpackages__", "//packages/modules/NetworkStack:__subpackages__", ":__subpackages__", ], } // 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", ]