mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-06 07:51:47 +00:00
57a94095e8
Ninja rejects \`-j\` without a numeric argument (unlike make, which treats bare \`-j\` as unlimited parallelism). Build step exited with \`ninja: fatal: invalid -j parameter\`. Drop the \`-- -j\` tail entirely; Ninja already parallelises across available cores by default. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
124 lines
4.2 KiB
YAML
124 lines
4.2 KiB
YAML
name: wgpu sanity (macOS)
|
|
|
|
# Lightweight compile-only check for the wgpu backend on macOS. Skips the
|
|
# IfcViewerWgpuMinimal executable (its surface creation has no Metal path
|
|
# yet — see task #32) and just confirms IfcViewerWgpu links and the pure-
|
|
# CPU state tests pass.
|
|
#
|
|
# Goal: catch portability regressions in the wgpu source on Apple Silicon
|
|
# / Intel Mac without needing the full IfcGeom + OCCT + Python toolchain
|
|
# that build_osx.yml carries. Runs in ~5 minutes.
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- ifcviewer-wgpu
|
|
- main
|
|
- v0.8.0
|
|
paths:
|
|
- 'src/ifcviewer-wgpu/**'
|
|
- 'src/ifcviewer-wgpu-minimal/**'
|
|
- 'src/wgpu-mem-probe/**'
|
|
- 'src/ifcviewer/SidecarCache.*'
|
|
- 'src/ifcviewer/InstancedGeometry.h'
|
|
- 'src/ifcviewer/VertexQuantization.h'
|
|
- 'cmake/CMakeLists.txt'
|
|
- '.github/workflows/ci-wgpu-mac.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'src/ifcviewer-wgpu/**'
|
|
- 'src/ifcviewer-wgpu-minimal/**'
|
|
- 'src/wgpu-mem-probe/**'
|
|
- 'src/ifcviewer/SidecarCache.*'
|
|
- 'src/ifcviewer/InstancedGeometry.h'
|
|
- 'src/ifcviewer/VertexQuantization.h'
|
|
- 'cmake/CMakeLists.txt'
|
|
- '.github/workflows/ci-wgpu-mac.yml'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build_wgpu_mac:
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- arch: arm64
|
|
runner: macos-14
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: false
|
|
|
|
- name: Install dependencies via Homebrew
|
|
run: |
|
|
brew update
|
|
# qt installs Qt6; eigen is header-only. Boost is required by
|
|
# the top-level CMakeLists unconditionally (line 328) even when
|
|
# IfcGeom/IfcPython are off — until ifcviewer-core is extracted
|
|
# (task #12) we have to humour it.
|
|
brew install qt eigen boost
|
|
# patchelf isn't on mac — wgpu-native's SONAME workaround is
|
|
# Linux-only and CMake guards on UNIX AND NOT APPLE so this is fine.
|
|
|
|
- name: ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2.22
|
|
with:
|
|
key: mac-wgpu-${{ matrix.arch }}
|
|
|
|
- name: Configure (standalone wgpu, tests on)
|
|
shell: bash
|
|
# The top-level CMakeLists.txt unconditionally find_package's
|
|
# CGAL/OpenCASCADE/etc. before our BUILD_BONSAIVIEWER gate kicks
|
|
# in, so we explicitly disable every IfcGeom/IfcParse/IfcPython
|
|
# subproject — we only want IfcViewerWgpu + its state tests.
|
|
run: |
|
|
QT_PREFIX="$(brew --prefix qt)"
|
|
cmake -B build \
|
|
-S cmake \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DBUILD_BONSAIVIEWER=OFF \
|
|
-DBUILD_BONSAIVIEWER_WGPU=ON \
|
|
-DBUILD_BONSAIVIEWER_TESTS=ON \
|
|
-DBUILD_IFCGEOM=OFF \
|
|
-DBUILD_IFCPYTHON=OFF \
|
|
-DBUILD_CONVERT=OFF \
|
|
-DBUILD_EXAMPLES=OFF \
|
|
-DBUILD_GEOMSERVER=OFF \
|
|
-DWITH_OPENCASCADE=OFF \
|
|
-DWITH_CGAL=OFF \
|
|
-DCOLLADA_SUPPORT=OFF \
|
|
-DCMAKE_PREFIX_PATH="${QT_PREFIX}" \
|
|
-DQT_DIR="${QT_PREFIX}" \
|
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
|
|
|
- name: Build IfcViewerWgpu + state tests
|
|
# Skip IfcViewerWgpuMinimal: its createSurface has no Metal path
|
|
# yet (task #32). Static lib compiles cleanly because the X11 /
|
|
# Wayland surface blocks are wrapped in #if defined(Q_OS_LINUX).
|
|
# No `-- -j N`: Ninja parallelises by default (it rejects bare
|
|
# `-j` unlike make).
|
|
run: |
|
|
cmake --build build \
|
|
--target IfcViewerWgpu test_wgpu_selection test_wgpu_visibility
|
|
|
|
- name: Run state tests
|
|
working-directory: build
|
|
# No -R filter: only wgpu state tests are built in this config,
|
|
# so ctest discovers exactly those.
|
|
run: ctest --output-on-failure
|
|
|
|
- name: Upload CMake configure log on failure
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: cmake-log-${{ matrix.arch }}
|
|
path: |
|
|
build/CMakeCache.txt
|
|
build/CMakeFiles/CMakeConfigureLog.yaml
|
|
retention-days: 14
|