1 # Copyright © 2010, 2012, 2013
2 # Thorsten Glaser <tg@mirbsd.org>
3 # This file is provided under the same terms as mksh.
5 # Helper script to let src/Build.sh generate Makefrag.inc
6 # which we in turn use in the manual creation of Android.mk
8 # This script is supposed to be run from/inside AOSP by the
9 # porter of mksh to Android (and only manually).
11 if test x"$1" = x"-t"; then
32 eval $_vn=\"\$$_vn '$*"'
40 # The definitions below were generated by examining the
41 # output of the following command:
42 # make showcommands out/target/product/generic/system/bin/mksh 2>&1 | tee log
44 # They are only used to let Build.sh find the compiler, header
45 # files, linker and libraries to generate Makefrag.inc (similar
46 # to what GNU autotools’ configure scripts do), and never used
47 # during the real build process. We need this to port mksh to
48 # the Android platform and it is crucial these are as close as
49 # possible to the values used later. (You also must example the
50 # results gathered from Makefrag.inc to see they are the same
51 # across all Android platforms, or add appropriate ifdefs.)
52 # Since we no longer use the NDK, the AOSP has to have been
53 # built before using this script (targetting generic/emulator).
55 CC=$aospdir/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc
57 -I$aospdir/libnativehelper/include/nativehelper \
58 -isystem $aospdir/system/core/include \
59 -isystem $aospdir/hardware/libhardware/include \
60 -isystem $aospdir/hardware/libhardware_legacy/include \
61 -isystem $aospdir/hardware/ril/include \
62 -isystem $aospdir/libnativehelper/include \
63 -isystem $aospdir/frameworks/native/include \
64 -isystem $aospdir/frameworks/native/opengl/include \
65 -isystem $aospdir/frameworks/av/include \
66 -isystem $aospdir/frameworks/base/include \
67 -isystem $aospdir/external/skia/include \
68 -isystem $aospdir/out/target/product/generic/obj/include \
69 -isystem $aospdir/bionic/libc/arch-arm/include \
70 -isystem $aospdir/bionic/libc/include \
71 -isystem $aospdir/bionic/libstdc++/include \
72 -isystem $aospdir/bionic/libc/kernel/common \
73 -isystem $aospdir/bionic/libc/kernel/arch-arm \
74 -isystem $aospdir/bionic/libm/include \
75 -isystem $aospdir/bionic/libm/include/arm \
76 -isystem $aospdir/bionic/libthread_db/include \
78 -include $aospdir/build/core/combo/include/arch/linux-arm/AndroidConfig.h \
79 -I$aospdir/build/core/combo/include/arch/linux-arm/ \
80 -DANDROID -DNDEBUG -UDEBUG
92 -Werror=format-security \
97 -Wno-unused-but-set-variable \
99 -fno-strict-volatile-bitfields \
108 -Werror=return-type \
109 -Werror=non-virtual-dtor \
111 -Werror=sequence-point \
113 -Wstrict-aliasing=2 \
114 -fgcse-after-reload \
115 -frerun-cse-after-loop \
119 -fomit-frame-pointer \
126 -Wl,-dynamic-linker,/system/bin/linker \
132 -Wl,--warn-shared-textrel \
133 -Wl,--fatal-warnings \
135 -Wl,--fix-cortex-a8 \
137 $aospdir/out/target/product/generic/obj/lib/crtbegin_dynamic.o
139 -L$aospdir/out/target/product/generic/obj/lib \
140 -Wl,-rpath-link=$aospdir/out/target/product/generic/obj/lib \
141 -Wl,--no-whole-archive \
142 $aospdir/out/target/product/generic/obj/STATIC_LIBRARIES/libcompiler_rt-extras_intermediates/libcompiler_rt-extras.a \
144 $aospdir/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/../lib/gcc/arm-linux-androideabi/4.7/armv7-a/libgcc.a \
145 $aospdir/out/target/product/generic/obj/lib/crtend_android.o
148 ### Flags used by test builds
149 if test $mkmfmode = 1; then
150 addvar CPPFLAGS '-DMKSHRC_PATH=\"/system/etc/mkshrc\"'
151 addvar CPPFLAGS '-DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\"'
152 addvar CPPFLAGS '-DMKSH_DEFAULT_TMPDIR=\"/data/local\"'
156 # Let the shell free all memory upon exiting
157 addvar CPPFLAGS -DDEBUG_LEAKS
158 # UTF-8 works nowadays
159 addvar CPPFLAGS -DMKSH_ASSUME_UTF8
160 # Reduce filedescriptor usage
161 addvar CPPFLAGS -DMKSH_CONSERVATIVE_FDS
162 # Leave out RCS ID strings from the binary
163 addvar CPPFLAGS -DMKSH_DONT_EMIT_IDSTRING
164 # No getpwnam() calls (affects "cd ~username/" only)
165 addvar CPPFLAGS -DMKSH_NOPWNAM
166 # Leave out the ulimit builtin
167 #addvar CPPFLAGS -DMKSH_NO_LIMITS
168 # Compile an extra small mksh (optional)
169 #addvar CPPFLAGS -DMKSH_SMALL
171 # Set target platform
174 # Android-x86 does not have helper functions for ProPolice SSP
175 # and AOSP adds the flags by itself (same for warning flags)
176 HAVE_CAN_FNOSTRICTALIASING=0
177 HAVE_CAN_FSTACKPROTECTORALL=0
179 export HAVE_CAN_FNOSTRICTALIASING HAVE_CAN_FSTACKPROTECTORALL HAVE_CAN_WALL
181 # even the idea of persistent history on a phone is funny
182 HAVE_PERSISTENT_HISTORY=0; export HAVE_PERSISTENT_HISTORY
185 export CC CPPFLAGS CFLAGS LDFLAGS LIBS TARGET_OS
186 sh ../src/Build.sh $args
188 test x"$args" = x"-r" && exit $rv
189 test x0 = x"$rv" && mv -f Makefrag.inc ../