diff --git a/alienblaster/ChangeAppSettings.sh b/alienblaster/ChangeAppSettings.sh index 02e5ef50e..a38631f71 100755 --- a/alienblaster/ChangeAppSettings.sh +++ b/alienblaster/ChangeAppSettings.sh @@ -77,6 +77,7 @@ grep 'Available libraries:' project/jni/Application.mk grep 'depends on' project/jni/Application.mk echo -n "Current: $CompiledLibraries\n\n: " read var +CompiledLibrariesOld=$CompiledLibraries if [ -n "$var" ] ; then CompiledLibraries="$var" fi @@ -238,5 +239,8 @@ if [ "$LibSdlVersionOld" '!=' "$LibSdlVersion" ]; then rm -rf project/bin/ndk/local/*/objs/sdl* project/bin/ndk/local/*/libsdl*.so rm -rf project/bin/ndk/local/*/objs/application project/bin/ndk/local/*/libapplication.so fi +if [ "$CompiledLibrariesOld" '!=' "$CompiledLibraries" ]; then + rm -rf project/bin/ndk/local/*/*.so +fi echo Done diff --git a/alienblaster/build.sh b/alienblaster/build.sh index 9d1d956ed..dc2d66ca7 100755 --- a/alienblaster/build.sh +++ b/alienblaster/build.sh @@ -1,7 +1,7 @@ #!/bin/bash # Set here your own NDK path if needed -export PATH=$PATH:~/src/endless_space/android-ndk-r4 +# export PATH=$PATH:~/src/endless_space/android-ndk-r4 cd project && nice -n5 ndk-build -j2 V=1 && ant debug && cd bin && adb install -r DemoActivity-debug.apk diff --git a/alienblaster/project/jni/application/Android.mk b/alienblaster/project/jni/application/Android.mk index 3db310949..7e9276428 100644 --- a/alienblaster/project/jni/application/Android.mk +++ b/alienblaster/project/jni/application/Android.mk @@ -14,6 +14,8 @@ LOCAL_CFLAGS := $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \ -I$(LOCAL_PATH)/../sdl_net \ -I$(LOCAL_PATH)/../sdl_blitpool \ -I$(LOCAL_PATH)/../stlport/stlport \ + -I$(LOCAL_PATH)/../png \ + -I$(LOCAL_PATH)/../jpeg \ LOCAL_CFLAGS += $(APPLICATION_ADDITIONAL_CFLAGS) diff --git a/alienblaster/project/jni/application/launchConfigure.sh b/alienblaster/project/jni/application/launchConfigure.sh new file mode 100755 index 000000000..45d5ed8c3 --- /dev/null +++ b/alienblaster/project/jni/application/launchConfigure.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# Set here your own NDK path if needed +# export PATH=$PATH:~/src/endless_space/android-ndk-r4 + +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 +ln -sf libsdl_mixer.so $LOCAL_PATH/../../bin/ndk/local/armeabi/libSDL_mixer.so +ln -sf libsdl_mixer.so $LOCAL_PATH/../../bin/ndk/local/armeabi/libSDL_Mixer.so +ln -sf libsdl_net.so $LOCAL_PATH/../../bin/ndk/local/armeabi/libSDL_net.so + +CFLAGS="-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 \ +`grep '[-]I[$][(]LOCAL_PATH[)]/[.][.]/' $LOCAL_PATH/Android.mk | tr '\n' ' ' | sed 's/[\\]//g' | sed \"s@[\$][(]LOCAL_PATH[)]/@$LOCAL_PATH/@g\" | sed 's/[ ][ ]*/ /g'`" + +LDFLAGS="-nostdlib -Wl,-soname,libapplication.so -Wl,-shared,-Bsymbolic \ +-Wl,--whole-archive -Wl,--no-whole-archive \ +$LOCAL_PATH/../../bin/ndk/local/armeabi/libstlport.a \ +$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/lib/gcc/arm-eabi/4.4.0/libgcc.a \ +`echo $LOCAL_PATH/../../bin/ndk/local/armeabi/*.so | sed "s@$LOCAL_PATH/../../bin/ndk/local/armeabi/libsdl_main.so@@" | sed "s@$LOCAL_PATH/../../bin/ndk/local/armeabi/libapplication.so@@"` \ +$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 \ +-lGLESv1_CM -ldl -llog -lz \ +-Wl,-rpath-link=$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib \ +-L$LOCAL_PATH/../../bin/ndk/local/armeabi" + +env PATH=$NDK/build/prebuilt/linux-x86/arm-eabi-$GCCVER/bin:$LOCAL_PATH:$PATH \ +CFLAGS="$CFLAGS" \ +CXXFLAGS="$CFLAGS" \ +LDFLAGS="$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-gcc" \ +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-eabi "$@" diff --git a/alienblaster/project/jni/application/sdl-config b/alienblaster/project/jni/application/sdl-config new file mode 100755 index 000000000..07c945a75 --- /dev/null +++ b/alienblaster/project/jni/application/sdl-config @@ -0,0 +1,62 @@ +#!/bin/sh + +LOCAL_PATH=`dirname $0` +LOCAL_PATH=`cd $LOCAL_PATH && pwd` + +prefix=$LOCAL_PATH/../sdl +exec_prefix=$LOCAL_PATH/../../bin/ndk/local/armeabi +exec_prefix_set=no + +#usage="\ +#Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]" +usage="\ +Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]" + +if test $# -eq 0; then + echo "${usage}" 1>&2 + exit 1 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | LC_ALL="C" sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo $exec_prefix + ;; + --version) + echo 1.2.14 + ;; + --cflags) + echo -I${prefix}/include -D_GNU_SOURCE=1 -D_REENTRANT + ;; + --libs) + echo -L${exec_prefix} -lsdl + ;; + --static-libs) +# --libs|--static-libs) + echo -L${exec_prefix} -lsdl + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift +done diff --git a/alienblaster/readme.txt b/alienblaster/readme.txt index 71a7e5ba0..2da99c952 100644 --- a/alienblaster/readme.txt +++ b/alienblaster/readme.txt @@ -69,7 +69,19 @@ So it's best to debug with code like: __android_log_print(ANDROID_LOG_INFO, "My App", "We somehow reached execution point #224"); and then watching "adb logcat" output. - +There is limited support for "configure" scripts, I've managed to compile lbreakout2 that way, +though ./configure scripts tend to have stupid bugs in various places, avoid using that method if you can. +1. Download lbreakout2-2.6.1.tar.gz from http://lgames.sourceforge.net/, unpack it to project/jni/application dir. +2. Determine libraries needed for your app, launch ChangeAppSettings.sh, select correct libSDL version + (1.2 for lbreakout2), and correct libs (sdl_mixer sdl_image sdl_net for lbreakout2), also change name etc. +3. Launch ./build.sh, wait till it builds all .so files +4. Go to project/jni/application/lbreakout2-2.6.1 dir, and launch command + ../launchConfigure.sh --disable-install --enable-sdl-net --disable-nls +5. Watch how ./configure configures, if it fails fix launchConfigure.sh, rinse and repeat. +6. Launch make, and pray. If you're lucky it will create application binary (lbreakout2-2.6.1/client/lbreakout2) +7. Move the application binary to dir project/libs/armeabi, rename it to libapplication.so (overwrite old file) +8. Run command "arm-eabi-strip --strip-debug libapplication.so", you can find arm-eabi-strip under your NDK dir. +9. Run "ant debug" or "ant release" from project dir, install to device & enjoy. Known bugs: