From c52cad7e54fc603907cb958adfd0bf5399ff6e77 Mon Sep 17 00:00:00 2001 From: pelya Date: Fri, 8 Jun 2012 14:26:10 +0300 Subject: [PATCH] A better script to set cross-compile environment for standalone libs/executables --- project/jni/launchConfigureLib.sh | 54 -------------------- project/jni/setCrossEnvironment.sh | 80 ++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 54 deletions(-) delete mode 100755 project/jni/launchConfigureLib.sh create mode 100755 project/jni/setCrossEnvironment.sh diff --git a/project/jni/launchConfigureLib.sh b/project/jni/launchConfigureLib.sh deleted file mode 100755 index 4badc93e8..000000000 --- a/project/jni/launchConfigureLib.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh - -# Set here your own NDK path if needed -# export PATH=$PATH:~/src/endless_space/android-ndk-r4 -# TODO: this script is for NDK r4b only - -IFS=' -' - -NDK=`which ndk-build` -NDK=`dirname $NDK` -GCCVER=4.4.0 -PLATFORMVER=android-8 -LOCAL_PATH=`dirname $0` -LOCAL_PATH=`cd $LOCAL_PATH && pwd` - -# Hacks for broken configure scripts - -CFLAGS_ANDROID="-I$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/include \ --fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums \ --D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID \ --Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -fno-rtti -mthumb -Os \ --fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ --Wa,--noexecstack -O2 -DNDEBUG -g" - -LDFLAGS_ANDROID="-nostdlib -Wl,-shared,-Bsymbolic \ --Wl,--whole-archive -Wl,--no-whole-archive \ -$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/lib/gcc/arm-eabi/4.4.0/libgcc.a \ -$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \ -$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libstdc++.so \ -$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \ --Wl,--no-undefined -Wl,-z,noexecstack \ --L$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib \ --Wl,-rpath-link=$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib \ --L$LOCAL_PATH/../obj/local/armeabi" - -#-ldl -llog -lz \ - - -env PATH=$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin:$LOCAL_PATH:$PATH \ -CFLAGS="$CFLAGS_ANDROID $CFLAGS" \ -CXXFLAGS="$CFLAGS_ANDROID $CXXFLAGS" \ -CPPFLAGS="$CFLAGS_ANDROID $CPPFLAGS" \ -LDFLAGS="$LDFLAGS_ANDROID $LDFLAGS" \ -CC="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-gcc" \ -CXX="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-g++" \ -RANLIB="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-ranlib" \ -LD="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-ld" \ -AR="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-ar" \ -CPP="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-cpp $CFLAGS" \ -NM="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-nm" \ -AS="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-as" \ -STRIP="$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin/arm-eabi-strip" \ -./configure --host=arm-linux-eabi "$@" diff --git a/project/jni/setCrossEnvironment.sh b/project/jni/setCrossEnvironment.sh new file mode 100755 index 000000000..d3bfbc81d --- /dev/null +++ b/project/jni/setCrossEnvironment.sh @@ -0,0 +1,80 @@ +#!/bin/sh + +IFS=' +' + +MYARCH=linux-x86 +if uname -s | grep -i "linux" > /dev/null ; then + MYARCH=linux-x86 +fi +if uname -s | grep -i "darwin" > /dev/null ; then + MYARCH=darwin-x86 +fi +if uname -s | grep -i "windows" > /dev/null ; then + MYARCH=windows-x86 +fi + +NDK=`which ndk-build` +NDK=`dirname $NDK` +NDK=`readlink -f $NDK` + +#echo NDK $NDK +GCCPREFIX=arm-linux-androideabi +GCCVER=4.4.3 +PLATFORMVER=android-8 +LOCAL_PATH=`dirname $0` +LOCAL_PATH=`cd $LOCAL_PATH && pwd` +#echo LOCAL_PATH $LOCAL_PATH + +CFLAGS="\ +-fexceptions -frtti \ +-fpic -ffunction-sections -funwind-tables -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi \ +-march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ +-isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include -Wa,--noexecstack \ +-DANDROID \ +-DNDEBUG -O2 -g \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include \ +$MISSING_INCLUDE" + +SHARED="-shared -Wl,-soname,libapplication.so" +if [ -n "$BUILD_EXECUTABLE" ]; then + SHARED= +fi +if [ -n "$NO_SHARED_LIBS" ]; then + APP_SHARED_LIBS= +fi + +LDFLAGS="\ +-fexceptions -frtti $SHARED \ +--sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ +-L$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi \ +-L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ +-lc \ +-lm \ +-ldl \ +-llog \ +-lz \ +-lgnustl_static \ +-lsupc++ \ +-Wl,--no-undefined -Wl,-z,noexecstack \ +-Wl,-rpath=/system/lib \ +-Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ +$MISSING_LIB" + +#echo env CFLAGS=\""$CFLAGS"\" LDFLAGS=\""$LDFLAGS"\" "$@" + +env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ +CFLAGS="$CFLAGS" \ +CXXFLAGS="$CFLAGS" \ +LDFLAGS="$LDFLAGS" \ +CC="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ +CXX="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +RANLIB="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ +LD="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +AR="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ +CPP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +NM="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ +AS="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ +STRIP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ +"$@"