1+ name : " CMake Android (Steps)"
2+ description : " Android CMake build steps mirroring the Azure template"
3+ inputs :
4+ cmakeArgs :
5+ description : " Extra CMake arguments"
6+ required : false
7+ default : " "
8+ sourceDir :
9+ description : " Path to the source directory (contains CMakeLists.txt)"
10+ required : false
11+ default : " "
12+ workDir :
13+ description : " Working directory (equivalent to $(DEV) in Azure)"
14+ required : false
15+ default : " ."
16+ installCommand :
17+ description : " Install command to run after build"
18+ required : false
19+ default : " make install"
20+ cache_restored :
21+ description : " Mimic Azure condition: skip compile when cache restored ('true' to skip)"
22+ required : false
23+ default : " false"
24+
25+ runs :
26+ using : " composite"
27+ steps :
28+ - name : Compile ${{ inputs.sourceDir }}
29+ if : ${{ inputs.cache_restored != 'true' }}
30+ working-directory : ${{ inputs.workDir }}
31+ shell : bash
32+ run : |
33+ set -ex
34+
35+ # Defaults and sanity checks
36+ if [[ -z "${NDK:-}" && -n "${ANDROID_NDK_LATEST_HOME:-}" ]]; then
37+ export NDK="$ANDROID_NDK_LATEST_HOME"
38+ fi
39+ : "${NDK:?NDK is required or provide ANDROID_NDK_LATEST_HOME on the runner}"
40+ : "${ANDROID_API:?ANDROID_API is required}"
41+ : "${ANDROID_ABI_CMAKE:?ANDROID_ABI_CMAKE is required}"
42+ : "${CC:=clang}"
43+ : "${PREFIX:?PREFIX is required}"
44+ : "${CFLAGS:=}"
45+ : "${LDFLAGS:=}"
46+
47+ pushd "${{ inputs.sourceDir }}"
48+ mkdir -p build
49+ pushd build
50+
51+ cmake -G "Unix Makefiles" \
52+ -DCMAKE_MAKE_PROGRAM=make \
53+ -DCMAKE_TOOLCHAIN_FILE="${NDK}/build/cmake/android.toolchain.cmake" \
54+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
55+ -DANDROID_NATIVE_API_LEVEL="${ANDROID_API}" \
56+ -DANDROID_ABI="${ANDROID_ABI_CMAKE}" \
57+ -DANDROID_TOOLCHAIN="${CC}" \
58+ -DANDROID_NDK="${NDK}" \
59+ -DANDROID_COMPILER_FLAGS="${CFLAGS// /;}" \
60+ -DANDROID_LINKER_FLAGS="${LDFLAGS// /;}" \
61+ -DANDROID_STL="c++_shared" \
62+ -DCMAKE_REQUIRED_FLAGS="${CFLAGS}" \
63+ -DCMAKE_REQUIRED_LINK_OPTIONS="${LDFLAGS// /;}" \
64+ -DCMAKE_INSTALL_PREFIX="${PREFIX}" \
65+ -DCMAKE_STAGING_PREFIX="${PREFIX}" \
66+ -DCMAKE_VERBOSE_MAKEFILE=1 \
67+ -DBUILD_SHARED_LIBS=1 \
68+ -DLIB_SUFFIX= \
69+ ${{ inputs.cmakeArgs }} ..
70+
71+ make -j$((`nproc`+1))
72+ ${{ inputs.installCommand }}
73+ popd
74+ popd
75+
76+ - name : Print ${{ inputs.sourceDir }} CMake Error Log
77+ if : ${{ always() }}
78+ working-directory : ${{ inputs.workDir }}
79+ shell : bash
80+ run : |
81+ set +e
82+ ls -la "${{ inputs.sourceDir }}/build/CMakeFiles/" || true
83+ cat "${{ inputs.sourceDir }}/build/CMakeFiles/CMakeError.log" || true
84+ cat "${{ inputs.sourceDir }}/build/CMakeFiles/CMakeOutput.log" || true
85+ true
0 commit comments