# Copyright © 2010, 2013
#    Thorsten Glaser <t.glaser@tarent.de>
# This file is provided under the same terms as mksh.

LOCAL_PATH := $(call my-dir)


# /system/etc/mkshrc

include $(CLEAR_VARS)

LOCAL_MODULE := mkshrc
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)


# /system/bin/sh

include $(CLEAR_VARS)

LOCAL_MODULE := sh
LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk

# mksh source files
MKSH_SRC_FILES := \
    src/lalloc.c src/edit.c src/eval.c src/exec.c \
    src/expr.c src/funcs.c src/histrap.c src/jobs.c \
    src/lex.c src/main.c src/misc.c src/shf.c \
    src/syn.c src/tree.c src/var.c

MKSH_INCLUDES := $(LOCAL_PATH)/src

MKSH_CFLAGS += \
    -Wno-deprecated-declarations \
    -fno-asynchronous-unwind-tables \
    -fno-strict-aliasing \
    -fstack-protector -fwrapv \

# ...and CPPFLAGS.
MKSH_CFLAGS += \
    -DDEBUG_LEAKS -DMKSH_ASSUME_UTF8 \
    -DMKSH_DONT_EMIT_IDSTRING \
    -DMKSH_BUILDSH \
    -D_GNU_SOURCE -DSETUID_CAN_FAIL_WITH_EAGAIN \
    -DHAVE_ATTRIBUTE_BOUNDED=0 -DHAVE_ATTRIBUTE_FORMAT=1 \
    -DHAVE_ATTRIBUTE_NORETURN=1 \
    -DHAVE_ATTRIBUTE_PURE=1 \
    -DHAVE_ATTRIBUTE_UNUSED=1 \
    -DHAVE_ATTRIBUTE_USED=1 -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 \
    -DHAVE_BOTH_TIME_H=1 -DHAVE_SYS_BSDTYPES_H=0 \
    -DHAVE_SYS_FILE_H=1 -DHAVE_SYS_MKDEV_H=0 -DHAVE_SYS_MMAN_H=1 \
    -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 \
    -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_SYSMACROS_H=1 \
    -DHAVE_BSTRING_H=0 -DHAVE_GRP_H=1 -DHAVE_IO_H=0 -DHAVE_LIBGEN_H=1 \
    -DHAVE_LIBUTIL_H=0 -DHAVE_PATHS_H=1 -DHAVE_STDINT_H=1 \
    -DHAVE_STRINGS_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_ULIMIT_H=0 \
    -DHAVE_VALUES_H=0 -DHAVE_CAN_INTTYPES=1 -DHAVE_CAN_UCBINTS=1 \
    -DHAVE_CAN_INT8TYPE=1 -DHAVE_CAN_UCBINT8=1 -DHAVE_RLIM_T=1 \
    -DHAVE_SIG_T=1 \
    -DHAVE_STRING_POOLING=1 \
    -DHAVE_SYS_ERRLIST=0 -DHAVE_SYS_SIGNAME=1 \
    -DHAVE_SYS_SIGLIST=1 -DHAVE_FLOCK=1 -DHAVE_LOCK_FCNTL=1 \
    -DHAVE_GETRUSAGE=1 \
    -DHAVE_GETSID=1 \
    -DHAVE_GETTIMEOFDAY=1 \
    -DHAVE_ISSETUGID=0 \
    -DHAVE_KILLPG=1 \
    -DHAVE_MEMMOVE=1 -DHAVE_MKNOD=0 -DHAVE_MMAP=1 -DHAVE_NICE=1 \
    -DHAVE_REVOKE=0 -DHAVE_SETLOCALE_CTYPE=0 \
    -DHAVE_LANGINFO_CODESET=0 -DHAVE_SELECT=1 -DHAVE_SETRESUGID=1 \
    -DHAVE_SETGROUPS=1 -DHAVE_STRERROR=1 -DHAVE_STRSIGNAL=0 \
    -DHAVE_STRLCPY=1 -DHAVE_FLOCK_DECL=1 -DHAVE_REVOKE_DECL=1 \
    -DHAVE_SYS_ERRLIST_DECL=0 -DHAVE_SYS_SIGLIST_DECL=1 \
    -DHAVE_PERSISTENT_HISTORY=0 -DMKSH_BUILD_R=551

LOCAL_SRC_FILES := $(MKSH_SRC_FILES)

LOCAL_SYSTEM_SHARED_LIBRARIES := libc

LOCAL_C_INCLUDES := $(MKSH_INCLUDES)

# Additional flags first...
LOCAL_CFLAGS += \
    -DMKSH_DEFAULT_PROFILEDIR=\"/system/etc\" \
    -DMKSHRC_PATH=\"/system/etc/mkshrc\" \
    -DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\" \
    -DMKSH_DEFAULT_TMPDIR=\"/data/local\" \

LOCAL_CFLAGS += $(MKSH_CFLAGS)

include $(BUILD_EXECUTABLE)

# /vendor/etc/mkshrc
include $(CLEAR_VARS)

LOCAL_MODULE := mkshrc_vendor
LOCAL_MODULE_STEM := mkshrc
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)

# /vendor/bin/sh
include $(CLEAR_VARS)

LOCAL_MODULE := sh_vendor
LOCAL_MODULE_STEM := sh
LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)

# mksh source files
LOCAL_SRC_FILES := $(MKSH_SRC_FILES)

LOCAL_C_INCLUDES := $(MKSH_INCLUDES)

# Additional flags first...
LOCAL_CFLAGS += \
    -DMKSH_DEFAULT_PROFILEDIR=\"/vendor/etc\" \
    -DMKSHRC_PATH=\"/vendor/etc/mkshrc\" \
    -DMKSH_DEFAULT_EXECSHELL=\"/vendor/bin/sh\" \
    -DMKSH_DEFPATH_OVERRIDE=\"/vendor/bin:/vendor/xbin\" \

LOCAL_CFLAGS += $(MKSH_CFLAGS)

include $(BUILD_EXECUTABLE)

MKSH_SRC_FILES:=
MKSH_CFLAGS:=
MKSH_INCLUDES:=
