name: Mac OS build with non-default configuration
on:
  schedule:
    - cron: '0 0 * * 0'
  workflow_dispatch:
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [macos-14, macos-15]
        classes: [boost, std]
        include:
          - classes: std
            configureflags: --enable-std-pointers --disable-std-any --disable-std-optional
    steps:
    - uses: actions/checkout@v6
    - name: Setup
      env:
        HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
      run: |
        brew install automake autoconf libtool boost
    - name: Compiler version
      run: |
        clang --version
    - name: Build
      run: |
        ./autogen.sh
        ./configure --disable-shared --with-boost-include=`brew --prefix`/include --enable-error-lines --enable-error-functions --enable-tracing --enable-indexed-coupons --enable-extra-safety-checks --enable-sessions --enable-thread-safe-observer-pattern --enable-intraday --disable-faster-lazy-objects --enable-throwing-in-cycles --enable-null-as-functions ${{ matrix.configureflags }} CC="clang" CXX="clang++" CXXFLAGS="-O2 -g0 -Wall -Werror"
        cat ql/config.hpp
        make -j 3
    - name: Run tests
      run: |
        ./test-suite/quantlib-test-suite --log_level=message
    - name: Run examples
      run: |
        make -C Examples check-examples
