for android-10 This will support updating the ramdisk to a different compression format and co-exist with magisk. We are also cleaning up and removing non android-10 api makefile actions. We are also moving twrp repacking to its own class. We check the new ramdisk format and if it's different we have magisk compress using the new ramdisk format. Change-Id: I770030aae7797e75817178b2f0fccd9f39dc23af
157 lines
6.2 KiB
Makefile
Executable File
157 lines
6.2 KiB
Makefile
Executable File
# Copyright (C) 2017 TeamWin Recovery 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.
|
|
|
|
LOCAL_PATH := $(call my-dir)
|
|
|
|
ifeq ($(TW_INCLUDE_CRYPTO), true)
|
|
ifneq ($(TW_CRYPTO_USE_SYSTEM_VOLD),)
|
|
|
|
# Parse TW_CRYPTO_USE_SYSTEM_VOLD
|
|
ifeq ($(TW_CRYPTO_USE_SYSTEM_VOLD),true)
|
|
# Just enabled, so only vold + vdc
|
|
services :=
|
|
else
|
|
# Additional services needed by vold
|
|
services := $(TW_CRYPTO_USE_SYSTEM_VOLD)
|
|
endif
|
|
|
|
# Parse TW_CRYPTO_SYSTEM_VOLD_MOUNT
|
|
ifneq ($(TW_CRYPTO_SYSTEM_VOLD_MOUNT),)
|
|
# Per device additional partitions to mount
|
|
partitions := $(TW_CRYPTO_SYSTEM_VOLD_MOUNT)
|
|
endif
|
|
|
|
# List of .rc files for each additional service
|
|
rc_files := $(foreach item,$(services),init.recovery.vold_decrypt.$(item).rc)
|
|
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := init.recovery.vold_decrypt.rc
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
|
|
|
|
# Cannot send to TARGET_RECOVERY_ROOT_OUT since build system wipes init*.rc
|
|
# during ramdisk creation and only allows init.recovery.*.rc files to be copied
|
|
# from TARGET_ROOT_OUT thereafter
|
|
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
|
|
|
|
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
|
|
|
# Add additional .rc files and imports into init.recovery.vold_decrypt.rc
|
|
# Note: any init.recovery.vold_decrypt.{service}.rc that are not default
|
|
# in crypto/vold_decrypt should be in the device tree
|
|
LOCAL_POST_INSTALL_CMD := $(hide) \
|
|
$(foreach item, $(rc_files), \
|
|
sed -i '1iimport \/$(item)' "$(TARGET_ROOT_OUT)/$(LOCAL_MODULE)"; \
|
|
if [ -f "$(LOCAL_PATH)/$(item)" ]; then \
|
|
cp -f "$(LOCAL_PATH)/$(item)" "$(TARGET_ROOT_OUT)"/; \
|
|
fi; \
|
|
)
|
|
|
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 26; echo $$?),0)
|
|
# Truncate service_name to max 16 characters
|
|
LOCAL_POST_INSTALL_CMD += \
|
|
$(foreach item, $(rc_files), \
|
|
if [ -f "$(TARGET_ROOT_OUT)/$(item)" ]; then \
|
|
sed -i 's/\([ \t]*service[ \t]*\)\(.\{16\}\).*\([ \t].*\)/\1\2\3/' "$(TARGET_ROOT_OUT)/$(item)"; \
|
|
fi; \
|
|
)
|
|
endif
|
|
|
|
include $(BUILD_PREBUILT)
|
|
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := libvolddecrypt
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_CFLAGS := -Wall
|
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
|
|
LOCAL_C_INCLUDES += external/stlport/stlport bionic bionic/libstdc++/include
|
|
endif
|
|
|
|
ifneq ($(services),)
|
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 26; echo $$?),0)
|
|
# Truncate service_name to max 12 characters due to the 4 character prefix
|
|
truncated_services := $(foreach item,$(services),$(shell echo -n "$(item)" | sed 's/\(.\{12\}\).*/\1/'))
|
|
LOCAL_CFLAGS += -DTW_CRYPTO_SYSTEM_VOLD_SERVICES='"$(truncated_services)"'
|
|
LOCAL_CFLAGS += -D_USING_SHORT_SERVICE_NAMES
|
|
else
|
|
LOCAL_CFLAGS += -DTW_CRYPTO_SYSTEM_VOLD_SERVICES='"$(services)"'
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(partitions),)
|
|
LOCAL_CFLAGS += -DTW_CRYPTO_SYSTEM_VOLD_MOUNT='"$(partitions)"'
|
|
endif
|
|
|
|
ifeq ($(TW_CRYPTO_SYSTEM_VOLD_DEBUG),true)
|
|
# Enabling strace will expose the password in the strace logs!!
|
|
LOCAL_CFLAGS += -DTW_CRYPTO_SYSTEM_VOLD_DEBUG
|
|
else
|
|
ifneq ($(TW_CRYPTO_SYSTEM_VOLD_DEBUG),)
|
|
# Specify strace path
|
|
LOCAL_CFLAGS += -DTW_CRYPTO_SYSTEM_VOLD_DEBUG
|
|
LOCAL_CFLAGS += -DVD_STRACE_BIN=\"$(TW_CRYPTO_SYSTEM_VOLD_DEBUG)\"
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26; echo $$?),0)
|
|
ifeq ($(TW_INCLUDE_LIBRESETPROP), true)
|
|
LOCAL_CFLAGS += -DTW_INCLUDE_LIBRESETPROP
|
|
endif
|
|
endif
|
|
|
|
LOCAL_SRC_FILES = vold_decrypt.cpp
|
|
LOCAL_SHARED_LIBRARIES := libcutils
|
|
LOCAL_C_INCLUDES += system/extras/ext4_utils/include
|
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 29; echo $$?),0)
|
|
LOCAL_C_INCLUDES += bootable/recovery/crypto/fscrypt
|
|
else
|
|
LOCAL_C_INCLUDES += bootable/recovery/crypto/ext4crypt
|
|
endif
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 28; echo $$?),0)
|
|
include $(CLEAR_VARS)
|
|
LOCAL_MODULE := vdc_pie
|
|
LOCAL_SRC_FILES := vdc_pie.cpp
|
|
LOCAL_MODULE_TAGS := optional
|
|
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
|
|
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/
|
|
LOCAL_CLANG := true
|
|
LOCAL_TIDY := true
|
|
LOCAL_TIDY_FLAGS := -warnings-as-errors=clang-analyzer-security*,cert-*
|
|
LOCAL_TIDY_CHECKS := -*,cert-*,clang,-analyzer-security*
|
|
LOCAL_STATIC_LIBRARIES := libvold_binder
|
|
LOCAL_SHARED_LIBRARIES := libbase libcutils libutils libbinder
|
|
LOCAL_CFLAGS := -Wall
|
|
ifeq ($(TWRP_INCLUDE_LOGCAT), true)
|
|
LOCAL_CFLAGS += -DTWRP_INCLUDE_LOGCAT
|
|
endif
|
|
ifneq ($(TARGET_ARCH), arm64)
|
|
ifneq ($(TARGET_ARCH), x86_64)
|
|
LOCAL_LDFLAGS += -Wl,-dynamic-linker,/system/bin/linker
|
|
else
|
|
LOCAL_LDFLAGS += -Wl,-dynamic-linker,/system/bin/linker64
|
|
endif
|
|
else
|
|
LOCAL_LDFLAGS += -Wl,-dynamic-linker,/system/bin/linker64
|
|
endif
|
|
|
|
include $(BUILD_EXECUTABLE)
|
|
endif
|
|
|
|
endif
|
|
endif
|