Added possibility to compile armeabi-v7a binaries via AndroidBuild.sh script, updated OpenArena

This commit is contained in:
pelya
2012-09-25 20:04:18 +03:00
parent fef867ebcb
commit ac96d94173
11 changed files with 60 additions and 52 deletions

3
.gitmodules vendored
View File

@@ -25,3 +25,6 @@
[submodule "project/jni/application/scummvm/scummvm"] [submodule "project/jni/application/scummvm/scummvm"]
path = project/jni/application/scummvm/scummvm path = project/jni/application/scummvm/scummvm
url = https://github.com/scummvm/scummvm.git url = https://github.com/scummvm/scummvm.git
[submodule "project/jni/application/openarena/vm"]
path = project/jni/application/openarena/vm
url = https://github.com/pelya/openarena-vm

View File

@@ -44,12 +44,19 @@ fi
rm -r -f project/bin/* # New Android SDK introduced some lame-ass optimizations to the build system which we should take care about rm -r -f project/bin/* # New Android SDK introduced some lame-ass optimizations to the build system which we should take care about
cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j$NCPU && \ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU nice -n19 ndk-build -j$NCPU && \
{ grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \ { grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
[ -`which ndk-build | xargs readlink -f | grep '/android-ndk-r[56789]'` != - ] && \ echo Stripping libapplication.so by hand && \
echo Stripping libapplication.so by hand \
rm obj/local/armeabi/libapplication.so && \ rm obj/local/armeabi/libapplication.so && \
cp jni/application/src/libapplication.so obj/local/armeabi && \ cp jni/application/src/libapplication.so obj/local/armeabi/ && \
cp jni/application/src/libapplication.so libs/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 \ `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 \
|| true ; } && \
{ grep "CustomBuildScript=y" ../AndroidAppSettings.cfg > /dev/null && \
grep "MultiABI=y" ../AndroidAppSettings.cfg > /dev/null && \
echo Stripping libapplication-armeabi-v7a.so by hand && \
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 \
|| true ; } && \ || true ; } && \
ant debug && \ ant debug && \
$install_apk && [ -n "`adb devices | tail -n +2`" ] && \ $install_apk && [ -n "`adb devices | tail -n +2`" ] && \

View File

@@ -93,8 +93,9 @@ endif
#$(error Detected libraries with too long symbol names. Remove all files under project/obj/local/armeabi, make these libs static, and recompile) #$(error Detected libraries with too long symbol names. Remove all files under project/obj/local/armeabi, make these libs static, and recompile)
#endif #endif
APP_LIB_DEPENDS := $(foreach LIB, $(LOCAL_SHARED_LIBRARIES), $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/lib$(LIB).so)) SDL_APP_LIB_DEPENDS := $(LOCAL_PATH)/src/AndroidBuild.sh $(LOCAL_PATH)/src/AndroidAppSettings.cfg
APP_LIB_DEPENDS += $(foreach LIB, $(LOCAL_STATIC_LIBRARIES), $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/lib$(LIB).a)) SDL_APP_LIB_DEPENDS += $(foreach LIB, $(LOCAL_SHARED_LIBRARIES), obj/local/$(TARGET_ARCH_ABI)/lib$(LIB).so)
SDL_APP_LIB_DEPENDS += $(foreach LIB, $(LOCAL_STATIC_LIBRARIES), obj/local/$(TARGET_ARCH_ABI)/lib$(LIB).a)
include $(BUILD_SHARED_LIBRARY) include $(BUILD_SHARED_LIBRARY)
@@ -103,28 +104,23 @@ ifneq ($(APPLICATION_CUSTOM_BUILD_SCRIPT),)
# TODO: here we're digging inside NDK internal build system, that's not portable # TODO: here we're digging inside NDK internal build system, that's not portable
# NDK r5b provided the $(PREBUILT_SHARED_LIBRARY) target, however it requires .so file to be already present on disk # NDK r5b provided the $(PREBUILT_SHARED_LIBRARY) target, however it requires .so file to be already present on disk
# Also I cannot just launch AndroidBuild.sh from makefile because other libraries are not rebuilt and linking will fail # Also I cannot just launch AndroidBuild.sh from makefile because other libraries are not rebuilt and linking will fail
.PHONY: OVERRIDE_CUSTOM_LIB
OVERRIDE_CUSTOM_LIB:
LOCAL_PATH_SDL_APPLICATION := $(LOCAL_PATH) LOCAL_PATH_SDL_APPLICATION := $(LOCAL_PATH)
.NOTPARALLEL: $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/libapplication.so) $(LOCAL_PATH)/src/libapplication.so ifeq ($(TARGET_ARCH_ABI),armeabi)
obj/local/armeabi/libapplication.so: $(LOCAL_PATH)/src/libapplication.so
# Enforce rebuilding $(LOCAL_PATH)/src/libapplication.so: $(SDL_APP_LIB_DEPENDS) OVERRIDE_CUSTOM_LIB
$(shell rm -f $(LOCAL_PATH)/src/libapplication.so) cd $(LOCAL_PATH_SDL_APPLICATION)/src && ./AndroidBuild.sh armeabi
$(shell mkdir -p $(LOCAL_PATH)/../../obj/local/armeabi) endif
$(shell touch $(LOCAL_PATH)/../../obj/local/armeabi/libapplication.so)
$(LOCAL_PATH)/src/libapplication.so: $(LOCAL_PATH)/src/AndroidBuild.sh $(LOCAL_PATH)/src/AndroidAppSettings.cfg $(APP_LIB_DEPENDS) ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
echo Launching script $(LOCAL_PATH_SDL_APPLICATION)/AndroidBuild.sh obj/local/armeabi-v7a/libapplication.so: $(LOCAL_PATH)/src/libapplication-armeabi-v7a.so
cd $(LOCAL_PATH_SDL_APPLICATION)/src && ./AndroidBuild.sh
$(abspath $(LOCAL_PATH)/../../obj/local/armeabi/libapplication.so): $(LOCAL_PATH)/src/libapplication.so OVERRIDE_CUSTOM_LIB $(LOCAL_PATH)/src/libapplication-armeabi-v7a.so: $(SDL_APP_LIB_DEPENDS) OVERRIDE_CUSTOM_LIB
cp -f $< $@ cd $(LOCAL_PATH_SDL_APPLICATION)/src && ./AndroidBuild.sh armeabi-v7a
endif
obj/local/armeabi/libapplication.so: $(LOCAL_PATH)/src/libapplication.so OVERRIDE_CUSTOM_LIB
cp -f $< $@
.PHONY: OVERRIDE_CUSTOM_LIB
OVERRIDE_CUSTOM_LIB:
endif endif

View File

@@ -5,7 +5,7 @@ AppName="OpenArena"
AppFullName=ws.openarena.sdl AppFullName=ws.openarena.sdl
ScreenOrientation=h ScreenOrientation=h
InhibitSuspend=n InhibitSuspend=n
AppDataDownloadUrl="Game data|http://sourceforge.net/projects/libsdl-android/files/OpenArena/oa-0.8.8-1.zip/download" AppDataDownloadUrl="!Game data|http://sourceforge.net/projects/libsdl-android/files/OpenArena/oa-0.8.8-1.zip/download^!Game logic|:baseoa/pak7-android.pk3:vm.zip"
VideoDepthBpp=24 VideoDepthBpp=24
NeedDepthBuffer=y NeedDepthBuffer=y
NeedStencilBuffer=y NeedStencilBuffer=y
@@ -22,8 +22,8 @@ ShowMouseCursor=n
ForceRelativeMouseMode=n ForceRelativeMouseMode=n
AppNeedsArrowKeys=y AppNeedsArrowKeys=y
AppNeedsTextInput=y AppNeedsTextInput=y
AppUsesJoystick=n AppUsesJoystick=y
AppHandlesJoystickSensitivity=n AppUsesAccelerometer=y
AppUsesMultitouch=y AppUsesMultitouch=y
NonBlockingSwapBuffers=n NonBlockingSwapBuffers=n
RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE" RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE"
@@ -33,7 +33,7 @@ RedefinedKeysScreenKb="0 1 2 3 4 5 6 7 8 9"
StartupMenuButtonTimeout=3000 StartupMenuButtonTimeout=3000
HiddenMenuOptions='OptionalDownloadConfig DisplaySizeConfig' HiddenMenuOptions='OptionalDownloadConfig DisplaySizeConfig'
FirstStartMenuOptions='' FirstStartMenuOptions=''
MultiABI=n MultiABI=y
AppVersionCode=08803 AppVersionCode=08803
AppVersionName="0.8.8.03" AppVersionName="0.8.8.03"
ResetSdlConfigForThisVersion=n ResetSdlConfigForThisVersion=n

View File

@@ -3,8 +3,17 @@
LOCAL_PATH=`dirname $0` LOCAL_PATH=`dirname $0`
LOCAL_PATH=`cd $LOCAL_PATH && pwd` LOCAL_PATH=`cd $LOCAL_PATH && pwd`
../setEnvironment.sh make -j8 -C engine release \ ../setEnvironment-$1.sh make -j8 -C engine release \
PLATFORM=android ARCH=arm USE_GLES=1 USE_LOCAL_HEADERS=0 \ PLATFORM=android ARCH=$1 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_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 && USE_RENDERER_DLOPEN=0 USE_INTERNAL_ZLIB=0 USE_INTERNAL_JPEG=1 && \
mv -f engine/build/release-android-arm/openarena.arm libapplication.so echo "Copying engine/build/release-android-$1/openarena.$1 -> libapplication-$1.so" && \
cp -f engine/build/release-android-$1/openarena.$1 libapplication-$1.so
[ "$1" = "armeabi" ] && (
[ -e libapplication.so ] || ln -s libapplication-armeabi.so libapplication.so
make -j8 -C vm
cd vm/build/release-*/baseq3
zip -r vm.zip vm
cmp -s vm.zip ../../../../AndroidData/vm.zip || mv -f vm.zip ../../../../AndroidData/vm.zip
)

