fluidsynth/.azure/cmake-android.yml

59 lines
1.9 KiB
YAML
Raw Normal View History

2021-05-08 16:31:20 +00:00
parameters:
- name: cmakeArgs
type: string
default: ''
- name: sourceDir
type: string
default: ''
- name: workDir
type: string
default: $(DEV)
- name: condition
type: string
default: ne(variables.CACHE_RESTORED, 'true')
- name: installCommand
type: string
default: 'make install'
steps:
- script: |
set -ex
pushd ${{ parameters.sourceDir }}
mkdir -p build
pushd build
# 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 \
2021-05-08 16:31:20 +00:00
-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} \
-DCMAKE_VERBOSE_MAKEFILE=1 \
-DBUILD_SHARED_LIBS=1 \
-DLIB_SUFFIX="" \
${{ parameters.cmakeArgs }} ..
make -j$((`nproc`+1))
${{ parameters.installCommand }}
popd
popd
displayName: 'Compile ${{ parameters.sourceDir }}'
workingDirectory: ${{ parameters.workDir }}
condition: ${{ parameters.condition }}