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