Skip to content

switched to ci compiler to msvc #38

switched to ci compiler to msvc

switched to ci compiler to msvc #38

Workflow file for this run

name: Build Anira
on:
workflow_dispatch: # lets you run a build from github.com
# Runs the workflow on push events but only for the main branch
push:
branches:
- main
# This is needed otherwise the github.ref is not set with ref/tags/v...
tags:
- 'v*.*.*'
# When pushing new commits, cancel any running builds on that branch
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
env:
PROJECT_NAME: anira
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
# Use up to 4 cpus to build
CMAKE_BUILD_PARALLEL_LEVEL: 4
# Name of the build directory
BUILD_DIR: build
# Needed for mozilla sccache action
SCCACHE_GHA_ENABLED: "true"
jobs:
build:
name: ${{ matrix.name }}
strategy:
fail-fast: false # show all errors for each platform (vs. cancel jobs on error)
matrix:
include:
- name: Linux-x86_64
os: ubuntu-latest
- name: macOS-x86_64
os: macOS-latest
- name: macOS-arm64
os: macOS-latest
- name: Windows-x86_64
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
#A simple printout of the matrix
- name: printout
shell: bash
run: |
echo ${{ github.ref }}
echo "matrix.name=${{ matrix.name }}";
echo "matrix.os=${{ matrix.os }}";
# We need the osxutils to get the codesign and notorization tools
- name: install deps
shell: bash
run: |
if [ "${{ matrix.name }}" == "Linux-x86_64" ]; then
sudo apt-get update && sudo apt install ninja-build
elif [ "${{ matrix.name }}" == "macOS-x86_64" ]; then
brew install osxutils ninja
echo "brew prefix: $(brew --prefix)"
elif [ "${{ matrix.name }}" == "macOS-arm64" ]; then
brew install osxutils ninja
echo "brew prefix: $(brew --prefix)"
elif [ "${{ matrix.name }}" == "Windows-x86_64" ]; then
choco install ninja
else
echo "Unknown OS";
fi;
# With this we checkout to our repo
- name: get repo and submodules
uses: actions/checkout@v4
with:
submodules: true
# We cache the build to speed up the build process
- name: cache the build
uses: mozilla-actions/[email protected]
# Typical cmake configuration with default generator
# With DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" we can build universal binaries for apple computers
- name: cmake configure
shell: bash
run: |
if [ "${{ matrix.name }}" == "Linux-x86_64" ]; then
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DBUILD_SHARED_LIBS=ON -DANIRA_WITH_INSTALL=ON
elif [ "${{ matrix.name }}" == "macOS-x86_64" ]; then
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_OSX_ARCHITECTURES=x86_64 -DBUILD_SHARED_LIBS=ON -DANIRA_WITH_INSTALL=ON
elif [ "${{ matrix.name }}" == "macOS-arm64" ]; then
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_OSX_ARCHITECTURES=arm64 -DBUILD_SHARED_LIBS=ON -DANIRA_WITH_INSTALL=ON
elif [ "${{ matrix.name }}" == "Windows-x86_64" ]; then
cmake -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DBUILD_SHARED_LIBS=ON -DANIRA_WITH_INSTALL=ON
else
echo "Unknown OS";
fi;
# Build the project
- name: cmake build
shell: bash
run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel ${{ env.CMAKE_BUILD_PARALLEL_LEVEL }}
# Build the install target
- name: install target
run: cmake --install build --config ${{ env.BUILD_TYPE }}
- name: define the anira version
shell: bash
run: |
version=$(grep 'CMAKE_PROJECT_VERSION:STATIC' build/CMakeCache.txt | cut -d'=' -f2)
echo "ANIRA_VERSION=${version}" >> $GITHUB_ENV
echo "current anira version: ${version}"
# Declaring the product name and the packaging directory
- name: declare artefact variables
shell: bash
run: |
echo "PACKAGE_DIR=artefacts/${{ env.PROJECT_NAME }}-${{ env.ANIRA_VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV
echo "PRODUCT_NAME=${{ env.PROJECT_NAME }}-${{ env.ANIRA_VERSION }}-${{ matrix.name }}" >> $GITHUB_ENV
# Moving the artefacts to a packaging directory
- name: move artefacts
shell: bash
run: |
mkdir -p artefacts;
mv "${{ env.BUILD_DIR }}/${{ env.PROJECT_NAME }}-${{ env.ANIRA_VERSION }}" ${{ env.PACKAGE_DIR }};
# Zip the artefact
- name: zip artefacts
working-directory: ${{github.workspace}}/artefacts
shell: bash
run: |
if [ "${{ matrix.name }}" == "Linux-x86_64" ]; then
zip -r ${{ env.PRODUCT_NAME }}.zip ${{ env.PRODUCT_NAME }}/
elif [ "${{ matrix.os }}" == "macOS-latest" ]; then
zip -vr ${{ env.PRODUCT_NAME }}.zip ${{ env.PRODUCT_NAME }}/ -x "*.DS_Store"
elif [ "${{ matrix.name }}" == "Windows" ]; then
tar -a -c -f ${{ env.PRODUCT_NAME }}.zip ${{ env.PRODUCT_NAME }}/
else
echo "Unknown OS";
fi;
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRODUCT_NAME }}.zip
path: ${{ env.PACKAGE_DIR }}.zip
release:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: build
steps:
- name: Get Artifacts
uses: actions/download-artifact@v4
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
*/*.zip