mirror of
https://github.com/SFML/SFML.git
synced 2024-11-25 04:41:05 +08:00
[Android] Added tools (unix bash scripts) to recompile Android extlibs
For some reason, one might want to recompile the extlibs but this is a tedious task. That's why these scripts are provided. Please read readme.txt before using them!
This commit is contained in:
parent
90d8b37442
commit
4180e6b31f
6
tools/android/clean_all.sh
Executable file
6
tools/android/clean_all.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
rm -rf tmp
|
||||||
|
rm -rf build
|
||||||
|
rm -rf src
|
||||||
|
rm -rf toolchains
|
12
tools/android/compile_arm-v7a.sh
Executable file
12
tools/android/compile_arm-v7a.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DESTDIR=$PWD/tmp/arm-v7a
|
||||||
|
|
||||||
|
PATH=$PWD/toolchains/arm/bin:$PATH
|
||||||
|
CC=arm-linux-androideabi-gcc
|
||||||
|
CXX=arm-linux-androideabi-g++
|
||||||
|
CFLAGS="-I$DESTDIR/usr/include -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"
|
||||||
|
CPPFLAGS="-I$DESTDIR/usr/include -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"
|
||||||
|
LDFLAGS="-L$DESTDIR/usr/lib -march=armv7-a -Wl,--fix-cortex-a8 -lstlport_shared"
|
||||||
|
|
||||||
|
./compile_libs.sh arm-v7a $PATH $CC $CXX "$CFLAGS" "$CPPFLAGS" "$LDFLAGS"
|
12
tools/android/compile_arm.sh
Executable file
12
tools/android/compile_arm.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DESTDIR=$PWD/tmp/arm
|
||||||
|
|
||||||
|
PATH=$PWD/toolchains/arm/bin:$PATH
|
||||||
|
CC=arm-linux-androideabi-gcc
|
||||||
|
CXX=arm-linux-androideabi-g++
|
||||||
|
CFLAGS=-I$DESTDIR/usr/include
|
||||||
|
CPPFLAGS=-I$DESTDIR/usr/include
|
||||||
|
LDFLAGS=-L$DESTDIR/usr/lib
|
||||||
|
|
||||||
|
./compile_libs.sh arm $PATH $CC $CXX $CFLAGS $CPPFLAGS $LDFLAGS
|
63
tools/android/compile_libs.sh
Executable file
63
tools/android/compile_libs.sh
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DESTDIR=$PWD/tmp
|
||||||
|
LOCALDIR=$PWD
|
||||||
|
|
||||||
|
OPATH=$PATH
|
||||||
|
|
||||||
|
export PATH=$2
|
||||||
|
export CC=$3
|
||||||
|
export CXX=$4
|
||||||
|
export CFLAGS=$5
|
||||||
|
export CPPFLAGS=$6
|
||||||
|
export LDFLAGS=$7
|
||||||
|
|
||||||
|
if [ "$1" = "arm" ]
|
||||||
|
then
|
||||||
|
ARCH=arm-linux
|
||||||
|
ANDROID_ABI=armeabi
|
||||||
|
|
||||||
|
elif [ "$1" = "arm-v7a" ]
|
||||||
|
then
|
||||||
|
ARCH=arm-linux
|
||||||
|
ANDROID_ABI=armeabi-v7a
|
||||||
|
|
||||||
|
elif [ "$1" = "x86" ]
|
||||||
|
then
|
||||||
|
ARCH=i686-linux
|
||||||
|
ANDROID_ABI=x86
|
||||||
|
|
||||||
|
elif [ "$1" = "mips" ]
|
||||||
|
then
|
||||||
|
ARCH=mips-linux
|
||||||
|
ANDROID_ABI=mips
|
||||||
|
fi
|
||||||
|
|
||||||
|
HOST="--host=$ARCH"
|
||||||
|
PREFIX="--prefix=$DESTDIR/$1/usr need_version=no"
|
||||||
|
|
||||||
|
# Compile OGG
|
||||||
|
cd $LOCALDIR/build/libogg-* && sed -i 's/-version-info/-avoid-version/g' src/Makefile.in src/Makefile.am && ./configure $HOST $PREFIX && make && make install
|
||||||
|
rm $DESTDIR/$1/usr/lib/libogg*.so*
|
||||||
|
|
||||||
|
# Compile FLAC
|
||||||
|
cd $LOCALDIR/build/flac-* && sed -i 's/-version-info/-avoid-version/g' src/libFLAC/Makefile.in src/libFLAC/Makefile.am && ./configure $HOST $PREFIX && make && make install
|
||||||
|
rm $DESTDIR/$1/usr/lib/libFLAC*.so*
|
||||||
|
|
||||||
|
# Compile VORBIS
|
||||||
|
cd $LOCALDIR/build/libvorbis-* && sed -i 's/-version-info/-avoid-version/g' lib/Makefile.in lib/Makefile.am && ./configure $HOST $PREFIX && make && make install
|
||||||
|
rm $DESTDIR/$1/usr/lib/libvorbis*.so*
|
||||||
|
|
||||||
|
# Compile libsndfile (important: --disable-sqlite)
|
||||||
|
cd $LOCALDIR/build/libsndfile-* && sed -i 's/-version-info/-avoid-version/g' src/Makefile.in src/Makefile.am && ./configure $HOST $PREFIX --disable-sqlite && make && make install
|
||||||
|
|
||||||
|
# Compile JPEG
|
||||||
|
cd $LOCALDIR/build/jpeg-* && sed -i 's/-version-info/-avoid-version/g' Makefile.in Makefile.am && ./configure $HOST $PREFIX && make && make install
|
||||||
|
|
||||||
|
# Compile freetype
|
||||||
|
cd $LOCALDIR/build/freetype-* && sed -i 's/-version-info/-avoid-version/g' builds/unix/unix-cc.in && ./configure $HOST $PREFIX && make && make install
|
||||||
|
|
||||||
|
# Compile OpenAL-Soft
|
||||||
|
cd $LOCALDIR/build/openal-soft-android-master && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_CMAKE_TOOLCHAIN -DANDROID_ABI=$ANDROID_ABI -DANDROID_NATIVE_API_LEVEL=android-9 -DANDROID_USE_STLPORT=1 .. && make openal && mv libopenal.so $DESTDIR/$1/usr/lib
|
||||||
|
|
||||||
|
export PATH=$OPATH
|
12
tools/android/compile_mips.sh
Executable file
12
tools/android/compile_mips.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DESTDIR=$PWD/tmp/mips
|
||||||
|
|
||||||
|
PATH=$PWD/toolchains/mips/bin:$PATH
|
||||||
|
CC=mipsel-linux-android-gcc
|
||||||
|
CXX=mipsel-linux-android-g++
|
||||||
|
CFLAGS=-I$DESTDIR/usr/include
|
||||||
|
CPPFLAGS=-I$DESTDIR/usr/include
|
||||||
|
LDFLAGS=-L$DESTDIR/usr/lib
|
||||||
|
|
||||||
|
./compile_libs.sh mips $PATH $CC $CXX $CFLAGS $CPPFLAGS $LDFLAGS
|
12
tools/android/compile_x86.sh
Executable file
12
tools/android/compile_x86.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
DESTDIR=$PWD/tmp/x86
|
||||||
|
|
||||||
|
PATH=$PWD/toolchains/x86/bin:$PATH
|
||||||
|
CC=i686-linux-android-gcc
|
||||||
|
CXX=i686-linux-android-g++
|
||||||
|
CFLAGS=-I$DESTDIR/usr/include
|
||||||
|
CPPFLAGS=-I$DESTDIR/usr/include
|
||||||
|
LDFLAGS=-L$DESTDIR/usr/lib
|
||||||
|
|
||||||
|
./compile_libs.sh x86 $PATH $CC $CXX $CFLAGS $CPPFLAGS $LDFLAGS
|
40
tools/android/create_toolchains.sh
Executable file
40
tools/android/create_toolchains.sh
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
create_toolchain () {
|
||||||
|
|
||||||
|
export SYSROOT=$NDK/platforms/android-$1/arch-$2/
|
||||||
|
|
||||||
|
MAKE=$NDK/build/tools/make-standalone-toolchain.sh
|
||||||
|
|
||||||
|
PLATFORM=--platform=android-$1
|
||||||
|
DIR=--install-dir=toolchains/$2
|
||||||
|
|
||||||
|
# Abort if already created
|
||||||
|
if [ -d "$PWD/toolchains/$2" ]
|
||||||
|
then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$2" = "arm" ]
|
||||||
|
then
|
||||||
|
TOOLCHAIN=--toolchain=arm-linux-androideabi-4.8
|
||||||
|
elif [ "$2" = "x86" ]
|
||||||
|
then
|
||||||
|
TOOLCHAIN=--toolchain=x86-4.8
|
||||||
|
elif [ "$2" = "mips" ]
|
||||||
|
then
|
||||||
|
TOOLCHAIN=--toolchain=mipsel-linux-android-4.8
|
||||||
|
else
|
||||||
|
echo "Abort."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$MAKE $PLATFORM $TOOLCHAIN $DIR --stl=stlport
|
||||||
|
|
||||||
|
# move linux/soundcard.h to sys/soundcard.h
|
||||||
|
mv $PWD/toolchains/$2/sysroot/usr/include/linux/soundcard.h $PWD/toolchains/$2/sysroot/usr/include/sys
|
||||||
|
}
|
||||||
|
|
||||||
|
create_toolchain 9 arm
|
||||||
|
create_toolchain 9 x86
|
||||||
|
create_toolchain 9 mips
|
65
tools/android/download_sources.sh
Executable file
65
tools/android/download_sources.sh
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
FLAC_VERSION=1.2.1
|
||||||
|
VORBIS_VERSION=1.3.3
|
||||||
|
OGG_VERSION=1.3.1
|
||||||
|
|
||||||
|
FLAC=flac-$FLAC_VERSION
|
||||||
|
VORBIS=libvorbis-$VORBIS_VERSION
|
||||||
|
OGG=libogg-$OGG_VERSION
|
||||||
|
|
||||||
|
SNDFILE_VERSION=1.0.25
|
||||||
|
SNDFILE=libsndfile-$SNDFILE_VERSION
|
||||||
|
|
||||||
|
JPEG_VERSION=9
|
||||||
|
JPEG=jpeg-$JPEG_VERSION
|
||||||
|
|
||||||
|
FREETYPE_VERSION=2.4.0
|
||||||
|
FREETYPE=freetype-$FREETYPE_VERSION
|
||||||
|
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
|
||||||
|
wget -nc -P src http://downloads.xiph.org/releases/flac/$FLAC.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/$FLAC" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/$FLAC.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -nc -P src http://downloads.xiph.org/releases/vorbis/$VORBIS.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/$VORBIS" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/$VORBIS.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -nc -P src http://downloads.xiph.org/releases/ogg/$OGG.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/$OGG" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/$OGG.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -nc -P src http://www.mega-nerd.com/libsndfile/files/$SNDFILE.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/$SNDFILE" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/$SNDFILE.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -nc -P src http://www.ijg.org/files/jpegsrc.v$JPEG_VERSION.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/$JPEG" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/jpegsrc.v$JPEG_VERSION.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -nc -P src http://download.savannah.gnu.org/releases/freetype/$FREETYPE.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/$FREETYPE" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/$FREETYPE.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget -nc -P src https://github.com/AerialX/openal-soft-android/archive/master.tar.gz
|
||||||
|
if [ ! -d "$PWD/tmp/openal-soft-android-master" ]
|
||||||
|
then
|
||||||
|
tar -C build -xf src/master.tar.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
patch build/openal-soft-android-master/CMakeLists.txt patches/remove-so-version-suffix.diff
|
38
tools/android/make_all.sh
Executable file
38
tools/android/make_all.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Abort if no known installation of NDK
|
||||||
|
if [ "$NDK" == "" ]
|
||||||
|
then
|
||||||
|
echo "Where is the NDK location ?"
|
||||||
|
echo -n "NDK: "; read NDK
|
||||||
|
export NDK=$NDK
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ANDROID_NDK=$NDK
|
||||||
|
|
||||||
|
# Abort if we don't know the Android CMake toolchain location
|
||||||
|
if [ "$ANDROID_CMAKE_TOOLCHAIN" == "" ]
|
||||||
|
then
|
||||||
|
echo "Where is the Android CMake toolchain ?"
|
||||||
|
echo -n "ANDROID_CMAKE_TOOLCHAIN: "; read ANDROID_CMAKE_TOOLCHAIN
|
||||||
|
export ANDROID_CMAKE_TOOLCHAIN=$ANDROID_CMAKE_TOOLCHAIN
|
||||||
|
fi
|
||||||
|
|
||||||
|
./clean_all.sh
|
||||||
|
|
||||||
|
./create_toolchains.sh
|
||||||
|
|
||||||
|
./download_sources.sh
|
||||||
|
./compile_arm.sh
|
||||||
|
|
||||||
|
rm -r $PWD/build
|
||||||
|
./download_sources.sh
|
||||||
|
./compile_x86.sh
|
||||||
|
|
||||||
|
rm -r $PWD/build
|
||||||
|
./download_sources.sh
|
||||||
|
./compile_mips.sh
|
||||||
|
|
||||||
|
rm -r $PWD/build
|
||||||
|
./download_sources.sh
|
||||||
|
./compile_arm-v7a.sh
|
13
tools/android/patches/remove-so-version-suffix.diff
Normal file
13
tools/android/patches/remove-so-version-suffix.diff
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
--- CMakeLists.txt.orig 2013-09-21 15:23:49.305453804 +0200
|
||||||
|
+++ CMakeLists.txt 2013-09-21 15:24:08.621454210 +0200
|
||||||
|
@@ -717,9 +717,7 @@
|
||||||
|
# Build a library
|
||||||
|
ADD_LIBRARY(${LIBNAME} ${LIBTYPE} ${OPENAL_OBJS} ${ALC_OBJS})
|
||||||
|
SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES DEFINE_SYMBOL AL_BUILD_LIBRARY
|
||||||
|
- COMPILE_FLAGS -DAL_ALEXT_PROTOTYPES
|
||||||
|
- VERSION ${LIB_VERSION}.0
|
||||||
|
- SOVERSION ${LIB_MAJOR_VERSION})
|
||||||
|
+ COMPILE_FLAGS -DAL_ALEXT_PROTOTYPES)
|
||||||
|
IF(WIN32 AND NOT LIBTYPE STREQUAL "STATIC")
|
||||||
|
SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES PREFIX "")
|
||||||
|
ENDIF()
|
27
tools/android/readme.txt
Normal file
27
tools/android/readme.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Compiling external libraries for Android can be a tedious task, especially for
|
||||||
|
those who aren't familiar with the NDK, that's why we provide these scripts.
|
||||||
|
|
||||||
|
IMPORTANT: Please, be careful when using these scripts! They are unpolished at
|
||||||
|
the moment and you'll have to respect a simple rule: call these scripts from
|
||||||
|
where they are. So, in that case, head yourself to tools/android, then call
|
||||||
|
./make_all.sh.
|
||||||
|
|
||||||
|
Feel free to improve them or send patches.
|
||||||
|
|
||||||
|
HOW-TO-USE:
|
||||||
|
-----------
|
||||||
|
1) Some of these scripts need an environement variable to work ($NDK) as well
|
||||||
|
as the Android CMake toolchain you'll find in cmake/toolchains (android.toolchain.cmake)
|
||||||
|
export NDK=/path/to/your/ndk
|
||||||
|
export ANDROID_CMAKE_TOOLCHAIN=/path/to/android.toolchain.cmake
|
||||||
|
|
||||||
|
2) You'll need to make them executable, so:
|
||||||
|
chmod +x *.sh
|
||||||
|
|
||||||
|
3) Type: ./make_all.sh which should create standalone toolchains, download the
|
||||||
|
external libraries and compile them.
|
||||||
|
|
||||||
|
These scripts will be improved over time. Meanwhile, you'll have to play with
|
||||||
|
them if you want a customized behavior.
|
||||||
|
|
||||||
|
Good luck!
|
Loading…
Reference in New Issue
Block a user