name: Multi-platform Build of cppfront on: pull_request: paths-ignore: - 'docs/**' push: paths-ignore: - 'docs/**' workflow_dispatch: permissions: # Restrict permissions to read-only for security contents: read concurrency: # Specific group name to cancel in-progress builds for the same PR/ref group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: # Comment out the Windows build until it is fixed # build-windows: # runs-on: windows-latest # steps: # - uses: actions/checkout@v4 # - uses: ilammy/msvc-dev-cmd@v1 # - name: Compiler name & version # run: cl.exe # - name: Build # run: cl.exe source/cppfront.cpp -std:c++latest -MD -EHsc -W4 -WX build-unix-like: strategy: fail-fast: false matrix: runs-on: [ubuntu-22.04] compiler: [g++-10, g++-11, g++-12, clang++-12, clang++-14] cxx-std: ['c++20', 'c++2b'] exclude: # GCC 10 doesn't have support for c++23 - compiler: g++-10 cxx-std: 'c++2b' # Clang 12 and 14 do not compile on 'c++2b' due to llvm/llvm-project#58206 - compiler: clang++-12 cxx-std: 'c++2b' - compiler: clang++-14 cxx-std: 'c++2b' include: - runs-on: macos-14 compiler: clang++ cxx-std: 'c++20' - runs-on: macos-15 compiler: clang++ cxx-std: 'c++20' - runs-on: ubuntu-22.04 compiler: clang++-15 cxx-std: 'c++20' - runs-on: ubuntu-24.04 compiler: clang++-16 cxx-std: 'c++20' - runs-on: ubuntu-24.04 compiler: clang++-17 cxx-std: 'c++20' - runs-on: ubuntu-24.04 compiler: clang++-18 cxx-std: 'c++20' - runs-on: ubuntu-24.04 compiler: clang++-18 cxx-std: 'c++23' - runs-on: ubuntu-24.04 compiler: g++-14 cxx-std: 'c++2b' runs-on: ${{ matrix.runs-on }} env: CXX: ${{ matrix.compiler }} CXXFLAGS: -std=${{ matrix.cxx-std }} -Wall -Wextra -Wold-style-cast -Wunused-parameter -Wpedantic -Werror -pthread -Wno-unknown-warning -Wno-unknown-warning-option steps: - uses: actions/checkout@v4 - name: Install compiler if: startsWith(matrix.runs-on, 'ubuntu') run: sudo apt-get install -y $CXX - name: Compiler name & version run: $CXX --version - name: Build run: $CXX source/cppfront.cpp $CXXFLAGS -o cppfront