1*e7c364b6SAndroid Build Coastguard Worker// Copyright (C) 2018 The Android Open Source Project 2*e7c364b6SAndroid Build Coastguard Worker// 3*e7c364b6SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*e7c364b6SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*e7c364b6SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*e7c364b6SAndroid Build Coastguard Worker// 7*e7c364b6SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*e7c364b6SAndroid Build Coastguard Worker// 9*e7c364b6SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*e7c364b6SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*e7c364b6SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*e7c364b6SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*e7c364b6SAndroid Build Coastguard Worker// limitations under the License. 14*e7c364b6SAndroid Build Coastguard Worker 15*e7c364b6SAndroid Build Coastguard Worker// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE 16*e7c364b6SAndroid Build Coastguard Worker// CONSULT THE OWNERS AND [email protected] BEFORE 17*e7c364b6SAndroid Build Coastguard Worker// DEPENDING ON IT IN YOUR PROJECT. *** 18*e7c364b6SAndroid Build Coastguard Workerpackage { 19*e7c364b6SAndroid Build Coastguard Worker default_applicable_licenses: ["bootable_recovery_license"], 20*e7c364b6SAndroid Build Coastguard Worker} 21*e7c364b6SAndroid Build Coastguard Worker 22*e7c364b6SAndroid Build Coastguard Worker// Added automatically by a large-scale-change that took the approach of 23*e7c364b6SAndroid Build Coastguard Worker// 'apply every license found to every target'. While this makes sure we respect 24*e7c364b6SAndroid Build Coastguard Worker// every license restriction, it may not be entirely correct. 25*e7c364b6SAndroid Build Coastguard Worker// 26*e7c364b6SAndroid Build Coastguard Worker// e.g. GPL in an MIT project might only apply to the contrib/ directory. 27*e7c364b6SAndroid Build Coastguard Worker// 28*e7c364b6SAndroid Build Coastguard Worker// Please consider splitting the single license below into multiple licenses, 29*e7c364b6SAndroid Build Coastguard Worker// taking care not to lose any license_kind information, and overriding the 30*e7c364b6SAndroid Build Coastguard Worker// default license using the 'licenses: [...]' property on targets as needed. 31*e7c364b6SAndroid Build Coastguard Worker// 32*e7c364b6SAndroid Build Coastguard Worker// For unused files, consider creating a 'fileGroup' with "//visibility:private" 33*e7c364b6SAndroid Build Coastguard Worker// to attach the license to, and including a comment whether the files may be 34*e7c364b6SAndroid Build Coastguard Worker// used in the current project. 35*e7c364b6SAndroid Build Coastguard Worker// See: http://go/android-license-faq 36*e7c364b6SAndroid Build Coastguard Workerlicense { 37*e7c364b6SAndroid Build Coastguard Worker name: "bootable_recovery_license", 38*e7c364b6SAndroid Build Coastguard Worker visibility: [ 39*e7c364b6SAndroid Build Coastguard Worker ":__subpackages__", 40*e7c364b6SAndroid Build Coastguard Worker "//bootable/deprecated-ota:__subpackages__", 41*e7c364b6SAndroid Build Coastguard Worker ], 42*e7c364b6SAndroid Build Coastguard Worker license_kinds: [ 43*e7c364b6SAndroid Build Coastguard Worker "SPDX-license-identifier-Apache-2.0", 44*e7c364b6SAndroid Build Coastguard Worker "SPDX-license-identifier-MIT", 45*e7c364b6SAndroid Build Coastguard Worker "SPDX-license-identifier-OFL", // by exception only 46*e7c364b6SAndroid Build Coastguard Worker ], 47*e7c364b6SAndroid Build Coastguard Worker license_text: [ 48*e7c364b6SAndroid Build Coastguard Worker "NOTICE", 49*e7c364b6SAndroid Build Coastguard Worker ], 50*e7c364b6SAndroid Build Coastguard Worker} 51*e7c364b6SAndroid Build Coastguard Worker 52*e7c364b6SAndroid Build Coastguard Workersoong_config_module_type { 53*e7c364b6SAndroid Build Coastguard Worker name: "recovery_cc_defaults", 54*e7c364b6SAndroid Build Coastguard Worker module_type: "cc_defaults", 55*e7c364b6SAndroid Build Coastguard Worker config_namespace: "recovery", 56*e7c364b6SAndroid Build Coastguard Worker value_variables: ["recovery_api_version"], 57*e7c364b6SAndroid Build Coastguard Worker properties: [ 58*e7c364b6SAndroid Build Coastguard Worker "cflags", 59*e7c364b6SAndroid Build Coastguard Worker ], 60*e7c364b6SAndroid Build Coastguard Worker} 61*e7c364b6SAndroid Build Coastguard Worker 62*e7c364b6SAndroid Build Coastguard Workerrecovery_cc_defaults { 63*e7c364b6SAndroid Build Coastguard Worker name: "recovery_defaults", 64*e7c364b6SAndroid Build Coastguard Worker 65*e7c364b6SAndroid Build Coastguard Worker soong_config_variables: { 66*e7c364b6SAndroid Build Coastguard Worker recovery_api_version: { 67*e7c364b6SAndroid Build Coastguard Worker cflags: [ 68*e7c364b6SAndroid Build Coastguard Worker "-D_FILE_OFFSET_BITS=64", 69*e7c364b6SAndroid Build Coastguard Worker // Must be the same as RECOVERY_API_VERSION. 70*e7c364b6SAndroid Build Coastguard Worker "-DRECOVERY_API_VERSION=%s", 71*e7c364b6SAndroid Build Coastguard Worker "-Wall", 72*e7c364b6SAndroid Build Coastguard Worker "-Werror", 73*e7c364b6SAndroid Build Coastguard Worker ], 74*e7c364b6SAndroid Build Coastguard Worker }, 75*e7c364b6SAndroid Build Coastguard Worker }, 76*e7c364b6SAndroid Build Coastguard Worker} 77*e7c364b6SAndroid Build Coastguard Worker 78*e7c364b6SAndroid Build Coastguard Workercc_library_static { 79*e7c364b6SAndroid Build Coastguard Worker name: "librecovery_fastboot", 80*e7c364b6SAndroid Build Coastguard Worker recovery_available: true, 81*e7c364b6SAndroid Build Coastguard Worker defaults: [ 82*e7c364b6SAndroid Build Coastguard Worker "recovery_defaults", 83*e7c364b6SAndroid Build Coastguard Worker ], 84*e7c364b6SAndroid Build Coastguard Worker 85*e7c364b6SAndroid Build Coastguard Worker srcs: [ 86*e7c364b6SAndroid Build Coastguard Worker "fastboot/fastboot.cpp", 87*e7c364b6SAndroid Build Coastguard Worker ], 88*e7c364b6SAndroid Build Coastguard Worker 89*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 90*e7c364b6SAndroid Build Coastguard Worker "libbase", 91*e7c364b6SAndroid Build Coastguard Worker "libbootloader_message", 92*e7c364b6SAndroid Build Coastguard Worker "libcutils", 93*e7c364b6SAndroid Build Coastguard Worker "liblog", 94*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui", 95*e7c364b6SAndroid Build Coastguard Worker ], 96*e7c364b6SAndroid Build Coastguard Worker 97*e7c364b6SAndroid Build Coastguard Worker static_libs: [ 98*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui_default", 99*e7c364b6SAndroid Build Coastguard Worker ], 100*e7c364b6SAndroid Build Coastguard Worker} 101*e7c364b6SAndroid Build Coastguard Worker 102*e7c364b6SAndroid Build Coastguard Workercc_defaults { 103*e7c364b6SAndroid Build Coastguard Worker name: "librecovery_defaults", 104*e7c364b6SAndroid Build Coastguard Worker 105*e7c364b6SAndroid Build Coastguard Worker defaults: [ 106*e7c364b6SAndroid Build Coastguard Worker "recovery_defaults", 107*e7c364b6SAndroid Build Coastguard Worker ], 108*e7c364b6SAndroid Build Coastguard Worker 109*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 110*e7c364b6SAndroid Build Coastguard Worker "[email protected]", 111*e7c364b6SAndroid Build Coastguard Worker "[email protected]", 112*e7c364b6SAndroid Build Coastguard Worker "android.hardware.boot-V1-ndk", 113*e7c364b6SAndroid Build Coastguard Worker "libboot_control_client", 114*e7c364b6SAndroid Build Coastguard Worker "libbase", 115*e7c364b6SAndroid Build Coastguard Worker "libbootloader_message", 116*e7c364b6SAndroid Build Coastguard Worker "libcrypto", 117*e7c364b6SAndroid Build Coastguard Worker "libcutils", 118*e7c364b6SAndroid Build Coastguard Worker "libfs_mgr", 119*e7c364b6SAndroid Build Coastguard Worker "liblp", 120*e7c364b6SAndroid Build Coastguard Worker "liblog", 121*e7c364b6SAndroid Build Coastguard Worker "libprotobuf-cpp-lite", 122*e7c364b6SAndroid Build Coastguard Worker "libziparchive", 123*e7c364b6SAndroid Build Coastguard Worker ], 124*e7c364b6SAndroid Build Coastguard Worker 125*e7c364b6SAndroid Build Coastguard Worker static_libs: [ 126*e7c364b6SAndroid Build Coastguard Worker "libinstall", 127*e7c364b6SAndroid Build Coastguard Worker "librecovery_fastboot", 128*e7c364b6SAndroid Build Coastguard Worker "libminui", 129*e7c364b6SAndroid Build Coastguard Worker "librecovery_utils", 130*e7c364b6SAndroid Build Coastguard Worker "libotautil", 131*e7c364b6SAndroid Build Coastguard Worker "libsnapshot_nobinder", 132*e7c364b6SAndroid Build Coastguard Worker "libsnapshot_cow", 133*e7c364b6SAndroid Build Coastguard Worker "liblz4", 134*e7c364b6SAndroid Build Coastguard Worker "libzstd", 135*e7c364b6SAndroid Build Coastguard Worker "update_metadata-protos", 136*e7c364b6SAndroid Build Coastguard Worker ], 137*e7c364b6SAndroid Build Coastguard Worker} 138*e7c364b6SAndroid Build Coastguard Worker 139*e7c364b6SAndroid Build Coastguard Workercc_library_static { 140*e7c364b6SAndroid Build Coastguard Worker name: "librecovery", 141*e7c364b6SAndroid Build Coastguard Worker recovery_available: true, 142*e7c364b6SAndroid Build Coastguard Worker 143*e7c364b6SAndroid Build Coastguard Worker defaults: [ 144*e7c364b6SAndroid Build Coastguard Worker "librecovery_defaults", 145*e7c364b6SAndroid Build Coastguard Worker ], 146*e7c364b6SAndroid Build Coastguard Worker 147*e7c364b6SAndroid Build Coastguard Worker srcs: [ 148*e7c364b6SAndroid Build Coastguard Worker "recovery.cpp", 149*e7c364b6SAndroid Build Coastguard Worker ], 150*e7c364b6SAndroid Build Coastguard Worker 151*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 152*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui", 153*e7c364b6SAndroid Build Coastguard Worker ], 154*e7c364b6SAndroid Build Coastguard Worker} 155*e7c364b6SAndroid Build Coastguard Worker 156*e7c364b6SAndroid Build Coastguard Workerprebuilt_etc { 157*e7c364b6SAndroid Build Coastguard Worker name: "init_recovery.rc", 158*e7c364b6SAndroid Build Coastguard Worker filename: "init.rc", 159*e7c364b6SAndroid Build Coastguard Worker src: "etc/init.rc", 160*e7c364b6SAndroid Build Coastguard Worker sub_dir: "init/hw", 161*e7c364b6SAndroid Build Coastguard Worker recovery: true, 162*e7c364b6SAndroid Build Coastguard Worker} 163*e7c364b6SAndroid Build Coastguard Worker 164*e7c364b6SAndroid Build Coastguard Workercc_binary { 165*e7c364b6SAndroid Build Coastguard Worker name: "recovery", 166*e7c364b6SAndroid Build Coastguard Worker recovery: true, 167*e7c364b6SAndroid Build Coastguard Worker 168*e7c364b6SAndroid Build Coastguard Worker defaults: [ 169*e7c364b6SAndroid Build Coastguard Worker "libinstall_defaults", 170*e7c364b6SAndroid Build Coastguard Worker "librecovery_defaults", 171*e7c364b6SAndroid Build Coastguard Worker "librecovery_utils_defaults", 172*e7c364b6SAndroid Build Coastguard Worker ], 173*e7c364b6SAndroid Build Coastguard Worker 174*e7c364b6SAndroid Build Coastguard Worker srcs: [ 175*e7c364b6SAndroid Build Coastguard Worker "recovery_main.cpp", 176*e7c364b6SAndroid Build Coastguard Worker ], 177*e7c364b6SAndroid Build Coastguard Worker 178*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 179*e7c364b6SAndroid Build Coastguard Worker "android.hardware.health-V4-ndk", // from librecovery_utils 180*e7c364b6SAndroid Build Coastguard Worker "android.hardware.boot-V1-ndk", 181*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui", 182*e7c364b6SAndroid Build Coastguard Worker ], 183*e7c364b6SAndroid Build Coastguard Worker 184*e7c364b6SAndroid Build Coastguard Worker static_libs: [ 185*e7c364b6SAndroid Build Coastguard Worker "librecovery", 186*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui_default", 187*e7c364b6SAndroid Build Coastguard Worker ], 188*e7c364b6SAndroid Build Coastguard Worker 189*e7c364b6SAndroid Build Coastguard Worker required: [ 190*e7c364b6SAndroid Build Coastguard Worker "e2fsdroid.recovery", 191*e7c364b6SAndroid Build Coastguard Worker "init_recovery.rc", 192*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui_ext", 193*e7c364b6SAndroid Build Coastguard Worker "minadbd", 194*e7c364b6SAndroid Build Coastguard Worker "mke2fs.conf.recovery", 195*e7c364b6SAndroid Build Coastguard Worker "mke2fs.recovery", 196*e7c364b6SAndroid Build Coastguard Worker "recovery_deps", 197*e7c364b6SAndroid Build Coastguard Worker "ueventd.rc.recovery", 198*e7c364b6SAndroid Build Coastguard Worker ], 199*e7c364b6SAndroid Build Coastguard Worker} 200*e7c364b6SAndroid Build Coastguard Worker 201*e7c364b6SAndroid Build Coastguard Worker// The dynamic executable that runs after /data mounts. 202*e7c364b6SAndroid Build Coastguard Workercc_binary { 203*e7c364b6SAndroid Build Coastguard Worker name: "recovery-persist", 204*e7c364b6SAndroid Build Coastguard Worker 205*e7c364b6SAndroid Build Coastguard Worker defaults: [ 206*e7c364b6SAndroid Build Coastguard Worker "recovery_defaults", 207*e7c364b6SAndroid Build Coastguard Worker ], 208*e7c364b6SAndroid Build Coastguard Worker 209*e7c364b6SAndroid Build Coastguard Worker srcs: [ 210*e7c364b6SAndroid Build Coastguard Worker "recovery-persist.cpp", 211*e7c364b6SAndroid Build Coastguard Worker ], 212*e7c364b6SAndroid Build Coastguard Worker 213*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 214*e7c364b6SAndroid Build Coastguard Worker "libbase", 215*e7c364b6SAndroid Build Coastguard Worker "liblog", 216*e7c364b6SAndroid Build Coastguard Worker ], 217*e7c364b6SAndroid Build Coastguard Worker 218*e7c364b6SAndroid Build Coastguard Worker static_libs: [ 219*e7c364b6SAndroid Build Coastguard Worker "librecovery_utils", 220*e7c364b6SAndroid Build Coastguard Worker ], 221*e7c364b6SAndroid Build Coastguard Worker 222*e7c364b6SAndroid Build Coastguard Worker init_rc: [ 223*e7c364b6SAndroid Build Coastguard Worker "recovery-persist.rc", 224*e7c364b6SAndroid Build Coastguard Worker ], 225*e7c364b6SAndroid Build Coastguard Worker} 226*e7c364b6SAndroid Build Coastguard Worker 227*e7c364b6SAndroid Build Coastguard Worker// The dynamic executable that runs at init. 228*e7c364b6SAndroid Build Coastguard Workercc_binary { 229*e7c364b6SAndroid Build Coastguard Worker name: "recovery-refresh", 230*e7c364b6SAndroid Build Coastguard Worker 231*e7c364b6SAndroid Build Coastguard Worker defaults: [ 232*e7c364b6SAndroid Build Coastguard Worker "recovery_defaults", 233*e7c364b6SAndroid Build Coastguard Worker ], 234*e7c364b6SAndroid Build Coastguard Worker 235*e7c364b6SAndroid Build Coastguard Worker srcs: [ 236*e7c364b6SAndroid Build Coastguard Worker "recovery-refresh.cpp", 237*e7c364b6SAndroid Build Coastguard Worker ], 238*e7c364b6SAndroid Build Coastguard Worker 239*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 240*e7c364b6SAndroid Build Coastguard Worker "libbase", 241*e7c364b6SAndroid Build Coastguard Worker "liblog", 242*e7c364b6SAndroid Build Coastguard Worker ], 243*e7c364b6SAndroid Build Coastguard Worker 244*e7c364b6SAndroid Build Coastguard Worker static_libs: [ 245*e7c364b6SAndroid Build Coastguard Worker "librecovery_utils", 246*e7c364b6SAndroid Build Coastguard Worker ], 247*e7c364b6SAndroid Build Coastguard Worker 248*e7c364b6SAndroid Build Coastguard Worker init_rc: [ 249*e7c364b6SAndroid Build Coastguard Worker "recovery-refresh.rc", 250*e7c364b6SAndroid Build Coastguard Worker ], 251*e7c364b6SAndroid Build Coastguard Worker} 252*e7c364b6SAndroid Build Coastguard Worker 253*e7c364b6SAndroid Build Coastguard Workerfilegroup { 254*e7c364b6SAndroid Build Coastguard Worker name: "res-testdata", 255*e7c364b6SAndroid Build Coastguard Worker 256*e7c364b6SAndroid Build Coastguard Worker srcs: [ 257*e7c364b6SAndroid Build Coastguard Worker "res-*/images/*_text.png", 258*e7c364b6SAndroid Build Coastguard Worker ], 259*e7c364b6SAndroid Build Coastguard Worker} 260*e7c364b6SAndroid Build Coastguard Worker 261*e7c364b6SAndroid Build Coastguard Worker// recovery_deps: A phony target that's depended on by `recovery`, which 262*e7c364b6SAndroid Build Coastguard Worker// builds additional modules conditionally based on Makefile variables. 263*e7c364b6SAndroid Build Coastguard Workerphony { 264*e7c364b6SAndroid Build Coastguard Worker name: "recovery_deps", 265*e7c364b6SAndroid Build Coastguard Worker recovery: true, 266*e7c364b6SAndroid Build Coastguard Worker required: [ 267*e7c364b6SAndroid Build Coastguard Worker "mkfs.erofs.recovery", 268*e7c364b6SAndroid Build Coastguard Worker "dump.erofs.recovery", 269*e7c364b6SAndroid Build Coastguard Worker "fsck.erofs.recovery", 270*e7c364b6SAndroid Build Coastguard Worker // On A/B devices recovery-persist reads the recovery related file from the persist storage and 271*e7c364b6SAndroid Build Coastguard Worker // copies them into /data/misc/recovery. Then, for both A/B and non-A/B devices, recovery-persist 272*e7c364b6SAndroid Build Coastguard Worker // parses the last_install file and reports the embedded update metrics. Also, the last_install file 273*e7c364b6SAndroid Build Coastguard Worker // will be deteleted after the report. 274*e7c364b6SAndroid Build Coastguard Worker "recovery-persist", 275*e7c364b6SAndroid Build Coastguard Worker ] + select(soong_config_variable("recovery", "target_userimages_use_f2fs"), { 276*e7c364b6SAndroid Build Coastguard Worker true: [ 277*e7c364b6SAndroid Build Coastguard Worker "make_f2fs.recovery", 278*e7c364b6SAndroid Build Coastguard Worker "fsck.f2fs.recovery", 279*e7c364b6SAndroid Build Coastguard Worker "sload_f2fs.recovery", 280*e7c364b6SAndroid Build Coastguard Worker ], 281*e7c364b6SAndroid Build Coastguard Worker default: [], 282*e7c364b6SAndroid Build Coastguard Worker }) + select(soong_config_variable("recovery", "has_board_cacheimage_partition_size"), { 283*e7c364b6SAndroid Build Coastguard Worker false: ["recovery-refresh"], 284*e7c364b6SAndroid Build Coastguard Worker default: [], 285*e7c364b6SAndroid Build Coastguard Worker }), 286*e7c364b6SAndroid Build Coastguard Worker} 287*e7c364b6SAndroid Build Coastguard Worker 288*e7c364b6SAndroid Build Coastguard Workercc_library_shared { 289*e7c364b6SAndroid Build Coastguard Worker name: "librecovery_ui_ext", 290*e7c364b6SAndroid Build Coastguard Worker recovery: true, 291*e7c364b6SAndroid Build Coastguard Worker install_in_root: true, 292*e7c364b6SAndroid Build Coastguard Worker multilib: { 293*e7c364b6SAndroid Build Coastguard Worker lib32: { 294*e7c364b6SAndroid Build Coastguard Worker relative_install_path: "system/lib", 295*e7c364b6SAndroid Build Coastguard Worker }, 296*e7c364b6SAndroid Build Coastguard Worker lib64: { 297*e7c364b6SAndroid Build Coastguard Worker relative_install_path: "system/lib64", 298*e7c364b6SAndroid Build Coastguard Worker }, 299*e7c364b6SAndroid Build Coastguard Worker }, 300*e7c364b6SAndroid Build Coastguard Worker shared_libs: [ 301*e7c364b6SAndroid Build Coastguard Worker "libbase", 302*e7c364b6SAndroid Build Coastguard Worker "liblog", 303*e7c364b6SAndroid Build Coastguard Worker "librecovery_ui", 304*e7c364b6SAndroid Build Coastguard Worker ], 305*e7c364b6SAndroid Build Coastguard Worker // TARGET_RECOVERY_UI_LIB should be one of librecovery_ui_{default,wear,vr,ethernet} or a 306*e7c364b6SAndroid Build Coastguard Worker // device-specific module that defines make_device() and the exact RecoveryUI class for the 307*e7c364b6SAndroid Build Coastguard Worker // target. It defaults to librecovery_ui_default, which uses ScreenRecoveryUI. 308*e7c364b6SAndroid Build Coastguard Worker whole_static_libs: select(soong_config_variable("recovery", "target_recovery_ui_lib"), { 309*e7c364b6SAndroid Build Coastguard Worker any @ libs: libs, 310*e7c364b6SAndroid Build Coastguard Worker default: ["librecovery_ui_default"], 311*e7c364b6SAndroid Build Coastguard Worker }), 312*e7c364b6SAndroid Build Coastguard Worker} 313