blob: ead06d7b2bff1897d517068436907d73d0009e8b [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."
16 echo "They must point to your NDK and SDK directories.\n"
17 exit 1
18fi
19
20if [ -z "$ANDROID_ABI" ]; then
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040021 echo "Please set ANDROID_ABI to your architecture: armeabi-v7a, armeabi, arm64-v8a, x86, x86_64 or mips."
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
62 ANDROID_ABI_LIST="${ANDROID_ABI}"
63 echo "More than one ABI specified: ${ANDROID_ABI_LIST}"
64 for i in ${ANDROID_ABI_LIST}; do
65 echo "$i starts building"
66 ANDROID_NDK=$ANDROID_NDK ANDROID_SDK=$ANDROID_SDK \
67 NO_FPU=$NO_FPU NO_ARMV6=$NO_ARMV6 ANDROID_ABI=$i \
68 ./compile.sh $* --jni || { echo "$i build KO"; exit 1; }
69 mkdir -p obj/
Adrien Béraud04d822c2015-04-02 17:44:36 -040070 cp -r ring-android/libs/$i obj
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040071 echo "$i build OK"
72 done
73 for i in ${ANDROID_ABI_LIST}; do
Adrien Béraud04d822c2015-04-02 17:44:36 -040074 cp -r obj/$i ring-android/libs/
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040075 rm -rf obj/$i
76 done
77 make -b -j1 RELEASE=$RELEASE apk || exit 1
78 exit 0
79fi
80
81HAVE_ARM=0
82HAVE_X86=0
83HAVE_MIPS=0
84HAVE_64=0
85
86
87# Set up ABI variables
88if [ ${ANDROID_ABI} = "x86" ] ; then
89 TARGET_TUPLE="i686-linux-android"
90 PATH_HOST="x86"
91 HAVE_X86=1
92 PLATFORM_SHORT_ARCH="x86"
93elif [ ${ANDROID_ABI} = "x86_64" ] ; then
94 TARGET_TUPLE="x86_64-linux-android"
95 PATH_HOST="x86_64"
96 HAVE_X86=1
97 HAVE_64=1
98 PLATFORM_SHORT_ARCH="x86_64"
99elif [ ${ANDROID_ABI} = "mips" ] ; then
100 TARGET_TUPLE="mipsel-linux-android"
101 PATH_HOST=$TARGET_TUPLE
102 HAVE_MIPS=1
103 PLATFORM_SHORT_ARCH="mips"
104elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
105 TARGET_TUPLE="aarch64-linux-android"
106 PATH_HOST=$TARGET_TUPLE
107 HAVE_ARM=1
108 HAVE_64=1
109 PLATFORM_SHORT_ARCH="arm64"
110else
111 TARGET_TUPLE="arm-linux-androideabi"
112 PATH_HOST=$TARGET_TUPLE
113 HAVE_ARM=1
114 PLATFORM_SHORT_ARCH="arm"
115fi
116
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400117# try to detect NDK version
Adrien Béraud04d822c2015-04-02 17:44:36 -0400118GCCVER=4.9
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400119REL=$(grep -o '^r[0-9]*.*' $ANDROID_NDK/RELEASE.TXT 2>/dev/null|cut -b2-)
120case "$REL" in
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400121 10*)
122 if [ "${HAVE_64}" = 1 ];then
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400123 ANDROID_API=android-21
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400124 else
Adrien Béraud04d822c2015-04-02 17:44:36 -0400125 ANDROID_API=android-15
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400126 fi
127 CXXSTL="/"${GCCVER}
128 ;;
129 9*)
130 if [ "${HAVE_64}" = 1 ];then
131 echo "You need the NDKv10 or later for 64 bits build"
132 exit 1
133 fi
Adrien Béraud04d822c2015-04-02 17:44:36 -0400134 ANDROID_API=android-15
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400135 CXXSTL="/"${GCCVER}
136 ;;
137 7|8|*)
138 echo "You need the NDKv9 or later"
139 exit 1
140 ;;
141esac
142
143export GCCVER
144export CXXSTL
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400145export ANDROID_API
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400146
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400147# XXX : important!
148[ "$HAVE_ARM" = 1 ] && cat << EOF
149For an ARMv6 device without FPU:
150$ export NO_FPU=1
151For an ARMv5 device:
152$ export NO_ARMV6=1
153
154If you plan to use a release build, run 'compile.sh release'
155EOF
156
157export TARGET_TUPLE
158export PATH_HOST
159export HAVE_ARM
160export HAVE_X86
161export HAVE_MIPS
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400162export HAVE_64
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400163export PLATFORM_SHORT_ARCH
164
165# Add the NDK toolchain to the PATH, needed both for contribs and for building
166# stub libraries
167NDK_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 -0400168export NDK_TOOLCHAIN_PATH=${NDK_TOOLCHAIN_PATH}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400169export PATH=${NDK_TOOLCHAIN_PATH}:${PATH}
170
171ANDROID_PATH="`pwd`"
172
Adrien Béraud04d822c2015-04-02 17:44:36 -0400173# Fetch ring daemon source
Alexandre Lision7f46d1c2014-10-27 16:39:25 -0400174if [ "$FETCH" = 1 ]
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400175then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400176 # 1/ dring
Adrien Béraud6d881d92015-06-17 16:22:23 -0400177 TESTED_HASH=574f51c95f93e0eb312adad21d121a699e433332
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400178 if [ ! -d "ring-daemon" ]; then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400179 echo "ring daemon source not found, cloning"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400180 git clone https://gerrit-ring.savoirfairelinux.com/ring-daemon.git
181 pushd ring-daemon
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400182 echo android/ >> .git/info/exclude
183 echo contrib/android/ >> .git/info/exclude
Alexandre Lision3a206cf2014-10-15 12:18:51 -0400184 git checkout $TESTED_HASH
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400185 else
Adrien Béraud04d822c2015-04-02 17:44:36 -0400186 echo "ring daemon source found"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400187 pushd ring-daemon
Alexandre Lision65be7702014-09-29 18:06:33 -0400188 git fetch
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400189 #git checkout ${TESTED_HASH}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400190# if ! git cat-file -e ${TESTED_HASH}; then
191# cat << EOF
192#***
Adrien Béraud04d822c2015-04-02 17:44:36 -0400193#*** Error: Your ring checkout does not contain the latest tested commit ***
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400194#***
195#
196#Please update your source with something like:
197#
Adrien Béraud04d822c2015-04-02 17:44:36 -0400198#cd ring
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400199#git reset --hard origin
200#git pull origin master
201#git checkout -B android ${TESTED_HASH}
202#
203#*** : This will delete any changes you made to the current branch ***
204#
205#EOF
206# exit 1
207# fi
208 fi
209else
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400210 pushd ring
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400211fi
212
213if [ -z "$BUILD" ]
214then
215 echo "Not building anything, please run $0 --build"
216 exit 0
217fi
218
219# Setup CFLAGS
Adrien Béraud04d822c2015-04-02 17:44:36 -0400220if [ ${ANDROID_ABI} = "armeabi-v7a-hard" ] ; then
221 EXTRA_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mcpu=cortex-a8 -D_NDK_MATH_NO_SOFTFP=1"
222elif [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400223 EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb"
224 #EXTRA_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mthumb -mcpu=cortex-a8"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400225elif [ ${ANDROID_ABI} = "armeabi" ] ; then
226 if [ -n "${NO_ARMV6}" ]; then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400227 EXTRA_CFLAGS="-march=armv5te -mtune=arm9tdmi -msoft-float "
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400228 else
229 if [ -n "${NO_FPU}" ]; then
230 EXTRA_CFLAGS="-march=armv6j -mtune=arm1136j-s -msoft-float"
231 else
232 EXTRA_CFLAGS="-mfpu=vfp -mcpu=arm1136jf-s -mfloat-abi=softfp"
233 fi
234 fi
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400235elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
236 EXTRA_CFLAGS=""
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400237elif [ ${ANDROID_ABI} = "x86" ] ; then
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400238 EXTRA_CFLAGS="-march=pentium -m32"
239elif [ ${ANDROID_ABI} = "x86_64" ] ; then
240 EXTRA_CFLAGS=""
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400241elif [ ${ANDROID_ABI} = "mips" ] ; then
242 EXTRA_CFLAGS="-march=mips32 -mtune=mips32r2 -mhard-float"
243 # All MIPS Linux kernels since 2.4.4 will trap any unimplemented FPU
244 # instruction and emulate it, so we select -mhard-float.
245 # See http://www.linux-mips.org/wiki/Floating_point#The_Linux_kernel_and_floating_point
246else
247 echo "Unknown ABI. Die, die, die!"
248 exit 2
249fi
250
Adrien Béraud04d822c2015-04-02 17:44:36 -0400251EXTRA_CFLAGS="${EXTRA_CFLAGS} -O2 -DHAVE_PTHREADS"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400252EXTRA_CFLAGS="${EXTRA_CFLAGS} -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/include"
253EXTRA_CFLAGS="${EXTRA_CFLAGS} -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}/include"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400254EXTRA_CXXFLAGS="${EXTRA_CFLAGS}"
255EXTRA_CFLAGS="-std=gnu11 ${EXTRA_CFLAGS}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400256
Tristan Matthews676fcee2014-10-03 15:57:09 -0400257# Setup LDFLAGS
Adrien Béraud04d822c2015-04-02 17:44:36 -0400258if [ ${ANDROID_ABI} = "armeabi-v7a-hard" ] ; then
259 EXTRA_LDFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mcpu=cortex-a8 -lm_hard -D_NDK_MATH_NO_SOFTFP=1"
260elif [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400261 EXTRA_LDFLAGS="-march=armv7-a -mthumb"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400262fi
263EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI} -lgnustl_static"
Tristan Matthews676fcee2014-10-03 15:57:09 -0400264
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400265# Make in //
266UNAMES=$(uname -s)
267MAKEFLAGS=
268if which nproc >/dev/null
269then
270MAKEFLAGS=-j`nproc`
271elif [ "$UNAMES" == "Darwin" ] && which sysctl >/dev/null
272then
273MAKEFLAGS=-j`sysctl -n machdep.cpu.thread_count`
274fi
275
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400276# Build buildsystem tools
Adrien Béraud04d822c2015-04-02 17:44:36 -0400277export PATH=`pwd`/extras/tools/build/bin:$PATH
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400278echo "Building tools"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400279pushd extras/tools
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400280./bootstrap
281make $MAKEFLAGS
Tristan Matthewseb9209c2014-10-09 23:11:44 -0400282#FIXME
283echo "HACK for old Jenkins builder...forcing libtool to be built"
284make .libtool
Adrien Béraud04d822c2015-04-02 17:44:36 -0400285popd
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400286
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400287############
288# Contribs #
289############
290echo "Building the contribs"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400291mkdir -p contrib/native
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400292
293gen_pc_file() {
294 echo "Generating $1 pkg-config file"
295 echo "Name: $1
296Description: $1
297Version: $2
298Libs: -l$1
Adrien Béraud04d822c2015-04-02 17:44:36 -0400299Cflags:" > contrib/${TARGET_TUPLE}/lib/pkgconfig/`echo $1|tr 'A-Z' 'a-z'`.pc
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400300}
301
Adrien Béraud6d881d92015-06-17 16:22:23 -0400302
303ANDROID_BIN=${NDK_TOOLCHAIN_PATH}
304CROSS_COMPILE=${ANDROID_BIN}/${TARGET_TUPLE}-
305export CROSS_COMPILE="${CROSS_COMPILE}"
306
307
Adrien Béraud04d822c2015-04-02 17:44:36 -0400308mkdir -p contrib/${TARGET_TUPLE}/lib/pkgconfig
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400309
Adrien Béraud04d822c2015-04-02 17:44:36 -0400310pushd contrib/native
Alexandre Lisionec1f3ee2014-08-04 19:12:42 -0400311../bootstrap --host=${TARGET_TUPLE}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400312
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400313# Some libraries have arm assembly which won't build in thumb mode
314# We append -marm to the CFLAGS of these libs to disable thumb mode
315[ ${ANDROID_ABI} = "armeabi-v7a" ] && echo "NOTHUMB := -marm" >> config.mak
Adrien Béraud04d822c2015-04-02 17:44:36 -0400316[ ${ANDROID_ABI} = "armeabi-v7a-hard" ] && echo "NOTHUMB := -marm" >> config.mak
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400317
318# Release or not?
319if [ $# -ne 0 ] && [ "$1" = "release" ]; then
320 OPTS=""
321 EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
322 RELEASE=1
323else
324 OPTS="--enable-debug"
Tristan Matthews8d02ef62014-07-22 16:03:17 -0400325 EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400326 RELEASE=0
327fi
328
329echo "EXTRA_CFLAGS= -g ${EXTRA_CFLAGS}" >> config.mak
Tristan Matthewsfc848072014-10-09 03:43:54 -0400330echo "EXTRA_CXXFLAGS= -g ${EXTRA_CXXFLAGS}" >> config.mak
Tristan Matthews676fcee2014-10-03 15:57:09 -0400331echo "EXTRA_LDFLAGS= ${EXTRA_LDFLAGS}" >> config.mak
Adrien Béraud04d822c2015-04-02 17:44:36 -0400332export RING_EXTRA_CFLAGS="${EXTRA_CFLAGS}"
333export RING_EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS}"
334export RING_EXTRA_LDFLAGS="${EXTRA_LDFLAGS}"
335#export LOCAL_EXTRA_LDFLAGS="${EXTRA_LDFLAGS}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400336
Alexandre Lision10437562015-01-29 21:07:16 -0500337make list
Alexandre Lision68d8f2e2014-07-30 17:42:40 -0400338make install
Alexandre Lisionec1f3ee2014-08-04 19:12:42 -0400339echo ${PWD}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400340# We already have zlib available
341[ -e .zlib ] || (mkdir -p zlib; touch .zlib)
342which autopoint >/dev/null || make $MAKEFLAGS .gettext
343export PATH="$PATH:$PWD/../$TARGET_TUPLE/bin"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400344popd
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400345
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400346############
Adrien Béraud04d822c2015-04-02 17:44:36 -0400347# Make Ring #
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400348############
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400349RING_SRC_DIR="${PWD}"
350RING_BUILD_DIR="`realpath build-android-${TARGET_TUPLE}`"
351#RING_INSTALL_DIR="`realpath install-android-${TARGET_TUPLE}`"
352export RING_SRC_DIR="${RING_SRC_DIR}"
353export RING_BUILD_DIR="${RING_BUILD_DIR}"
354
355#mkdir -p ${RING_INSTALL_DIR}
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400356mkdir -p build-android-${TARGET_TUPLE} && pushd build-android-${TARGET_TUPLE}
357DRING_PATH="`pwd`"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400358
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400359if [ "$JNI" = 1 ]; then
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400360 CLEAN="jniclean"
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400361 TARGET="ring-android/app/src/obj/local/${ANDROID_ABI}/libring.so"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400362else
363 CLEAN="distclean"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400364 TARGET=
365fi
366
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400367if [ ! -f config.h ]; then
368 echo "Bootstraping"
369 cd ../
370 ./autogen.sh
Adrien Béraud04d822c2015-04-02 17:44:36 -0400371 cd ../
372 cd ring-android
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400373 ./make-swig.sh
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400374 cd ../ring-daemon/build-android-${TARGET_TUPLE}
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400375 echo "Configuring"
376 ${ANDROID_PATH}/configure.sh ${OPTS}
377fi
378
379# ANDROID NDK FIXUP (BLAME GOOGLE)
380config_undef ()
381{
382 previous_change=`stat -c "%y" config.h`
383 sed -i 's,#define '$1' 1,/\* #undef '$1' \*/,' config.h
384 # don't change modified date in order to don't trigger a full build
385 touch -d "$previous_change" config.h
386}
387
388# if config dependencies change, ./config.status --recheck
389# is run and overwrite previously hacked config.h. So call make Makefile here
390# and hack config.h after.
391
392make $MAKEFLAGS Makefile
393
394if [ ${ANDROID_ABI} = "x86" -a ${ANDROID_API} != "android-21" ] ; then
395 # NDK x86 libm.so has nanf symbol but no nanf definition, we don't known if
396 # intel devices has nanf. Assume they don't have it.
397 config_undef HAVE_NANF
398fi
399if [ ${ANDROID_API} = "android-21" ] ; then
400 # android-21 has empty sys/shm.h headers that triggers shm detection but it
401 # doesn't have any shm functions and/or symbols. */
402 config_undef HAVE_SYS_SHM_H
403fi
404# END OF ANDROID NDK FIXUP
405
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400406echo "Building dring ${MAKEFLAGS}"
407V=99 make $MAKEFLAGS
Alexandre Lision3a206cf2014-10-15 12:18:51 -0400408
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400409####################################
410# Ring android UI and specific code
411####################################
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400412cd ../..
Tristan Matthewsfc848072014-10-09 03:43:54 -0400413
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400414echo "Building Ring for Android ${PWD}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400415make $CLEAN
416make -j1 TARGET_TUPLE=$TARGET_TUPLE PLATFORM_SHORT_ARCH=$PLATFORM_SHORT_ARCH CXXSTL=$CXXSTL RELEASE=$RELEASE $TARGET
417
418#
419# Exporting a environment script with all the necessary variables
420#
421echo "Generating environment script."
422cat <<EOF
423This is a script that will export many of the variables used in this
424script. It will allow you to compile parts of the build without having
425to rebuild the entire build (e.g. recompile only the Java part).
426
427To use it, include the script into your shell, like this:
428 source env.sh
429
430Now, you can use this command to build the Java portion:
431 make -e
432
433The file will be automatically regenerated by compile.sh, so if you change
434your NDK/SDK locations or any build configurations, just re-run this
435script (sh compile.sh) and it will automatically update the file.
436
437EOF
438
439echo "# This file was automatically generated by compile.sh" > env.sh
440echo "# Re-run 'sh compile.sh' to update this file." >> env.sh
441
442# The essentials
443cat <<EssentialsA >> env.sh
444export ANDROID_ABI=$ANDROID_ABI
445export ANDROID_SDK=$ANDROID_SDK
446export ANDROID_NDK=$ANDROID_NDK
447export GCCVER=$GCCVER
448export CXXSTL=$CXXSTL
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400449export RING_BUILD_DIR=$RING_BUILD_DIR
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400450export TARGET_TUPLE=$TARGET_TUPLE
451export PATH_HOST=$PATH_HOST
452export PLATFORM_SHORT_ARCH=$PLATFORM_SHORT_ARCH
453EssentialsA
454
455# PATH
456echo "export PATH=$NDK_TOOLCHAIN_PATH:\${ANDROID_SDK}/platform-tools:\${PATH}" >> env.sh
457
458# CPU flags
459if [ -n "${HAVE_ARM}" ]; then
460 echo "export HAVE_ARM=1" >> env.sh
461elif [ -n "${HAVE_X86}" ]; then
462 echo "export HAVE_X86=1" >> env.sh
463elif [ -n "${HAVE_MIPS}" ]; then
464 echo "export HAVE_MIPS=1" >> env.sh
465fi
466
467if [ -n "${NO_ARMV6}" ]; then
468 echo "export NO_ARMV6=1" >> env.sh
469fi
470if [ -n "${NO_FPU}" ]; then
471 echo "export NO_FPU=1" >> env.sh
472fi