ba2627c6cd
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>
124 lines
4.7 KiB
Bash
124 lines
4.7 KiB
Bash
# 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
|