Files
oxmc f6176009b1 Add recovery_ui and recovery_toolkit scaffolding (first draft, not build-tested)
Stages TWRP's GUI engine and standalone tooling as PawletOS-owned modules
instead of a bootable/recovery fork, per the plugin-architecture finding in
NOTES-ota-recovery-ab.md: stock recovery_main.cpp already dlopen()s
librecovery_ui_ext.so and dlsym()s make_device() from it at runtime, so the
UI layer doesn't require touching stock bootable/recovery at all. Confirmed
via source grep that recovery.cpp/install.cpp have zero references into the
partition manager/backup engine/GUI code and vice versa.

recovery_ui/: TWRP's gui/, minuitwrp/, libpixelflinger/ (copied verbatim,
GPL-3.0), plus a new device/ providing PawletTwrpUI (a ScreenRecoveryUI
subclass) and make_device() — written from scratch against stock's
RecoveryUI/ScreenRecoveryUI virtual-method contract, since TWRP's own fork
never ships a make_device() (every real TWRP device provides its own, and
no reference device tree was available to copy from). Top-level Android.bp
defines librecovery_ui_pawlet_twrp, the module TARGET_RECOVERY_UI_LIB should
point at. gui/Android.bp and minuitwrp/Android.bp had their include_dirs
rewritten for the new paths.

recovery_toolkit/: partition manager, backup engine (tar/digest/adbbu/apex),
filesystem/format support (exfat/dosfstools/gpt/fuse/mtp/crypto), scripting
(openrecoveryscript/orscmd/twrpinstall), shared helpers. Source only, no
Android.bp yet for any of it.

Known gap blocking recovery_ui from actually linking: gui/'s libguitwrp
depends on libaosprecovery, built from recovery_toolkit/helpers/twrp.cpp via
a Go Soong plugin (libaosprecovery_defaults.go) not yet ported. Neither repo
has been build-tested — no local AOSP build environment available in this
workspace. See each directory's README.md for a precise done/not-done
breakdown.
2026-07-11 16:34:35 -07:00

107 lines
2.8 KiB
Plaintext

LOCAL_PATH:= system/core/libpixelflinger
include $(CLEAR_VARS)
#
# C/C++ and ARMv5 objects
#
include $(CLEAR_VARS)
ifneq ($(wildcard system/core/libpixelflinger/codeflinger/x86/X86Assembler.cpp),)
ifeq ($(TARGET_ARCH),x86)
TW_HAVE_X86_ACCELERATED_PIXELFLINGER := true
endif
endif
PIXELFLINGER_SRC_FILES += \
codeflinger/CodeCache.cpp \
format.cpp \
clear.cpp \
raster.cpp \
buffer.cpp
ifneq ($(wildcard system/core/libpixelflinger/codeflinger/tinyutils/VectorImpl.cpp),)
PIXELFLINGER_SRC_FILES += \
codeflinger/tinyutils/SharedBuffer.cpp \
codeflinger/tinyutils/VectorImpl.cpp
endif
ifneq ($(TW_HAVE_X86_ACCELERATED_PIXELFLINGER),true)
PIXELFLINGER_SRC_FILES += \
codeflinger/ARMAssemblerInterface.cpp \
codeflinger/ARMAssemblerProxy.cpp \
codeflinger/GGLAssembler.cpp \
codeflinger/load_store.cpp \
codeflinger/blending.cpp \
codeflinger/texturing.cpp \
fixed.cpp \
picker.cpp \
pixelflinger.cpp \
trap.cpp \
scanline.cpp
else
PIXELFLINGER_SRC_FILES_x86 := \
codeflinger/x86/X86Assembler.cpp \
codeflinger/x86/GGLX86Assembler.cpp \
codeflinger/x86/load_store.cpp \
codeflinger/x86/blending.cpp \
codeflinger/x86/texturing.cpp \
fixed.cpp \
picker.cpp \
pixelflinger.cpp \
trap.cpp \
scanline.cpp
PIXELFLINGER_C_INCLUDES_x86 := \
external/libenc
endif
PIXELFLINGER_CFLAGS := -fstrict-aliasing -fomit-frame-pointer
PIXELFLINGER_SRC_FILES_arm := \
codeflinger/ARMAssembler.cpp \
codeflinger/disassem.c \
col32cb16blend.S \
t32cb16blend.S \
ifeq ($(ARCH_ARM_HAVE_NEON),true)
PIXELFLINGER_SRC_FILES_arm += col32cb16blend_neon.S
PIXELFLINGER_CFLAGS_arm += -D__ARM_HAVE_NEON
endif
PIXELFLINGER_SRC_FILES_arm64 := \
codeflinger/Arm64Assembler.cpp \
codeflinger/Arm64Disassembler.cpp \
arch-arm64/col32cb16blend.S \
arch-arm64/t32cb16blend.S \
#
# Static library version
#
include $(CLEAR_VARS)
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 26; echo $$?),0)
LOCAL_CLANG := false
endif
LOCAL_MODULE:= libpixelflinger_twrp
LOCAL_SRC_FILES := $(PIXELFLINGER_SRC_FILES)
LOCAL_SRC_FILES_arm := $(PIXELFLINGER_SRC_FILES_arm)
LOCAL_SRC_FILES_arm64 := $(PIXELFLINGER_SRC_FILES_arm64)
LOCAL_SRC_FILES_x86 := $(PIXELFLINGER_SRC_FILES_x86)
LOCAL_SRC_FILES_mips := $(PIXELFLINGER_SRC_FILES_mips)
ifneq ($(shell test $(PLATFORM_SDK_VERSION) -gt 20; echo $$?),0)
LOCAL_SRC_FILES += $(LOCAL_SRC_FILES_$(TARGET_ARCH))
endif
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
LOCAL_C_INCLUDES += $(LOCAL_EXPORT_C_INCLUDE_DIRS)
LOCAL_CFLAGS := $(PIXELFLINGER_CFLAGS)
LOCAL_CPPFLAGS := -Wno-unused-function
LOCAL_STATIC_LIBRARIES += libbase libutils libcutils
LOCAL_C_INCLUDES_x86 := $(PIXELFLINGER_C_INCLUDES_x86)
ifeq ($(TW_HAVE_X86_ACCELERATED_PIXELFLINGER),true)
LOCAL_WHOLE_STATIC_LIBRARIES += libenc
LOCAL_C_INCLUDES += external/libenc
endif
include $(BUILD_STATIC_LIBRARY)