1// 2// Copyright (C) 2019 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17// libartpalette-system is the implementation of the platform 18// abstraction layer for ART. It is intended to be dynamically loaded by 19// ART which now ships as an APEX and not part of the system. 20package { 21 default_applicable_licenses: ["Android-Apache-2.0"], 22} 23 24cc_library { 25 name: "libartpalette-system", 26 cpp_std: "experimental", 27 compile_multilib: "both", 28 header_libs: [ 29 "libartpalette-headers", 30 "jni_headers", 31 ], 32 host_supported: true, 33 target: { 34 android: { 35 srcs: [ 36 "palette_android.cc", 37 "palette_android_partner.cc", 38 ], 39 header_libs: ["libbase_headers"], 40 shared_libs: [ 41 "libbase", 42 "libcutils", 43 "libdebugstore_cxx", 44 "liblog", 45 "libprocessgroup", 46 "libtombstoned_client", 47 "libselinux", 48 ], 49 }, 50 host: { 51 header_libs: ["libbase_headers"], 52 srcs: ["palette_fake.cc"], 53 shared_libs: ["libbase"], 54 }, 55 darwin: { 56 enabled: false, 57 }, 58 windows: { 59 enabled: false, 60 }, 61 }, 62 static: { 63 enabled: false, 64 }, 65 version_script: "libartpalette.map.txt", 66 stubs: { 67 versions: [ 68 "1", 69 "2", 70 "3", 71 "4", 72 ], 73 symbol_file: "libartpalette.map.txt", 74 }, 75 visibility: [ 76 // Limit visibility to ART. Many functions wrap native libraries without 77 // stable APIs, and if those change drastically it may become hard to 78 // keep the wrappers functional. Hence, while they can never be removed 79 // completely, we can always update the ART module to use other APIs and 80 // then turn them into stubs that only return PALETTE_STATUS_NOT_SUPPORTED. 81 // That makes this library unsuitable for other modules. 82 "//art:__subpackages__", 83 "//libcore:__subpackages__", 84 "//libnativehelper:__subpackages__", 85 86 // Exception: composd calls PaletteCreateOdrefreshStagingDirectory, but 87 // that function doesn't depend on any unstable internal APIs (only libc 88 // and libselinux). 89 "//packages/modules/Virtualization/compos/composd/native", 90 91 // Microdroid needs this library to be able to run odrefresh and dex2oat 92 // in the pVM, but it doesn't make any calls to it itself. 93 "//packages/modules/Virtualization/microdroid", 94 "//visibility:any_system_partition", 95 ], 96} 97 98// Definition of the extended SDK offered by the platform for mainline modules. 99// TODO: this is in the palette directory as it's only being used by ART. 100// It used to be in prebuilts/sdk/mainline, but this doesn't work for ART 101// unbundled which also includes the prebuilts/sdk git repository. We need to find 102// a better location for this SDK, see b/162706448. 103sdk { 104 name: "platform-mainline-sdk", 105 host_supported: true, 106 native_shared_libs: [ 107 "libartpalette-system", 108 ], 109 native_static_libs: [ 110 "libcap", 111 ], 112 target: { 113 darwin: { 114 enabled: false, 115 }, 116 android: { 117 native_shared_libs: [ 118 "heapprofd_client_api", 119 "libbinder_ndk", 120 "liblog", 121 ], 122 native_static_libs: [ 123 "libperfetto_client_experimental", 124 "perfetto_trace_protos", 125 ], 126 }, 127 not_windows: { 128 native_libs: [ 129 "liblog", 130 ], 131 } 132 }, 133} 134 135module_exports { 136 name: "platform-mainline-test-exports", 137 host_supported: false, 138 native_shared_libs: [ 139 // Required by the implementation of libartpalette-system, 140 // which ART uses in replacement of stubs in its testing environment. 141 "libtombstoned_client", 142 ], 143} 144