mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2025-06-02 18:11:19 +00:00
Add Android test app.
As described on README, it does not really run tests yet. But it asserts that libfluidsynth.so is loadable at least.
This commit is contained in:
parent
f81caf37f1
commit
e6b3ce8a6b
43 changed files with 1335 additions and 0 deletions
19
test-android/build-scripts/build-all-archs.sh
Executable file
19
test-android/build-scripts/build-all-archs.sh
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
source ./build-env.sh
|
||||
|
||||
mkdir -p $DEV
|
||||
|
||||
# build
|
||||
|
||||
ANDROID_ABI_CMAKE=armeabi-v7a ./extract.sh || exit 1
|
||||
ARCH='arm' ANDROID_ARCH='armv7a' ANDROID_ABI_CMAKE='armeabi-v7a' ANDROID_TARGET_ABI='eabi' AUTOTOOLS_TARGET="$ARCH-none-linux-$ANDROID_TARGET_ABI" ./build.sh || exit 1
|
||||
|
||||
ANDROID_ABI_CMAKE=arm64-v8a ./extract.sh || exit 1
|
||||
ARCH='aarch64' ANDROID_ARCH='aarch64' ANDROID_ABI_CMAKE='arm64-v8a' ANDROID_TARGET_ABI='' AUTOTOOLS_TARGET="$ARCH-none-linux" ./build.sh || exit 1
|
||||
|
||||
ANDROID_ABI_CMAKE=x86 ./extract.sh || exit 1
|
||||
ARCH='i686' ANDROID_ARCH='i686' ANDROID_ABI_CMAKE='x86' ANDROID_TARGET_ABI='' AUTOTOOLS_TARGET="$ARCH-pc-linux" ./build.sh || exit 1
|
||||
|
||||
ANDROID_ABI_CMAKE=x86_64 ./extract.sh || exit 1
|
||||
ARCH='x86_64' ANDROID_ARCH='x86_64' ANDROID_ABI_CMAKE='x86_64' ANDROID_TARGET_ABI='' AUTOTOOLS_TARGET="$ARCH-pc-linux" ./build.sh || exit 1
|
51
test-android/build-scripts/build-call-cmake.sh
Executable file
51
test-android/build-scripts/build-call-cmake.sh
Executable file
|
@ -0,0 +1,51 @@
|
|||
#!/bin/bash
|
||||
|
||||
source ./build-env.sh
|
||||
|
||||
if [ -z $parameters_installCommand ] ; then
|
||||
parameters_installCommand="make install"
|
||||
fi
|
||||
|
||||
if [ -z $parameters_workDir ] ; then
|
||||
parameters_workDir=$DEV
|
||||
fi
|
||||
|
||||
source ./build-env.sh
|
||||
|
||||
#set -ex
|
||||
pushd $parameters_sourceDir
|
||||
mkdir -p build_$ANDROID_ABI_CMAKE
|
||||
pushd build_$ANDROID_ABI_CMAKE
|
||||
|
||||
# Invoke cmake in the most correctest way I've could find while try and erroring:
|
||||
#
|
||||
# The biggest pain point is that CMake does not seem to respect our existing cross compilation CFLAGS and LDFLAGS.
|
||||
# Hence we are passing them manually, once via Android flags and once for "Required" flags. The latter is necessary
|
||||
# to let cmake correctly probe for any existing header, function, library, etc.
|
||||
# Watch out: Sometimes the flags are passed as ;-limited list!
|
||||
|
||||
|
||||
cmake -G "Unix Makefiles" \
|
||||
-DCMAKE_MAKE_PROGRAM=make \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DANDROID_NATIVE_API_LEVEL=$ANDROID_API \
|
||||
-DANDROID_ABI=$ANDROID_ABI_CMAKE \
|
||||
-DANDROID_TOOLCHAIN=$CC \
|
||||
-DANDROID_NDK=$NDK \
|
||||
-DANDROID_COMPILER_FLAGS="${CFLAGS}" \
|
||||
-DANDROID_LINKER_FLAGS=${LDFLAGS} \
|
||||
-DANDROID_STL="c++_shared" \
|
||||
-DCMAKE_REQUIRED_FLAGS="${CFLAGS}" \
|
||||
-DCMAKE_REQUIRED_LINK_OPTIONS=${LDFLAGS} \
|
||||
-DCMAKE_INSTALL_PREFIX=$PREFIX \
|
||||
-DCMAKE_STAGING_PREFIX=$PREFIX \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
-DLIB_SUFFIX="" \
|
||||
$parameters_cmakeArgs ..
|
||||
#-DCMAKE_VERBOSE_MAKEFILE=1 \
|
||||
make -j$((`nproc`+1))
|
||||
$parameters_installCommand
|
||||
popd
|
||||
popd
|
||||
|
55
test-android/build-scripts/build-env.sh
Executable file
55
test-android/build-scripts/build-env.sh
Executable file
|
@ -0,0 +1,55 @@
|
|||
#!/bin/bash
|
||||
|
||||
export ICONV_VERSION=1.16
|
||||
# Use recent master libffi, because 3.3 is broken=checking host system type... Invalid configuration `arm-none-linux-eabi=machine `arm-none-linux not recognized
|
||||
export FFI_VERSION=dd5bd03075149d7cf8441875c1a344e8beb57dde
|
||||
export GETTEXT_VERSION=0.21
|
||||
#need to switch to meson build system to use a more recent version
|
||||
export GLIB_VERSION=2.58
|
||||
export GLIB_EXTRAVERSION=3
|
||||
export OBOE_VERSION=1.5.0
|
||||
export SNDFILE_VERSION=1.0.31
|
||||
export INSTPATCH_VERSION=1.1.6
|
||||
export VORBIS_VERSION=1.3.7
|
||||
export OGG_VERSION=1.3.4
|
||||
export OPUS_VERSION=1.3.1
|
||||
# flac 1.3.3 is completely broken=pkgconfig is incorrectly installed, compilation failure, etc.; use recent master instead
|
||||
export FLAC_VERSION=27c615706cedd252a206dd77e3910dfa395dcc49
|
||||
|
||||
export SCRIPTSDIR=$PWD
|
||||
export DEV=$PWD/android-build-root/$ANDROID_ABI_CMAKE
|
||||
export ARCHIVE_DIR=$PWD/archives
|
||||
export DIST=$PWD/build-artifacts
|
||||
|
||||
# This is a symlink pointing to the real Android NDK
|
||||
# Must be the same as $ANDROID_NDK_HOME see:
|
||||
# https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md
|
||||
export NDK=~/Android/Sdk/ndk/21.3.6528147
|
||||
|
||||
# All the built binaries, libs and their headers will be installed here
|
||||
export PREFIX=$DEV/opt/android
|
||||
|
||||
# The path of standalone NDK toolchain
|
||||
# Refer to https://developer.android.com/ndk/guides/standalone_toolchain.html
|
||||
export NDK_TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/
|
||||
|
||||
# Dont mix up .pc files from your host and build target
|
||||
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
|
||||
# setting PKG_CONFIG_PATH alone does not seem to be enough to avoid mixing up with the host, also set PKG_CONFIG_LIBDIR
|
||||
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_PATH
|
||||
|
||||
# Set Android target API level
|
||||
# when compiling with clang use at least 28 as this makes sure that android provides the posix_spawn functions, so the compilation of gettext will (should) work out of the box
|
||||
# its probably a bug of gettext, if posix_spawn is not available it replaces it with its own implementation. Autotools of gettext set HAVE_POSIX_SPAWN==0 (which is correct) but for some reason REPLACE_POSIX_SPAWN==0 (which is wrong, as it should be 1).
|
||||
#
|
||||
# NOTE=API 24 is required because it provides fseeko() and ftello() required by libflac
|
||||
export ANDROID_API=24
|
||||
|
||||
# Tell configure what flags Android requires.
|
||||
# Turn Wimplicit-function-declaration into errors. Else autotools will be fooled when checking for available functions (that in fact are NOT available) and compilation will fail later on.
|
||||
# Also disable clangs integrated assembler, as the hand written assembly of libffi is not recognized by it, cf. https://crbug.com/801303
|
||||
export CFLAGS="-fPIE -fPIC -I$PREFIX/include --sysroot=$NDK_TOOLCHAIN/sysroot -I$NDK_TOOLCHAIN/sysroot/usr/include -Werror=implicit-function-declaration -fno-integrated-as"
|
||||
export CXXFLAGS=$CFLAGS
|
||||
export CPPFLAGS=$CXXFLAGS
|
||||
|
||||
export ARTIFACT_NAME=fluidsynth-android$ANDROID_API
|
271
test-android/build-scripts/build.sh
Executable file
271
test-android/build-scripts/build.sh
Executable file
|
@ -0,0 +1,271 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
source ./build-env.sh
|
||||
|
||||
# set environment variables
|
||||
|
||||
# The cross-compile toolchain we use
|
||||
export ANDROID_TARGET=$ARCH-linux-android$ANDROID_TARGET_ABI
|
||||
#echo "##vso[task.setvariable variable=ANDROID_TARGET]$ANDROID_TARGET"
|
||||
export ANDROID_TARGET_API=$ANDROID_ARCH-linux-android$ANDROID_TARGET_ABI$ANDROID_API
|
||||
#echo "##vso[task.setvariable variable=ANDROID_TARGET_API]$ANDROID_TARGET_API"
|
||||
# Add the standalone toolchain to the search path.
|
||||
# FIXME: env. path should be at last; it depends on host glib tools to build some tests.
|
||||
export PATH=$PATH:$PREFIX/bin:$PREFIX/lib:$PREFIX/include:$NDK_TOOLCHAIN/bin
|
||||
#echo "##vso[task.setvariable variable=PATH]$PATH"
|
||||
|
||||
export LIBPATH0=$PREFIX/lib
|
||||
export LIBPATH1=$NDK_TOOLCHAIN/sysroot/usr/lib
|
||||
export LIBPATH2=$NDK_TOOLCHAIN/sysroot/usr/lib/$ARCH-linux-android$ANDROID_TARGET_ABI/$ANDROID_API
|
||||
export LIBPATH3=$NDK_TOOLCHAIN/sysroot/usr/lib/$ARCH-linux-android$ANDROID_TARGET_ABI
|
||||
export LDFLAGS="-pie -Wl,-rpath-link=$LIBPATH1 -L$LIBPATH1 -Wl,-rpath-link=$LIBPATH2 -L$LIBPATH2 -Wl,-rpath-link=$LIBPATH3 -L$LIBPATH3 -Wl,-rpath-link=$LIBPATH0 -L$LIBPATH0"
|
||||
#echo "##vso[task.setvariable variable=LDFLAGS]$LDFLAGS"
|
||||
# Tell configure what tools to use.
|
||||
export AR=$ANDROID_TARGET-ar
|
||||
#echo "##vso[task.setvariable variable=AR]$AR"
|
||||
export AS=$ANDROID_TARGET_API-clang
|
||||
#echo "##vso[task.setvariable variable=AS]$AS"
|
||||
export CC=$ANDROID_TARGET_API-clang
|
||||
#echo "##vso[task.setvariable variable=CC]$CC"
|
||||
export CXX=$ANDROID_TARGET_API-clang++
|
||||
#echo "##vso[task.setvariable variable=CXX]$CXX"
|
||||
export LD=ld.lld
|
||||
#echo "##vso[task.setvariable variable=LD]$LD"
|
||||
export STRIP=$ANDROID_TARGET-strip
|
||||
#echo "##vso[task.setvariable variable=STRIP]$STRIP"
|
||||
export RANLIB=$ANDROID_TARGET-ranlib
|
||||
#echo "##vso[task.setvariable variable=RANLIB]$RANLIB"
|
||||
|
||||
|
||||
# libiconv
|
||||
|
||||
echo "Building libiconv..."
|
||||
|
||||
pushd $DEV/libiconv-$ICONV_VERSION
|
||||
./configure \
|
||||
--host=$AUTOTOOLS_TARGET \
|
||||
--prefix=$PREFIX \
|
||||
--disable-rpath \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--with-pic \
|
||||
--disable-maintainer-mode \
|
||||
--disable-silent-rules \
|
||||
--disable-gtk-doc \
|
||||
--disable-introspection \
|
||||
--disable-nls
|
||||
make -j$((`nproc`+1)) || exit 1
|
||||
make install || exit 1
|
||||
popd
|
||||
|
||||
# libffi
|
||||
|
||||
echo "Building libffi..."
|
||||
|
||||
pushd $DEV/libffi-$FFI_VERSION
|
||||
NOCONFIGURE=true autoreconf -v -i
|
||||
# install headers into the conventional ${PREFIX}/include rather than ${PREFIX}/lib/libffi-3.2.1/include.
|
||||
#sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' -i include/Makefile.in
|
||||
#sed -e '/^includedir/ s/=.*$/=@includedir@/' -e 's/^Cflags: -I${includedir}/Cflags:/' -i libffi.pc.in
|
||||
LDFLAGS="$LDFLAGS -Wl,-soname,libffi.so" ./configure --host=$AUTOTOOLS_TARGET --prefix=$PREFIX --enable-shared --disable-static
|
||||
make -j$((`nproc`+1)) || exit 1
|
||||
make install || exit 1
|
||||
popd
|
||||
|
||||
# gettext
|
||||
|
||||
echo "Building gettext..."
|
||||
|
||||
set -ex
|
||||
pushd $DEV/gettext-$GETTEXT_VERSION
|
||||
./configure \
|
||||
--host=$AUTOTOOLS_TARGET \
|
||||
--prefix=$PREFIX \
|
||||
--disable-rpath \
|
||||
--disable-libasprintf \
|
||||
--disable-java \
|
||||
--disable-native-java \
|
||||
--disable-openmp \
|
||||
--disable-curses \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--with-pic \
|
||||
--disable-maintainer-mode \
|
||||
--disable-silent-rules \
|
||||
--disable-gtk-doc \
|
||||
--disable-introspection
|
||||
make -j$((`nproc`+1)) || exit 1
|
||||
make install || exit 1
|
||||
popd
|
||||
|
||||
# glib
|
||||
|
||||
echo "Building glib..."
|
||||
|
||||
set -ex
|
||||
pushd $DEV/glib-$GLIB_VERSION.$GLIB_EXTRAVERSION
|
||||
cat << EOF > android.cache
|
||||
glib_cv_long_long_format=ll
|
||||
glib_cv_stack_grows=no
|
||||
glib_cv_sane_realloc=yes
|
||||
glib_cv_have_strlcpy=no
|
||||
glib_cv_va_val_copy=yes
|
||||
glib_cv_rtldglobal_broken=no
|
||||
glib_cv_uscore=no
|
||||
glib_cv_monotonic_clock=no
|
||||
ac_cv_func_nonposix_getpwuid_r=no
|
||||
ac_cv_func_posix_getpwuid_r=no
|
||||
ac_cv_func_posix_getgrgid_r=no
|
||||
glib_cv_use_pid_surrogate=yes
|
||||
ac_cv_func_printf_unix98=no
|
||||
ac_cv_func_vsnprintf_c99=yes
|
||||
ac_cv_func_realloc_0_nonnull=yes
|
||||
ac_cv_func_realloc_works=yes
|
||||
EOF
|
||||
# Unfortunately, libffi is not linked against libgobject when compiling for aarch64, leading to the following error:
|
||||
#
|
||||
# /bin/bash ../libtool --tag=CC --mode=link aarch64-linux-android23-clang -Wall -Wstrict-prototypes -Wno-bad-function-cast -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format=2 -Werror=missing-include-dirs -fPIE -fPIC -I/home/vsts/work/1/s/android-build-root/opt/android/include --sysroot=/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot -I/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot/include -Werror=implicit-function-declaration -fno-integrated-as -fno-strict-aliasing -pie -Wl,-rpath-link=-I/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot/usr/lib -L/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot/usr/lib -L/home/vsts/work/1/s/android-build-root/opt/android/lib -L/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//lib -o gobject-query gobject-query.o ./libgobject-2.0.la ../glib/libglib-2.0.la -lintl -liconv
|
||||
# libtool: link: aarch64-linux-android23-clang -Wall -Wstrict-prototypes -Wno-bad-function-cast -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format=2 -Werror=missing-include-dirs -fPIE -fPIC -I/home/vsts/work/1/s/android-build-root/opt/android/include --sysroot=/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot -I/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot/include -Werror=implicit-function-declaration -fno-integrated-as -fno-strict-aliasing -pie -Wl,-rpath-link=-I/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot/usr/lib -o .libs/gobject-query gobject-query.o -L/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//sysroot/usr/lib -L/home/vsts/work/1/s/android-build-root/opt/android/lib -L/usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//lib ./.libs/libgobject-2.0.so ../glib/.libs/libglib-2.0.so /home/vsts/work/1/s/android-build-root/opt/android/lib/libintl.so /home/vsts/work/1/s/android-build-root/opt/android/lib/libiconv.so -pthread -L/home/vsts/work/1/s/android-build-root/opt/android/lib
|
||||
# /usr/local/lib/android/sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64//bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: warning: libffi.so, needed by ./.libs/libgobject-2.0.so, not found (try using -rpath or -rpath-link)
|
||||
# ./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint32@LIBFFI_BASE_8.0'
|
||||
# ./.libs/libgobject-2.0.so: undefined reference to `ffi_prep_cif@LIBFFI_BASE_8.0'
|
||||
#
|
||||
# So, just add it to LDFLAGS to make sure it's always linked.
|
||||
# libz.so is also missing...
|
||||
#if [ "$ARCH" == "aarch64" ] ; then
|
||||
#FFILIB=`pkg-config --libs libffi`
|
||||
#echo $FFILIB
|
||||
#export LDFLAGS="$LDFLAGS $FFILIB -lz"
|
||||
#unset FFILIB ;
|
||||
#fi
|
||||
|
||||
chmod a-x android.cache
|
||||
NOCONFIGURE=true ./autogen.sh
|
||||
./configure \
|
||||
--host=$ANDROID_TARGET \
|
||||
--prefix=$PREFIX \
|
||||
--disable-dependency-tracking \
|
||||
--cache-file=android.cache \
|
||||
--enable-included-printf \
|
||||
--with-pcre=no \
|
||||
--enable-libmount=no \
|
||||
--enable-xattr=no \
|
||||
--with-libiconv=gnu \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--with-pic \
|
||||
--disable-maintainer-mode \
|
||||
--disable-silent-rules
|
||||
make -j$((`nproc`+1)) || exit 1
|
||||
make install || exit 1
|
||||
popd
|
||||
|
||||
|
||||
# ogg
|
||||
|
||||
echo "Building libogg..."
|
||||
|
||||
parameters_cmakeArgs="-DINSTALL_DOCS=0" parameters_sourceDir=$DEV/libogg-$OGG_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh
|
||||
ls -la $DEV/libogg-$OGG_VERSION/build_$ANDROID_ABI_CMAKE/CMakeFiles/ || exit 1
|
||||
|
||||
# vorbis
|
||||
|
||||
echo "Building libvorbis..."
|
||||
|
||||
parameters_cmakeArgs= parameters_sourceDir=$DEV/libvorbis-$VORBIS_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh
|
||||
ls -la $DEV/libvorbis-$VORBIS_VERSION/build_$ANDROID_ABI_CMAKE/CMakeFiles/ || exit 1
|
||||
|
||||
# flac
|
||||
|
||||
echo "Building libFLAC..."
|
||||
|
||||
parameters_cmakeArgs="-DCMAKE_C_STANDARD=99 -DCMAKE_C_STANDARD_REQUIRED=1 -DWITH_ASM=0 -DBUILD_CXXLIBS=0 -DBUILD_PROGRAMS=0 -DBUILD_EXAMPLES=0 -DBUILD_DOCS=0 -DINSTALL_MANPAGES=0" parameters_sourceDir=$DEV/flac-$FLAC_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh
|
||||
ls -la $DEV/flac-$FLAC_VERSION/build_$ANDROID_ABI_CMAKE/CMakeFiles/ || exit 1
|
||||
|
||||
# opus
|
||||
|
||||
echo "Building libopus..."
|
||||
|
||||
parameters_cmakeArgs="-DBUILD_PROGRAMS=0 -DOPUS_MAY_HAVE_NEON=1 -DCMAKE_C_STANDARD=99 -DCMAKE_C_STANDARD_REQUIRED=1" parameters_sourceDir=$DEV/opus-$OPUS_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh
|
||||
ls -la $DEV/opus-${OPUS_VERSION}/build_$ANDROID_ABI_CMAKE/CMakeFiles/ || exit 1
|
||||
|
||||
|
||||
# sndfile
|
||||
|
||||
echo "Building libsndfile..."
|
||||
|
||||
parameters_cmakeArgs="-DBUILD_PROGRAMS=0 -DBUILD_EXAMPLES=0" parameters_sourceDir=$DEV/libsndfile-$SNDFILE_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh
|
||||
ls -la $DEV/libsndfile-$SNDFILE_VERSION/build_$ANDROID_ABI_CMAKE/CMakeFiles/ || exit 1
|
||||
|
||||
# oboe
|
||||
|
||||
echo "Building oboe..."
|
||||
|
||||
parameters_cmakeArgs= parameters_sourceDir=$DEV/oboe-$OBOE_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh || exit 1
|
||||
# parameters_installCommand didn't work, ending up to copy liboboe.so into $PREFIX/include. Replacing it with the direct commands here.
|
||||
cp $DEV/oboe-$OBOE_VERSION/build_$ANDROID_ABI_CMAKE/liboboe.so $PREFIX/lib
|
||||
cp -ur $DEV/oboe-$OBOE_VERSION/include/oboe $PREFIX/include
|
||||
|
||||
set -ex
|
||||
# create a custom pkgconfig file for oboe to allow fluidsynth to find it
|
||||
cat << EOF > $PKG_CONFIG_PATH/oboe-1.0.pc
|
||||
prefix=${PREFIX}
|
||||
exec_prefix=\${prefix}
|
||||
libdir=\${prefix}/lib
|
||||
includedir=\${prefix}/include
|
||||
Name: Oboe
|
||||
Description: Oboe library
|
||||
Version: ${OBOE_VERSION}
|
||||
Libs: -L\${libdir} -loboe -landroid -llog
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
cat $PKG_CONFIG_PATH/oboe-1.0.pc || exit 1
|
||||
|
||||
# instpatch
|
||||
|
||||
echo "Building libinstpatch..."
|
||||
|
||||
parameters_cmakeArgs= parameters_sourceDir=$DEV/libinstpatch-$INSTPATCH_VERSION parameters_workDir= parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh || exit 1
|
||||
|
||||
# fluidsynth
|
||||
|
||||
# build
|
||||
echo "Building fluidsynth..."
|
||||
|
||||
# FIXME: On arm64 it fails to build fluidsynth executable due to a bunch of library resolution failures...
|
||||
# To avoid the entire build failures, we ignore the
|
||||
# exit coode here and go on with fake executable file.
|
||||
# It is not runnable on Android anyways.
|
||||
parameters_cmakeArgs="-Denable-opensles=1 -Denable-floats=1 -Denable-oboe=1 -Denable-dbus=0 -Denable-oss=0" parameters_sourceDir=../../.. parameters_workDir= parameters_condition= parameters_installCommand='echo success' bash ./build-call-cmake.sh || echo "Failed to build fluidsynth, but it is expected. We continue build..." && touch ../../../build_$ANDROID_ABI_CMAKE/src/fluidsynth
|
||||
|
||||
# TBD: test (there should be a complete Android project that installs apk, launches on android device, loads native tests there through JNI as a library, and run them, automatically.)
|
||||
|
||||
# install
|
||||
set -ex
|
||||
pushd ../../../build_$ANDROID_ABI_CMAKE
|
||||
make install
|
||||
popd
|
||||
|
||||
# fluidsynth-assetloader
|
||||
|
||||
echo "Building fluidsynth-assetloader..."
|
||||
|
||||
parameters_cmakeArgs= parameters_sourceDir=../../../ parameters_workDir=doc/android/fluidsynth-assetloader parameters_condition= parameters_installCommand= bash ./build-call-cmake.sh
|
||||
|
||||
# dist
|
||||
|
||||
mkdir -p $DIST/lib/$ANDROID_ABI_CMAKE
|
||||
echo "Entering $DIST/lib/$ANDROID_ABI_CMAKE ..."
|
||||
pushd $DIST/lib/$ANDROID_ABI_CMAKE
|
||||
cp -LR $PREFIX/lib/* .
|
||||
ls -Rg .
|
||||
rm -rf *.dll *.alias gettext/ libtextstyle.* *.a *.la
|
||||
rm -f *.so.*
|
||||
mkdir -p $DIST/include
|
||||
pushd $DIST/include
|
||||
cp -a $PREFIX/include/fluidsynth* .
|
||||
popd
|
||||
popd
|
||||
echo "dist $ANDROID_ABI_CMAKE done."
|
17
test-android/build-scripts/download.sh
Executable file
17
test-android/build-scripts/download.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
source ./build-env.sh
|
||||
|
||||
mkdir -p archives
|
||||
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${ICONV_VERSION}.tar.gz
|
||||
wget -O libffi-${FFI_VERSION}.tar.gz https://github.com/libffi/libffi/archive/${FFI_VERSION}.tar.gz
|
||||
wget http://ftp.gnu.org/pub/gnu/gettext/gettext-${GETTEXT_VERSION}.tar.gz
|
||||
wget http://ftp.gnome.org/pub/gnome/sources/glib/${GLIB_VERSION}/glib-${GLIB_VERSION}.${GLIB_EXTRAVERSION}.tar.xz
|
||||
wget -O oboe-${OBOE_VERSION}.tar.gz https://github.com/google/oboe/archive/${OBOE_VERSION}.tar.gz
|
||||
wget https://github.com/libsndfile/libsndfile/releases/download/${SNDFILE_VERSION}/libsndfile-${SNDFILE_VERSION}.tar.bz2
|
||||
wget -O libinstpatch-${INSTPATCH_VERSION}.tar.gz https://github.com/swami/libinstpatch/archive/refs/tags/v${INSTPATCH_VERSION}.tar.gz
|
||||
wget https://github.com/xiph/vorbis/releases/download/v${VORBIS_VERSION}/libvorbis-${VORBIS_VERSION}.tar.gz
|
||||
wget https://github.com/xiph/ogg/releases/download/v${OGG_VERSION}/libogg-${OGG_VERSION}.tar.gz
|
||||
wget -O flac-${FLAC_VERSION}.tar.gz https://github.com/xiph/flac/archive/${FLAC_VERSION}.tar.gz
|
||||
wget -O opus-${OPUS_VERSION}.tar.gz https://github.com/xiph/opus/archive/refs/tags/v${OPUS_VERSION}.tar.gz
|
||||
mv *.tar.gz *.tar.xz *.tar.bz2 $ARCHIVE_DIR
|
21
test-android/build-scripts/extract.sh
Executable file
21
test-android/build-scripts/extract.sh
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
source ./build-env.sh
|
||||
|
||||
mkdir -p $DEV
|
||||
|
||||
pushd $DEV
|
||||
|
||||
tar zxf $ARCHIVE_DIR/libiconv-${ICONV_VERSION}.tar.gz
|
||||
tar zxf $ARCHIVE_DIR/libffi-${FFI_VERSION}.tar.gz
|
||||
tar zxf $ARCHIVE_DIR/gettext-${GETTEXT_VERSION}.tar.gz
|
||||
tar xf $ARCHIVE_DIR/glib-${GLIB_VERSION}.${GLIB_EXTRAVERSION}.tar.xz
|
||||
tar zxf $ARCHIVE_DIR/oboe-${OBOE_VERSION}.tar.gz
|
||||
tar jxf $ARCHIVE_DIR/libsndfile-${SNDFILE_VERSION}.tar.bz2
|
||||
tar zxf $ARCHIVE_DIR/libinstpatch-${INSTPATCH_VERSION}.tar.gz
|
||||
tar zxf $ARCHIVE_DIR/libvorbis-${VORBIS_VERSION}.tar.gz
|
||||
tar zxf $ARCHIVE_DIR/libogg-${OGG_VERSION}.tar.gz
|
||||
tar xf $ARCHIVE_DIR/flac-${FLAC_VERSION}.tar.gz
|
||||
tar xf $ARCHIVE_DIR/opus-${OPUS_VERSION}.tar.gz
|
||||
|
||||
popd
|
Loading…
Add table
Add a link
Reference in a new issue