pelya / commandergenius

Port of SDL library and several games to the Android OS.
http://libsdl-android.sourceforge.net/
GNU Lesser General Public License v2.1
533 stars 250 forks source link

Patch to complete support for any GCC version #34

Closed awulms closed 10 years ago

awulms commented 10 years ago

This patch completes the partial support for any GCC version

From 98823390351f6a7f58605a26c9114b7e260af358 Mon Sep 17 00:00:00 2001
From: Alex Wulms <awulms@nospam.thevoid>
Date: Sun, 5 Oct 2014 15:54:47 +0200
Subject: [PATCH] Support GCCVER parameter in all scripts so that projects can
 be build with any GCC version

---
 build.sh                                  | 13 ++++++++-----
 project/jni/application/setEnvironment.sh |  2 +-
 project/jni/setCrossEnvironment.sh        |  2 +-
 readme.txt                                | 10 ++++++++++
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/build.sh b/build.sh
index 2fd7da1..cc7854d 100755
--- a/build.sh
+++ b/build.sh
@@ -54,6 +54,9 @@ fi
        android update project -p project || exit 1
        rm -f project/src/Globals.java
 }
+
+[ -z "$GCCVER" ] && GCCVER=4.6
+
 # Set here your own NDK path if needed
 # export PATH=$PATH:~/src/endless_space/android-ndk-r7
 NDKBUILDPATH=$PATH
@@ -98,7 +101,7 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j
                rm obj/local/armeabi/libapplication.so && \
                cp jni/application/src/libapplication-armeabi.so obj/local/armeabi/libapplication.so && \
                cp jni/application/src/libapplication-armeabi.so libs/armeabi/libapplication.so && \
-               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-4.6/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi/libapplication.so \
+               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-${GCCVER}/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi/libapplication.so \
                || true ; } && \
        {       grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
                grep "MultiABI=" ../AndroidAppSettings.cfg | grep "y\\|all\\|armeabi-v7a" > /dev/null && \
@@ -106,7 +109,7 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j
                rm obj/local/armeabi-v7a/libapplication.so && \
                cp jni/application/src/libapplication-armeabi-v7a.so obj/local/armeabi-v7a/libapplication.so && \
                cp jni/application/src/libapplication-armeabi-v7a.so libs/armeabi-v7a/libapplication.so && \
-               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-4.6/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi-v7a/libapplication.so \
+               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-${GCCVER}/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi-v7a/libapplication.so \
                || true ; } && \
         {       grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
                grep "MultiABI=" ../AndroidAppSettings.cfg | grep "armeabi-v7a-hard" > /dev/null && \
@@ -114,7 +117,7 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j
                rm obj/local/armeabi-v7a-hard/libapplication.so && \
                cp jni/application/src/libapplication-armeabi-v7a-hard.so obj/local/armeabi-v7a-hard/libapplication.so && \
                cp jni/application/src/libapplication-armeabi-v7a-hard.so libs/armeabi-v7a/libapplication.so && \
-               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-4.6/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi-v7a/libapplication.so \
+               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-${GCCVER}/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi-v7a/libapplication.so \
                || true ; } && \
        {       grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
                grep "MultiABI=" ../AndroidAppSettings.cfg | grep "all\\|mips" > /dev/null && \
@@ -122,7 +125,7 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j
                rm obj/local/mips/libapplication.so && \
                cp jni/application/src/libapplication-mips.so obj/local/mips/libapplication.so && \
                cp jni/application/src/libapplication-mips.so libs/mips/libapplication.so && \
-               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/mipsel-linux-android-4.6/prebuilt/$MYARCH/bin/mipsel-linux-android-strip --strip-unneeded libs/mips/libapplication.so \
+               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/mipsel-linux-android-${GCCVER}/prebuilt/$MYARCH/bin/mipsel-linux-android-strip --strip-unneeded libs/mips/libapplication.so \
                || true ; } && \
        {       grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
                grep "MultiABI=" ../AndroidAppSettings.cfg | grep "all\\|x86" > /dev/null && \
@@ -130,7 +133,7 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j
                rm obj/local/x86/libapplication.so && \
                cp jni/application/src/libapplication-x86.so obj/local/x86/libapplication.so && \
                cp jni/application/src/libapplication-x86.so libs/x86/libapplication.so && \
-               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/x86-4.6/prebuilt/$MYARCH/bin/i686-linux-android-strip --strip-unneeded libs/x86/libapplication.so \
+               `which ndk-build | sed 's@/ndk-build@@'`/toolchains/x86-${GCCVER}/prebuilt/$MYARCH/bin/i686-linux-android-strip --strip-unneeded libs/x86/libapplication.so \
                || true ; } && \
        cd .. && ./copyAssets.sh && cd project && \
        {       if $build_release ; then \
diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh
index a2e8ddc..233f6c9 100755
--- a/project/jni/application/setEnvironment.sh
+++ b/project/jni/application/setEnvironment.sh
@@ -22,7 +22,7 @@ grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64"

 #echo NDK $NDK
 GCCPREFIX=arm-linux-androideabi
-GCCVER=4.6
+[ -z "$GCCVER" ] && GCCVER=4.6
 PLATFORMVER=android-14
 LOCAL_PATH=`dirname $0`
 if which realpath > /dev/null ; then
diff --git a/project/jni/setCrossEnvironment.sh b/project/jni/setCrossEnvironment.sh
index c779fd9..1d43dc5 100755
--- a/project/jni/setCrossEnvironment.sh
+++ b/project/jni/setCrossEnvironment.sh
@@ -20,7 +20,7 @@ NDK=`readlink -f $NDK`

 #echo NDK $NDK
 GCCPREFIX=arm-linux-androideabi
-GCCVER=4.6
+[ -z "$GCCVER" ] && GCCVER=4.6
 PLATFORMVER=android-8
 LOCAL_PATH=`dirname $0`
 if which realpath > /dev/null ; then
diff --git a/readme.txt b/readme.txt
index cddd184..29d355d 100644
--- a/readme.txt
+++ b/readme.txt
@@ -279,6 +279,16 @@ There is helper script project/jni/application/setEnvironment.sh which will set
 for configure script and makefile, see AndroidBuild.sh in project/jni/application/scummvm dir for reference.

+How to compile your own application using GCC 4.7 or newer
+==========================================================
+
+By default, your application will be build with GCC 4.6. To use a newer version of GCC, e.g. GCC 4.8, set-up
+your project like described but execute following commands before running any of the commandergenius scripts
+to configure or build your project:
+export GCCVER=4.8
+export NDK_TOOLCHAIN_VERSION=${GCCVER}
+
+
 Android application sleep/resume support
 ========================================

-- 
1.8.4.5
pelya commented 10 years ago

Merged, thanks.