| // |
| // 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. |
| // |
| |
| /* |
| |
| --- To sync with upstream: |
| |
| # Update source and regenerate generated files. |
| git remote add toybox https://github.com/landley/toybox.git |
| git fetch toybox && git merge toybox/master && ./regenerate.sh |
| |
| # Make any necessary Android.bp changes and rebuild. |
| mm -j32 |
| |
| # Run all the tests. |
| ./run-tests-on-android.sh |
| # Run a single test. |
| ./run-tests-on-android.sh wc |
| |
| # Upload changes. |
| git commit -a --amend |
| git push aosp HEAD:refs/for/master # Push to gerrit for review. |
| git push aosp HEAD:master # Push directly, avoiding gerrit. |
| |
| |
| --- To add a toy: |
| |
| # Edit the three .config-* files to enable the toy you want for the targets |
| # you want it on, and regenerate the generated files: |
| ./regenerate.sh |
| |
| # Edit the relevant `srcs` below, depending on where the toy should be |
| # available. |
| |
| # If you just want to use the toy via "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 symlinks. |
| |
| */ |
| |
| cc_defaults { |
| name: "toybox-defaults", |
| srcs: [ |
| "lib/args.c", |
| "lib/commas.c", |
| "lib/dirtree.c", |
| "lib/env.c", |
| "lib/help.c", |
| "lib/lib.c", |
| "lib/linestack.c", |
| "lib/llist.c", |
| "lib/net.c", |
| "lib/portability.c", |
| "lib/tty.c", |
| "lib/xwrap.c", |
| "main.c", |
| "toys/lsb/gzip.c", |
| "toys/lsb/hostname.c", |
| "toys/lsb/md5sum.c", |
| "toys/lsb/mktemp.c", |
| "toys/lsb/seq.c", |
| "toys/net/microcom.c", |
| "toys/other/dos2unix.c", |
| "toys/other/readlink.c", |
| "toys/other/setsid.c", |
| "toys/other/stat.c", |
| "toys/other/timeout.c", |
| "toys/other/truncate.c", |
| "toys/other/which.c", |
| "toys/other/xxd.c", |
| "toys/other/yes.c", |
| "toys/pending/dd.c", |
| "toys/pending/diff.c", |
| "toys/pending/expr.c", |
| "toys/pending/getopt.c", |
| "toys/pending/tr.c", |
| "toys/posix/basename.c", |
| "toys/posix/cat.c", |
| "toys/posix/chmod.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/dirname.c", |
| "toys/posix/du.c", |
| "toys/posix/echo.c", |
| "toys/posix/env.c", |
| "toys/posix/find.c", |
| "toys/posix/getconf.c", |
| "toys/posix/grep.c", |
| "toys/posix/head.c", |
| "toys/posix/id.c", |
| "toys/posix/ln.c", |
| "toys/posix/ls.c", |
| "toys/posix/mkdir.c", |
| "toys/posix/od.c", |
| "toys/posix/paste.c", |
| "toys/posix/patch.c", |
| "toys/posix/pwd.c", |
| "toys/posix/rm.c", |
| "toys/posix/rmdir.c", |
| "toys/posix/sed.c", |
| "toys/posix/sleep.c", |
| "toys/posix/sort.c", |
| "toys/posix/tail.c", |
| "toys/posix/tar.c", |
| "toys/posix/tee.c", |
| "toys/posix/test.c", |
| "toys/posix/touch.c", |
| "toys/posix/true.c", |
| "toys/posix/uname.c", |
| "toys/posix/uniq.c", |
| "toys/posix/wc.c", |
| "toys/posix/xargs.c", |
| ], |
| |
| cflags: [ |
| "-std=gnu11", |
| "-Os", |
| "-Wall", |
| "-Werror", |
| "-Wno-char-subscripts", |
| "-Wno-deprecated-declarations", |
| "-Wno-missing-field-initializers", |
| "-Wno-pointer-arith", |
| "-Wno-sign-compare", |
| "-Wno-string-plus-int", |
| "-Wno-unused-parameter", |
| "-Wno-unused-variable", |
| "-funsigned-char", |
| "-ffunction-sections", |
| "-fdata-sections", |
| "-fno-asynchronous-unwind-tables", |
| "-DTOYBOX_VENDOR=\"-android\"", |
| ], |
| |
| // This doesn't actually prevent us from dragging in libc++ at runtime |
| // because libnetd_client.so is C++. |
| stl: "none", |
| |
| shared_libs: [ |
| "libcrypto", |
| "libz", |
| ], |
| |
| target: { |
| linux_glibc: { |
| local_include_dirs: ["android/linux"], |
| }, |
| |
| darwin: { |
| local_include_dirs: ["android/mac"], |
| cflags: [ |
| // You can't have toybox cp(1) on macOS before 10.13. |
| "-mmacosx-version-min=10.13", |
| "-UMACOSX_DEPLOYMENT_TARGET", |
| "-DMACOSX_DEPLOYMENT_TARGET=10.13", |
| // macOS' getgroups(3) signature differs. |
| "-Wno-pointer-sign", |
| // diff.c defines MIN and MAX which (only on macOS) we're |
| // also getting from <sys/param.h>. |
| "-Wno-macro-redefined", |
| ], |
| }, |
| |
| linux: { |
| srcs: [ |
| "toys/posix/ps.c", |
| "toys/other/taskset.c", |
| ], |
| }, |
| |
| android: { |
| local_include_dirs: ["android/device"], |
| srcs: [ |
| "toys/android/getenforce.c", |
| "toys/android/load_policy.c", |
| "toys/android/log.c", |
| "toys/android/restorecon.c", |
| "toys/android/runcon.c", |
| "toys/android/sendevent.c", |
| "toys/android/setenforce.c", |
| "toys/lsb/dmesg.c", |
| "toys/lsb/killall.c", |
| "toys/lsb/mknod.c", |
| "toys/lsb/mount.c", |
| "toys/lsb/pidof.c", |
| "toys/lsb/sync.c", |
| "toys/lsb/umount.c", |
| "toys/net/ifconfig.c", |
| "toys/net/netcat.c", |
| "toys/net/netstat.c", |
| "toys/net/ping.c", |
| "toys/net/rfkill.c", |
| "toys/net/tunctl.c", |
| "toys/other/acpi.c", |
| "toys/other/base64.c", |
| "toys/other/blkid.c", |
| "toys/other/blockdev.c", |
| "toys/other/chcon.c", |
| "toys/other/chroot.c", |
| "toys/other/chrt.c", |
| "toys/other/clear.c", |
| "toys/other/devmem.c", |
| "toys/other/fallocate.c", |
| "toys/other/flock.c", |
| "toys/other/fmt.c", |
| "toys/other/free.c", |
| "toys/other/freeramdisk.c", |
| "toys/other/fsfreeze.c", |
| "toys/other/fsync.c", |
| "toys/other/help.c", |
| "toys/other/hwclock.c", |
| "toys/other/i2ctools.c", |
| "toys/other/inotifyd.c", |
| "toys/other/insmod.c", |
| "toys/other/ionice.c", |
| "toys/other/losetup.c", |
| "toys/other/lsattr.c", |
| "toys/other/lsmod.c", |
| "toys/other/lspci.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/nsenter.c", |
| "toys/other/partprobe.c", |
| "toys/other/pivot_root.c", |
| "toys/other/pmap.c", |
| "toys/other/printenv.c", |
| "toys/other/pwdx.c", |
| "toys/other/rev.c", |
| "toys/other/rmmod.c", |
| "toys/other/setfattr.c", |
| "toys/other/swapoff.c", |
| "toys/other/swapon.c", |
| "toys/other/sysctl.c", |
| "toys/other/tac.c", |
| "toys/other/uptime.c", |
| "toys/other/usleep.c", |
| "toys/other/uuidgen.c", |
| "toys/other/vconfig.c", |
| "toys/other/vmstat.c", |
| "toys/other/watch.c", |
| "toys/pending/getfattr.c", |
| "toys/pending/lsof.c", |
| "toys/pending/modprobe.c", |
| "toys/pending/more.c", |
| "toys/pending/readelf.c", |
| "toys/pending/rtcwake.c", |
| "toys/pending/stty.c", |
| "toys/pending/traceroute.c", |
| "toys/pending/vi.c", |
| "toys/posix/cal.c", |
| "toys/posix/chgrp.c", |
| "toys/posix/cksum.c", |
| "toys/posix/df.c", |
| "toys/posix/expand.c", |
| "toys/posix/false.c", |
| "toys/posix/file.c", |
| "toys/posix/iconv.c", |
| "toys/posix/kill.c", |
| "toys/posix/mkfifo.c", |
| "toys/posix/nice.c", |
| "toys/posix/nl.c", |
| "toys/posix/nohup.c", |
| "toys/posix/printf.c", |
| "toys/posix/renice.c", |
| "toys/posix/split.c", |
| "toys/posix/strings.c", |
| "toys/posix/time.c", |
| "toys/posix/tty.c", |
| "toys/posix/ulimit.c", |
| "toys/posix/unlink.c", |
| "toys/posix/uudecode.c", |
| "toys/posix/uuencode.c", |
| ], |
| |
| // not usable on Android?: freeramdisk fsfreeze makedevs nbd-client |
| // partprobe pivot_root pwdx rev rfkill vconfig |
| // currently prefer external/e2fsprogs: blkid |
| // currently prefer external/iputils: ping ping6 |
| |
| symlinks: [ |
| "acpi", |
| "base64", |
| "basename", |
| "blockdev", |
| "cal", |
| "cat", |
| "chattr", |
| "chcon", |
| "chgrp", |
| "chmod", |
| "chown", |
| "chroot", |
| "chrt", |
| "cksum", |
| "clear", |
| "comm", |
| "cmp", |
| "cp", |
| "cpio", |
| "cut", |
| "date", |
| "dd", |
| "devmem", |
| "df", |
| "diff", |
| "dirname", |
| "dmesg", |
| "dos2unix", |
| "du", |
| "echo", |
| "egrep", |
| "env", |
| "expand", |
| "expr", |
| "fallocate", |
| "false", |
| "fgrep", |
| "file", |
| "find", |
| "flock", |
| "fmt", |
| "free", |
| "fsync", |
| "getconf", |
| "getenforce", |
| "grep", |
| "groups", |
| "gunzip", |
| "gzip", |
| "head", |
| "hostname", |
| "hwclock", |
| "i2cdetect", |
| "i2cdump", |
| "i2cget", |
| "i2cset", |
| "iconv", |
| "id", |
| "ifconfig", |
| "inotifyd", |
| "insmod", |
| "install", |
| "ionice", |
| "iorenice", |
| "kill", |
| "killall", |
| "load_policy", |
| "ln", |
| "log", |
| "logname", |
| "losetup", |
| "ls", |
| "lsattr", |
| "lsmod", |
| "lsof", |
| "lspci", |
| "lsusb", |
| "md5sum", |
| "mkdir", |
| "mkfifo", |
| "mknod", |
| "mkswap", |
| "mktemp", |
| "microcom", |
| "modinfo", |
| "more", |
| "mount", |
| "mountpoint", |
| "mv", |
| "nc", |
| "netcat", |
| "netstat", |
| "nice", |
| "nl", |
| "nohup", |
| "nproc", |
| "nsenter", |
| "od", |
| "paste", |
| "patch", |
| "pgrep", |
| "pidof", |
| "pkill", |
| "pmap", |
| "printenv", |
| "printf", |
| "ps", |
| "pwd", |
| "readelf", |
| "readlink", |
| "realpath", |
| "renice", |
| "restorecon", |
| "rm", |
| "rmdir", |
| "rmmod", |
| "rtcwake", |
| "runcon", |
| "sed", |
| "sendevent", |
| "seq", |
| "setenforce", |
| "setsid", |
| "sha1sum", |
| "sha224sum", |
| "sha256sum", |
| "sha384sum", |
| "sha512sum", |
| "sleep", |
| "sort", |
| "split", |
| "stat", |
| "strings", |
| "stty", |
| "swapoff", |
| "swapon", |
| "sync", |
| "sysctl", |
| "tac", |
| "tail", |
| "tar", |
| "taskset", |
| "tee", |
| "test", |
| "time", |
| "timeout", |
| "top", |
| "touch", |
| "tr", |
| "true", |
| "truncate", |
| "tty", |
| "ulimit", |
| "umount", |
| "uname", |
| "uniq", |
| "unix2dos", |
| "unlink", |
| "unshare", |
| "uptime", |
| "usleep", |
| "uudecode", |
| "uuencode", |
| "uuidgen", |
| "vmstat", |
| "watch", |
| "wc", |
| "which", |
| "whoami", |
| "xargs", |
| "xxd", |
| "yes", |
| "zcat", |
| ], |
| |
| shared_libs: [ |
| "liblog", |
| "libprocessgroup", |
| "libselinux", |
| ], |
| }, |
| }, |
| } |
| |
| //########################################### |
| // toybox for /system, /vendor, and /recovery |
| //########################################### |
| |
| cc_binary { |
| name: "toybox", |
| defaults: ["toybox-defaults"], |
| host_supported: true, |
| recovery_available: true, |
| } |
| |
| cc_binary { |
| name: "toybox_vendor", |
| defaults: ["toybox-defaults"], |
| vendor: true, |
| } |
| |
| //########################################### |
| // Running the toybox tests |
| //########################################### |
| |
| sh_test { |
| name: "toybox-tests", |
| src: "run-tests-on-android.sh", |
| filename: "run-tests-on-android.sh", |
| test_suites: ["general-tests"], |
| host_supported: true, |
| device_supported: false, |
| test_config: "toybox-tests.xml", |
| data: [ |
| "tests/**/*", |
| "scripts/runtest.sh", |
| ], |
| } |
| |