From 5fc72a103b20cc1b484e997e55e7cc9c06cf117a Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 7 Aug 2018 14:38:51 -0700 Subject: Build `recovery` with Soong. Fixes: 110380063 Test: `mmma -j bootable/recovery` with aosp_taimen-userdebug Test: Build and boot into recovery on taimen. Check the basic functionalities (`Apply update from ADB`, `View recovery logs`, `Run graphics test`). Test: Run recovery_unit_test and recovery_component_test on marlin. Test: Modify `recovery.cpp` locally to trigger the call to is_battery_ok(). Check that the battery info is reported correctly. Test: `build/soong/build_test.bash --dist` Change-Id: I391eb201d57c760e457ba2bf2410ceb72596795c --- Android.bp | 131 ++++++++++++++++++++++++++++++++ Android.mk | 194 ++--------------------------------------------- fuse_sideload/Android.bp | 3 +- minadbd/Android.bp | 1 + 4 files changed, 140 insertions(+), 189 deletions(-) diff --git a/Android.bp b/Android.bp index 97126f5b1..99e8b652f 100644 --- a/Android.bp +++ b/Android.bp @@ -26,6 +26,34 @@ cc_defaults { ], } +cc_library { + name: "librecovery_ui", + recovery_available: true, + + defaults: [ + "recovery_defaults", + ], + + srcs: [ + "device.cpp", + "screen_ui.cpp", + "ui.cpp", + "vr_ui.cpp", + "wear_ui.cpp" + ], + + static_libs: [ + "libminui", + "libotautil", + ], + + shared_libs: [ + "libbase", + "libpng", + "libz", + ], +} + // Generic device that uses ScreenRecoveryUI. cc_library_static { name: "librecovery_ui_default", @@ -68,6 +96,78 @@ cc_library_static { ], } +cc_defaults { + name: "librecovery_defaults", + + defaults: [ + "recovery_defaults", + ], + + shared_libs: [ + "libasyncio", + "libbase", + "libbootloader_message", + "libcrypto", + "libcrypto_utils", + "libcutils", + "libext4_utils", + "libfs_mgr", + "libfusesideload", + "libhidl-gen-utils", + "liblog", + "libpng", + "libselinux", + "libsparse", + "libtinyxml2", + "libutils", + "libz", + "libziparchive", + ], + + static_libs: [ + "libminadbd", + "libminui", + "libverifier", + "libotautil", + "libvintf_recovery", + "libvintf", + + // TODO(b/80132328): Remove the dependency on static health HAL. + "libhealthd.default", + "android.hardware.health@2.0-impl", + "android.hardware.health@2.0", + "android.hardware.health@1.0", + "android.hardware.health@1.0-convert", + "libhealthstoragedefault", + "libhidltransport", + "libhidlbase", + "libhwbinder_noltopgo", + "libbatterymonitor", + ], +} + +cc_library_static { + name: "librecovery", + recovery_available: true, + + defaults: [ + "librecovery_defaults", + ], + + srcs: [ + "adb_install.cpp", + "fsck_unshare_blocks.cpp", + "fuse_sdcard_provider.cpp", + "install.cpp", + "recovery.cpp", + "roots.cpp", + ], + + include_dirs: [ + "system/vold", + ], +} + cc_library_static { name: "libverifier", recovery_available: true, @@ -92,6 +192,37 @@ cc_library_static { ], } +cc_binary { + name: "recovery", + recovery: true, + + defaults: [ + "librecovery_defaults", + ], + + srcs: [ + "logging.cpp", + "recovery_main.cpp", + ], + + shared_libs: [ + "librecovery_ui", + ], + + static_libs: [ + "librecovery", + "librecovery_ui_default", + ], + + required: [ + "e2fsdroid.recovery", + "librecovery_ui_ext", + "mke2fs.conf", + "mke2fs.recovery", + "recovery_deps", + ], +} + // The dynamic executable that runs after /data mounts. cc_binary { name: "recovery-persist", diff --git a/Android.mk b/Android.mk index b31b20437..8d9094d8c 100644 --- a/Android.mk +++ b/Android.mk @@ -23,11 +23,6 @@ RECOVERY_FSTAB_VERSION := 2 # librecovery_ui_default, which uses ScreenRecoveryUI. TARGET_RECOVERY_UI_LIB ?= librecovery_ui_default -recovery_common_cflags := \ - -Wall \ - -Werror \ - -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION) - # librecovery_ui_ext (shared library) # =================================== include $(CLEAR_VARS) @@ -49,169 +44,16 @@ LOCAL_WHOLE_STATIC_LIBRARIES := \ LOCAL_SHARED_LIBRARIES := \ libbase \ liblog \ - librecovery_ui - -include $(BUILD_SHARED_LIBRARY) - -# librecovery_ui (shared library) -# =============================== -include $(CLEAR_VARS) -LOCAL_SRC_FILES := \ - device.cpp \ - screen_ui.cpp \ - ui.cpp \ - vr_ui.cpp \ - wear_ui.cpp - -LOCAL_MODULE := librecovery_ui - -LOCAL_CFLAGS := $(recovery_common_cflags) - -LOCAL_MULTILIB := first - -ifeq ($(TARGET_IS_64_BIT),true) -LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/system/lib64 -else -LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/system/lib -endif - -LOCAL_STATIC_LIBRARIES := \ - libminui \ - libotautil \ - -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libpng \ - libz \ + librecovery_ui.recovery include $(BUILD_SHARED_LIBRARY) -# librecovery_ui (static library) -# =============================== -include $(CLEAR_VARS) -LOCAL_SRC_FILES := \ - device.cpp \ - screen_ui.cpp \ - ui.cpp \ - vr_ui.cpp \ - wear_ui.cpp - -LOCAL_MODULE := librecovery_ui - -LOCAL_CFLAGS := $(recovery_common_cflags) - -LOCAL_STATIC_LIBRARIES := \ - libminui \ - libotautil \ - -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libpng \ - libz \ - -include $(BUILD_STATIC_LIBRARY) - -# Health HAL dependency -health_hal_static_libraries := \ - android.hardware.health@2.0-impl \ - android.hardware.health@2.0 \ - android.hardware.health@1.0 \ - android.hardware.health@1.0-convert \ - libhealthstoragedefault \ - libhidltransport \ - libhidlbase \ - libhwbinder_noltopgo \ - libvndksupport \ - libbatterymonitor - -librecovery_static_libraries := \ - libfusesideload \ - libminadbd \ - libminui \ - libverifier \ - libotautil \ - $(health_hal_static_libraries) \ - libvintf_recovery \ - libvintf \ - -librecovery_shared_libraries := \ - libasyncio \ - libbase \ - libbootloader_message \ - libcrypto \ - libcrypto_utils \ - libcutils \ - libext4_utils \ - libfs_mgr \ - libhidl-gen-utils \ - liblog \ - libpng \ - libselinux \ - libtinyxml2 \ - libutils \ - libz \ - libziparchive \ - -# librecovery (static library) -# =============================== -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - adb_install.cpp \ - fsck_unshare_blocks.cpp \ - fuse_sdcard_provider.cpp \ - install.cpp \ - recovery.cpp \ - roots.cpp \ - -LOCAL_C_INCLUDES := \ - system/vold \ - -LOCAL_CFLAGS := $(recovery_common_cflags) - -LOCAL_MODULE := librecovery - -LOCAL_STATIC_LIBRARIES := \ - $(librecovery_static_libraries) - -LOCAL_SHARED_LIBRARIES := \ - $(librecovery_shared_libraries) - -include $(BUILD_STATIC_LIBRARY) - -# recovery (static executable) -# =============================== +# recovery_deps: A phony target that's depended on by `recovery`, which +# builds additional modules conditionally based on Makefile variables. +# ====================================================================== include $(CLEAR_VARS) -LOCAL_SRC_FILES := \ - logging.cpp \ - recovery_main.cpp \ - -LOCAL_MODULE := recovery - -LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/system/bin - -# Cannot link with LLD: undefined symbol: UsbNoPermissionsLongHelpText -# http://b/77543887, lld does not handle -Wl,--gc-sections as well as ld. -LOCAL_USE_CLANG_LLD := false - -LOCAL_CFLAGS := $(recovery_common_cflags) - -LOCAL_STATIC_LIBRARIES := \ - librecovery \ - librecovery_ui_default \ - $(librecovery_static_libraries) - -LOCAL_SHARED_LIBRARIES := \ - librecovery_ui \ - $(librecovery_shared_libraries) - -LOCAL_HAL_STATIC_LIBRARIES := libhealthd - -LOCAL_REQUIRED_MODULES := \ - e2fsdroid.recovery \ - mke2fs.recovery \ - mke2fs.conf +LOCAL_MODULE := recovery_deps ifeq ($(TARGET_USERIMAGES_USE_F2FS),true) ifeq ($(HOST_OS),linux) @@ -235,31 +77,7 @@ LOCAL_REQUIRED_MODULES += \ recovery-refresh endif -LOCAL_REQUIRED_MODULES += \ - librecovery_ui_ext - -# TODO(b/110380063): Explicitly install the following shared libraries to recovery, until `recovery` -# module is built with Soong (with `recovery: true` flag). -LOCAL_REQUIRED_MODULES += \ - libasyncio.recovery \ - libbase.recovery \ - libbootloader_message.recovery \ - libcrypto.recovery \ - libcrypto_utils.recovery \ - libcutils.recovery \ - libext4_utils.recovery \ - libfs_mgr.recovery \ - libhidl-gen-utils.recovery \ - liblog.recovery \ - libpng.recovery \ - libselinux.recovery \ - libsparse.recovery \ - libtinyxml2.recovery \ - libutils.recovery \ - libz.recovery \ - libziparchive.recovery \ - -include $(BUILD_EXECUTABLE) +include $(BUILD_PHONY_PACKAGE) include \ $(LOCAL_PATH)/boot_control/Android.mk \ diff --git a/fuse_sideload/Android.bp b/fuse_sideload/Android.bp index b7f9c039a..90c4c22c3 100644 --- a/fuse_sideload/Android.bp +++ b/fuse_sideload/Android.bp @@ -14,6 +14,7 @@ cc_library { name: "libfusesideload", + recovery_available: true, cflags: [ "-D_XOPEN_SOURCE", @@ -30,7 +31,7 @@ cc_library { "include", ], - static_libs: [ + shared_libs: [ "libbase", "libcrypto", ], diff --git a/minadbd/Android.bp b/minadbd/Android.bp index 432b2f0f5..36896795d 100644 --- a/minadbd/Android.bp +++ b/minadbd/Android.bp @@ -28,6 +28,7 @@ cc_defaults { cc_library_static { name: "libminadbd", + recovery_available: true, defaults: [ "minadbd_defaults", -- cgit v1.2.3