Build Libs #84
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
target: win-x64 | |
ext: .dll | |
- os: macos-latest | |
arch: x64-arm64 | |
target: osx | |
ext: .dylib | |
- os: ubuntu-latest | |
arch: x64 | |
target: linux-x64 | |
ext: .so | |
- os: ubuntu-latest | |
arch: arm64 | |
target: linux-arm64 | |
ext: .so | |
- os: ubuntu-latest | |
arch: arm32 | |
target: linux-arm32 | |
ext: .so | |
runs-on: ${{matrix.os}} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- 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 libsdl3-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 libsdl3-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 libsdl3-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') && !(runner.os == 'Linux' && matrix.arch == 'arm32') }} | |
run: cmake -B build -S Platform -DFOSTER_OVERRIDE_TARGET=${{matrix.target}} | |
- name: CMake Configure (Linux-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 -DFOSTER_OVERRIDE_TARGET=${{matrix.target}} | |
- name: CMake Configure (Linux-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 -DFOSTER_OVERRIDE_TARGET=${{matrix.target}} | |
- name: CMake Build | |
run: cmake --build build --config Release | |
- name: Publish Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{matrix.os}}-${{matrix.arch}}-build | |
path: Platform/libs/${{matrix.target}}/*${{matrix.ext}}* | |
UpdateLibs: | |
if: github.ref == 'refs/heads/main' | |
needs: [Build] | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download windows x64 libs | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-latest-x64-build | |
path: Platform/libs/win-x64 | |
- name: Download macos libs | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos-latest-x64-arm64-build | |
path: Platform/libs/osx | |
- name: Download ubuntu libs | |
uses: actions/download-artifact@v4 | |
with: | |
name: ubuntu-latest-x64-build | |
path: Platform/libs/linux-x64 | |
- name: Download ubuntu libs (arm64) | |
uses: actions/download-artifact@v4 | |
with: | |
name: ubuntu-latest-arm64-build | |
path: Platform/libs/linux-arm64 | |
- name: Download ubuntu libs (arm32) | |
uses: actions/download-artifact@v4 | |
with: | |
name: ubuntu-latest-arm32-build | |
path: Platform/libs/linux-arm32 | |
- 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] |