diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 68b75b4026..37bcd1c210 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,17 +9,23 @@ on: jobs: ubuntu-gcc-build: - name: ubuntu-${{ matrix.compiler }}-cpp${{ matrix.cppVersion }}-build - runs-on: ubuntu-latest + name: ${{ matrix.os }}-${{ matrix.compiler }}-cpp${{ matrix.cppVersion }}-build + runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: - compiler: [gcc-12, gcc-14] - cppVersion: [20] # TODO (FOREVER) make c++23 happy + compiler: [gcc-12, gcc-13, gcc-15] + cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy include: - compiler: gcc-12 cxx: g++-12 - - compiler: gcc-14 - cxx: g++-14 + os: ubuntu-24.04 + - compiler: gcc-13 + cxx: g++-13 + os: ubuntu-latest + - compiler: gcc-15 + cxx: g++-15 + os: ubuntu-latest steps: - uses: actions/checkout@v6 @@ -65,17 +71,27 @@ jobs: key: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} ubuntu-clang-build: - name: ubuntu-build-${{ matrix.compiler }}-C++${{ matrix.cppVersion }} - runs-on: ubuntu-latest + name: ${{ matrix.os }}-${{ matrix.compiler }}-C++${{ matrix.cppVersion }}-build + runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: - cppVersion: [20] # TODO (FOREVER) make c++23 happy - compiler: [clang++-16, clang++-18] + cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy + compiler: [clang++-16, clang++-20, clang++-22] + exclude: + # Clang 16 is not happy with c++23 + - compiler: clang++-16 + cppVersion: 23 include: - compiler: clang++-16 enable_file_prefix_map: true - - compiler: clang++-18 + os: ubuntu-24.04 + - compiler: clang++-20 + enable_file_prefix_map: true + os: ubuntu-latest + - compiler: clang++-22 enable_file_prefix_map: true + os: ubuntu-latest steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/generate_files.yml b/.github/workflows/generate_files.yml index 3c4d6b646b..6ead20f738 100644 --- a/.github/workflows/generate_files.yml +++ b/.github/workflows/generate_files.yml @@ -16,7 +16,7 @@ jobs: ActionPriorityLists profiles .git - key: ubuntu-clang++-16-for_run-${{ github.sha }}-cpp-20 + key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 - uses: actions/checkout@v6 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6640e41a4d..1e380da64b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -172,7 +172,7 @@ jobs: #if: github.base_ref == github.event.repository.default_branch || github.ref_name == github.event.repository.default_branch uses: ./.github/workflows/spec_test.yml with: - cache-key: ubuntu-clang++-16-for_run-${{ github.sha }}-cpp-20 + cache-key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 is-ptr: false spec-matrix: ${{ needs.spec-test-selection.outputs.spec-matrix }} @@ -183,7 +183,7 @@ jobs: #if: github.base_ref == github.event.repository.default_branch || github.ref_name == github.event.repository.default_branch uses: ./.github/workflows/spec_test.yml with: - cache-key: ubuntu-clang++-16-for_run-${{ github.sha }}-cpp-20 + cache-key: ubuntu-clang++-20-for_run-${{ github.sha }}-cpp-20 is-ptr: true spec-matrix: ${{ needs.spec-test-selection.outputs.spec-matrix }} diff --git a/.github/workflows/ubuntu_test.yml b/.github/workflows/ubuntu_test.yml index a5ae010f0f..29d951b717 100644 --- a/.github/workflows/ubuntu_test.yml +++ b/.github/workflows/ubuntu_test.yml @@ -9,8 +9,8 @@ env: jobs: ubuntu-test: - name: ubuntu-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-${{ matrix.type }} - runs-on: ubuntu-latest + name: ${{ matrix.os }}-${{ matrix.compiler }}-cpp-${{ matrix.cppVersion }}-${{ matrix.type }} + runs-on: ${{ matrix.os }} env: CACHE_KEY: ubuntu-${{ matrix.compiler }}-for_run-${{ github.sha }}-cpp-${{ matrix.cppVersion }} UBSAN_OPTIONS: print_stacktrace=1 @@ -18,8 +18,19 @@ jobs: strategy: fail-fast: false matrix: - cppVersion: [20] # TODO (FOREVER) make c++23 happy - compiler: [clang++-16, clang++-18, gcc-12, gcc-14] + cppVersion: [20, 23] # TODO (FOREVER) make c++23 happy + compiler: [clang++-16, clang++-20, clang++-22, gcc-12, gcc-13, gcc-15] + exclude: + # clang 16 is not happy with c++23 + - compiler: clang++-16 + cppVersion: 23 + include: + - { compiler: clang++-16, os: ubuntu-24.04 } + - { compiler: gcc-12, os: ubuntu-24.04 } + - { compiler: clang++-20, os: ubuntu-latest } + - { compiler: clang++-22, os: ubuntu-latest } + - { compiler: gcc-13, os: ubuntu-latest } + - { compiler: gcc-15, os: ubuntu-latest } steps: - uses: actions/cache@v5 @@ -41,7 +52,7 @@ jobs: run: ${{ runner.workspace }}/b/ninja/simc $SIMC_ARGS $SIMC_PROFILE iterations=10 fight_style=DungeonSlice allow_experimental_specializations=1 cleanup_threads=1 - name: Clear Cache - if: ( matrix.compiler != 'clang++-16' || matrix.cppVersion != '20' ) && github.event_name == 'push' + if: ( matrix.compiler != 'clang++-20' || matrix.cppVersion != '20' ) && github.event_name == 'push' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh cache delete ${{ env.CACHE_KEY }} diff --git a/engine/lib/tcb/span.hpp b/engine/lib/tcb/span.hpp index fdc3a988a4..2bbbc16b1a 100644 --- a/engine/lib/tcb/span.hpp +++ b/engine/lib/tcb/span.hpp @@ -15,6 +15,7 @@ This is an implementation of C++20's std::span #include #include #include +#include #include #ifndef TCB_SPAN_NO_EXCEPTIONS diff --git a/engine/sim/profileset_control.cpp b/engine/sim/profileset_control.cpp index 47b45bb082..0806ccd695 100644 --- a/engine/sim/profileset_control.cpp +++ b/engine/sim/profileset_control.cpp @@ -157,6 +157,8 @@ profileset_controller_t::profileset_controller_t( sim_t* sim, unsigned int id ) assert( sim && sim->parent ); } +profileset_controller_t::~profileset_controller_t() = default; + const std::string profileset_controller_t::message( call_point_e call_point ) { std::string msg = fmt::format( "Profileset {} was canceled by Profileset Controller {} after {}", diff --git a/engine/sim/profileset_control.hpp b/engine/sim/profileset_control.hpp index 008d914053..10be916814 100644 --- a/engine/sim/profileset_control.hpp +++ b/engine/sim/profileset_control.hpp @@ -95,7 +95,7 @@ struct profileset_controller_t : private noncopyable std::vector> options; profileset_controller_t( sim_t*, unsigned int ); - virtual ~profileset_controller_t() = default; + virtual ~profileset_controller_t(); const std::string message( call_point_e ); void add_option( std::unique_ptr&& );