Skip to content

Build Libs

Build Libs #77

Workflow file for this run

name: Build Libs
on:
workflow_dispatch:
push:
branches:
- 'main'
paths:
- 'Platform/**'
- '!Platform/libs/**'
pull_request:
paths:
- 'Platform/**'
- '!Platform/libs/**'
jobs:
Build:
strategy:
matrix:
include:
- os: windows-latest
arch: x64
lib: x64/FosterPlatform.dll
- os: windows-latest
arch: arm64
lib: arm64/FosterPlatform.dll
- os: macos-latest
arch: x64-arm64
lib: osx/libFosterPlatform.dylib
- os: ubuntu-latest
arch: x64
lib: lib64/libFosterPlatform.so
- os: ubuntu-latest
arch: arm64
lib: libarm64/libFosterPlatform.so
- os: ubuntu-latest
arch: arm32
lib: libarm/libFosterPlatform.so
runs-on: ${{matrix.os}}
steps:
- name: Checkout
uses: actions/[email protected]
- name: Get CMake
uses: lukka/[email protected]
- name: Setup Linux dependencies
if: ${{ runner.os == 'Linux' && matrix.arch != 'arm64' }}
run: |
sudo apt-get update
sudo apt-get install libsdl2-dev
- name: Setup Linux dependencies (arm64)
if: ${{ runner.os == 'Linux' && matrix.arch == 'arm64' }}
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
sudo sed -i "s/^deb/deb [arch=amd64,i386]/g" /etc/apt/sources.list
echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ $(lsb_release -s -c) main universe multiverse restricted" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ $(lsb_release -s -c)-updates main universe multiverse restricted" | sudo tee -a /etc/apt/sources.list
sudo dpkg --add-architecture arm64
sudo apt-get update
sudo apt-get install -y libsdl2-dev:arm64 libwayland-dev:arm64 libegl-dev:arm64 libdrm-dev:arm64 libxkbcommon-dev:arm64 libpulse-dev:arm64
- name: Setup Linux dependencies (arm32)
if: ${{ runner.os == 'Linux' && matrix.arch == 'arm32' }}
run: |
sudo apt-get update
sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
sudo sed -i "s/^deb/deb [arch=amd64,i386]/g" /etc/apt/sources.list
echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ $(lsb_release -s -c) main universe multiverse restricted" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ $(lsb_release -s -c)-updates main universe multiverse restricted" | sudo tee -a /etc/apt/sources.list
sudo dpkg --add-architecture armhf
sudo apt-get update
sudo apt-get install -y libsdl2-dev:armhf libwayland-dev:armhf libegl-dev:armhf libdrm-dev:armhf libxkbcommon-dev:armhf libpulse-dev:armhf
- name: CMake Configure
if: ${{ runner.os == 'Linux' && matrix.arch != 'arm64' && matrix.arch != 'arm32' }}
run: cmake -B build -S Platform
- name: CMake Configure (arm64)
if: ${{ runner.os == 'Linux' && matrix.arch == 'arm64' }}
run: PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig cmake -B build -S Platform -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_SYSTEM_NAME=Linux
- name: CMake Configure (arm32)
if: ${{ runner.os == 'Linux' && matrix.arch == 'arm32' }}
run: PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig cmake -B build -S Platform -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ -DCMAKE_SYSTEM_PROCESSOR=armv7l -DCMAKE_SYSTEM_NAME=Linux
- name: CMake Build
run: cmake --build build --config Release
- name: Publish Artifact
uses: actions/[email protected]
with:
name: ${{matrix.os}}-${{matrix.arch}}-build
path: Platform/libs/${{matrix.lib}}
UpdateLibs:
if: github.ref == 'refs/heads/main'
needs: [Build]
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/[email protected]
- name: Download windows x64 lib
uses: actions/download-artifact@v3
with:
name: windows-latest-x64-build
path: Platform/libs/x64
- name: Download windows arm lib
uses: actions/download-artifact@v3
with:
name: windows-latest-arm64-build
path: Platform/libs/arm64
- name: Download macos lib
uses: actions/download-artifact@v3
with:
name: macos-latest-x64-arm64-build
path: Platform/libs/osx
- name: Download ubuntu lib
uses: actions/download-artifact@v3
with:
name: ubuntu-latest-x64-build
path: Platform/libs/lib64
- name: Download ubuntu lib (arm64)
uses: actions/download-artifact@v3
with:
name: ubuntu-latest-arm64-build
path: Platform/libs/libarm64
- name: Download ubuntu lib (arm32)
uses: actions/download-artifact@v3
with:
name: ubuntu-latest-arm32-build
path: Platform/libs/libarm
- name: Display structure of libs
run: ls -R
working-directory: Platform/libs
- name: Commit changes
uses: EndBug/[email protected]
with:
message: Updated platform libs
committer_name: GitHub Actions
committer_email: [email protected]