Skip to content

Don't use external zlib -- the buildsystem is stupid. #13

Don't use external zlib -- the buildsystem is stupid.

Don't use external zlib -- the buildsystem is stupid. #13

Workflow file for this run

name: Assimp
on: [push, pull_request]
# Cancel in-progress builds on push to same branch / PR
# https://stackoverflow.com/a/72408109
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
# Assimp depends on zlib, which ideally would be referenced externally, but
# the buildsystem is stupid and hardcoded its FULL PATH into the CMake config
# files, making the resulting binary useless everywhere except on GH Actions
# of the magnum-ci repo again.
#
# Another possibility would be to let it build and then delete the bundled
# file and use an external build instead, but the library is named
# differently (libzlibstatic.a here vs libz.a, additional `d` suffixes for
# Windows debug builds), and patching that up is too much effort.
# ZLIB_VERSION: 1.3.1
ASSIMP_VERSION: 5.3.1
jobs:
windows:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-2019]
steps:
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@v3
- name: Set up Visual Studio environment
uses: seanmiddleditch/gha-setup-vsdevenv@v3
- name: Clone Assimp
uses: actions/checkout@v3
with:
repository: assimp/assimp
ref: v${{ env.ASSIMP_VERSION }}
path: assimp
- name: Build & install Debug
shell: cmd
run: |
mkdir build-debug && cd build-debug
cmake ../assimp ^
-DCMAKE_C_COMPILER=cl.exe ^
-DCMAKE_CXX_COMPILER=cl.exe ^
-DCMAKE_BUILD_TYPE=Debug ^
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF ^
-DASSIMP_BUILD_TESTS=OFF ^
-DASSIMP_BUILD_ZLIB=ON ^
-DASSIMP_NO_EXPORT=ON ^
-DBUILD_SHARED_LIBS=OFF ^
-DCMAKE_INSTALL_PREFIX=%CD:\=/%/../install-debug ^
-G Ninja
ninja install
- name: Build & install Release
shell: cmd
run: |
mkdir build && cd build
cmake ../assimp ^
-DCMAKE_C_COMPILER=cl.exe ^
-DCMAKE_CXX_COMPILER=cl.exe ^
-DCMAKE_BUILD_TYPE=Release ^
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF ^
-DASSIMP_BUILD_TESTS=OFF ^
-DASSIMP_BUILD_ZLIB=ON ^
-DASSIMP_NO_EXPORT=ON ^
-DBUILD_SHARED_LIBS=OFF ^
-DCMAKE_INSTALL_PREFIX=%CD:\=/%/../install ^
-G Ninja
ninja install
- name: Upload Debug artifacts
uses: actions/upload-artifact@v1
with:
name: assimp-${{ env.ASSIMP_VERSION }}-${{ matrix.os }}-debug
path: install-debug
- name: Upload Release artifacts
uses: actions/upload-artifact@v1
with:
name: assimp-${{ env.ASSIMP_VERSION }}-${{ matrix.os }}
path: install
windows-mingw:
name: windows-mingw
runs-on: windows-2019
steps:
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@v3
- name: Set up MinGW environment
uses: msys2/setup-msys2@v2
- name: Clone Assimp
uses: actions/checkout@v2
with:
repository: assimp/assimp
ref: v${{ env.ASSIMP_VERSION }}
path: assimp
- name: Build & install
shell: cmd
run: |
mkdir build && cd build
cmake ../assimp ^
-DCMAKE_C_COMPILER=gcc.exe ^
-DCMAKE_CXX_COMPILER=g++.exe ^
-DCMAKE_BUILD_TYPE=Release ^
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF ^
-DASSIMP_BUILD_TESTS=OFF ^
-DASSIMP_BUILD_ZLIB=ON ^
-DASSIMP_NO_EXPORT=ON ^
-DBUILD_SHARED_LIBS=OFF ^
-DCMAKE_INSTALL_PREFIX=%CD:\=/%/../install ^
-G Ninja
ninja install
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: assimp-${{ env.ASSIMP_VERSION }}-windows-mingw
path: install
ubuntu:
name: ${{ matrix.os }}
runs-on: ${{ matrix.runs-on }}
container: ${{ matrix.container }}
strategy:
matrix:
include:
- os: ubuntu-18.04
runs-on: ubuntu-latest
container: ubuntu:bionic-20220427
steps:
- name: Install base build tools
run: |
apt update
apt install -y ninja-build cmake g++
mkdir -p deps
- name: Clone Assimp
uses: actions/checkout@v3
with:
repository: assimp/assimp
ref: v${{ env.ASSIMP_VERSION }}
path: assimp
- name: Build & install
run: |
mkdir assimp-build && cd assimp-build
cmake ../assimp \
-DCMAKE_BUILD_TYPE=Release \
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF \
-DASSIMP_BUILD_TESTS=OFF \
-DASSIMP_BUILD_ZLIB=ON \
-DASSIMP_NO_EXPORT=ON \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_INSTALL_PREFIX=$(pwd)/../install \
-G Ninja
ninja install/strip
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: assimp-${{ env.ASSIMP_VERSION }}-${{ matrix.os }}
path: install