Files
android_bootable_recovery/toybox/Android.mk
T
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

600 lines
13 KiB
Makefile
Executable File

#
# Copyright (C) 2014 The Android Open Source 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.
#
ifneq ($(wildcard external/toybox/Android.mk),)
ifeq ($(TW_USE_TOOLBOX), true)
LOCAL_PATH := external/toybox
#
# To update:
#
# git remote add toybox https://github.com/landley/toybox.git
# git fetch toybox
# git merge toybox/master
# mm -j32
# # (Make any necessary Android.mk changes and test the new toybox.)
# git push aosp HEAD:master # Push directly, avoiding gerrit.
# git push aosp HEAD:refs/for/master # Push to gerrit.
#
# # Now commit any necessary Android.mk changes like normal:
# repo start post-sync .
# git commit -a
#
# To add a toy:
#
# make menuconfig
# # (Select the toy you want to add.)
# make clean && make # Regenerate the generated files.
# # Edit LOCAL_SRC_FILES below to add the toy.
# # If you just want to use it as "toybox x" rather than "x", you can stop now.
# # If you want this toy to have a symbolic link in /system/bin, add the toy to ALL_TOOLS.
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
lib/args.c \
lib/dirtree.c \
lib/getmountlist.c \
lib/help.c \
lib/interestingtimes.c \
lib/lib.c \
lib/llist.c \
lib/net.c \
lib/portability.c \
lib/xwrap.c \
main.c \
toys/android/getenforce.c \
toys/android/getprop.c \
toys/android/load_policy.c \
toys/android/restorecon.c \
toys/android/runcon.c \
toys/android/setenforce.c \
toys/android/setprop.c \
toys/lsb/hostname.c \
toys/lsb/killall.c \
toys/lsb/md5sum.c \
toys/lsb/mknod.c \
toys/lsb/mktemp.c \
toys/lsb/mount.c \
toys/lsb/pidof.c \
toys/lsb/seq.c \
toys/lsb/sync.c \
toys/lsb/umount.c \
toys/other/acpi.c \
toys/other/base64.c \
toys/other/blkid.c \
toys/other/blockdev.c \
toys/other/bzcat.c \
toys/other/chcon.c \
toys/other/chroot.c \
toys/other/clear.c \
toys/other/dos2unix.c \
toys/other/fallocate.c \
toys/other/free.c \
toys/other/freeramdisk.c \
toys/other/fsfreeze.c \
toys/other/help.c \
toys/other/inotifyd.c \
toys/other/insmod.c \
toys/other/losetup.c \
toys/other/lsattr.c \
toys/other/lsmod.c \
toys/other/lsusb.c \
toys/other/makedevs.c \
toys/other/mkswap.c \
toys/other/modinfo.c \
toys/other/mountpoint.c \
toys/other/nbd_client.c \
toys/other/partprobe.c \
toys/other/pivot_root.c \
toys/other/pmap.c \
toys/other/printenv.c \
toys/other/pwdx.c \
toys/other/readlink.c \
toys/other/realpath.c \
toys/other/rev.c \
toys/other/rmmod.c \
toys/other/setsid.c \
toys/other/stat.c \
toys/other/swapoff.c \
toys/other/swapon.c \
toys/other/sysctl.c \
toys/other/tac.c \
toys/other/taskset.c \
toys/other/timeout.c \
toys/other/truncate.c \
toys/other/usleep.c \
toys/other/vconfig.c \
toys/other/vmstat.c \
toys/other/which.c \
toys/other/yes.c \
toys/pending/dd.c \
toys/pending/expr.c \
toys/pending/more.c \
toys/pending/route.c \
toys/pending/tar.c \
toys/pending/tr.c \
toys/pending/traceroute.c \
toys/posix/basename.c \
toys/posix/cal.c \
toys/posix/cat.c \
toys/posix/chgrp.c \
toys/posix/chmod.c \
toys/posix/cksum.c \
toys/posix/cmp.c \
toys/posix/comm.c \
toys/posix/cp.c \
toys/posix/cpio.c \
toys/posix/cut.c \
toys/posix/date.c \
toys/posix/df.c \
toys/posix/dirname.c \
toys/posix/du.c \
toys/posix/echo.c \
toys/posix/env.c \
toys/posix/expand.c \
toys/posix/false.c \
toys/posix/find.c \
toys/posix/grep.c \
toys/posix/head.c \
toys/posix/id.c \
toys/posix/kill.c \
toys/posix/ln.c \
toys/posix/ls.c \
toys/posix/mkdir.c \
toys/posix/mkfifo.c \
toys/posix/nice.c \
toys/posix/nl.c \
toys/posix/nohup.c \
toys/posix/od.c \
toys/posix/paste.c \
toys/posix/patch.c \
toys/posix/printf.c \
toys/posix/pwd.c \
toys/posix/renice.c \
toys/posix/rm.c \
toys/posix/rmdir.c \
toys/posix/sed.c \
toys/posix/sleep.c \
toys/posix/sort.c \
toys/posix/split.c \
toys/posix/strings.c \
toys/posix/tail.c \
toys/posix/tee.c \
toys/posix/time.c \
toys/posix/touch.c \
toys/posix/true.c \
toys/posix/tty.c \
toys/posix/uname.c \
toys/posix/uniq.c \
toys/posix/wc.c \
toys/posix/xargs.c
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -eq 26; echo $$?),0)
# Android 8.0 had some tools in different paths
LOCAL_SRC_FILES += \
toys/pending/dmesg.c
else
LOCAL_SRC_FILES += \
toys/lsb/dmesg.c
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
# there are some conflicts here with AOSP-7.[01] and CM-14.[01]
# the following items have been removed for compatibility
# ifconfig, netcat, netstat, rfkill, switch_root
LOCAL_STATIC_LIBRARIES := libcrypto_static
LOCAL_C_INCLUDES += \
external/boringssl/include \
bionic/libc/dns/include
LOCAL_SRC_FILES += \
lib/linestack.c \
lib/password.c \
toys/other/flock.c \
toys/other/hwclock.c \
toys/other/ionice.c \
toys/other/lspci.c \
toys/other/readahead.c \
toys/other/reset.c \
toys/other/uptime.c \
toys/other/xxd.c \
toys/pending/arp.c \
toys/pending/diff.c \
toys/pending/lsof.c \
toys/pending/telnet.c \
toys/pending/test.c \
toys/pending/watch.c \
toys/posix/ps.c \
toys/posix/ulimit.c
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 27; echo $$?),0)
LOCAL_SRC_FILES += \
toys/pending/xzcat.c
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25; echo $$?),0)
# Android 8.0/8.1 had some tools in different paths
LOCAL_SRC_FILES += \
toys/net/ftpget.c
else
LOCAL_SRC_FILES += \
toys/pending/ftpget.c
endif
# Account for master branch changes pulld into CM14.1
ifneq ($(CM_BUILD),)
LOCAL_SRC_FILES += \
toys/android/log.c \
toys/android/sendevent.c \
toys/android/start.c \
toys/net/ifconfig.c \
toys/net/netcat.c \
toys/net/netstat.c \
toys/net/rfkill.c \
toys/net/tunctl.c \
toys/other/setfattr.c \
toys/pending/chrt.c \
toys/pending/fdisk.c \
toys/pending/getfattr.c \
toys/pending/host.c \
toys/pending/resize.c \
toys/posix/file.c
else
LOCAL_SRC_FILES += \
toys/other/switch_root.c
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25; echo $$?),0)
# Android 8.0 had some tools in different paths
LOCAL_SRC_FILES += \
toys/android/log.c \
toys/android/sendevent.c \
toys/android/start.c \
toys/net/ifconfig.c \
toys/net/microcom.c \
toys/net/netcat.c \
toys/net/netstat.c \
toys/net/rfkill.c \
toys/net/tunctl.c \
toys/pending/getfattr.c \
toys/pending/modprobe.c \
toys/posix/file.c \
toys/posix/uudecode.c \
toys/posix/uuencode.c
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 26; echo $$?),0)
# Android 8.1 had some tools in different paths
LOCAL_SRC_FILES += \
toys/other/chrt.c \
toys/pending/gzip.c
else
LOCAL_SRC_FILES += \
toys/pending/chrt.c
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 27; echo $$?),0)
# Android 9.0
LOCAL_SRC_FILES += \
toys/other/setfattr.c \
toys/pending/fmt.c \
toys/pending/stty.c
else
LOCAL_SRC_FILES += \
toys/pending/setfattr.c
endif
LOCAL_SHARED_LIBRARIES += liblog
else
LOCAL_SRC_FILES += \
toys/other/ifconfig.c \
toys/other/netcat.c \
toys/other/rfkill.c \
toys/pending/netstat.c
endif
endif
else
LOCAL_SRC_FILES += \
toys/other/ifconfig.c \
toys/other/netcat.c \
toys/other/rfkill.c \
toys/other/switch_root.c \
toys/pending/hwclock.c \
toys/pending/netstat.c \
toys/pending/pgrep.c \
toys/pending/top.c
endif
LOCAL_CFLAGS += \
-std=c99 \
-std=gnu11 \
-Os \
-Wno-char-subscripts \
-Wno-sign-compare \
-Wno-string-plus-int \
-Wno-uninitialized \
-Wno-unused-parameter \
-funsigned-char \
-ffunction-sections -fdata-sections \
-fno-asynchronous-unwind-tables \
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -lt 24; echo $$?),0)
toybox_version := $(shell git -C $(LOCAL_PATH) rev-parse --short=12 HEAD 2>/dev/null)-android
LOCAL_CFLAGS += -DTOYBOX_VERSION='"$(toybox_version)"'
else
toybox_version := $(shell sed 's/#define.*TOYBOX_VERSION.*"\(.*\)"/\1/p;d' $(LOCAL_PATH)/main.c)
LOCAL_CFLAGS += -DTOYBOX_VERSION=\"$(toybox_version)\"
endif
LOCAL_CLANG := true
LOCAL_SHARED_LIBRARIES += libcutils libselinux
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 26; echo $$?),0)
LOCAL_CFLAGS += \
-Wno-gnu-variable-sized-type-not-at-end \
-Wno-missing-field-initializers
LOCAL_SHARED_LIBRARIES += libz
endif
LOCAL_MODULE := toybox_recovery
LOCAL_MODULE_STEM := toybox
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
LOCAL_MODULE_TAGS := optional
# dupes: dd df du ls mount renice
# useless?: freeramdisk fsfreeze install makedevs mkfifo nbd-client
# partprobe pivot_root pwdx rev rfkill switch_root tty vconfig
# prefer BSD netcat instead?: nc netcat
# prefer efs2progs instead?: blkid chattr lsattr
ALL_TOOLS := \
acpi \
basename \
blkid \
blockdev \
bzcat \
cal \
cat \
chcon \
chgrp \
chmod \
chown \
chroot \
cksum \
clear \
comm \
cmp \
cp \
cpio \
cut \
date \
dirname \
dmesg \
dos2unix \
echo \
env \
expand \
expr \
fallocate \
false \
find \
free \
getenforce \
groups \
head \
hostname \
hwclock \
id \
ifconfig \
inotifyd \
insmod \
kill \
load_policy \
ln \
logname \
losetup \
lsmod \
lsusb \
md5sum \
mkdir \
mknod \
mkswap \
mktemp \
modinfo \
more \
mountpoint \
mv \
netstat \
nice \
nl \
nohup \
od \
paste \
patch \
pgrep \
pidof \
pkill \
pmap \
printenv \
printf \
pwd \
readlink \
realpath \
restorecon \
rm \
rmdir \
rmmod \
route \
runcon \
sed \
seq \
setenforce \
setprop \
setsid \
sha1sum \
sleep \
sort \
split \
stat \
strings \
swapoff \
swapon \
sync \
sysctl \
tac \
tail \
tar \
taskset \
tee \
time \
timeout \
touch \
tr \
true \
truncate \
umount \
uname \
uniq \
unix2dos \
usleep \
vmstat \
wc \
which \
whoami \
xargs \
yes
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 23; echo $$?),0)
ALL_TOOLS += \
arp \
base64 \
chattr \
df \
diff \
flock \
freeramdisk \
fsfreeze \
fstype \
ftpget \
ftpput \
help \
install \
ionice \
iorenice \
iotop \
killall \
ls \
lsattr \
lsof \
lspci \
makedevs \
mkfifo \
mount \
nbd-client \
nc \
netcat \
nproc \
partprobe \
pivot_root \
ps \
pwdx \
readahead \
renice \
reset \
rev \
rfkill \
sha224sum \
sha256sum \
sha384sum \
sha512sum \
telnet \
test \
top \
traceroute \
traceroute6 \
tty \
tunctl \
ulimit \
uptime \
vconfig \
watch \
xxd
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -le 27; echo $$?),0)
ALL_TOOLS += \
getprop \
xzcat
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 24; echo $$?),0)
ALL_TOOLS += \
du \
gzip \
gunzip \
zcat
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 25; echo $$?),0)
ALL_TOOLS += \
fmt \
start \
stop \
stty
endif
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28; echo $$?),0)
ALL_TOOLS += \
dd
endif
endif
# Account for master branch changes pulld into CM14.1
ifneq ($(CM_BUILD),)
ALL_TOOLS += \
chrt \
fdisk \
file \
getfattr \
host \
log \
resize \
setfattr
endif
endif
# Install the symlinks.
# LOCAL_POST_INSTALL_CMD := $(hide) $(foreach t,$(ALL_TOOLS),ln -sf toybox $(TARGET_RECOVERY_ROOT_OUT)/sbin/$(t);)
LOCAL_POST_INSTALL_CMD := $(foreach t,$(ALL_TOOLS),ln -sf toybox $(TARGET_RECOVERY_ROOT_OUT)/sbin/$(t);)
include $(BUILD_EXECUTABLE)
# Make /sbin/toolbox launchers for each tool
SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(ALL_TOOLS))
$(SYMLINKS): TOYBOX_BINARY := $(LOCAL_MODULE_STEM)
$(SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(LOCAL_PATH)/Android.mk
@echo "Symlink: $@ -> $(TOYBOX_BINARY)"
@mkdir -p $(dir $@)
@rm -rf $@
$(hide) ln -sf $(TOYBOX_BINARY) $@
include $(CLEAR_VARS)
LOCAL_MODULE := toybox_symlinks
LOCAL_MODULE_TAGS := optional
LOCAL_ADDITIONAL_DEPENDENCIES := $(SYMLINKS)
include $(BUILD_PHONY_PACKAGE)
endif
endif