Skip to content

Commit eae700b

Browse files
authored
Add files via upload
1 parent ed28df6 commit eae700b

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
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

Comments
 (0)