From 5b21ee268c6ac5f84c73a88d67df566a1178a4fa Mon Sep 17 00:00:00 2001 From: pelya Date: Mon, 3 Sep 2012 19:57:32 +0300 Subject: [PATCH] Disabled RTTI and exceptions, added section to readme how to enable them --- project/jni/application/Android.mk | 4 +++- project/jni/application/commandergenius/commandergenius | 2 +- project/jni/application/openarena/AndroidBuild.sh | 3 +-- project/jni/application/setEnvironment-armeabi-v7a.sh | 5 ++--- project/jni/application/setEnvironment-r5b.sh | 4 ++-- project/jni/application/setEnvironment-r8b.sh | 4 ++-- readme.txt | 5 +++++ 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/project/jni/application/Android.mk b/project/jni/application/Android.mk index 5dce979d1..d63f63b2d 100644 --- a/project/jni/application/Android.mk +++ b/project/jni/application/Android.mk @@ -19,7 +19,9 @@ APP_SUBDIRS := $(filter-out %.c %.cpp, $(APP_SUBDIRS)) LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.cpp)))) LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c)))) -LOCAL_CPP_FEATURES := exceptions rtti +# Disabled because they give slight overhead, add "-frtti -fexceptions" to the AppCflags inside AndroidAppSettings.cfg if you need them +# If you use setEnvironment.sh you may write "env CXXFLAGS='-frtti -fexceptions' ../setEnvironment.sh ./configure". +#LOCAL_CPP_FEATURES := exceptions rtti LOCAL_CFLAGS := LOCAL_C_INCLUDES := diff --git a/project/jni/application/commandergenius/commandergenius b/project/jni/application/commandergenius/commandergenius index 023025901..d1b8a7ae0 160000 --- a/project/jni/application/commandergenius/commandergenius +++ b/project/jni/application/commandergenius/commandergenius @@ -1 +1 @@ -Subproject commit 023025901a1d96a46d826791bf9cf264ddf5c9ee +Subproject commit d1b8a7ae03b1a0960722abbab38bbb8fca98e7cd diff --git a/project/jni/application/openarena/AndroidBuild.sh b/project/jni/application/openarena/AndroidBuild.sh index a5d435e78..c379e6401 100755 --- a/project/jni/application/openarena/AndroidBuild.sh +++ b/project/jni/application/openarena/AndroidBuild.sh @@ -3,9 +3,8 @@ LOCAL_PATH=`dirname $0` LOCAL_PATH=`cd $LOCAL_PATH && pwd` -../setEnvironment.sh make -j8 -C engine \ +../setEnvironment.sh make -j8 -C engine release \ PLATFORM=android ARCH=arm USE_GLES=1 USE_LOCAL_HEADERS=0 \ USE_OPENAL=0 USE_CURL=1 USE_CURL_DLOPEN=0 USE_CODEC_VORBIS=1 USE_MUMBLE=0 USE_FREETYPE=1 \ USE_RENDERER_DLOPEN=0 USE_INTERNAL_ZLIB=0 USE_INTERNAL_JPEG=1 && mv -f engine/build/release-android-arm/openarena.arm libapplication.so - diff --git a/project/jni/application/setEnvironment-armeabi-v7a.sh b/project/jni/application/setEnvironment-armeabi-v7a.sh index 6bbae82c5..50ecea706 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a.sh @@ -53,7 +53,6 @@ MISSING_LIB= CFLAGS="\ --fexceptions -frtti \ -MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector \ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ @@ -74,7 +73,7 @@ if [ -n "$NO_SHARED_LIBS" ]; then fi LDFLAGS="\ --fexceptions -frtti $SHARED \ +$SHARED \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ `echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/armeabi-v7a/lib\1.so@g\"` \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \ @@ -95,7 +94,7 @@ $MISSING_LIB $LDFLAGS" env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ -CXXFLAGS="$CFLAGS" \ +CXXFLAGS="$CXXFLAGS $CFLAGS" \ LDFLAGS="$LDFLAGS" \ CC="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ CXX="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ diff --git a/project/jni/application/setEnvironment-r5b.sh b/project/jni/application/setEnvironment-r5b.sh index 09f3a1a65..be0fe6ded 100755 --- a/project/jni/application/setEnvironment-r5b.sh +++ b/project/jni/application/setEnvironment-r5b.sh @@ -73,7 +73,7 @@ fi LDFLAGS="\ --fexceptions -frtti $SHARED \ +$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 \ @@ -93,7 +93,7 @@ $MISSING_LIB $LDFLAGS" env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ -CXXFLAGS="-fexceptions -frtti $CFLAGS" \ +CXXFLAGS="$CXXFLAGS $CFLAGS" \ LDFLAGS="$LDFLAGS" \ CC="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ CXX="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ diff --git a/project/jni/application/setEnvironment-r8b.sh b/project/jni/application/setEnvironment-r8b.sh index 3f322b42d..c7b080bf8 100755 --- a/project/jni/application/setEnvironment-r8b.sh +++ b/project/jni/application/setEnvironment-r8b.sh @@ -65,7 +65,7 @@ fi LDFLAGS="\ --fexceptions -frtti $SHARED \ +$SHARED \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ `echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \ @@ -85,7 +85,7 @@ $MISSING_LIB $LDFLAGS" env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ -CXXFLAGS="-fexceptions -frtti $CFLAGS" \ +CXXFLAGS="$CXXFLAGS $CFLAGS" \ LDFLAGS="$LDFLAGS" \ CC="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ CXX="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ diff --git a/readme.txt b/readme.txt index 4e6157b55..aaeb652db 100644 --- a/readme.txt +++ b/readme.txt @@ -93,6 +93,11 @@ Also you have to create an icon image file at project/res/drawable/icon.png, and project/jni/application/src/AndroidData/logo.png to be used as a splash screen image. Then you may launch build.sh. +C++ RTTI and exceptions give very slight memory overhead, if you need them - +add "-frtti -fexceptions" to the AppCflags inside AndroidAppSettings.cfg +If you use autoconf/automake/configure scripts with setEnvironment.sh, you may write +env CXXFLAGS='-frtti -fexceptions' ../setEnvironment.sh ./configure + Application data may be bundled with app itself, or downloaded from the internet on the first run - if you want to put app data inside .apk file - create a .zip archive and put it into the directory project/jni/application/src/AndroidData (create it if it doesn't exist), then run ChangeAppSettings.sh