[Android] Rework the Android compilation flags

Jean-Baptiste Kempf git at videolan.org
Fri Jun 22 16:11:28 CEST 2012


android | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Fri Jun 22 17:53:35 2012 +0200| [a3a59fd09436d7551e9c5e31a13d2de580eb89c3] | committer: Jean-Baptiste Kempf

Rework the Android compilation flags

This will support more ABIs, but requires a change in your compile flags

> http://git.videolan.org/gitweb.cgi/android.git/?a=commit;h=a3a59fd09436d7551e9c5e31a13d2de580eb89c3
---

 compile.sh   |   39 ++++++++++++++++++++++++++++-----------
 configure.sh |   24 ++++++++----------------
 2 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/compile.sh b/compile.sh
index 394fc1c..66dcdf3 100755
--- a/compile.sh
+++ b/compile.sh
@@ -22,9 +22,10 @@ export NO_NDK_V7=0
 If you plan to use a release build, run 'compile.sh release'
 EOF
 
-if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" ]; then
-   echo "You must define ANDROID_NDK and ANDROID_SDK before starting."
-   echo "They must point to your NDK and SDK directories."
+if [ -z "$ANDROID_NDK" -o -z "$ANDROID_SDK" -o -z "$ANDROID_ABI" ]; then
+   echo "You must define ANDROID_NDK, ANDROID_SDK and ANDROID_ABI before starting."
+   echo "They must point to your NDK and SDK directories.\n"
+   echo "ANDROID_ABI should match your ABI: armeabi-v7a, armeabi or ..."
    exit 1
 fi
 
@@ -41,7 +42,7 @@ fi
 export PATH=${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin:${PATH}
 
 # 1/ libvlc, libvlccore and its plugins
-TESTED_HASH=defdb5a9e1
+TESTED_HASH=3e140bd0
 if [ ! -d "vlc" ]; then
     echo "VLC source not found, cloning"
     git clone git://git.videolan.org/vlc.git vlc
@@ -92,25 +93,41 @@ cd contrib/android
     --disable-sidplay2 \
     --disable-samplerate \
     --enable-iconv
-echo EXTRA_CFLAGS=-g >> config.mak
 
 # TODO: mpeg2, theora
 
-if test -z "${NO_NEON}" -o -n "${TEGRA2}"; then
-    # assumes armv7-a
-    echo "EXTRA_CFLAGS += -mthumb" >> config.mak
+if [ ${ANDROID_ABI} = "armeabi-v7a" ] ; then
+    if test -z "${NO_NEON}" ; then
+        EXTRA_CFLAGS="-mfpu=neon -mcpu=cortex-a8"
+    else
+        EXTRA_CFLAGS="-mfpu=vfpv3-d16 -mcpu=cortex-a9"
+    fi
+    EXTRA_CFLAGS="${EXTRA_CFLAGS} -mthumb -mfloat-abi=softfp"
     echo "NOTHUMB := -marm" >> config.mak
+elif [ ${ANDROID_ABI} = "armeabi" ] ; then
+    export NO_NEON=1
+    if test -z "${NO_FPU}" ; then
+        EXTRA_CFLAGS="-mfpu=vfp -mcpu=arm1136jf-s -mfloat-abi=softfp"
+    else
+        EXTRA_CFLAGS="-march=armv6j -mtune=arm1136j-s -msoft-float"
+    fi
+else
+    echo "Unknown ABI. Die, die, die!"
+    exit 2
 fi
 
 # Release or not?
 if [ $# -ne 0 ] && [ "$1" == "release" ]; then
     OPTS=""
-    echo "EXTRA_CFLAGS += -DNDEBUG" >> config.mak
-    MAKEFLAGS="RELEASE=1"
+    EXTRA_CFLAGS="${EXTRA_CFLAGS} -DNDEBUG "
+    RELEASEFLAG="RELEASE=1"
 else
     OPTS="--enable-debug"
 fi
 
+echo "EXTRA_CFLAGS= -g ${EXTRA_CFLAGS}" >> config.mak
+export VLC_EXTRA_CFLAGS=${EXTRA_CFLAGS}
+
 make fetch
 make
 
@@ -141,4 +158,4 @@ export ANDROID_LIBS=${PWD}/android-libs
 export VLC_BUILD_DIR=vlc/android
 
 make distclean
-make $MAKEFLAGS
+make $RELEASEFLAG
diff --git a/configure.sh b/configure.sh
index 029698c..6546e27 100755
--- a/configure.sh
+++ b/configure.sh
@@ -1,7 +1,8 @@
 #!/bin/sh
 
-if [ -z "$ANDROID_NDK" ]; then
-    echo "Please set the ANDROID_NDK environment variable with its path."
+if [ -z "$ANDROID_NDK" -o -z "$ANDROID_ABI" ]; then
+    echo "Please set the ANDROID_NDK environment variable with its path.\n"
+    echo "ANDROID_ABI should match your ABI: armeabi-v7a, armeabi or ..."
     exit 1
 fi
 
@@ -11,34 +12,25 @@ ANDROID_API=android-9
 
 VLC_SOURCEDIR=..
 
-CFLAGS="-g -O2 -mlong-calls -fstrict-aliasing -mfloat-abi=softfp -funsafe-math-optimizations"
+CFLAGS="-g -O2 -mlong-calls -fstrict-aliasing -funsafe-math-optimizations"
 LDFLAGS="-Wl,-Bdynamic,-dynamic-linker=/system/bin/linker -Wl,--no-undefined"
 
 if [ -z "$NO_NEON" ]; then
-    CXX_TARGET="armeabi-v7a"
-    CFLAGS="$CFLAGS -mfpu=neon -mcpu=cortex-a8 -mthumb"
-    LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8"
     EXTRA_PARAMS=" --enable-neon"
-elif [ -n "$TEGRA2" ]; then
-    CXX_TARGET="armeabi-v7a"
-    CFLAGS="$CFLAGS -mfpu=vfpv3-d16 -mcpu=cortex-a9 -mthumb"
-    EXTRA_PARAMS=" --disable-neon"
+    LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8"
 else
-    CXX_TARGET="armeabi"
-    CFLAGS="$CFLAGS -march=armv6j -mtune=arm1136j-s -msoft-float"
     EXTRA_PARAMS=" --disable-neon"
 fi
 
-
-CPPFLAGS="-I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/include -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${CXX_TARGET}/include"
-LDFLAGS="$LDFLAGS -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${CXX_TARGET}"
+CPPFLAGS="-I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/include -I${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_ABI}/include"
+LDFLAGS="$LDFLAGS -L${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/libs/${ANDROID_ABI}"
 
 SYSROOT=$ANDROID_NDK/platforms/$ANDROID_API/arch-arm
 ANDROID_BIN=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/*-x86/bin/
 CROSS_COMPILE=${ANDROID_BIN}/arm-linux-androideabi-
 
 CPPFLAGS="$CPPFLAGS" \
-CFLAGS="$CFLAGS" \
+CFLAGS="$CFLAGS ${VLC_EXTRA_CFLAGS}" \
 CXXFLAGS="$CFLAGS" \
 LDFLAGS="$LDFLAGS" \
 CC="${CROSS_COMPILE}gcc --sysroot=${SYSROOT}" \



More information about the Android mailing list