Files
android_bootable_recovery/toolbox/Android.mk
bigbiff d58ba18272 AOSP10 TWRP Merge: fix conflicts and update libraries needed
This allows flame to boot TWRP. Still will need to work on
super partition for vendor and system access.

The plan will be to cherry-pick any updates to android-9.0
through gerrit.twrp.me to this branch as a WIP.
2020-03-23 11:18:29 -04:00

358 lines
10 KiB
Makefile
Executable File

TWRP_TOOLBOX_PATH := $(call my-dir)
LOCAL_PATH := system/core/toolbox
include $(CLEAR_VARS)
OUR_TOOLS :=
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
OUR_TOOLS := \
start \
stop
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
OUR_TOOLS += \
getprop \
setprop
endif
# If busybox does not have SELinux support, provide these tools with toolbox.
# Note that RECOVERY_BUSYBOX_TOOLS will be empty if TW_USE_TOOLBOX == true.
TOOLS_FOR_SELINUX := \
ls
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
TOOLS_FOR_SELINUX += \
load_policy \
getenforce \
chcon \
restorecon \
runcon \
getsebool \
setsebool
endif
OUR_TOOLS += $(filter-out $(RECOVERY_BUSYBOX_TOOLS), $(TOOLS_FOR_SELINUX))
# toolbox setenforce is used during init, so it needs to be included here
# symlink is omitted at the very end if busybox already provides this
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 23; echo $$?),0)
OUR_TOOLS += setenforce
endif
ifeq ($(TW_USE_TOOLBOX), true)
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 22; echo $$?),0)
# These are the only toolbox tools in M. The rest are now in toybox.
BSD_TOOLS :=
OUR_TOOLS := \
newfs_msdos
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 26; echo $$?),0)
OUR_TOOLS += \
iftop \
ioctl \
nandread \
prlimit \
sendevent \
start \
stop
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
BSD_TOOLS += \
dd \
du \
OUR_TOOLS += \
df \
ionice \
log \
ls \
lsof \
mount \
ps \
renice \
top \
uptime \
watchprops
endif
else
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
OUR_TOOLS += \
mknod \
nohup
BSD_TOOLS := \
cat \
chown \
cp \
dd \
du \
grep \
kill \
ln \
mv \
printenv \
rm \
rmdir \
sleep \
sync
else
OUR_TOOLS += \
cat \
chown \
dd \
du \
kill \
ln \
mv \
printenv \
rm \
rmdir \
setconsole \
sleep \
sync
endif
OUR_TOOLS += \
chmod \
clear \
cmp \
date \
df \
dmesg \
getevent \
hd \
id \
ifconfig \
iftop \
insmod \
ioctl \
ionice \
log \
lsmod \
lsof \
md5 \
mkdir \
mkswap \
mount \
nandread \
netstat \
newfs_msdos \
notify \
ps \
readlink \
renice \
rmmod \
route \
schedtop \
sendevent \
smd \
swapoff \
swapon \
top \
touch \
umount \
uptime \
vmstat \
watchprops \
wipe
endif
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27; echo $$?),0)
# Special rules for 9.0
OUR_TOOLS += getevent
LOCAL_C_INCLUDES += $(TWRP_TOOLBOX_PATH)
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 29; echo $$?),0)
LOCAL_WHOLE_STATIC_LIBRARIES += libtoolbox_dd
endif
ifneq ($(TW_USE_TOOLBOX), true)
OUR_TOOLS += newfs_msdos
endif
endif
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
OUR_TOOLS += r
endif
endif
LOCAL_SRC_FILES := \
toolbox.c \
$(patsubst %,%.c,$(OUR_TOOLS))
ifneq ($(wildcard system/core/toolbox/dynarray.c),)
LOCAL_SRC_FILES += dynarray.c
endif
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
LOCAL_SRC_FILES += \
pwcache.c \
upstream-netbsd/lib/libc/gen/getbsize.c \
upstream-netbsd/lib/libc/gen/humanize_number.c \
upstream-netbsd/lib/libc/stdlib/strsuftoll.c \
upstream-netbsd/lib/libc/string/swab.c \
upstream-netbsd/lib/libutil/raise_default_signal.c
endif
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22 23))
LOCAL_CFLAGS += \
-std=gnu99 \
-Werror -Wno-unused-parameter \
-I$(LOCAL_PATH)/upstream-netbsd/include \
-include bsd-compatibility.h
endif
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
LOCAL_C_INCLUDES += external/openssl/include
else
LOCAL_C_INCLUDES += bionic/libc/bionic
endif
LOCAL_SHARED_LIBRARIES += libcutils
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22))
ifeq ($(TW_USE_TOOLBOX), true)
LOCAL_SHARED_LIBRARIES += libcrypto
endif
else
LOCAL_SHARED_LIBRARIES += \
libc \
liblog
endif
LOCAL_SHARED_LIBRARIES += libselinux
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22 23))
# libusbhost is only used by lsusb, and that isn't usually included in toolbox.
# The linker strips out all the unused library code in the normal case.
LOCAL_STATIC_LIBRARIES := libusbhost
LOCAL_WHOLE_STATIC_LIBRARIES := $(patsubst %,libtoolbox_%,$(BSD_TOOLS))
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 22; echo $$?),0)
# Rule to make getprop and setprop in M trees where toybox normally
# provides these tools. Toybox does not allow for easy dynamic
# configuration, so we would have to include the entire toybox binary
# which takes up more space than is necessary so long as we are still
# including busybox.
ifneq ($(TW_USE_TOOLBOX), true)
LOCAL_SRC_FILES += \
../../../$(TWRP_TOOLBOX_PATH)/setprop.c \
../../../$(TWRP_TOOLBOX_PATH)/ls.c
OUR_TOOLS += setprop
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 28; echo $$?),0)
# Special rules for <= 8.1
LOCAL_SRC_FILES += \
../../../$(TWRP_TOOLBOX_PATH)/getprop.c
OUR_TOOLS += getprop
endif
endif
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 28; echo $$?),0)
# Rule for making start and stop in N trees
LOCAL_SRC_FILES += \
../../../$(TWRP_TOOLBOX_PATH)/start.c \
../../../$(TWRP_TOOLBOX_PATH)/stop.c
OUR_TOOLS += start stop
endif
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27; echo $$?),0)
LOCAL_SRC_FILES += getprop.cpp
LOCAL_SHARED_LIBRARIES += libbase
LOCAL_STATIC_LIBRARIES += libpropertyinfoparser
LOCAL_CPPFLAGS += -std=c++17
OUR_TOOLS += getprop
endif
LOCAL_MODULE := toolbox_recovery
LOCAL_MODULE_STEM := toolbox
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-const-variable
# Including this will define $(intermediates) below
include $(BUILD_EXECUTABLE)
$(LOCAL_PATH)/toolbox.c: $(intermediates)/tools.h
ifneq (,$(filter $(PLATFORM_SDK_VERSION), 21 22 23))
ALL_TOOLS := $(BSD_TOOLS) $(OUR_TOOLS)
else
ALL_TOOLS := $(OUR_TOOLS)
endif
TOOLS_H := $(intermediates)/tools.h
$(TOOLS_H): PRIVATE_TOOLS := $(ALL_TOOLS)
$(TOOLS_H): PRIVATE_CUSTOM_TOOL = echo "/* file generated automatically */" > $@ ; for t in $(PRIVATE_TOOLS) ; do echo "TOOL($$t)" >> $@ ; done
$(TOOLS_H):
$(transform-generated-source)
# toolbox setenforce is used during init in non-symlink form, so it was
# required to be included as part of the suite above. if busybox already
# provides setenforce, we can omit the toolbox symlink
TEMP_TOOLS := $(filter-out $(RECOVERY_BUSYBOX_TOOLS), $(ALL_TOOLS))
ALL_TOOLS := $(TEMP_TOOLS)
# Make /sbin/toolbox launchers for each tool
SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(ALL_TOOLS))
$(SYMLINKS): TOOLBOX_BINARY := $(LOCAL_MODULE_STEM)
$(SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Symlink: $@ -> $(TOOLBOX_BINARY)"
@mkdir -p $(dir $@)
@rm -rf $@
$(hide) ln -sf $(TOOLBOX_BINARY) $@
include $(CLEAR_VARS)
LOCAL_MODULE := toolbox_symlinks
LOCAL_MODULE_TAGS := optional
LOCAL_ADDITIONAL_DEPENDENCIES := $(SYMLINKS)
include $(BUILD_PHONY_PACKAGE)
ifneq (,$(filter $(PLATFORM_SDK_VERSION),16 17 18))
# Only needed if the build system lacks support for LOCAL_ADDITIONAL_DEPENDENCIES
ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
$(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
endif
ifeq ($(TW_USE_TOOLBOX), true)
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
include $(CLEAR_VARS)
LOCAL_MODULE := dd_twrp
LOCAL_MODULE_STEM := dd
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS := -include bsd-compatibility.h -DNO_CONV -Wno-unused-parameter
LOCAL_C_INCLUDES := system/core/toolbox/upstream-netbsd/include/ system/core/toolbox/upstream-netbsd/bin/dd system/core/toolbox
LOCAL_SHARED_LIBRARIES := \
libcutils \
LOCAL_SRC_FILES += \
upstream-netbsd/bin/dd/args.c \
upstream-netbsd/bin/dd/conv.c \
upstream-netbsd/bin/dd/dd.c \
upstream-netbsd/bin/dd/dd_hostops.c \
upstream-netbsd/bin/dd/misc.c \
upstream-netbsd/bin/dd/position.c \
upstream-netbsd/lib/libc/gen/getbsize.c \
upstream-netbsd/lib/libc/gen/humanize_number.c \
upstream-netbsd/lib/libc/stdlib/strsuftoll.c \
upstream-netbsd/lib/libc/string/swab.c \
upstream-netbsd/lib/libutil/raise_default_signal.c
include $(BUILD_EXECUTABLE)
endif
endif
SYMLINKS :=
ALL_TOOLS :=
BSD_TOOLS :=
OUR_TOOLS :=
TEMP_TOOLS :=
TOOLS_FOR_SELINUX :=