WIP: More Optimizations and SIMD fixes for MSVC & ARM #91
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: CI | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
jobs: | |
build_autotools: | |
name: Autotools / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-14, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Autotools | |
if: runner.os == 'macOS' | |
run: brew upgrade && brew install autoconf automake libtool | |
- name: Generate Autotools | |
run: ./autogen.sh | |
- name: Configure Autotools | |
run: ./configure | |
- name: Build | |
run: make | |
- name: Test | |
run: make check | |
build_cmake_ios: | |
name: CMake / iOS | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure CMake | |
run: | | |
cmake \ | |
-B build \ | |
-GXcode \ | |
-DCMAKE_SYSTEM_NAME=iOS \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ | |
-DCGLM_STATIC=ON \ | |
-DCGLM_USE_TEST=ON | |
- name: Build | |
run: cmake --build build | |
build_cmake_macos: | |
name: CMake / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-14] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Ninja | |
if: runner.os == 'macOS' | |
run: brew upgrade && brew install ninja | |
- name: Configure CMake | |
run: | | |
cmake \ | |
-B build \ | |
-GNinja \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCGLM_STATIC=ON \ | |
-DCGLM_USE_TEST=ON | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
working-directory: build | |
run: ./tests | |
build_cmake_ubuntu: | |
name: CMake / ${{ matrix.target.os }} / ${{ matrix.target.cc }} | |
runs-on: ${{ matrix.target.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- { os: ubuntu-20.04, cc: gcc-11 } | |
- { os: ubuntu-22.04, cc: gcc-12 } | |
- { os: ubuntu-22.04, cc: gcc-13 } | |
- { os: ubuntu-20.04, cc: clang-12 } | |
- { os: ubuntu-22.04, cc: clang-15 } | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Compiler and Ninja | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y ${{ matrix.target.cc }} ninja-build | |
- name: Configure CMake | |
run: | | |
cmake \ | |
-B build \ | |
-GNinja \ | |
-DCMAKE_C_COMPILER=${{ matrix.target.cc }} \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCGLM_STATIC=ON \ | |
-DCGLM_USE_TEST=ON | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
working-directory: build | |
run: ./tests | |
build_cmake_windows: | |
name: CMake / ${{ matrix.platform.name }} | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- { name: Windows (x64), flags: -A x64 } | |
- { name: Windows (x86), flags: -A Win32 } | |
- { name: Windows (clang-cl x64), flags: -T ClangCL -A x64 } | |
- { name: Windows (clang-cl x86), flags: -T ClangCL -A Win32 } | |
- { name: Windows (ARM), flags: -A ARM, skip_tests: true, skip_build: true } # This fails to build. | |
- { name: Windows (ARM64), flags: -A ARM64, skip_tests: true } | |
- { name: UWP (ARM64), flags: -A ARM64, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0", skip_tests: true } | |
- { name: UWP (x64), flags: -A x64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0", skip_tests: true } | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Configure CMake | |
run: cmake -B build ` | |
-DCGLM_STATIC=ON ` | |
-DCGLM_USE_TEST=ON ` | |
${{ matrix.platform.flags }} | |
- name: Build | |
if: ${{ !matrix.platform.skip_build }} | |
run: cmake --build build --config Release --parallel | |
- name: Test | |
if: ${{ !matrix.platform.skip_tests }} | |
working-directory: build | |
run: .\Release\tests.exe | |
build_documentation: | |
name: Documentation | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Install Dependencies | |
working-directory: docs | |
run: python3 -m pip install -r requirements.txt | |
- name: Build | |
working-directory: docs | |
run: sphinx-build -W --keep-going source build | |
build_meson: | |
name: Meson / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-14, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
cache: 'pip' | |
- name: Install meson | |
run: python3 -m pip install meson ninja | |
- name: Build | |
run: meson setup build -Dbuildtype=release --default-library=static -Dbuild_tests=true | |
- name: Test | |
run: meson test -C build | |
build_msbuild: | |
name: MSBuild / Windows | |
runs-on: windows-2022 | |
# This has no test yet. | |
# It could also try building for ARM, ARM64, ARM64EC, but those fail currently. | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: microsoft/setup-msbuild@v2 | |
- name: Build (x86) | |
working-directory: win | |
run: msbuild cglm.vcxproj /p:Configuration=Release /p:Platform=x86 /p:BuildInParallel=true | |
- name: Build (x64) | |
working-directory: win | |
run: msbuild cglm.vcxproj /p:Configuration=Release /p:Platform=x64 /p:BuildInParallel=true | |
build_swift: | |
name: Swift ${{ matrix.swift }} / ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-12, macos-14, ubuntu-22.04] | |
# This has no test yet. | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
run: swift build |