From 3797d2acbca0100663bdaa1bcbb781d98dfaba59 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 22 Nov 2020 01:23:11 +1000 Subject: [PATCH] CI: Generate armv7 libretro cores --- .github/workflows/rolling-release.yml | 36 ++++++++++++++++++++++-- CMakeModules/armv7-cross-toolchain.cmake | 14 +++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 CMakeModules/armv7-cross-toolchain.cmake diff --git a/.github/workflows/rolling-release.yml b/.github/workflows/rolling-release.yml index c3f544e39..37e8552ce 100644 --- a/.github/workflows/rolling-release.yml +++ b/.github/workflows/rolling-release.yml @@ -148,7 +148,7 @@ jobs: shell: bash run: | sudo apt-get update - sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf - name: Compile and zip Linux x64 libretro core shell: bash @@ -165,6 +165,21 @@ jobs: name: "linux-libretro" path: "build-libretro-linux-x64/duckstation_libretro_x64.so.zip" + - name: Compile and zip Linux armv7 libretro core + shell: bash + run: | + mkdir build-libretro-linux-armv7 + cd build-libretro-linux-armv7 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRETRO_CORE=ON -DCMAKE_TOOLCHAIN_FILE=../CMakeModules/armv7-cross-toolchain.cmake .. + cmake --build . --parallel 2 + zip -j duckstation_libretro_linux_armv7.so.zip duckstation_libretro.so + + - name: Upload Linux AArch64 libretro core + uses: actions/upload-artifact@v1 + with: + name: "linux-libretro" + path: "build-libretro-linux-armv7/duckstation_libretro_linux_armv7.so.zip" + - name: Compile and zip Linux AArch64 libretro core shell: bash run: | @@ -173,13 +188,28 @@ jobs: cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRETRO_CORE=ON -DCMAKE_TOOLCHAIN_FILE=../CMakeModules/aarch64-cross-toolchain.cmake .. cmake --build . --parallel 2 zip -j duckstation_libretro_linux_aarch64.so.zip duckstation_libretro.so - + - name: Upload Linux AArch64 libretro core uses: actions/upload-artifact@v1 with: name: "linux-libretro" path: "build-libretro-linux-aarch64/duckstation_libretro_linux_aarch64.so.zip" + - name: Compile and zip Android armv7 libretro core + shell: bash + run: | + mkdir build-libretro-android-armv7 + cd build-libretro-android-armv7 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRETRO_CORE=ON -DANDROID_ABI=armeabi-v7a -DANDROID_ARM_NEON=ON -DCMAKE_TOOLCHAIN_FILE=${ANDROID_SDK_ROOT}/ndk-bundle/build/cmake/android.toolchain.cmake .. + cmake --build . --parallel 2 + zip -j duckstation_libretro_android_armv7.so.zip duckstation_libretro_android.so + + - name: Upload Android armv7 libretro core + uses: actions/upload-artifact@v1 + with: + name: "linux-libretro" + path: "build-libretro-android-armv7/duckstation_libretro_android_armv7.so.zip" + - name: Compile and zip Android AArch64 libretro core shell: bash run: | @@ -348,7 +378,9 @@ jobs: linux-x64-appimage-qt/duckstation-qt-x64.AppImage linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync linux-libretro/duckstation_libretro_x64.so.zip + linux-libretro/duckstation_libretro_linux_armv7.so.zip linux-libretro/duckstation_libretro_linux_aarch64.so.zip + linux-libretro/duckstation_libretro_android_armv7.so.zip linux-libretro/duckstation_libretro_android_aarch64.so.zip android/duckstation-android.apk macos-x64/duckstation-mac-release.zip diff --git a/CMakeModules/armv7-cross-toolchain.cmake b/CMakeModules/armv7-cross-toolchain.cmake new file mode 100644 index 000000000..25eba97c5 --- /dev/null +++ b/CMakeModules/armv7-cross-toolchain.cmake @@ -0,0 +1,14 @@ +# Source: https://github.com/stenzek/duckstation/issues/626#issuecomment-660718306 + +# Target system +SET(CMAKE_SYSTEM_NAME Linux) +SET(CMAKE_SYSTEM_PROCESSOR armv7l) +SET(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_CROSSCOMPILING TRUE) + +# Cross compiler +SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) +set(CMAKE_LIBRARY_ARCHITECTURE arm-linux-gnueabihf) + +set(THREADS_PTHREAD_ARG "0" CACHE STRING "Result from TRY_RUN" FORCE)