From 86f50ae7d7fc4621fa82fa91abded8e7d4481428 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Wed, 15 Jun 2022 06:10:25 +0200 Subject: [PATCH] ci: Test cmake build script on Android android --- .github/workflows/android.yml | 50 +++++++++++++++++++++++++++++++++-- SDL2Config.cmake.in | 3 +++ cmake/test/CMakeLists.txt | 9 +++++++ 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 7b2bd3447..65820ee66 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -4,11 +4,57 @@ on: [push, pull_request] jobs: android: + name: ${{ matrix.platform.name }} runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + platform: + - { name: Android.mk } + - { name: CMake, cmake: '-DCMAKE_SYSTEM_PROCESSOR=aarch64 -DANDROID_PLATFORM=android-23 -DCMAKE_SYSTEM_VERSION=23 ' } + steps: - uses: actions/checkout@v2 - uses: nttld/setup-ndk@v1 + id: setup_ndk with: ndk-version: r21e - - name: Build - run: ./build-scripts/androidbuildlibs.sh + - name: Build (Android.mk) + if: ${{ matrix.platform.name == 'Android.mk' }} + run: | + ./build-scripts/androidbuildlibs.sh + - name: Setup (CMake) + if: ${{ matrix.platform.name == 'CMake' }} + run: | + sudo apt-get update + sudo apt-get install ninja-build + - name: Configure (CMake) + if: ${{ matrix.platform.name == 'CMake' }} + run: | + cmake -B build \ + -DCMAKE_TOOLCHAIN_FILE=${{ steps.setup_ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake \ + ${{ matrix.platform.cmake }} \ + -DSDL_STATIC_PIC=ON \ + -DCMAKE_INSTALL_PREFIX=prefix \ + -DCMAKE_BUILD_TYPE=Release \ + -GNinja + - name: Build (CMake) + if: ${{ matrix.platform.name == 'CMake' }} + run: | + cmake --build build --config Release --parallel --verbose + - name: Install (CMake) + if: ${{ matrix.platform.name == 'CMake' }} + run: | + cmake --install build --config Release + echo "SDL2_DIR=$(pwd)/prefix" >> $GITHUB_ENV + ( cd prefix; find ) | LC_ALL=C sort -u + - name: Verify CMake configuration files + if: ${{ matrix.platform.name == 'CMake' }} + run: | + cmake -S cmake/test -B cmake_config_build -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE=${{ steps.setup_ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake \ + ${{ matrix.platform.cmake }} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH=${{ env.SDL2_DIR }} + cmake --build cmake_config_build --verbose diff --git a/SDL2Config.cmake.in b/SDL2Config.cmake.in index ba3577057..8c18aa5d4 100644 --- a/SDL2Config.cmake.in +++ b/SDL2Config.cmake.in @@ -15,6 +15,9 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL2Targets.cmake") set(SDL2_SDL2_FOUND TRUE) endif() if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL2staticTargets.cmake") + if(ANDROID) + enable_language(CXX) + endif() include("${CMAKE_CURRENT_LIST_DIR}/SDL2staticTargets.cmake") set(SDL2_SDL2-static_FOUND TRUE) endif() diff --git a/cmake/test/CMakeLists.txt b/cmake/test/CMakeLists.txt index 0cb729d96..db9e2f821 100644 --- a/cmake/test/CMakeLists.txt +++ b/cmake/test/CMakeLists.txt @@ -3,6 +3,15 @@ cmake_minimum_required(VERSION 3.12) project(sdl_test LANGUAGES C) +if(ANDROID) + macro(add_executable NAME) + set(args ${ARGN}) + list(REMOVE_ITEM args WIN32) + add_library(${NAME} SHARED ${args}) + unset(args) + endmacro() +endif() + cmake_policy(SET CMP0074 NEW) # Override CMAKE_FIND_ROOT_PATH_MODE to allow search for SDL2 outside of sysroot