I'v efailed to integrate my STLPort so now I'm using GNU stdc++ with RTTI and exceptions

This commit is contained in:
pelya
2011-01-28 16:40:24 +00:00
parent 343458d9a6
commit 424b94565b
8 changed files with 46 additions and 36 deletions

View File

@@ -1,13 +1,8 @@
#!/bin/sh
# Set here your own NDK path if needed
# export PATH=$PATH:~/src/endless_space/android-ndk-r4b
# Set environment to CrystaX NDK with RTTI and exceptions instead of original NDK
# export PATH=$PATH:~/src/endless_space/android-ndk-r4-crystax/ndk-build
# export PATH=$PATH:~/src/endless_space/android-ndk-r5b
NDKBUILDPATH=$PATH
if grep "AppUseCrystaXToolchain=y" AndroidAppSettings.cfg > /dev/null ; then
NDKBUILDPATH=`which ndk-build | sed 's@/[^/]*/ndk-build@/android-ndk-r4-crystax@'`:$PATH
fi
export `grep "AppFullName=" AndroidAppSettings.cfg`
if ( grep "package $AppFullName;" project/src/Globals.java > /dev/null && [ "`readlink AndroidAppSettings.cfg`" -ot "project/src/Globals.java" ] ) ; then true ; else
./ChangeAppSettings.sh -a
@@ -15,5 +10,24 @@ if ( grep "package $AppFullName;" project/src/Globals.java > /dev/null && [ "`re
touch project/src/Globals.java
fi
cd project && env PATH=$NDKBUILDPATH nice -n19 ndk-build -j4 V=1 -k && ant `test -n "$1" && echo release || echo debug` && test -z "$1" && cd bin && adb install -r DemoActivity-debug.apk
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
cd project && env PATH=$NDKBUILDPATH nice -n19 ndk-build -j4 V=1 && \
{ grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
rm obj/local/armeabi/libapplication.so && \
cp jni/application/src/libapplication.so obj/local/armeabi && \
cp jni/application/src/libapplication.so libs/armeabi && \
`which ndk-build | sed 's@/ndk-build@@'`/toolchains/arm-linux-androideabi-4.4.3/prebuilt/$MYARCH/bin/arm-linux-androideabi-strip --strip-unneeded libs/armeabi/libapplication.so \
|| true ; } && \
ant `test -n "$1" && echo release || echo debug` && \
test -z "$1" && cd bin && adb install -r DemoActivity-debug.apk

View File

@@ -1,6 +1,6 @@
APP_PROJECT_PATH := $(call my-dir)/..
APP_STL := system
APP_STL := gnustl_static
include jni/Settings.mk

View File

@@ -16,7 +16,7 @@ endif
LOCAL_CFLAGS :=
ifeq ($(CRYSTAX_TOOLCHAIN),)
ifeq ($(CRYSTAX_TOOLCHAIN)$(NDK_R5_TOOLCHAIN),)
LOCAL_CFLAGS += -I$(LOCAL_PATH)/../stlport/stlport
endif
@@ -44,8 +44,6 @@ LOCAL_STATIC_LIBRARIES := $(filter $(APP_AVAILABLE_STATIC_LIBS), $(COMPILED_LIBR
LOCAL_STATIC_LIBRARIES += stlport
LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lz
ifneq ($(NDK_R5_TOOLCHAIN),)
endif
LOCAL_LDFLAGS := -Lobj/local/armeabi
@@ -85,8 +83,7 @@ LOCAL_PATH_SDL_APPLICATION := $(LOCAL_PATH)
.NOTPARALLEL: $(realpath $(LOCAL_PATH)/../../obj/local/armeabi/libapplication.so) $(LOCAL_PATH)/src/libapplication.so
$(shell rm $(LOCAL_PATH)/src/libapplication.so) # Enforce rebuilding
# $(shell rm $(LOCAL_PATH)/../../obj/local/armeabi/*.so) # libapplication.so may try to link with wrong libraries, prevent that
$(shell rm -f $(LOCAL_PATH)/src/libapplication.so) # Enforce rebuilding
$(LOCAL_PATH)/src/libapplication.so: $(LOCAL_PATH)/src/AndroidBuild.sh $(LOCAL_PATH)/src/AndroidAppSettings.cfg $(APP_LIB_DEPENDS)
echo Launching script $(LOCAL_PATH_SDL_APPLICATION)/AndroidBuild.sh

View File

@@ -18,4 +18,4 @@ fi
if [ \! -f openttd/Makefile ] ; then
../setEnvironment.sh sh -c "cd openttd && ./configure --host=arm-linux-androideabi --with-sdl --with-freetype=sdl-config --with-png --with-zlib --with-libtimidity=$LOCAL_PATH/../../../obj/local/armeabi/libtimidity.so --with-lzo2=$LOCAL_PATH/../../../obj/local/armeabi/liblzo2.so --prefix-dir='.' --data-dir='' --without-allegro --without-fontconfig --endian=LE"
fi
../setEnvironment.sh sh -c "cd openttd && make -j1 VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfreetype -lstlport -lz -lc -lstdc++ -lsupc++'" && cp -f openttd/objs/release/openttd libapplication.so
../setEnvironment.sh sh -c "cd openttd && make -j1 VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfreetype -lz -lc -lstdc++ -lsupc++'" && cp -f openttd/objs/release/openttd libapplication.so

View File

@@ -54,9 +54,8 @@ CFLAGS="\
-march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \
-I$NDK/platforms/$PLATFORMVER/arch-arm/usr/include -Wa,--noexecstack \
-DANDROID -D__sF=__SDL_fake_stdout -DNDEBUG -O2 -g \
-I$NDK/sources/cxx-stl/system/include \
-I$NDK/sources/cxx-stl/gnu-libstdc++/include \
-I$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include \
-I$LOCAL_PATH/../stlport/stlport \
-I$LOCAL_PATH/../sdl-1.2/include \
`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"`"
@@ -65,13 +64,16 @@ LDFLAGS="\
-Wl,-soname,libapplication.so -shared --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \
`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/armeabi/lib\1.so@g\"` \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libstdc++.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \
-L$LOCAL_PATH/../../obj/local/armeabi -Wl,--no-undefined -Wl,-z,noexecstack \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libGLESv1_CM.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libdl.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/liblog.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libz.so \
-L$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi -lstdc++ \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libstdc++.a \
-L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \
-lGLESv1_CM -ldl -llog -lz \
-Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib -lsupc++ \
-L$LOCAL_PATH/../../obj/local/armeabi $LOCAL_PATH/../../obj/local/armeabi/libstlport.a"
-L$LOCAL_PATH/../../obj/local/armeabi -Wl,--no-undefined -Wl,-z,noexecstack \
-Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib -lsupc++"
env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \
CFLAGS="$CFLAGS" \

View File

@@ -4,7 +4,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE := stlport
ifneq ($(CRYSTAX_TOOLCHAIN),)
ifneq ($(CRYSTAX_TOOLCHAIN)$(NDK_R5_TOOLCHAIN),)
LOCAL_CPP_EXTENSION := .cpp
LOCAL_SRC_FILES := dummy.c
else

View File

@@ -47,13 +47,6 @@ using _STLP_VENDOR_CSTD::malloc;
# error Cannot include native new header as new is a macro.
# endif
# ifdef ANDROID
# include _STLP_NATIVE_CPP_RUNTIME_HEADER(cstddef)
namespace std {
using ::ptrdiff_t;
using ::size_t;
}
# endif
# include _STLP_NATIVE_CPP_RUNTIME_HEADER(new)
# if defined (_STLP_BROKEN_BAD_ALLOC_CLASS)

View File

@@ -3,6 +3,8 @@
#define _STLP_PLATFORM "Android"
#include <features.h>
// The Android C library is mostly glibc-like
#define _STLP_USE_GLIBC 1
@@ -15,17 +17,19 @@
// Have pthreads support.
#define _PTHREADS
#define _STLP_THREADS
#define _STLP_PTHREADS
// Don't have native <cplusplus> headers
#define _STLP_HAS_NO_NEW_C_HEADERS 1
// #define _STLP_HAS_NO_NEW_C_HEADERS 1
// #define _STLP_USE_NEW_C_HEADERS 1
// #define _STLP_NO_NEW_NEW_HEADER 1
// #define _STLP_NO_NEW_HEADER 1
#define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
#define _STLP_NO_BAD_ALLOC 1
// #define _STLP_NEW_DONT_THROW_BAD_ALLOC 1
// #define _STLP_NO_BAD_ALLOC 1
// No <exception> headers
#define _STLP_NO_EXCEPTION_HEADER 1
#define _STLP_OWN_STDEXCEPT 1 // Already inside libsupc++, but we'll define it under different namespace
// #define _STLP_NO_EXCEPTION_HEADER 1
// #define _STLP_OWN_STDEXCEPT 1 // Already inside libsupc++, but we'll define it under different namespace
// Don't use wchar.h etc
#define _STLP_NO_WCHAR_T 1
@@ -73,8 +77,8 @@
// Define how to include our native headers.
#if defined(__ANDROID__) /* NDK r5 */
# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../../../cxx-stl/system/include
# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../../../cxx-stl/system/include
# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../../../cxx-stl/gnu-libstdc++/include
# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../../../cxx-stl/gnu-libstdc++/include
//# warning ("Detected Android NDK r5 or newer")
#else /* NDK r4b */
# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../../usr/include