mirror of
https://github.com/ZDoom/fluidsynth.git
synced 2025-04-08 08:41:21 +00:00
Compile libpcre and complete building glib with meson
This commit is contained in:
parent
c88ed31585
commit
2715e4bc98
1 changed files with 48 additions and 86 deletions
|
@ -17,7 +17,7 @@ parameters:
|
|||
- name: UseCache
|
||||
displayName: Use Dependency Cache
|
||||
type: boolean
|
||||
default: false
|
||||
default: true
|
||||
values:
|
||||
- true
|
||||
- false
|
||||
|
@ -44,8 +44,8 @@ variables:
|
|||
VORBIS_VERSION: '1.3.7'
|
||||
OGG_VERSION: '1.3.5'
|
||||
OPUS_VERSION: '1.3.1'
|
||||
# flac 1.3.3 is completely broken: pkgconfig is incorrectly installed, compilation failure, etc.; use recent master instead
|
||||
FLAC_VERSION: '27c615706cedd252a206dd77e3910dfa395dcc49'
|
||||
FLAC_VERSION: '1.3.4'
|
||||
PCRE_VERSION: '8.45'
|
||||
|
||||
# Android NDK sources and standalone toolchain is put here
|
||||
DEV: '$(System.DefaultWorkingDirectory)/android-build-root'
|
||||
|
@ -84,6 +84,7 @@ variables:
|
|||
CFLAGS: "-fPIE -fPIC -I$(PREFIX)/include --sysroot=$(NDK_TOOLCHAIN)/sysroot -I$(NDK_TOOLCHAIN)/sysroot/usr/include -Werror=implicit-function-declaration"
|
||||
CXXFLAGS: $(CFLAGS)
|
||||
CPPFLAGS: $(CXXFLAGS)
|
||||
DEBIAN_FRONTEND: 'noninteractive'
|
||||
|
||||
ARTIFACT_NAME: 'fluidsynth-android$(ANDROID_API)'
|
||||
|
||||
|
@ -96,10 +97,9 @@ jobs:
|
|||
ANDROID_ARCH: 'armv7a'
|
||||
ANDROID_ABI_CMAKE: 'armeabi-v7a'
|
||||
ANDROID_TARGET_ABI: "eabi"
|
||||
ANDROID_ABI_MESON: 'arm'
|
||||
ANDROID_ABI_MESON: 'arm'
|
||||
# the --target to be used by autotools
|
||||
AUTOTOOLS_TARGET: "$(ARCH)-linux-android$(ANDROID_TARGET_ABI)"
|
||||
#AUTOTOOLS_TARGET: "$(ARCH)-none-linux-$(ANDROID_TARGET_ABI)"
|
||||
AARCH64:
|
||||
ARCH: 'aarch64'
|
||||
ANDROID_ARCH: 'aarch64'
|
||||
|
@ -107,7 +107,6 @@ jobs:
|
|||
ANDROID_TARGET_ABI:
|
||||
ANDROID_ABI_MESON: 'aarch64'
|
||||
AUTOTOOLS_TARGET: "$(ARCH)-none-linux-android"
|
||||
#AUTOTOOLS_TARGET: "$(ARCH)-none-linux"
|
||||
i686:
|
||||
ARCH: 'i686'
|
||||
ANDROID_ARCH: 'i686'
|
||||
|
@ -115,7 +114,6 @@ jobs:
|
|||
ANDROID_TARGET_ABI:
|
||||
ANDROID_ABI_MESON: 'x86'
|
||||
AUTOTOOLS_TARGET: "$(ARCH)-pc-linux-android"
|
||||
#AUTOTOOLS_TARGET: "$(ARCH)-pc-linux"
|
||||
x86_64:
|
||||
ARCH: 'x86_64'
|
||||
ANDROID_ARCH: 'x86_64'
|
||||
|
@ -123,7 +121,6 @@ jobs:
|
|||
ANDROID_TARGET_ABI:
|
||||
ANDROID_ABI_MESON: 'x86_64'
|
||||
AUTOTOOLS_TARGET: "$(ARCH)-pc-linux-android"
|
||||
#AUTOTOOLS_TARGET: "$(ARCH)-pc-linux"
|
||||
|
||||
pool:
|
||||
vmImage: 'ubuntu-20.04'
|
||||
|
@ -134,6 +131,15 @@ jobs:
|
|||
mkdir -p $(DEV)
|
||||
displayName: 'mkdir $(DEV)'
|
||||
|
||||
- script: |
|
||||
sudo apt-get update -y
|
||||
displayName: 'Update apt'
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
sudo -E apt-get -y --no-install-suggests --no-install-recommends install wget tar bzip2 xz-utils ca-certificates
|
||||
displayName: 'apt-get install wget tar'
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
|
||||
|
@ -164,18 +170,25 @@ jobs:
|
|||
wget https://github.com/xiph/ogg/releases/download/v${OGG_VERSION}/libogg-${OGG_VERSION}.tar.gz
|
||||
tar zxf libogg-${OGG_VERSION}.tar.gz
|
||||
|
||||
wget -O flac-${FLAC_VERSION}.tar.gz https://github.com/xiph/flac/archive/${FLAC_VERSION}.tar.gz
|
||||
wget -O flac-${FLAC_VERSION}.tar.gz https://github.com/xiph/flac/archive/refs/tags/${FLAC_VERSION}.tar.gz
|
||||
tar xf flac-${FLAC_VERSION}.tar.gz
|
||||
|
||||
wget -O opus-${OPUS_VERSION}.tar.gz https://github.com/xiph/opus/archive/refs/tags/v${OPUS_VERSION}.tar.gz
|
||||
tar xf opus-${OPUS_VERSION}.tar.gz
|
||||
|
||||
wget -O pcre-${PCRE_VERSION}.tar.bz2 https://sourceforge.net/projects/pcre/files/pcre/${PCRE_VERSION}/pcre-${PCRE_VERSION}.tar.bz2/download
|
||||
tar jxf pcre-${PCRE_VERSION}.tar.bz2
|
||||
cd pcre-${PCRE_VERSION}
|
||||
# CMake checks for existence of strtoq() using the C compiler - and yes, it does exist!
|
||||
# Later on, it's actually used by the C++ compiler, where it does not exist.
|
||||
# Rename the function so CMake won't find it.
|
||||
sed -i 's/strtoq/strtoqqqq/g' CMakeLists.txt
|
||||
displayName: 'Download Dependencies'
|
||||
workingDirectory: $(DEV)
|
||||
|
||||
- task: Cache@2
|
||||
inputs:
|
||||
key: '$(ARCH) | $(DEV)/*.tar.gz | cacheVersion3'
|
||||
key: '$(ARCH) | $(DEV)/*.tar.*'
|
||||
path: '$(PREFIX)'
|
||||
cacheHitVar: 'CACHE_RESTORED'
|
||||
displayName: 'Cache fluidsynth dependency libraries'
|
||||
|
@ -191,15 +204,10 @@ jobs:
|
|||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
enabled: 'false'
|
||||
|
||||
- script: |
|
||||
sudo apt-get update -y
|
||||
displayName: 'Update apt'
|
||||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install gettext cmake zlib1g-dev autogen automake autoconf libtool pkg-config autotools-dev build-essential meson ninja-build python3-distutils
|
||||
displayName: 'apt-get install'
|
||||
sudo -E apt-get -y --no-install-suggests --no-install-recommends install gettext cmake zlib1g-dev autogen automake autoconf libtool pkg-config autotools-dev build-essential meson ninja-build python3-distutils
|
||||
displayName: 'apt-get install build-tools'
|
||||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- script: |
|
||||
|
@ -266,6 +274,14 @@ jobs:
|
|||
workingDirectory: $(DEV)
|
||||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
pushd libiconv-${ICONV_VERSION}
|
||||
cat config.log
|
||||
displayName: 'libiconv config.log'
|
||||
workingDirectory: $(DEV)
|
||||
condition: and(failed(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
|
||||
|
@ -310,69 +326,10 @@ jobs:
|
|||
workingDirectory: $(DEV)
|
||||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
|
||||
pushd 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...
|
||||
#FFILIB=`pkg-config --libs libffi`
|
||||
#echo ${FFILIB}
|
||||
#export LDFLAGS="${LDFLAGS} ${FFILIB} -lz"
|
||||
#unset FFILIB
|
||||
|
||||
chmod a-x android.cache
|
||||
NOCONFIGURE=true ./autogen.sh
|
||||
./configure \
|
||||
--host=${ANDROID_TARGET} \
|
||||
--prefix=${PREFIX} \
|
||||
--libdir=${LIBPATH0} \
|
||||
--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))
|
||||
make install
|
||||
popd
|
||||
displayName: 'Compile glib'
|
||||
workingDirectory: $(DEV)
|
||||
enabled: 'false'
|
||||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
- template: cmake-android.yml
|
||||
parameters:
|
||||
sourceDir: 'pcre-$(PCRE_VERSION)'
|
||||
cmakeArgs: '-DPCRE_SUPPORT_UNICODE_PROPERTIES=1 -DPCRE_SUPPORT_UTF=1 -DPCRE_BUILD_PCRECPP=0 -DPCRE_BUILD_TESTS=0'
|
||||
|
||||
- script: |
|
||||
set -ex
|
||||
|
@ -400,7 +357,6 @@ jobs:
|
|||
prefix = '${PREFIX}'
|
||||
c_args = '${CFLAGS}'
|
||||
cpp_args = '${CXXFLAGS}'
|
||||
sys_root = '${NDK_TOOLCHAIN}/sysroot'
|
||||
pkg_config_libdir = '${PKG_CONFIG_LIBDIR}'
|
||||
c_link_args = '${LDFLAGS}'
|
||||
|
||||
|
@ -417,22 +373,26 @@ jobs:
|
|||
|
||||
cat cross_file.ini
|
||||
|
||||
env -i bash -c "export PATH && meson setup build --cross-file cross_file.ini --prefix=${PREFIX}"
|
||||
# When CC and CXX are set, then meson detects them as host compiler (not cross compiler),
|
||||
# so they tries to run arm binaries in x86. That's why sanity check is failing, and that's
|
||||
# why we have to use env -i.
|
||||
# And we must explicitly set PKG_CONFIG_LIBDIR, because pkg_config_libdir is only recognized by meson >= 0.54
|
||||
env -i bash -c "export PATH && export PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR) && meson setup build --cross-file cross_file.ini --prefix=$(PREFIX)"
|
||||
ninja -C build
|
||||
ninja -C build install
|
||||
popd
|
||||
displayName: 'Compile glib (meson)'
|
||||
workingDirectory: $(DEV)
|
||||
|
||||
condition: and(succeeded(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- script: |
|
||||
pushd glib-${GLIB_VERSION}.${GLIB_EXTRAVERSION}
|
||||
cat _builddir/meson-logs/meson-log.txt
|
||||
ls -la build
|
||||
cat build/meson-logs/meson-log.txt
|
||||
popd
|
||||
displayName: 'Meson LOG'
|
||||
workingDirectory: $(DEV)
|
||||
condition: failed()
|
||||
enabled: 'false'
|
||||
condition: and(succeededOrFailed(), ne(variables.CACHE_RESTORED, 'true'))
|
||||
|
||||
- template: cmake-android.yml
|
||||
parameters:
|
||||
|
@ -564,6 +524,8 @@ jobs:
|
|||
ls libvorbis.so
|
||||
ls libvorbisenc.so
|
||||
ls libvorbisfile.so
|
||||
ls libpcre.so
|
||||
ls libpcreposix.so
|
||||
displayName: 'Verify all libs exist'
|
||||
workingDirectory: '$(PREFIX)/lib'
|
||||
|
||||
|
|
Loading…
Reference in a new issue