blob: d8fe683d0b1f225e2225e6a4ec74b2685f05f3b5 [file] [log] [blame]
Adrien Béraud04d822c2015-04-02 17:44:36 -04001#! /bin/bash
Alexandre Lision43b9aeb2014-07-15 14:21:19 -04002
3# Read the Android Wiki http://wiki.videolan.org/AndroidCompile
4# Setup all that stuff correctly.
Tristan Matthews8d02ef62014-07-22 16:03:17 -04005# Get the latest Android SDK Platform or modify numbers in configure.sh and sflphone-android/default.properties.
Alexandre Lision43b9aeb2014-07-15 14:21:19 -04006
Adrien Béraud6d881d92015-06-17 16:22:23 -04007#for OSX/BSD
8realpath() {
9 [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
10}
11
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040012set -e
13
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040014if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
15 echo "You must define ANDROID_NDK, ANDROID_SDK and ANDROID_ABI before starting."
Ciro Santilli77372d02016-01-20 10:25:01 -050016 echo "They must point to your NDK and SDK directories."
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040017 exit 1
18fi
19
20if [ -z "$ANDROID_ABI" ]; then
Romain Bertozzibba01aa2016-04-01 14:18:43 -040021 echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, x86."
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040022 exit 1
23fi
24
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040025if [ -z "$NO_FPU" ];then
26 NO_FPU=0
27fi
28if [ -z "$NO_ARMV6" ];then
29 NO_ARMV6=0
30fi
31
32BUILD=0
33FETCH=0
34RELEASE=0
35JNI=0
36
37for i in ${@}; do
38 case "$i" in
39 --fetch)
40 FETCH=1
41 ;;
42 --build)
43 BUILD=1
44 ;;
45 release|--release)
46 RELEASE=1
47 ;;
48 jni|--jni)
49 JNI=1
50 ;;
51 *)
52 ;;
53 esac
54done
55
56if [ "$BUILD" = 0 -a "$FETCH" = 0 ];then
57 BUILD=1
58 FETCH=1
59fi
60
61if [ `set -- ${ANDROID_ABI}; echo $#` -gt 1 ]; then
Romain Bertozzi197c8c82016-04-04 14:18:11 -040062 ANDROID_ABIS=""
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040063 ANDROID_ABI_LIST="${ANDROID_ABI}"
64 echo "More than one ABI specified: ${ANDROID_ABI_LIST}"
65 for i in ${ANDROID_ABI_LIST}; do
66 echo "$i starts building"
67 ANDROID_NDK=$ANDROID_NDK ANDROID_SDK=$ANDROID_SDK \
68 NO_FPU=$NO_FPU NO_ARMV6=$NO_ARMV6 ANDROID_ABI=$i \
69 ./compile.sh $* --jni || { echo "$i build KO"; exit 1; }
70 mkdir -p obj/
Adrien Béraudaa771a82015-06-23 23:40:34 -040071 cp -r ring-android/app/src/main/libs/$i obj
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040072 echo "$i build OK"
73 done
74 for i in ${ANDROID_ABI_LIST}; do
Romain Bertozzi197c8c82016-04-04 14:18:11 -040075 if [ -z "$ANDROID_ABIS" ]; then
76 ANDROID_ABIS="$ANDROID_ABIS'$i'"
77 else
78 ANDROID_ABIS="$ANDROID_ABIS,'$i'"
79 fi
80 cp -r obj/$i ring-android/app/src/main/libs/$i
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040081 rm -rf obj/$i
82 done
Romain Bertozzi197c8c82016-04-04 14:18:11 -040083 export ANDROID_ABIS
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040084 make -b -j1 RELEASE=$RELEASE apk || exit 1
85 exit 0
Romain Bertozzi197c8c82016-04-04 14:18:11 -040086elif [ -z "$ANDROID_ABI_LIST" ]; then
87 ANDROID_ABIS="${ANDROID_ABI}"
88 export ANDROID_ABIS
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040089fi
90
91HAVE_ARM=0
92HAVE_X86=0
93HAVE_MIPS=0
94HAVE_64=0
95
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040096# Set up ABI variables
97if [ ${ANDROID_ABI} = "x86" ] ; then
98 TARGET_TUPLE="i686-linux-android"
99 PATH_HOST="x86"
100 HAVE_X86=1
101 PLATFORM_SHORT_ARCH="x86"
102elif [ ${ANDROID_ABI} = "x86_64" ] ; then
103 TARGET_TUPLE="x86_64-linux-android"
104 PATH_HOST="x86_64"
105 HAVE_X86=1
106 HAVE_64=1
107 PLATFORM_SHORT_ARCH="x86_64"
108elif [ ${ANDROID_ABI} = "mips" ] ; then
109 TARGET_TUPLE="mipsel-linux-android"
110 PATH_HOST=$TARGET_TUPLE
111 HAVE_MIPS=1
112 PLATFORM_SHORT_ARCH="mips"
113elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
114 TARGET_TUPLE="aarch64-linux-android"
115 PATH_HOST=$TARGET_TUPLE
116 HAVE_ARM=1
117 HAVE_64=1
118 PLATFORM_SHORT_ARCH="arm64"
119else
120 TARGET_TUPLE="arm-linux-androideabi"
121 PATH_HOST=$TARGET_TUPLE
122 HAVE_ARM=1
123 PLATFORM_SHORT_ARCH="arm"
124fi
125
Adrien Béraud04d822c2015-04-02 17:44:36 -0400126GCCVER=4.9
Adrien Béraud646e1f12016-03-30 13:58:53 -0400127if [ "${HAVE_64}" = 1 ];then
128 ANDROID_API=android-21
129else
130 ANDROID_API=android-16
131fi
132CXXSTL="/"${GCCVER}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400133
134export GCCVER
135export CXXSTL
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400136export ANDROID_API
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400137
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400138# XXX : important!
139[ "$HAVE_ARM" = 1 ] && cat << EOF
140For an ARMv6 device without FPU:
141$ export NO_FPU=1
142For an ARMv5 device:
143$ export NO_ARMV6=1
144
145If you plan to use a release build, run 'compile.sh release'
146EOF
147
148export TARGET_TUPLE
149export PATH_HOST
150export HAVE_ARM
151export HAVE_X86
152export HAVE_MIPS
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400153export HAVE_64
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400154export PLATFORM_SHORT_ARCH
155
156# Add the NDK toolchain to the PATH, needed both for contribs and for building
157# stub libraries
158NDK_TOOLCHAIN_PATH=`echo ${ANDROID_NDK}/toolchains/${PATH_HOST}-${GCCVER}/prebuilt/\`uname|tr A-Z a-z\`-*/bin`
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400159export NDK_TOOLCHAIN_PATH=${NDK_TOOLCHAIN_PATH}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400160export PATH=${NDK_TOOLCHAIN_PATH}:${PATH}
161
162ANDROID_PATH="`pwd`"
163
Adrien Béraud04d822c2015-04-02 17:44:36 -0400164# Fetch ring daemon source
Alexandre Lision7f46d1c2014-10-27 16:39:25 -0400165if [ "$FETCH" = 1 ]
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400166then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400167 # 1/ dring
Alexandre Lisione8dded82016-04-19 17:52:51 -0400168 TESTED_HASH=95886145dd87862679c8e439daf68d0be222beaa
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400169 if [ ! -d "ring-daemon" ]; then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400170 echo "ring daemon source not found, cloning"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400171 git clone https://gerrit-ring.savoirfairelinux.com/ring-daemon.git
172 pushd ring-daemon
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400173 echo android/ >> .git/info/exclude
174 echo contrib/android/ >> .git/info/exclude
Alexandre Lision3a206cf2014-10-15 12:18:51 -0400175 git checkout $TESTED_HASH
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400176 else
Adrien Béraud04d822c2015-04-02 17:44:36 -0400177 echo "ring daemon source found"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400178 pushd ring-daemon
Alexandre Lision65be7702014-09-29 18:06:33 -0400179 git fetch
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400180 fi
181else
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400182 pushd ring
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400183fi
184
185if [ -z "$BUILD" ]
186then
187 echo "Not building anything, please run $0 --build"
188 exit 0
189fi
190
191# Setup CFLAGS
Adrien Béraud04d822c2015-04-02 17:44:36 -0400192if [ ${ANDROID_ABI} = "armeabi-v7a-hard" ] ; then
193 EXTRA_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mcpu=cortex-a8 -D_NDK_MATH_NO_SOFTFP=1"
194elif [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400195 EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400196elif [ ${ANDROID_ABI} = "armeabi" ] ; then
197 if [ -n "${NO_ARMV6}" ]; then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400198 EXTRA_CFLAGS="-march=armv5te -mtune=arm9tdmi -msoft-float "
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400199 else
200 if [ -n "${NO_FPU}" ]; then
201 EXTRA_CFLAGS="-march=armv6j -mtune=arm1136j-s -msoft-float"
202 else
203 EXTRA_CFLAGS="-mfpu=vfp -mcpu=arm1136jf-s -mfloat-abi=softfp"
204 fi
205 fi
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400206elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
207 EXTRA_CFLAGS=""
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400208elif [ ${ANDROID_ABI} = "x86" ] ; then
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400209 EXTRA_CFLAGS="-march=pentium -m32"
210elif [ ${ANDROID_ABI} = "x86_64" ] ; then
211 EXTRA_CFLAGS=""
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400212elif [ ${ANDROID_ABI} = "mips" ] ; then
213 EXTRA_CFLAGS="-march=mips32 -mtune=mips32r2 -mhard-float"
214 # All MIPS Linux kernels since 2.4.4 will trap any unimplemented FPU
215 # instruction and emulate it, so we select -mhard-float.
216 # See http://www.linux-mips.org/wiki/Floating_point#The_Linux_kernel_and_floating_point
217else
Adrien Béraudaa771a82015-06-23 23:40:34 -0400218 echo "Unknown ABI ${ANDROID_ABI}. Die, die, die!"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400219 exit 2
220fi
221
Adrien Béraud04d822c2015-04-02 17:44:36 -0400222EXTRA_CFLAGS="${EXTRA_CFLAGS} -O2 -DHAVE_PTHREADS"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400223EXTRA_CFLAGS="${EXTRA_CFLAGS} -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/include"
224EXTRA_CFLAGS="${EXTRA_CFLAGS} -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}/include"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400225EXTRA_CXXFLAGS="${EXTRA_CFLAGS}"
226EXTRA_CFLAGS="-std=gnu11 ${EXTRA_CFLAGS}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400227
Tristan Matthews676fcee2014-10-03 15:57:09 -0400228# Setup LDFLAGS
Adrien Béraud04d822c2015-04-02 17:44:36 -0400229if [ ${ANDROID_ABI} = "armeabi-v7a-hard" ] ; then
230 EXTRA_LDFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mcpu=cortex-a8 -lm_hard -D_NDK_MATH_NO_SOFTFP=1"
231elif [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400232 EXTRA_LDFLAGS="-march=armv7-a -mthumb"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400233fi
234EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI} -lgnustl_static"
Tristan Matthews676fcee2014-10-03 15:57:09 -0400235
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400236# Make in //
237UNAMES=$(uname -s)
238MAKEFLAGS=
239if which nproc >/dev/null
240then
241MAKEFLAGS=-j`nproc`
242elif [ "$UNAMES" == "Darwin" ] && which sysctl >/dev/null
243then
244MAKEFLAGS=-j`sysctl -n machdep.cpu.thread_count`
245fi
246
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400247# Build buildsystem tools
Adrien Béraud04d822c2015-04-02 17:44:36 -0400248export PATH=`pwd`/extras/tools/build/bin:$PATH
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400249echo "Building tools"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400250pushd extras/tools
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400251./bootstrap
252make $MAKEFLAGS
Tristan Matthewseb9209c2014-10-09 23:11:44 -0400253#FIXME
254echo "HACK for old Jenkins builder...forcing libtool to be built"
255make .libtool
Adrien Béraud04d822c2015-04-02 17:44:36 -0400256popd
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400257
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400258############
259# Contribs #
260############
261echo "Building the contribs"
Romain Bertozzibba01aa2016-04-01 14:18:43 -0400262mkdir -p contrib/native-${TARGET_TUPLE}
Adrien Béraud6d881d92015-06-17 16:22:23 -0400263
264ANDROID_BIN=${NDK_TOOLCHAIN_PATH}
265CROSS_COMPILE=${ANDROID_BIN}/${TARGET_TUPLE}-
266export CROSS_COMPILE="${CROSS_COMPILE}"
267
Adrien Béraud04d822c2015-04-02 17:44:36 -0400268mkdir -p contrib/${TARGET_TUPLE}/lib/pkgconfig
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400269
Romain Bertozzibba01aa2016-04-01 14:18:43 -0400270pushd contrib/native-${TARGET_TUPLE}
Romain Bertozzi197c8c82016-04-04 14:18:11 -0400271../bootstrap --host=${TARGET_TUPLE} --disable-libav --enable-ffmpeg
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400272
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400273# Some libraries have arm assembly which won't build in thumb mode
274# We append -marm to the CFLAGS of these libs to disable thumb mode
275[ ${ANDROID_ABI} = "armeabi-v7a" ] && echo "NOTHUMB := -marm" >> config.mak
Adrien Béraud04d822c2015-04-02 17:44:36 -0400276[ ${ANDROID_ABI} = "armeabi-v7a-hard" ] && echo "NOTHUMB := -marm" >> config.mak
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400277
278# Release or not?
279if [ $# -ne 0 ] && [ "$1" = "release" ]; then
280 OPTS=""
281 EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
282 RELEASE=1
283else
284 OPTS="--enable-debug"
Tristan Matthews8d02ef62014-07-22 16:03:17 -0400285 EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400286 RELEASE=0
287fi
288
Adrien Béraudb179bab2015-10-08 12:04:22 -0400289echo "EXTRA_CFLAGS= -g -fpic ${EXTRA_CFLAGS}" >> config.mak
290echo "EXTRA_CXXFLAGS= -g -fpic ${EXTRA_CXXFLAGS}" >> config.mak
Tristan Matthews676fcee2014-10-03 15:57:09 -0400291echo "EXTRA_LDFLAGS= ${EXTRA_LDFLAGS}" >> config.mak
Adrien Béraud04d822c2015-04-02 17:44:36 -0400292export RING_EXTRA_CFLAGS="${EXTRA_CFLAGS}"
293export RING_EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS}"
294export RING_EXTRA_LDFLAGS="${EXTRA_LDFLAGS}"
Romain Bertozzi197c8c82016-04-04 14:18:11 -0400295export SYSROOT=$ANDROID_NDK/platforms/$ANDROID_API/arch-$PLATFORM_SHORT_ARCH
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400296
Alexandre Lision10437562015-01-29 21:07:16 -0500297make list
Romain Bertozzibba01aa2016-04-01 14:18:43 -0400298make fetch
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400299export PATH="$PATH:$PWD/../$TARGET_TUPLE/bin"
Romain Bertozzibba01aa2016-04-01 14:18:43 -0400300make
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400301popd
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400302
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400303############
Adrien Béraud04d822c2015-04-02 17:44:36 -0400304# Make Ring #
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400305############
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400306RING_SRC_DIR="${PWD}"
307RING_BUILD_DIR="`realpath build-android-${TARGET_TUPLE}`"
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400308export RING_SRC_DIR="${RING_SRC_DIR}"
309export RING_BUILD_DIR="${RING_BUILD_DIR}"
310
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400311mkdir -p build-android-${TARGET_TUPLE} && pushd build-android-${TARGET_TUPLE}
312DRING_PATH="`pwd`"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400313
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400314if [ "$JNI" = 1 ]; then
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400315 CLEAN="jniclean"
Adrien Béraudaa771a82015-06-23 23:40:34 -0400316 TARGET="ring-android/app/src/main/obj/local/${ANDROID_ABI}/libring.so"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400317else
318 CLEAN="distclean"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400319 TARGET=
320fi
321
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400322if [ ! -f config.h ]; then
323 echo "Bootstraping"
324 cd ../
325 ./autogen.sh
Adrien Béraud04d822c2015-04-02 17:44:36 -0400326 cd ../
327 cd ring-android
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400328 ./make-swig.sh
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400329 cd ../ring-daemon/build-android-${TARGET_TUPLE}
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400330 echo "Configuring"
331 ${ANDROID_PATH}/configure.sh ${OPTS}
332fi
333
334# ANDROID NDK FIXUP (BLAME GOOGLE)
335config_undef ()
336{
337 previous_change=`stat -c "%y" config.h`
338 sed -i 's,#define '$1' 1,/\* #undef '$1' \*/,' config.h
339 # don't change modified date in order to don't trigger a full build
340 touch -d "$previous_change" config.h
341}
342
343# if config dependencies change, ./config.status --recheck
344# is run and overwrite previously hacked config.h. So call make Makefile here
345# and hack config.h after.
346
347make $MAKEFLAGS Makefile
348
349if [ ${ANDROID_ABI} = "x86" -a ${ANDROID_API} != "android-21" ] ; then
350 # NDK x86 libm.so has nanf symbol but no nanf definition, we don't known if
351 # intel devices has nanf. Assume they don't have it.
352 config_undef HAVE_NANF
353fi
354if [ ${ANDROID_API} = "android-21" ] ; then
355 # android-21 has empty sys/shm.h headers that triggers shm detection but it
356 # doesn't have any shm functions and/or symbols. */
357 config_undef HAVE_SYS_SHM_H
358fi
359# END OF ANDROID NDK FIXUP
360
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400361echo "Building dring ${MAKEFLAGS}"
362V=99 make $MAKEFLAGS
Alexandre Lision3a206cf2014-10-15 12:18:51 -0400363
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400364####################################
365# Ring android UI and specific code
366####################################
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400367cd ../..
Tristan Matthewsfc848072014-10-09 03:43:54 -0400368
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400369echo "Building Ring for Android ${PWD}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400370make $CLEAN
Adrien Béraudb179bab2015-10-08 12:04:22 -0400371ANDROID_ABI="${ANDROID_ABI}" make -j1 TARGET_TUPLE=$TARGET_TUPLE PLATFORM_SHORT_ARCH=$PLATFORM_SHORT_ARCH CXXSTL=$CXXSTL RELEASE=$RELEASE $TARGET
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400372
373#
374# Exporting a environment script with all the necessary variables
375#
376echo "Generating environment script."
377cat <<EOF
378This is a script that will export many of the variables used in this
379script. It will allow you to compile parts of the build without having
380to rebuild the entire build (e.g. recompile only the Java part).
381
382To use it, include the script into your shell, like this:
383 source env.sh
384
385Now, you can use this command to build the Java portion:
386 make -e
387
388The file will be automatically regenerated by compile.sh, so if you change
389your NDK/SDK locations or any build configurations, just re-run this
390script (sh compile.sh) and it will automatically update the file.
391
392EOF
393
394echo "# This file was automatically generated by compile.sh" > env.sh
395echo "# Re-run 'sh compile.sh' to update this file." >> env.sh
396
397# The essentials
398cat <<EssentialsA >> env.sh
399export ANDROID_ABI=$ANDROID_ABI
400export ANDROID_SDK=$ANDROID_SDK
401export ANDROID_NDK=$ANDROID_NDK
402export GCCVER=$GCCVER
403export CXXSTL=$CXXSTL
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400404export RING_BUILD_DIR=$RING_BUILD_DIR
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400405export TARGET_TUPLE=$TARGET_TUPLE
406export PATH_HOST=$PATH_HOST
407export PLATFORM_SHORT_ARCH=$PLATFORM_SHORT_ARCH
408EssentialsA
409
410# PATH
411echo "export PATH=$NDK_TOOLCHAIN_PATH:\${ANDROID_SDK}/platform-tools:\${PATH}" >> env.sh
412
413# CPU flags
414if [ -n "${HAVE_ARM}" ]; then
415 echo "export HAVE_ARM=1" >> env.sh
416elif [ -n "${HAVE_X86}" ]; then
417 echo "export HAVE_X86=1" >> env.sh
418elif [ -n "${HAVE_MIPS}" ]; then
419 echo "export HAVE_MIPS=1" >> env.sh
420fi
421
422if [ -n "${NO_ARMV6}" ]; then
423 echo "export NO_ARMV6=1" >> env.sh
424fi
425if [ -n "${NO_FPU}" ]; then
426 echo "export NO_FPU=1" >> env.sh
427fi