diff options
author | Thorsten Glaser <tg@mirbsd.org> | 2010-08-24 18:21:37 +0200 |
---|---|---|
committer | Thorsten Glaser <tg@mirbsd.org> | 2010-08-24 18:25:55 +0200 |
commit | ba2627c6cdb3aaa40aebd362170c382b55b7b511 (patch) | |
tree | 2c311800ff30feeca8be7967c82ffbe77b7324fc /mksh/mkmf.sh | |
parent | bdc36d641c2d557cc20b8cf044048f0a8c72e774 (diff) | |
download | core-ba2627c6cdb3aaa40aebd362170c382b55b7b511.tar.gz core-ba2627c6cdb3aaa40aebd362170c382b55b7b511.tar.bz2 core-ba2627c6cdb3aaa40aebd362170c382b55b7b511.zip |
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).
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
Diffstat (limited to 'mksh/mkmf.sh')
-rw-r--r-- | mksh/mkmf.sh | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/mksh/mkmf.sh b/mksh/mkmf.sh new file mode 100644 index 000000000..15d04320d --- /dev/null +++ b/mksh/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 |