Move mksh to a separate project.

This was originally in system/core/mksh

commit ba2627c6cdb3aaa40aebd362170c382b55b7b511
Author: Thorsten Glaser <tg@mirbsd.org>
Date:   Tue Aug 24 18:21:37 2010 +0200

    Add mksh from CVS 2010/08/24 as system/core/mksh module

    Both shells (ash from system/core/sh, and mksh) are built by
    default but only the one where $(TARGET_SHELL) is set to is
    actually installed (the shell and the mkshrc configuration
    file are tagged shell_mksh for this to work).

commit f41986bbc79055a4feed7266cac5c1b540296daf
Author: Jeff Hamilton <jham@android.com>
Date:   Fri Sep 10 10:46:06 2010 -0500

    Don't alias 'stop' to 'kill -STOP'

    Android has already has a stop command used
    to stop the main runtime and the alias
    interferes with testing tools that expect
    stop to kill the runtime.

Change-Id: I5ddf28dbd0221148d3b8f55eaf4f1e7d046c9288
diff --git a/mkmf.sh b/mkmf.sh
new file mode 100644
index 0000000..15d0432
--- /dev/null
+++ b/mkmf.sh
@@ -0,0 +1,124 @@
+# Copyright © 2010
+#	Thorsten Glaser <t.glaser@tarent.de>
+# This file is provided under the same terms as mksh.
+#-
+# Helper script to let src/Build.sh generate Makefrag.inc
+# which we in turn use in the manual creation of Android.mk
+#
+# This script is supposed to be run from/inside AOSP by the
+# porter of mksh to Android (and only manually).
+
+cd "$(dirname "$0")"
+srcdir=$(pwd)
+rm -rf tmp
+mkdir tmp
+cd ../../..
+aospdir=$(pwd)
+cd $srcdir/tmp
+
+addvar() {
+	_vn=$1; shift
+
+	eval $_vn=\"\$$_vn '$*"'
+}
+
+CFLAGS=
+CPPFLAGS=
+LDFLAGS=
+LIBS=
+
+# The definitions below were generated by examining the
+# output of the following command:
+# make showcommands out/target/product/generic/system/bin/mksh 2>&1 | tee log
+#
+# They are only used to let Build.sh find the compiler, header
+# files, linker and libraries to generate Makefrag.inc (similar
+# to what GNU autotools’ configure scripts do), and never used
+# during the real build process. We need this to port mksh to
+# the Android platform and it is crucial these are as close as
+# possible to the values used later. (You also must example the
+# results gathered from Makefrag.inc to see they are the same
+# across all Android platforms, or add appropriate ifdefs.)
+# Since we no longer use the NDK, the AOSP has to have been
+# built before using this script (targetting generic/emulator).
+
+CC=$aospdir/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
+addvar CPPFLAGS -I$aospdir/system/core/include \
+    -I$aospdir/hardware/libhardware/include \
+    -I$aospdir/system/core/include \
+    -I$aospdir/hardware/libhardware/include \
+    -I$aospdir/hardware/libhardware_legacy/include \
+    -I$aospdir/hardware/ril/include \
+    -I$aospdir/dalvik/libnativehelper/include \
+    -I$aospdir/frameworks/base/include \
+    -I$aospdir/frameworks/base/opengl/include \
+    -I$aospdir/external/skia/include \
+    -I$aospdir/out/target/product/generic/obj/include \
+    -I$aospdir/bionic/libc/arch-arm/include \
+    -I$aospdir/bionic/libc/include \
+    -I$aospdir/bionic/libstdc++/include \
+    -I$aospdir/bionic/libc/kernel/common \
+    -I$aospdir/bionic/libc/kernel/arch-arm \
+    -I$aospdir/bionic/libm/include \
+    -I$aospdir/bionic/libm/include/arch/arm \
+    -I$aospdir/bionic/libthread_db/include \
+    -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \
+    -I$aospdir/system/core/include/arch/linux-arm/ \
+    -include $aospdir/system/core/include/arch/linux-arm/AndroidConfig.h \
+    -DANDROID -DNDEBUG -UDEBUG
+addvar CFLAGS -fno-exceptions -Wno-multichar -msoft-float -fpic \
+    -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums \
+    -march=armv5te -mtune=xscale -mthumb-interwork -fmessage-length=0 \
+    -W -Wall -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type \
+    -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point \
+    -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once \
+    -fgcse-after-reload -frerun-cse-after-loop -frename-registers -mthumb \
+    -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
+addvar LDFLAGS -nostdlib -Bdynamic -Wl,-T,$aospdir/build/core/armelf.x \
+    -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections \
+    -Wl,-z,nocopyreloc -Wl,--no-undefined \
+    $aospdir/out/target/product/generic/obj/lib/crtbegin_dynamic.o
+addvar LIBS -L$aospdir/out/target/product/generic/obj/lib \
+    -Wl,-rpath-link=$aospdir/out/target/product/generic/obj/lib -lc \
+    $aospdir/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a \
+    $aospdir/out/target/product/generic/obj/lib/crtend_android.o
+
+
+### Override flags
+# We don’t even *support* UTF-8 by default ☹
+addvar CPPFLAGS -DMKSH_ASSUME_UTF8=0
+# No getpwnam() calls (affects "cd ~username/" only)
+addvar CPPFLAGS -DMKSH_NOPWNAM
+# Compile an extra small mksh (optional)
+#addvar CPPFLAGS -DMKSH_SMALL
+# Leave out the ulimit builtin
+#addvar CPPFLAGS -DMKSH_NO_LIMITS
+
+# Set target platform
+TARGET_OS=Linux
+# Building with -std=c99 or -std=gnu99 clashes with Bionic headers
+HAVE_CAN_STDG99=0
+HAVE_CAN_STDC99=0
+export HAVE_CAN_STDG99 HAVE_CAN_STDC99
+
+# Android-x86 does not have helper functions for ProPolice SSP
+# and AOSP adds the flags by itself (same for warning flags)
+HAVE_CAN_FNOSTRICTALIASING=0
+HAVE_CAN_FSTACKPROTECTORALL=0
+HAVE_CAN_WALL=0
+export HAVE_CAN_FNOSTRICTALIASING HAVE_CAN_FSTACKPROTECTORALL HAVE_CAN_WALL
+
+# disable the mknod(8) built-in to get rid of needing setmode.c
+HAVE_MKNOD=0; export HAVE_MKNOD
+
+# even the idea of persistent history on a phone is funny
+HAVE_PERSISTENT_HISTORY=0; export HAVE_PERSISTENT_HISTORY
+
+# ... and run it!
+export CC CPPFLAGS CFLAGS LDFLAGS LIBS TARGET_OS
+sh ../src/Build.sh -M
+rv=$?
+test x0 = x"$rv" && mv -f Makefrag.inc ../
+cd ..
+rm -rf tmp
+exit $rv