name: simple_float exhaustive tests

on:
  push:
    branches:
      - main
      - feature/*
    paths-ignore:
      - '**/*.md'
      - 'docs/**'
  pull_request:
    branches:
      - main
    paths-ignore:
      - '**/*.md'
      - 'docs/**'
  workflow_dispatch:

jobs:
  clang:
    runs-on: ubuntu-24.04

    strategy:
      fail-fast: false
      matrix:
        clang: [18]
        build_type: [Release]
        std: [23]

    env:
      CC: clang-${{matrix.clang}}
      CXX: clang++-${{matrix.clang}}

    steps:
    - uses: actions/checkout@v4

    - name: Install dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y libc++-dev libc++abi-dev

    - name: Configure CMake
      run: |
        cmake -B ${{github.workspace}}/build \
          -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
          -DCMAKE_CXX_STANDARD=${{matrix.std}} \
          -DCMAKE_C_COMPILER=${{env.CC}} \
          -DCMAKE_CXX_COMPILER=${{env.CXX}} \
          -DCMAKE_CXX_FLAGS="-stdlib=libc++" \
          -Dglaze_SIMPLE_FLOAT_TEST=ON

    - name: Build
      run: cmake --build build -j $(nproc) --target simple_float_test

    - name: Test
      working-directory: build
      run: ctest -R simple_float_test --output-on-failure

  gcc:
    runs-on: ubuntu-24.04

    strategy:
      fail-fast: false
      matrix:
        gcc: [14]
        build_type: [Release]
        std: [23]

    env:
      CC: gcc-${{matrix.gcc}}
      CXX: g++-${{matrix.gcc}}

    steps:
    - uses: actions/checkout@v4

    - name: Configure CMake
      run: |
        cmake -B ${{github.workspace}}/build \
          -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
          -DCMAKE_CXX_STANDARD=${{matrix.std}} \
          -DCMAKE_C_COMPILER=${{env.CC}} \
          -DCMAKE_CXX_COMPILER=${{env.CXX}} \
          -Dglaze_SIMPLE_FLOAT_TEST=ON

    - name: Build
      run: cmake --build build -j $(nproc) --target simple_float_test

    - name: Test
      working-directory: build
      run: ctest -R simple_float_test --output-on-failure