Binary file not shown.

View File

@@ -20,10 +20,11 @@ NDK=`readlink -f $NDK`
#echo NDK $NDK #echo NDK $NDK
GCCPREFIX=arm-linux-androideabi GCCPREFIX=arm-linux-androideabi
GCCVER=4.4.3 GCCVER=4.6
PLATFORMVER=android-8 PLATFORMVER=android-8
LOCAL_PATH=`dirname $0` LOCAL_PATH=`dirname $0`
LOCAL_PATH=`cd $LOCAL_PATH && pwd` LOCAL_PATH=`cd $LOCAL_PATH && pwd`
ARCH=armeabi-v7a
#echo LOCAL_PATH $LOCAL_PATH #echo LOCAL_PATH $LOCAL_PATH
APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'`
@@ -42,24 +43,14 @@ done
MISSING_INCLUDE= MISSING_INCLUDE=
MISSING_LIB= MISSING_LIB=
#if [ -n "$CRYSTAX_WCHAR" ]; then
# MISSING_INCLUDE="$MISSING_INCLUDE -isystem$NDK/sources/crystax/include"
# MISSING_LIB="$MISSING_LIB $NDK/sources/crystax/libs/armeabi/libcrystax_static.a"
#fi
#if [ -n "$MISSING_LIBCXX_PATH" ]; then
# MISSING_INCLUDE="$MISSING_INCLUDE -isystem$NDK/sources/cxx-stl/gnu-libstdc++/include"
# MISSING_LIB="$MISSING_LIB -lgnustl_static -lsupc++"
#fi
CFLAGS="\ CFLAGS="\
-MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector \ -fpic -ffunction-sections -funwind-tables \
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi \
-Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \
-DANDROID -Wa,--noexecstack -g -O2 -DNDEBUG -g \ -DANDROID -Wa,--noexecstack -g -O2 -DNDEBUG -g \
-isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ -isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \
-isystem$NDK/sources/cxx-stl/gnu-libstdc++/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include \
-isystem$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH/include \
-isystem$LOCAL_PATH/../sdl-1.2/include \ -isystem$LOCAL_PATH/../sdl-1.2/include \
`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ `echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \
$MISSING_INCLUDE $CFLAGS" $MISSING_INCLUDE $CFLAGS"
@@ -75,17 +66,17 @@ fi
LDFLAGS="\ LDFLAGS="\
$SHARED \ $SHARED \
--sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ --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\"` \ `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 \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libGLESv1_CM.so \ $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/libdl.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/liblog.so \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/liblog.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libz.so \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libz.so \
-L$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH \
-lgnustl_static \ -lgnustl_static \
-L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ -L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \
-L$LOCAL_PATH/../../obj/local/armeabi-v7a \ -L$LOCAL_PATH/../../obj/local/$ARCH \
-Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack \ -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack \
-Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib -lsupc++ \ -Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib -lsupc++ \
$MISSING_LIB $LDFLAGS" $MISSING_LIB $LDFLAGS"

View File

@@ -0,0 +1 @@
setEnvironment.sh