15155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Copyright © 2010
25155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#	Thorsten Glaser <t.glaser@tarent.de>
35155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# This file is provided under the same terms as mksh.
45155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#-
55155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Helper script to let src/Build.sh generate Makefrag.inc
65155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# which we in turn use in the manual creation of Android.mk
75155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#
85155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# This script is supposed to be run from/inside AOSP by the
95155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# porter of mksh to Android (and only manually).
105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucd "$(dirname "$0")"
125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querusrcdir=$(pwd)
135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurm -rf tmp
145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querumkdir tmp
155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucd ../../..
165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaospdir=$(pwd)
175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucd $srcdir/tmp
185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar() {
205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru	_vn=$1; shift
215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru	eval $_vn=\"\$$_vn '$*"'
235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru}
245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
255155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCFLAGS=
265155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCPPFLAGS=
275155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruLDFLAGS=
285155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruLIBS=
295155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
305155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# The definitions below were generated by examining the
315155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# output of the following command:
325155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# make showcommands out/target/product/generic/system/bin/mksh 2>&1 | tee log
335155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#
345155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# They are only used to let Build.sh find the compiler, header
355155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# files, linker and libraries to generate Makefrag.inc (similar
365155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# to what GNU autotools’ configure scripts do), and never used
375155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# during the real build process. We need this to port mksh to
385155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# the Android platform and it is crucial these are as close as
395155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# possible to the values used later. (You also must example the
405155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# results gathered from Makefrag.inc to see they are the same
415155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# across all Android platforms, or add appropriate ifdefs.)
425155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Since we no longer use the NDK, the AOSP has to have been
435155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# built before using this script (targetting generic/emulator).
445155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
455155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruCC=$aospdir/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc
465155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar CPPFLAGS -I$aospdir/system/core/include \
475155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/hardware/libhardware/include \
485155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/system/core/include \
495155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/hardware/libhardware/include \
505155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/hardware/libhardware_legacy/include \
515155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/hardware/ril/include \
5293bd42c789325fdd5f8c9ba8f000abd65281f241Elliott Hughes    -I$aospdir/libnativehelper/include \
535155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/frameworks/base/include \
545155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/frameworks/base/opengl/include \
555155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/external/skia/include \
565155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/out/target/product/generic/obj/include \
575155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libc/arch-arm/include \
585155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libc/include \
595155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libstdc++/include \
605155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libc/kernel/common \
615155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libc/kernel/arch-arm \
625155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libm/include \
635155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libm/include/arch/arm \
645155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/bionic/libthread_db/include \
655155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \
665155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -I$aospdir/system/core/include/arch/linux-arm/ \
675155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -include $aospdir/system/core/include/arch/linux-arm/AndroidConfig.h \
685155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -DANDROID -DNDEBUG -UDEBUG
695155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar CFLAGS -fno-exceptions -Wno-multichar -msoft-float -fpic \
705155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums \
715155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -march=armv5te -mtune=xscale -mthumb-interwork -fmessage-length=0 \
725155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -W -Wall -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type \
735155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point \
745155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once \
755155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -fgcse-after-reload -frerun-cse-after-loop -frename-registers -mthumb \
765155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
775155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar LDFLAGS -nostdlib -Bdynamic -Wl,-T,$aospdir/build/core/armelf.x \
785155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections \
795155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -Wl,-z,nocopyreloc -Wl,--no-undefined \
805155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    $aospdir/out/target/product/generic/obj/lib/crtbegin_dynamic.o
815155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar LIBS -L$aospdir/out/target/product/generic/obj/lib \
825155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    -Wl,-rpath-link=$aospdir/out/target/product/generic/obj/lib -lc \
835155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    $aospdir/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a \
845155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru    $aospdir/out/target/product/generic/obj/lib/crtend_android.o
855155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
865155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
875155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru### Override flags
885155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# We don’t even *support* UTF-8 by default ☹
895155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar CPPFLAGS -DMKSH_ASSUME_UTF8=0
905155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# No getpwnam() calls (affects "cd ~username/" only)
915155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruaddvar CPPFLAGS -DMKSH_NOPWNAM
925155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Compile an extra small mksh (optional)
935155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#addvar CPPFLAGS -DMKSH_SMALL
945155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Leave out the ulimit builtin
955155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru#addvar CPPFLAGS -DMKSH_NO_LIMITS
965155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
975155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Set target platform
985155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruTARGET_OS=Linux
995155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Building with -std=c99 or -std=gnu99 clashes with Bionic headers
1005155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_CAN_STDG99=0
1015155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_CAN_STDC99=0
1025155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruexport HAVE_CAN_STDG99 HAVE_CAN_STDC99
1035155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
1045155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# Android-x86 does not have helper functions for ProPolice SSP
1055155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# and AOSP adds the flags by itself (same for warning flags)
1065155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_CAN_FNOSTRICTALIASING=0
1075155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_CAN_FSTACKPROTECTORALL=0
1085155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_CAN_WALL=0
1095155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruexport HAVE_CAN_FNOSTRICTALIASING HAVE_CAN_FSTACKPROTECTORALL HAVE_CAN_WALL
1105155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
1115155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# disable the mknod(8) built-in to get rid of needing setmode.c
1125155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_MKNOD=0; export HAVE_MKNOD
1135155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
1145155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# even the idea of persistent history on a phone is funny
1155155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste QueruHAVE_PERSISTENT_HISTORY=0; export HAVE_PERSISTENT_HISTORY
1165155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru
1175155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queru# ... and run it!
1185155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruexport CC CPPFLAGS CFLAGS LDFLAGS LIBS TARGET_OS
1195155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querush ../src/Build.sh -M
1205155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurv=$?
1215155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querutest x0 = x"$rv" && mv -f Makefrag.inc ../
1225155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querucd ..
1235155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Querurm -rf tmp
1245155f1c7438ef540d7b25eb70aa1639579795b07Jean-Baptiste Queruexit $rv
125