From 30eef59360fc90345c10515b5cec423e588b3795 Mon Sep 17 00:00:00 2001 From: Orange++ Date: Sat, 3 May 2025 22:12:08 +0300 Subject: [PATCH] Update cmake-multi-platform.yml switched to clang Update cmake-multi-platform.yml Update cmake-multi-platform.yml Update cmake-multi-platform.yml Update cmake-multi-platform.yml Update cmake-multi-platform.yml Update cmake-multi-platform.yml Update cmake-multi-platform.yml Update cmake-multi-platform.yml added runtime dir fix --- .github/workflows/cmake-multi-platform.yml | 80 ++++++++++++++-------- CMakePresets.json | 4 +- tests/CMakeLists.txt | 1 + 3 files changed, 54 insertions(+), 31 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 72405a3..f72a6c2 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -1,4 +1,4 @@ -name: Omath CI (presets) +name: Omath CI (Arch Linux / Windows) on: push: @@ -10,48 +10,70 @@ concurrency: group: ci-${{ github.ref }} cancel-in-progress: true -jobs: - build-and-test: - strategy: - fail-fast: false - matrix: - # ------- preset ↔ runner pairs ------------- - include: - - os: ubuntu-latest # GCC / Ninja (from linux-release preset) - preset: linux-release - - os: macos-latest # Clang / Ninja (from darwin-release preset) - preset: darwin-release - - os: windows-latest # MSVC / Ninja (from windows-release preset) - preset: windows-release - runs-on: ${{ matrix.os }} +############################################################################## +# 1) ARCH LINUX – Clang / Ninja +############################################################################## +jobs: + arch-build-and-test: + name: Arch Linux (Clang) + runs-on: ubuntu-latest + container: archlinux:latest steps: - # 1) checkout (incl. GoogleTest sub-module) - - name: Checkout repository + - name: Install basic tool-chain with pacman + shell: bash + run: | + pacman -Sy --noconfirm archlinux-keyring + pacman -Syu --noconfirm --needed \ + git base-devel clang cmake ninja + + - name: Checkout repository (with sub-modules) + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Configure (cmake --preset) + shell: bash + run: cmake --preset linux-release -DOMATH_BUILD_TESTS=ON + + - name: Build + shell: bash + run: cmake --build cmake-build/build/linux-release --target all + + - name: Run unit_tests + shell: bash + run: ./out/Release/unit_tests + + + +############################################################################## +# 2) Windows – MSVC / Ninja +############################################################################## + windows-build-and-test: + name: Windows (MSVC) + runs-on: windows-latest + + steps: + - name: Checkout repository (with sub-modules) uses: actions/checkout@v4 with: submodules: recursive - # 2) Ninja (needed only on Windows images) - name: Install Ninja uses: seanmiddleditch/gha-setup-ninja@v4 - # 3) MSVC environment - name: Set up MSVC developer command-prompt - if: runner.os == 'Windows' uses: ilammy/msvc-dev-cmd@v1 - # 4) Configure with the selected CMake preset - name: Configure (cmake --preset) - run: cmake --preset ${{ matrix.preset }} -DOMATH_BUILD_TESTS=ON + shell: bash + run: cmake --preset windows-release -DOMATH_BUILD_TESTS=ON - # 5) Build - name: Build - # All configure presets put the binary dir in cmake-build/build/${presetName} - run: cmake --build cmake-build/build/${{ matrix.preset }} + shell: bash + run: cmake --build cmake-build/build/windows-release --target all - # 6) Run unit-tests - - name: Test - working-directory: cmake-build/build/${{ matrix.preset }} - run: ctest --output-on-failure + - name: Run unit_tests.exe + shell: bash + run: ./out/Release/unit_tests.exe diff --git a/CMakePresets.json b/CMakePresets.json index 1f5ceda..65705a9 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -40,8 +40,8 @@ "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", "installDir": "${sourceDir}/cmake-build/install/${presetName}", "cacheVariables": { - "CMAKE_C_COMPILER": "gcc", - "CMAKE_CXX_COMPILER": "g++" + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++" }, "condition": { "type": "equals", diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b72c677..5660336 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,6 +10,7 @@ add_executable(unit_tests ${UNIT_TESTS_SOURCES}) set_target_properties(unit_tests PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" UNITY_BUILD ON UNITY_BUILD_BATCH_SIZE 20 CXX_STANDARD 23