#
# 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 \
    dd \
    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 27; echo $$?),0)
ALL_TOOLS += \
    fmt \
    start \
    stop \
    stty
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);)

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
