blob: 5e6cc257c639337d2ddfc2351418b3cb9b895606 [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éraudaa771a82015-06-23 23:40:34 -040070 cp -r ring-android/app/src/main/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éraudb179bab2015-10-08 12:04:22 -0400125 ANDROID_API=android-16
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400126 fi
127 CXXSTL="/"${GCCVER}
128 ;;
Adrien Béraud67ec13c2015-11-19 11:51:16 -0500129 7|8|9|*)
130 echo "You need the NDKv10 or later"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400131 exit 1
132 ;;
133esac
134
135export GCCVER
136export CXXSTL
Tristan Matthewsd6033b42014-10-09 17:00:07 -0400137export ANDROID_API
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400138
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400139# XXX : important!
140[ "$HAVE_ARM" = 1 ] && cat << EOF
141For an ARMv6 device without FPU:
142$ export NO_FPU=1
143For an ARMv5 device:
144$ export NO_ARMV6=1
145
146If you plan to use a release build, run 'compile.sh release'
147EOF
148
149export TARGET_TUPLE
150export PATH_HOST
151export HAVE_ARM
152export HAVE_X86
153export HAVE_MIPS
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400154export HAVE_64
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400155export PLATFORM_SHORT_ARCH
156
157# Add the NDK toolchain to the PATH, needed both for contribs and for building
158# stub libraries
159NDK_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 -0400160export NDK_TOOLCHAIN_PATH=${NDK_TOOLCHAIN_PATH}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400161export PATH=${NDK_TOOLCHAIN_PATH}:${PATH}
162
163ANDROID_PATH="`pwd`"
164
Adrien Béraud04d822c2015-04-02 17:44:36 -0400165# Fetch ring daemon source
Alexandre Lision7f46d1c2014-10-27 16:39:25 -0400166if [ "$FETCH" = 1 ]
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400167then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400168 # 1/ dring
Adrien Béraud0011b9b2016-01-08 11:42:46 -0500169 TESTED_HASH=3364bd332482c913d4e608cf9b19ecdb8aa4bd9d
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400170 if [ ! -d "ring-daemon" ]; then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400171 echo "ring daemon source not found, cloning"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400172 git clone https://gerrit-ring.savoirfairelinux.com/ring-daemon.git
173 pushd ring-daemon
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400174 echo android/ >> .git/info/exclude
175 echo contrib/android/ >> .git/info/exclude
Alexandre Lision3a206cf2014-10-15 12:18:51 -0400176 git checkout $TESTED_HASH
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400177 else
Adrien Béraud04d822c2015-04-02 17:44:36 -0400178 echo "ring daemon source found"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400179 pushd ring-daemon
Alexandre Lision65be7702014-09-29 18:06:33 -0400180 git fetch
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400181 #git checkout ${TESTED_HASH}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400182# if ! git cat-file -e ${TESTED_HASH}; then
183# cat << EOF
184#***
Adrien Béraud04d822c2015-04-02 17:44:36 -0400185#*** Error: Your ring checkout does not contain the latest tested commit ***
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400186#***
187#
188#Please update your source with something like:
189#
Adrien Béraud04d822c2015-04-02 17:44:36 -0400190#cd ring
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400191#git reset --hard origin
192#git pull origin master
193#git checkout -B android ${TESTED_HASH}
194#
195#*** : This will delete any changes you made to the current branch ***
196#
197#EOF
198# exit 1
199# fi
200 fi
201else
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400202 pushd ring
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400203fi
204
205if [ -z "$BUILD" ]
206then
207 echo "Not building anything, please run $0 --build"
208 exit 0
209fi
210
211# Setup CFLAGS
Adrien Béraud04d822c2015-04-02 17:44:36 -0400212if [ ${ANDROID_ABI} = "armeabi-v7a-hard" ] ; then
213 EXTRA_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mcpu=cortex-a8 -D_NDK_MATH_NO_SOFTFP=1"
214elif [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400215 EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb"
216 #EXTRA_CFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mthumb -mcpu=cortex-a8"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400217elif [ ${ANDROID_ABI} = "armeabi" ] ; then
218 if [ -n "${NO_ARMV6}" ]; then
Adrien Béraud04d822c2015-04-02 17:44:36 -0400219 EXTRA_CFLAGS="-march=armv5te -mtune=arm9tdmi -msoft-float "
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400220 else
221 if [ -n "${NO_FPU}" ]; then
222 EXTRA_CFLAGS="-march=armv6j -mtune=arm1136j-s -msoft-float"
223 else
224 EXTRA_CFLAGS="-mfpu=vfp -mcpu=arm1136jf-s -mfloat-abi=softfp"
225 fi
226 fi
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400227elif [ ${ANDROID_ABI} = "arm64-v8a" ] ; then
228 EXTRA_CFLAGS=""
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400229elif [ ${ANDROID_ABI} = "x86" ] ; then
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400230 EXTRA_CFLAGS="-march=pentium -m32"
231elif [ ${ANDROID_ABI} = "x86_64" ] ; then
232 EXTRA_CFLAGS=""
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400233elif [ ${ANDROID_ABI} = "mips" ] ; then
234 EXTRA_CFLAGS="-march=mips32 -mtune=mips32r2 -mhard-float"
235 # All MIPS Linux kernels since 2.4.4 will trap any unimplemented FPU
236 # instruction and emulate it, so we select -mhard-float.
237 # See http://www.linux-mips.org/wiki/Floating_point#The_Linux_kernel_and_floating_point
238else
Adrien Béraudaa771a82015-06-23 23:40:34 -0400239 echo "Unknown ABI ${ANDROID_ABI}. Die, die, die!"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400240 exit 2
241fi
242
Adrien Béraud04d822c2015-04-02 17:44:36 -0400243EXTRA_CFLAGS="${EXTRA_CFLAGS} -O2 -DHAVE_PTHREADS"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400244EXTRA_CFLAGS="${EXTRA_CFLAGS} -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/include"
245EXTRA_CFLAGS="${EXTRA_CFLAGS} -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI}/include"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400246EXTRA_CXXFLAGS="${EXTRA_CFLAGS}"
247EXTRA_CFLAGS="-std=gnu11 ${EXTRA_CFLAGS}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400248
Tristan Matthews676fcee2014-10-03 15:57:09 -0400249# Setup LDFLAGS
Adrien Béraud04d822c2015-04-02 17:44:36 -0400250if [ ${ANDROID_ABI} = "armeabi-v7a-hard" ] ; then
251 EXTRA_LDFLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mcpu=cortex-a8 -lm_hard -D_NDK_MATH_NO_SOFTFP=1"
252elif [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400253 EXTRA_LDFLAGS="-march=armv7-a -mthumb"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400254fi
255EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++${CXXSTL}/libs/${ANDROID_ABI} -lgnustl_static"
Tristan Matthews676fcee2014-10-03 15:57:09 -0400256
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400257# Make in //
258UNAMES=$(uname -s)
259MAKEFLAGS=
260if which nproc >/dev/null
261then
262MAKEFLAGS=-j`nproc`
263elif [ "$UNAMES" == "Darwin" ] && which sysctl >/dev/null
264then
265MAKEFLAGS=-j`sysctl -n machdep.cpu.thread_count`
266fi
267
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400268# Build buildsystem tools
Adrien Béraud04d822c2015-04-02 17:44:36 -0400269export PATH=`pwd`/extras/tools/build/bin:$PATH
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400270echo "Building tools"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400271pushd extras/tools
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400272./bootstrap
273make $MAKEFLAGS
Tristan Matthewseb9209c2014-10-09 23:11:44 -0400274#FIXME
275echo "HACK for old Jenkins builder...forcing libtool to be built"
276make .libtool
Adrien Béraud04d822c2015-04-02 17:44:36 -0400277popd
Tristan Matthewsd6d5d402014-10-09 16:41:06 -0400278
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400279############
280# Contribs #
281############
282echo "Building the contribs"
Adrien Béraud04d822c2015-04-02 17:44:36 -0400283mkdir -p contrib/native
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400284
285gen_pc_file() {
286 echo "Generating $1 pkg-config file"
287 echo "Name: $1
288Description: $1
289Version: $2
290Libs: -l$1
Adrien Béraud04d822c2015-04-02 17:44:36 -0400291Cflags:" > contrib/${TARGET_TUPLE}/lib/pkgconfig/`echo $1|tr 'A-Z' 'a-z'`.pc
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400292}
293
Adrien Béraud6d881d92015-06-17 16:22:23 -0400294
295ANDROID_BIN=${NDK_TOOLCHAIN_PATH}
296CROSS_COMPILE=${ANDROID_BIN}/${TARGET_TUPLE}-
297export CROSS_COMPILE="${CROSS_COMPILE}"
298
299
Adrien Béraud04d822c2015-04-02 17:44:36 -0400300mkdir -p contrib/${TARGET_TUPLE}/lib/pkgconfig
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400301
Adrien Béraud04d822c2015-04-02 17:44:36 -0400302pushd contrib/native
Alexandre Lisionec1f3ee2014-08-04 19:12:42 -0400303../bootstrap --host=${TARGET_TUPLE}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400304
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400305# Some libraries have arm assembly which won't build in thumb mode
306# We append -marm to the CFLAGS of these libs to disable thumb mode
307[ ${ANDROID_ABI} = "armeabi-v7a" ] && echo "NOTHUMB := -marm" >> config.mak
Adrien Béraud04d822c2015-04-02 17:44:36 -0400308[ ${ANDROID_ABI} = "armeabi-v7a-hard" ] && echo "NOTHUMB := -marm" >> config.mak
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400309
310# Release or not?
311if [ $# -ne 0 ] && [ "$1" = "release" ]; then
312 OPTS=""
313 EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
314 RELEASE=1
315else
316 OPTS="--enable-debug"
Tristan Matthews8d02ef62014-07-22 16:03:17 -0400317 EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400318 RELEASE=0
319fi
320
Adrien Béraudb179bab2015-10-08 12:04:22 -0400321echo "EXTRA_CFLAGS= -g -fpic ${EXTRA_CFLAGS}" >> config.mak
322echo "EXTRA_CXXFLAGS= -g -fpic ${EXTRA_CXXFLAGS}" >> config.mak
Tristan Matthews676fcee2014-10-03 15:57:09 -0400323echo "EXTRA_LDFLAGS= ${EXTRA_LDFLAGS}" >> config.mak
Adrien Béraud04d822c2015-04-02 17:44:36 -0400324export RING_EXTRA_CFLAGS="${EXTRA_CFLAGS}"
325export RING_EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS}"
326export RING_EXTRA_LDFLAGS="${EXTRA_LDFLAGS}"
327#export LOCAL_EXTRA_LDFLAGS="${EXTRA_LDFLAGS}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400328
Alexandre Lision10437562015-01-29 21:07:16 -0500329make list
Alexandre Lision68d8f2e2014-07-30 17:42:40 -0400330make install
Alexandre Lisionec1f3ee2014-08-04 19:12:42 -0400331echo ${PWD}
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400332# We already have zlib available
333[ -e .zlib ] || (mkdir -p zlib; touch .zlib)
334which autopoint >/dev/null || make $MAKEFLAGS .gettext
335export PATH="$PATH:$PWD/../$TARGET_TUPLE/bin"
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400336popd
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400337
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400338############
Adrien Béraud04d822c2015-04-02 17:44:36 -0400339# Make Ring #
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400340############
Adrien Béraudb00ed3f2015-06-07 15:36:06 -0400341RING_SRC_DIR="${PWD}"
342RING_BUILD_DIR="`realpath build-android-${TARGET_TUPLE}`"
343#RING_INSTALL_DIR="`realpath install-android-${TARGET_TUPLE}`"
344export RING_SRC_DIR="${RING_SRC_DIR}"
345export RING_BUILD_DIR="${RING_BUILD_DIR}"
346
347#mkdir -p ${RING_INSTALL_DIR}
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400348mkdir -p build-android-${TARGET_TUPLE} && pushd build-android-${TARGET_TUPLE}
349DRING_PATH="`pwd`"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400350
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400351if [ "$JNI" = 1 ]; then
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400352 CLEAN="jniclean"
Adrien Béraudaa771a82015-06-23 23:40:34 -0400353 TARGET="ring-android/app/src/main/obj/local/${ANDROID_ABI}/libring.so"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400354else
355 CLEAN="distclean"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400356 TARGET=
357fi
358
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400359if [ ! -f config.h ]; then
360 echo "Bootstraping"
361 cd ../
362 ./autogen.sh
Adrien Béraud04d822c2015-04-02 17:44:36 -0400363 cd ../
364 cd ring-android
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400365 ./make-swig.sh
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400366 cd ../ring-daemon/build-android-${TARGET_TUPLE}
Alexandre Lision7d5df5d2014-10-27 13:10:01 -0400367 echo "Configuring"
368 ${ANDROID_PATH}/configure.sh ${OPTS}
369fi
370
371# ANDROID NDK FIXUP (BLAME GOOGLE)
372config_undef ()
373{
374 previous_change=`stat -c "%y" config.h`
375 sed -i 's,#define '$1' 1,/\* #undef '$1' \*/,' config.h
376 # don't change modified date in order to don't trigger a full build
377 touch -d "$previous_change" config.h
378}
379
380# if config dependencies change, ./config.status --recheck
381# is run and overwrite previously hacked config.h. So call make Makefile here
382# and hack config.h after.
383
384make $MAKEFLAGS Makefile
385
386if [ ${ANDROID_ABI} = "x86" -a ${ANDROID_API} != "android-21" ] ; then
387 # NDK x86 libm.so has nanf symbol but no nanf definition, we don't known if
388 # intel devices has nanf. Assume they don't have it.
389 config_undef HAVE_NANF
390fi
391if [ ${ANDROID_API} = "android-21" ] ; then
392 # android-21 has empty sys/shm.h headers that triggers shm detection but it
393 # doesn't have any shm functions and/or symbols. */
394 config_undef HAVE_SYS_SHM_H
395fi
396# END OF ANDROID NDK FIXUP
397
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400398echo "Building dring ${MAKEFLAGS}"
399V=99 make $MAKEFLAGS
Alexandre Lision3a206cf2014-10-15 12:18:51 -0400400
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400401####################################
402# Ring android UI and specific code
403####################################
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400404cd ../..
Tristan Matthewsfc848072014-10-09 03:43:54 -0400405
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400406echo "Building Ring for Android ${PWD}"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400407make $CLEAN
Adrien Béraudb179bab2015-10-08 12:04:22 -0400408ANDROID_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 -0400409
410#
411# Exporting a environment script with all the necessary variables
412#
413echo "Generating environment script."
414cat <<EOF
415This is a script that will export many of the variables used in this
416script. It will allow you to compile parts of the build without having
417to rebuild the entire build (e.g. recompile only the Java part).
418
419To use it, include the script into your shell, like this:
420 source env.sh
421
422Now, you can use this command to build the Java portion:
423 make -e
424
425The file will be automatically regenerated by compile.sh, so if you change
426your NDK/SDK locations or any build configurations, just re-run this
427script (sh compile.sh) and it will automatically update the file.
428
429EOF
430
431echo "# This file was automatically generated by compile.sh" > env.sh
432echo "# Re-run 'sh compile.sh' to update this file." >> env.sh
433
434# The essentials
435cat <<EssentialsA >> env.sh
436export ANDROID_ABI=$ANDROID_ABI
437export ANDROID_SDK=$ANDROID_SDK
438export ANDROID_NDK=$ANDROID_NDK
439export GCCVER=$GCCVER
440export CXXSTL=$CXXSTL
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400441export RING_BUILD_DIR=$RING_BUILD_DIR
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400442export TARGET_TUPLE=$TARGET_TUPLE
443export PATH_HOST=$PATH_HOST
444export PLATFORM_SHORT_ARCH=$PLATFORM_SHORT_ARCH
445EssentialsA
446
447# PATH
448echo "export PATH=$NDK_TOOLCHAIN_PATH:\${ANDROID_SDK}/platform-tools:\${PATH}" >> env.sh
449
450# CPU flags
451if [ -n "${HAVE_ARM}" ]; then
452 echo "export HAVE_ARM=1" >> env.sh
453elif [ -n "${HAVE_X86}" ]; then
454 echo "export HAVE_X86=1" >> env.sh
455elif [ -n "${HAVE_MIPS}" ]; then
456 echo "export HAVE_MIPS=1" >> env.sh
457fi
458
459if [ -n "${NO_ARMV6}" ]; then
460 echo "export NO_ARMV6=1" >> env.sh
461fi
462if [ -n "${NO_FPU}" ]; then
463 echo "export NO_FPU=1" >> env.sh
464fi