| // Copyright (C) 2018 The Android Open Source Project |
| // Copyright (C) 2019 The LineageOS 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. |
| |
| // *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE |
| // CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE |
| // DEPENDING ON IT IN YOUR PROJECT. *** |
| package { |
| default_applicable_licenses: ["bootable_recovery_license"], |
| } |
| |
| // Added automatically by a large-scale-change that took the approach of |
| // 'apply every license found to every target'. While this makes sure we respect |
| // every license restriction, it may not be entirely correct. |
| // |
| // e.g. GPL in an MIT project might only apply to the contrib/ directory. |
| // |
| // Please consider splitting the single license below into multiple licenses, |
| // taking care not to lose any license_kind information, and overriding the |
| // default license using the 'licenses: [...]' property on targets as needed. |
| // |
| // For unused files, consider creating a 'fileGroup' with "//visibility:private" |
| // to attach the license to, and including a comment whether the files may be |
| // used in the current project. |
| // See: http://go/android-license-faq |
| license { |
| name: "bootable_recovery_license", |
| visibility: [ |
| ":__subpackages__", |
| "//bootable/deprecated-ota:__subpackages__", |
| ], |
| license_kinds: [ |
| "SPDX-license-identifier-Apache-2.0", |
| "SPDX-license-identifier-MIT", |
| "SPDX-license-identifier-OFL", // by exception only |
| ], |
| license_text: [ |
| "NOTICE", |
| ], |
| } |
| |
| soong_config_module_type { |
| name: "recovery_cc_defaults", |
| module_type: "cc_defaults", |
| config_namespace: "recovery", |
| value_variables: ["recovery_api_version"], |
| properties: [ |
| "cflags", |
| ], |
| } |
| |
| recovery_cc_defaults { |
| name: "recovery_defaults", |
| |
| soong_config_variables: { |
| recovery_api_version: { |
| cflags: [ |
| "-D_FILE_OFFSET_BITS=64", |
| // Must be the same as RECOVERY_API_VERSION. |
| "-DRECOVERY_API_VERSION=%s", |
| "-Wall", |
| "-Werror", |
| ], |
| }, |
| }, |
| } |
| |
| cc_library_static { |
| name: "librecovery_fastboot", |
| recovery_available: true, |
| defaults: [ |
| "recovery_defaults", |
| ], |
| |
| srcs: [ |
| "fastboot/fastboot.cpp", |
| ], |
| |
| shared_libs: [ |
| "libbase", |
| "libbootloader_message", |
| "libcutils", |
| "liblog", |
| "librecovery_ui", |
| ], |
| |
| static_libs: [ |
| "librecovery_ui_default", |
| ], |
| } |
| |
| cc_defaults { |
| name: "librecovery_defaults", |
| |
| defaults: [ |
| "recovery_defaults", |
| ], |
| |
| shared_libs: [ |
| "android.hardware.boot@1.0", |
| "android.hardware.boot@1.1", |
| "android.hardware.boot-V1-ndk", |
| "libboot_control_client", |
| "libbase", |
| "libbootloader_message", |
| "libcrypto", |
| "libcutils", |
| "libfs_mgr", |
| "liblp", |
| "liblog", |
| "libprotobuf-cpp-lite", |
| "libziparchive", |
| "libvolume_manager", |
| ], |
| |
| static_libs: [ |
| "libinstall", |
| "librecovery_fastboot", |
| "libminui", |
| "librecovery_utils", |
| "libotautil", |
| "libsnapshot_nobinder", |
| "libsnapshot_cow", |
| "liblz4", |
| "libzstd", |
| "update_metadata-protos", |
| ], |
| } |
| |
| cc_library_static { |
| name: "librecovery", |
| recovery_available: true, |
| |
| defaults: [ |
| "librecovery_defaults", |
| ], |
| |
| srcs: [ |
| "recovery.cpp", |
| ], |
| |
| shared_libs: [ |
| "librecovery_ui", |
| ], |
| } |
| |
| prebuilt_etc { |
| name: "init_recovery.rc", |
| filename: "init.rc", |
| src: "etc/init.rc", |
| sub_dir: "init/hw", |
| recovery: true, |
| } |
| |
| cc_binary { |
| name: "recovery", |
| recovery: true, |
| |
| defaults: [ |
| "libinstall_defaults", |
| "librecovery_defaults", |
| "librecovery_utils_defaults", |
| ], |
| |
| srcs: [ |
| "recovery_main.cpp", |
| "volclient.cpp", |
| ], |
| |
| shared_libs: [ |
| "android.hardware.health-V4-ndk", // from librecovery_utils |
| "android.hardware.boot-V1-ndk", |
| "librecovery_ui", |
| ], |
| |
| static_libs: [ |
| "libc++fs", |
| "librecovery", |
| "librecovery_ui_default", |
| ], |
| |
| required: [ |
| "e2fsdroid.recovery", |
| "init_recovery.rc", |
| "librecovery_ui_ext", |
| "minadbd", |
| "mke2fs.conf.recovery", |
| "mke2fs.recovery", |
| "mkshrc.recovery", |
| "reboot.recovery", |
| "recovery_deps", |
| "ueventd.rc.recovery", |
| ], |
| } |
| |
| // The dynamic executable that runs after /data mounts. |
| cc_binary { |
| name: "recovery-persist", |
| |
| defaults: [ |
| "recovery_defaults", |
| ], |
| |
| srcs: [ |
| "recovery-persist.cpp", |
| ], |
| |
| shared_libs: [ |
| "libbase", |
| "liblog", |
| ], |
| |
| static_libs: [ |
| "librecovery_utils", |
| ], |
| |
| init_rc: [ |
| "recovery-persist.rc", |
| ], |
| } |
| |
| // The dynamic executable that runs at init. |
| cc_binary { |
| name: "recovery-refresh", |
| |
| defaults: [ |
| "recovery_defaults", |
| ], |
| |
| srcs: [ |
| "recovery-refresh.cpp", |
| ], |
| |
| shared_libs: [ |
| "libbase", |
| "liblog", |
| ], |
| |
| static_libs: [ |
| "librecovery_utils", |
| ], |
| |
| init_rc: [ |
| "recovery-refresh.rc", |
| ], |
| } |
| |
| filegroup { |
| name: "res-testdata", |
| |
| srcs: [ |
| "res-*/images/*_text.png", |
| ], |
| } |
| |
| // recovery_deps: A phony target that's depended on by `recovery`, which |
| // builds additional modules conditionally based on Makefile variables. |
| phony { |
| name: "recovery_deps", |
| recovery: true, |
| required: [ |
| "e2fsck.recovery", |
| "resize2fs.recovery", |
| "tune2fs.recovery", |
| "mkfs.erofs.recovery", |
| "dump.erofs.recovery", |
| "fsck.erofs.recovery", |
| // On A/B devices recovery-persist reads the recovery related file from the persist storage and |
| // copies them into /data/misc/recovery. Then, for both A/B and non-A/B devices, recovery-persist |
| // parses the last_install file and reports the embedded update metrics. Also, the last_install file |
| // will be deteleted after the report. |
| "recovery-persist", |
| ] + select(soong_config_variable("recovery", "target_userimages_use_f2fs"), { |
| true: [ |
| "make_f2fs.recovery", |
| "fsck.f2fs.recovery", |
| "sload_f2fs.recovery", |
| ], |
| default: [], |
| }) + select(soong_config_variable("recovery", "has_board_cacheimage_partition_size"), { |
| false: ["recovery-refresh"], |
| default: [], |
| }), |
| } |
| |
| cc_library_shared { |
| name: "librecovery_ui_ext", |
| recovery: true, |
| install_in_root: true, |
| multilib: { |
| lib32: { |
| relative_install_path: "system/lib", |
| }, |
| lib64: { |
| relative_install_path: "system/lib64", |
| }, |
| }, |
| shared_libs: [ |
| "libbase", |
| "liblog", |
| "librecovery_ui", |
| ], |
| // TARGET_RECOVERY_UI_LIB should be one of librecovery_ui_{default,wear,vr,ethernet} or a |
| // device-specific module that defines make_device() and the exact RecoveryUI class for the |
| // target. It defaults to librecovery_ui_default, which uses ScreenRecoveryUI. |
| whole_static_libs: select(soong_config_variable("recovery", "target_recovery_ui_lib"), { |
| any @ libs: libs, |
| default: ["librecovery_ui_default"], |
| }), |
| } |