summaryrefslogtreecommitdiffstats
path: root/toybox
diff options
context:
space:
mode:
Diffstat (limited to 'toybox')
-rw-r--r--toybox/Android.mk371
1 files changed, 371 insertions, 0 deletions
diff --git a/toybox/Android.mk b/toybox/Android.mk
new file mode 100644
index 000000000..a879151fc
--- /dev/null
+++ b/toybox/Android.mk
@@ -0,0 +1,371 @@
+#
+# 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/dmesg.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/ifconfig.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/netcat.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/rfkill.c \
+ toys/other/rmmod.c \
+ toys/other/setsid.c \
+ toys/other/stat.c \
+ toys/other/swapoff.c \
+ toys/other/swapon.c \
+ toys/other/switch_root.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/hwclock.c \
+ toys/pending/more.c \
+ toys/pending/pgrep.c \
+ toys/pending/netstat.c \
+ toys/pending/route.c \
+ toys/pending/tar.c \
+ toys/pending/top.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 \
+
+LOCAL_CFLAGS += \
+ -std=c99 \
+ -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 \
+
+toybox_version := $(shell git -C $(LOCAL_PATH) rev-parse --short=12 HEAD 2>/dev/null)-android
+LOCAL_CFLAGS += -DTOYBOX_VERSION='"$(toybox_version)"'
+
+LOCAL_CLANG := true
+
+LOCAL_SHARED_LIBRARIES := libcutils libselinux
+
+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 \
+ getprop \
+ 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 \
+
+# Install the symlinks.
+LOCAL_POST_INSTALL_CMD := $(hide) $(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