diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 3e1f0d2..0c2aadf 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -12,22 +12,87 @@ concurrency: ############################################################################## -# 1) Arch Linux – Clang / Ninja +# 1) Linux – Clang / Ninja ############################################################################## jobs: - arch-build-and-test: - name: Arch Linux (Clang) (x64-linux) - runs-on: ubuntu-latest - container: archlinux:latest + linux-build-and-test: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runner }} + strategy: + matrix: + include: + - name: Linux (Clang) (x64-linux) + triplet: x64-linux + runner: ubuntu-latest + preset: linux-release-vcpkg + install_cmd: | + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc + sudo add-apt-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main" + sudo apt-get update + sudo apt-get install -y git build-essential cmake ninja-build \ + zip unzip curl pkg-config ca-certificates \ + clang-21 lld-21 libc++-21-dev libc++abi-21-dev + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-21 100 + sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-21 100 + sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-21 100 + - name: Linux (Clang) (x86-linux) + triplet: x86-linux + runner: ubuntu-latest + preset: linux-release-vcpkg-x86 + install_cmd: | + # Add LLVM 21 repository + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc + sudo add-apt-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main" + # Add GCC Toolchain PPA + sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu plucky main universe" + # Enable i386 architecture + sudo dpkg --add-architecture i386 + sudo apt-get update + # Install Clang 21 + sudo apt-get install -y git build-essential cmake ninja-build \ + zip unzip curl pkg-config ca-certificates \ + clang-21 lld-21 libc++-21-dev libc++abi-21-dev + sudo apt-get install -y -t plucky binutils + # Install GCC 15 with multilib support + sudo apt-get install -y gcc-15-multilib g++-15-multilib + # Set up alternatives for Clang + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-21 100 + sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-21 100 + sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-21 100 + # Set up alternatives for GCC + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-15 100 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-15 100 + - name: Linux (Clang) (arm64-linux) + triplet: arm64-linux + runner: ubuntu-24.04-arm + preset: linux-release-vcpkg-arm64 + install_cmd: | + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc + sudo add-apt-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-21 main" + sudo apt-get update + sudo apt-get install -y git build-essential cmake ninja-build \ + zip unzip curl pkg-config ca-certificates \ + clang-21 lld-21 libc++-21-dev libc++abi-21-dev + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-21 100 + sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-21 100 + sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-21 100 + fail-fast: false env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg steps: - - name: Install basic tool-chain with pacman + - name: Install basic tool-chain + shell: bash + run: ${{ matrix.install_cmd }} + + - name: Verify compiler versions shell: bash run: | - pacman -Sy --noconfirm archlinux-keyring - pacman -Syu --noconfirm --needed \ - git base-devel clang cmake ninja zip unzip fmt + echo "=== Clang ===" + clang --version + clang++ --version + echo "=== GCC ===" + gcc --version || true + g++ --version || true - name: Checkout repository (with sub-modules) uses: actions/checkout@v4 @@ -38,64 +103,62 @@ jobs: shell: bash run: | git clone --branch 2025.12.12 --single-branch https://github.com/microsoft/vcpkg "$VCPKG_ROOT" + cd "$VCPKG_ROOT" + ./bootstrap-vcpkg.sh + - name: Configure (cmake --preset) shell: bash - run: cmake --preset linux-release-vcpkg -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" + run: | + cmake --preset ${{ matrix.preset }} \ + -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ + -DOMATH_BUILD_TESTS=ON \ + -DOMATH_BUILD_BENCHMARK=OFF \ + -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" - name: Build shell: bash - run: cmake --build cmake-build/build/linux-release-vcpkg --target unit_tests omath + run: cmake --build cmake-build/build/${{ matrix.preset }} --target unit_tests omath - name: Run unit_tests shell: bash run: ./out/Release/unit_tests - + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: linux-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log ############################################################################## - # 2) Windows x64 – MSVC (x64-windows) + # 2) Windows – MSVC / Ninja ############################################################################## windows-build-and-test: - name: Windows (MSVC) (x64-windows) - runs-on: windows-latest + name: ${{ matrix.name }} + runs-on: ${{ matrix.runner }} + strategy: + matrix: + include: + - name: Windows (MSVC) (x64-windows) + runner: windows-latest + arch: amd64 + preset: windows-release-vcpkg + triplet: x64-windows + - name: Windows (MSVC) (x86-windows) + runner: windows-latest + arch: amd64_x86 + preset: windows-release-vcpkg-x86 + triplet: x86-windows + - name: Windows (MSVC) (arm64-windows) + runner: windows-11-arm + arch: arm64 + preset: windows-release-vcpkg-arm64 + triplet: arm64-windows + fail-fast: false env: - OMATH_BUILD_VIA_VCPKG: ON - - steps: - - name: Checkout repository (with sub-modules) - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Ninja - uses: seanmiddleditch/gha-setup-ninja@v4 - - - name: Set up MSVC developer command-prompt - uses: ilammy/msvc-dev-cmd@v1 - - - name: Configure (cmake --preset) - shell: bash - run: cmake --preset windows-release-vcpkg -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" - - - name: Build - shell: bash - run: cmake --build cmake-build/build/windows-release-vcpkg --target unit_tests omath - - - name: Run unit_tests.exe - shell: bash - run: ./out/Release/unit_tests.exe - - - - ############################################################################## - # 3) Windows x86 – MSVC (x86-windows) - ############################################################################## - windows-x86-build-and-test: - name: Windows (MSVC) (x86-windows) - runs-on: windows-latest - env: - OMATH_BUILD_VIA_VCPKG: ON - + VCPKG_ROOT: ${{ github.workspace }}/vcpkg steps: - name: Checkout repository (with sub-modules) uses: actions/checkout@v4 @@ -108,26 +171,47 @@ jobs: - name: Set up MSVC developer command-prompt uses: ilammy/msvc-dev-cmd@v1 with: - arch: amd64_x86 + arch: ${{ matrix.arch }} - name: Configure (cmake --preset) shell: bash - run: cmake --preset windows-release-vcpkg-x86 -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" + run: cmake --preset ${{ matrix.preset }} -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" - name: Build shell: bash - run: cmake --build cmake-build/build/windows-release-vcpkg-x86 --target unit_tests omath + run: cmake --build cmake-build/build/${{ matrix.preset }} --target unit_tests omath - name: Run unit_tests.exe shell: bash run: ./out/Release/unit_tests.exe + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: windows-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log + ############################################################################## # 3) macOS – AppleClang / Ninja ############################################################################## macosx-build-and-test: - name: macOS (AppleClang) (arm64-osx) - runs-on: macOS-latest + name: ${{ matrix.name }} + runs-on: ${{ matrix.runner }} + strategy: + matrix: + include: + - name: macOS (AppleClang) (arm64-osx) + runner: macOS-latest + preset: darwin-release-vcpkg + triplet: arm64-osx + - name: macOS (AppleClang) (x64-osx) + runner: macos-15-intel + preset: darwin-release-vcpkg-x64 + triplet: x64-osx + fail-fast: false env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg steps: @@ -148,22 +232,37 @@ jobs: - name: Configure (cmake --preset) shell: bash - run: cmake --preset darwin-release-vcpkg -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" + run: cmake --preset ${{matrix.preset}} -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" - name: Build shell: bash - run: cmake --build cmake-build/build/darwin-release-vcpkg --target unit_tests omath + run: cmake --build cmake-build/build/${{matrix.preset}} --target unit_tests omath - name: Run unit_tests shell: bash run: ./out/Release/unit_tests + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: macos-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log + ############################################################################## # 4) iOS – AppleClang / Xcode / arm64-ios ############################################################################## ios-build: - name: iOS (AppleClang) (arm64-ios) + name: iOS (AppleClang) (${{ matrix.triplet }}) runs-on: macOS-latest + strategy: + matrix: + include: + - triplet: arm64-ios + preset: ios-release-vcpkg + fail-fast: false env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg steps: @@ -187,7 +286,7 @@ jobs: - name: Configure (cmake --preset) shell: bash run: | - cmake --preset ios-release-vcpkg \ + cmake --preset ${{ matrix.preset }} \ -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ -DOMATH_BUILD_TESTS=ON \ -DOMATH_BUILD_BENCHMARK=OFF \ @@ -196,14 +295,32 @@ jobs: - name: Build shell: bash run: | - cmake --build cmake-build/build/ios-release-vcpkg --config Release --target unit_tests omath + cmake --build cmake-build/build/${{ matrix.preset }} --config Release --target unit_tests omath + + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: ios-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log ############################################################################## # 5) FreeBSD – Clang / Ninja ############################################################################## freebsd-build-and-test: - name: FreeBSD (Clang) (x64-freebsd) + name: FreeBSD (Clang) (${{ matrix.triplet }}) runs-on: ubuntu-latest + strategy: + matrix: + include: + - triplet: x64-freebsd + preset: freebsd-release-vcpkg + arch: x86-64 + fail-fast: false + env: + VCPKG_ROOT: ${{ github.workspace }}/tmp/vcpkg steps: - name: Checkout repository (with sub-modules) uses: actions/checkout@v4 @@ -211,37 +328,59 @@ jobs: submodules: recursive - name: Build and Test - uses: vmactions/freebsd-vm@v1 + uses: cross-platform-actions/action@v0.31.0 with: - usesh: true - sync: sshfs - mem: 12288 - copyback: false - prepare: pkg install -y git curl zip unzip gmake llvm gsed bash perl5 openssl 7-zip coreutils cmake ninja pkgconf patchelf + operating_system: freebsd + architecture: ${{ matrix.arch }} + version: '15.0' + memory: '12G' + cpu_count: 4 run: | + sudo pkg install -y git curl zip unzip gmake llvm gsed bash perl5 openssl 7-zip coreutils cmake ninja pkgconf patchelf git config --global --add safe.directory `pwd` # Build vcpkg in /tmp to avoid sshfs timestamp sync issues - # This prevents PCH timestamp mismatches during parallel builds export VCPKG_ROOT=/tmp/vcpkg rm -rf "$VCPKG_ROOT" git clone --branch 2025.12.12 --single-branch https://github.com/microsoft/vcpkg "$VCPKG_ROOT" cd "$VCPKG_ROOT" - # Bootstrap vcpkg - it will build from source on FreeBSD - # Building in /tmp avoids sshfs timestamp issues that break PCH ./bootstrap-vcpkg.sh cd - export VCPKG_FORCE_SYSTEM_BINARIES=0 - # VCPKG_ROOT is set to /tmp/vcpkg, which CMake will use via the preset - cmake --preset freebsd-release-vcpkg -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" - cmake --build cmake-build/build/freebsd-release-vcpkg --target unit_tests omath + cmake --preset ${{ matrix.preset }} \ + -DOMATH_BUILD_TESTS=ON \ + -DOMATH_BUILD_BENCHMARK=OFF \ + -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" \ + -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" + cmake --build cmake-build/build/${{ matrix.preset }} --target unit_tests omath ./out/Release/unit_tests + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: freebsd-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log + ############################################################################## - # 5) Android NDK – Clang / Ninja / arm64-android + # 6) Android NDK – Clang / Ninja ############################################################################## - android-build-and-test: - name: Android NDK (arm64-android) + android-build: + name: Android NDK (${{ matrix.triplet }}) runs-on: ubuntu-latest + strategy: + matrix: + include: + - triplet: arm-neon-android + preset: android-arm-neon-release-vcpkg + - triplet: arm64-android + preset: android-arm64-release-vcpkg + - triplet: x64-android + preset: android-x64-release-vcpkg + - triplet: x86-android + preset: android-x86-release-vcpkg + fail-fast: false env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg ANDROID_NDK_HOME: ${{ github.workspace }}/android-ndk @@ -254,15 +393,13 @@ jobs: - name: Install Android NDK shell: bash run: | - NDK_VERSION="r28c" + NDK_VERSION="r28b" NDK_ZIP="android-ndk-${NDK_VERSION}-linux.zip" wget -q "https://dl.google.com/android/repository/${NDK_ZIP}" unzip -q "${NDK_ZIP}" -d "${{ github.workspace }}" mv "${{ github.workspace }}/android-ndk-${NDK_VERSION}" "$ANDROID_NDK_HOME" rm "${NDK_ZIP}" echo "ANDROID_NDK_HOME=${ANDROID_NDK_HOME}" >> $GITHUB_ENV - echo "Android NDK installed at: ${ANDROID_NDK_HOME}" - ls -la "${ANDROID_NDK_HOME}" | head -5 - name: Install basic tool-chain shell: bash @@ -280,7 +417,7 @@ jobs: - name: Configure (cmake --preset) shell: bash run: | - cmake --preset android-release-vcpkg \ + cmake --preset ${{ matrix.preset }} \ -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ -DOMATH_BUILD_TESTS=ON \ -DOMATH_BUILD_BENCHMARK=OFF \ @@ -289,14 +426,29 @@ jobs: - name: Build shell: bash run: | - cmake --build cmake-build/build/android-release-vcpkg --target unit_tests omath + cmake --build cmake-build/build/${{ matrix.preset }} --target unit_tests omath + + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: android-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log ############################################################################## - # 6) WebAssembly (Emscripten) – Clang / Ninja / wasm32-emscripten + # 7) WebAssembly (Emscripten) – Clang / Ninja / wasm32-emscripten ############################################################################## wasm-build-and-test: - name: WebAssembly (Emscripten) (wasm32-emscripten) + name: WebAssembly (Emscripten) (${{ matrix.triplet }}) runs-on: ubuntu-latest + strategy: + matrix: + include: + - triplet: wasm32-emscripten + preset: wasm-release-vcpkg + fail-fast: false env: VCPKG_ROOT: ${{ github.workspace }}/vcpkg steps: @@ -334,7 +486,7 @@ jobs: - name: Configure (cmake --preset) shell: bash run: | - cmake --preset wasm-release-vcpkg \ + cmake --preset ${{ matrix.preset }} \ -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ -DOMATH_BUILD_TESTS=ON \ -DOMATH_BUILD_BENCHMARK=OFF \ @@ -343,14 +495,39 @@ jobs: - name: Build shell: bash run: | - cmake --build cmake-build/build/wasm-release-vcpkg --target unit_tests omath + cmake --build cmake-build/build/${{ matrix.preset }} --target unit_tests omath + + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 + with: + name: wasm-build-logs-${{ matrix.triplet }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log ############################################################################## - # 7) Windows MSYS2 MinGW – GCC / Ninja / x64-mingw-dynamic + # 8) Windows MSYS2 MinGW – GCC / Ninja ############################################################################## mingw-build-and-test: - name: MINGW64 (MSYS2) (x64-mingw-dynamic) + name: ${{ matrix.name }} runs-on: windows-latest + strategy: + matrix: + include: + - name: MINGW64 (MSYS2) (x64-mingw-dynamic) + msystem: MINGW64 + pkg_prefix: mingw-w64-x86_64 + preset: mingw-release-vcpkg + - name: UCRT64 (MSYS2) (x64-mingw-dynamic) + msystem: UCRT64 + pkg_prefix: mingw-w64-ucrt-x86_64 + preset: mingw-release-vcpkg + - name: MINGW32 (MSYS2) (x86-mingw-dynamic) + msystem: MINGW32 + pkg_prefix: mingw-w64-i686 + preset: mingw32-release-vcpkg + fail-fast: false defaults: run: @@ -363,13 +540,13 @@ jobs: - name: Setup MSYS2 uses: msys2/setup-msys2@v2 with: - msystem: MINGW64 + msystem: ${{ matrix.msystem }} update: true install: >- - mingw-w64-x86_64-toolchain - mingw-w64-x86_64-cmake - mingw-w64-x86_64-ninja - mingw-w64-x86_64-pkg-config + ${{ matrix.pkg_prefix }}-toolchain + ${{ matrix.pkg_prefix }}-cmake + ${{ matrix.pkg_prefix }}-ninja + ${{ matrix.pkg_prefix }}-pkg-config git base-devel @@ -386,7 +563,7 @@ jobs: - name: Configure (cmake --preset) run: | - cmake --preset mingw-release-vcpkg \ + cmake --preset ${{ matrix.preset }} \ -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ -DOMATH_BUILD_TESTS=ON \ -DOMATH_BUILD_BENCHMARK=OFF \ @@ -394,118 +571,17 @@ jobs: - name: Build run: | - cmake --build cmake-build/build/mingw-release-vcpkg --target unit_tests omath + cmake --build cmake-build/build/${{ matrix.preset }} --target unit_tests omath - name: Run unit_tests.exe run: | ./out/Release/unit_tests.exe - ############################################################################## - # 8) Windows UCRT64 MSYS2 MinGW – GCC / Ninja / x64-mingw-dynamic - ############################################################################## - mingw-ucrt-build-and-test: - name: UCRT64 (MSYS2) (x64-mingw-dynamic) - runs-on: windows-latest - - defaults: - run: - shell: msys2 {0} - - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - - steps: - - name: Setup MSYS2 - uses: msys2/setup-msys2@v2 + - name: Upload logs on failure + if: ${{ failure() }} + uses: actions/upload-artifact@v4 with: - msystem: UCRT64 - update: true - install: >- - mingw-w64-ucrt-x86_64-toolchain - mingw-w64-ucrt-x86_64-cmake - mingw-w64-ucrt-x86_64-ninja - mingw-w64-ucrt-x86_64-pkg-config - git - base-devel - - - name: Checkout repository (with sub-modules) - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Set up vcpkg - run: | - git clone --branch 2025.12.12 --single-branch https://github.com/microsoft/vcpkg "$VCPKG_ROOT" - cd "$VCPKG_ROOT" - ./bootstrap-vcpkg.sh - - - name: Configure (cmake --preset) - run: | - cmake --preset mingw-release-vcpkg \ - -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ - -DOMATH_BUILD_TESTS=ON \ - -DOMATH_BUILD_BENCHMARK=OFF \ - -DVCPKG_MANIFEST_FEATURES="imgui;tests" - - - name: Build - run: | - cmake --build cmake-build/build/mingw-release-vcpkg --target unit_tests omath - - - name: Run unit_tests.exe - run: | - ./out/Release/unit_tests.exe - - ############################################################################## - # 9) Windows MSYS2 MinGW32 – GCC / Ninja / x86-mingw-dynamic - ############################################################################## - mingw32-build-and-test: - name: MINGW32 (MSYS2) (x86-mingw-dynamic) - runs-on: windows-latest - - defaults: - run: - shell: msys2 {0} - - env: - VCPKG_ROOT: ${{ github.workspace }}/vcpkg - - steps: - - name: Setup MSYS2 - uses: msys2/setup-msys2@v2 - with: - msystem: MINGW32 - update: true - install: >- - mingw-w64-i686-toolchain - mingw-w64-i686-cmake - mingw-w64-i686-ninja - mingw-w64-i686-pkg-config - git - base-devel - - - name: Checkout repository (with sub-modules) - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Set up vcpkg - run: | - git clone --branch 2025.12.12 --single-branch https://github.com/microsoft/vcpkg "$VCPKG_ROOT" - cd "$VCPKG_ROOT" - ./bootstrap-vcpkg.sh - - - name: Configure (cmake --preset) - run: | - cmake --preset mingw32-release-vcpkg \ - -DVCPKG_INSTALL_OPTIONS="--allow-unsupported" \ - -DOMATH_BUILD_TESTS=ON \ - -DOMATH_BUILD_BENCHMARK=OFF \ - -DVCPKG_MANIFEST_FEATURES="imgui;tests" - - - name: Build - run: | - cmake --build cmake-build/build/mingw32-release-vcpkg --target unit_tests omath - - - name: Run unit_tests.exe - run: | - ./out/Release/unit_tests.exe + name: mingw-build-logs-${{ matrix.msystem }} + path: | + cmake-build/build/${{ matrix.preset }}/**/*.log + ${{ env.VCPKG_ROOT }}/buildtrees/**/*.log diff --git a/CMakePresets.json b/CMakePresets.json index bc74347..180f135 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,15 +1,49 @@ { - "version": 3, + "version": 6, + "cmakeMinimumRequired": { + "major": 3, + "minor": 25, + "patch": 0 + }, + "configurePresets": [ { - "name": "windows-base", + "name": "base", "hidden": true, "generator": "Ninja", "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "installDir": "${sourceDir}/cmake-build/install/${presetName}" + }, + { + "name": "vcpkg-base", + "hidden": true, "cacheVariables": { - "CMAKE_CXX_COMPILER": "cl.exe", - "CMAKE_MAKE_PROGRAM": "Ninja" + "OMATH_BUILD_VIA_VCPKG": "ON", + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed" + } + }, + { + "name": "debug", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "release", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + + { + "name": "windows-base", + "hidden": true, + "inherits": "base", + "cacheVariables": { + "CMAKE_CXX_COMPILER": "cl.exe" }, "condition": { "type": "equals", @@ -18,53 +52,43 @@ } }, { - "name": "windows-base-vcpkg", + "name": "windows-vcpkg-base", "hidden": true, - "inherits": "windows-base", + "inherits": ["windows-base", "vcpkg-base"], "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2;examples" } }, { "name": "windows-debug", - "displayName": "Debug", - "inherits": "windows-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "Windows Debug", + "inherits": ["windows-base", "debug"] + }, + { + "name": "windows-release", + "displayName": "Windows Release", + "inherits": ["windows-base", "release"] }, { "name": "windows-debug-vcpkg", - "displayName": "Windows Debug Vcpkg", - "inherits": "windows-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "Windows Debug (vcpkg)", + "inherits": ["windows-vcpkg-base", "debug"] }, { "name": "windows-release-vcpkg", - "displayName": "Windows Release Vcpkg", - "inherits": "windows-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release", - "OMATH_BUILD_VIA_VCPKG": "ON" - } + "displayName": "Windows Release (vcpkg)", + "inherits": ["windows-vcpkg-base", "release"] }, + { - "name": "windows-base-vcpkg-x86", + "name": "windows-x86-vcpkg-base", "hidden": true, - "inherits": "windows-base", + "inherits": ["windows-base", "vcpkg-base"], "architecture": { "value": "x86", "strategy": "external" }, "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_TARGET_TRIPLET": "x86-windows", "VCPKG_HOST_TRIPLET": "x64-windows", "VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2;examples" @@ -72,38 +96,47 @@ }, { "name": "windows-debug-vcpkg-x86", - "displayName": "Windows Debug Vcpkg (x86)", - "inherits": "windows-base-vcpkg-x86", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "Windows x86 Debug (vcpkg)", + "inherits": ["windows-x86-vcpkg-base", "debug"] }, { "name": "windows-release-vcpkg-x86", - "displayName": "Windows Release Vcpkg (x86)", - "inherits": "windows-base-vcpkg-x86", + "displayName": "Windows x86 Release (vcpkg)", + "inherits": ["windows-x86-vcpkg-base", "release"] + }, + + { + "name": "windows-arm64-vcpkg-base", + "hidden": true, + "inherits": ["windows-base", "vcpkg-base"], + "architecture": { + "value": "arm64", + "strategy": "external" + }, "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release", - "OMATH_BUILD_VIA_VCPKG": "ON" + "VCPKG_TARGET_TRIPLET": "arm64-windows", + "VCPKG_HOST_TRIPLET": "arm64-windows", + "VCPKG_MANIFEST_FEATURES": "tests;imgui;examples" } }, { - "name": "windows-release", - "displayName": "Release", - "inherits": "windows-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "name": "windows-debug-vcpkg-arm64", + "displayName": "Windows ARM64 Debug (vcpkg)", + "inherits": ["windows-arm64-vcpkg-base", "debug"] }, + { + "name": "windows-release-vcpkg-arm64", + "displayName": "Windows ARM64 Release (vcpkg)", + "inherits": ["windows-arm64-vcpkg-base", "release"] + }, + { "name": "linux-base", "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "inherits": "base", "cacheVariables": { - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_MAKE_PROGRAM": "ninja" + "CMAKE_C_COMPILER": "clang-21", + "CMAKE_CXX_COMPILER": "clang++-21" }, "condition": { "type": "equals", @@ -112,57 +145,88 @@ } }, { - "name": "linux-base-vcpkg", + "name": "linux-vcpkg-base", "hidden": true, - "inherits": "linux-base", + "inherits": ["linux-base", "vcpkg-base"], "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2" } }, { "name": "linux-debug", "displayName": "Linux Debug", - "inherits": "linux-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "linux-debug-vcpkg", - "displayName": "Linux Debug", - "inherits": "linux-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "inherits": ["linux-base", "debug"] }, { "name": "linux-release", "displayName": "Linux Release", - "inherits": "linux-debug", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "inherits": ["linux-base", "release"] + }, + { + "name": "linux-debug-vcpkg", + "displayName": "Linux Debug (vcpkg)", + "inherits": ["linux-vcpkg-base", "debug"] }, { "name": "linux-release-vcpkg", - "displayName": "Linux Release", - "inherits": "linux-base-vcpkg", + "displayName": "Linux Release (vcpkg)", + "inherits": ["linux-vcpkg-base", "release"] + }, + + { + "name": "linux-x86-vcpkg-base", + "hidden": true, + "inherits": ["linux-base", "vcpkg-base"], + "architecture": { + "value": "x86", + "strategy": "external" + }, "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" + "CMAKE_C_FLAGS": "-m32", + "CMAKE_CXX_FLAGS": "-m32", + "VCPKG_TARGET_TRIPLET": "x86-linux", + "VCPKG_HOST_TRIPLET": "x64-linux", + "VCPKG_MANIFEST_FEATURES": "tests;imgui" } }, + { + "name": "linux-debug-vcpkg-x86", + "displayName": "Linux x86 Debug (vcpkg)", + "inherits": ["linux-x86-vcpkg-base", "debug"] + }, + { + "name": "linux-release-vcpkg-x86", + "displayName": "Linux x86 Release (vcpkg)", + "inherits": ["linux-x86-vcpkg-base", "release"] + }, + + { + "name": "linux-arm64-vcpkg-base", + "hidden": true, + "inherits": ["linux-base", "vcpkg-base"], + "cacheVariables": { + "VCPKG_TARGET_TRIPLET": "arm64-linux", + "VCPKG_HOST_TRIPLET": "arm64-linux", + "VCPKG_MANIFEST_FEATURES": "tests;imgui" + } + }, + { + "name": "linux-debug-vcpkg-arm64", + "displayName": "Linux ARM64 Debug (vcpkg)", + "inherits": ["linux-arm64-vcpkg-base", "debug"] + }, + { + "name": "linux-release-vcpkg-arm64", + "displayName": "Linux ARM64 Release (vcpkg)", + "inherits": ["linux-arm64-vcpkg-base", "release"] + }, + { "name": "darwin-base", "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "inherits": "base", "cacheVariables": { - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_MAKE_PROGRAM": "ninja" + "CMAKE_CXX_COMPILER": "clang++" }, "condition": { "type": "equals", @@ -171,89 +235,100 @@ } }, { - "name": "darwin-base-vcpkg", + "name": "darwin-vcpkg-base", "hidden": true, - "inherits": "darwin-base", + "inherits": ["darwin-base", "vcpkg-base"], "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2;examples" } }, { "name": "darwin-debug", - "displayName": "Darwin Debug", - "inherits": "darwin-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "darwin-debug-vcpkg", - "displayName": "Darwin Debug Vcpkg", - "inherits": "darwin-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "macOS Debug", + "inherits": ["darwin-base", "debug"] }, { "name": "darwin-release", - "displayName": "Darwin Release", - "inherits": "darwin-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "macOS Release", + "inherits": ["darwin-base", "release"] + }, + { + "name": "darwin-debug-vcpkg", + "displayName": "macOS Debug (vcpkg)", + "inherits": ["darwin-vcpkg-base", "debug"] }, { "name": "darwin-release-vcpkg", - "displayName": "Darwin Release Vcpkg", - "inherits": "darwin-base-vcpkg", + "displayName": "macOS Release (vcpkg)", + "inherits": ["darwin-vcpkg-base", "release"] + }, + + { + "name": "darwin-x64-vcpkg-base", + "hidden": true, + "inherits": ["darwin-base", "vcpkg-base"], "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" + "CMAKE_OSX_ARCHITECTURES": "x86_64", + "VCPKG_TARGET_TRIPLET": "x64-osx", + "VCPKG_HOST_TRIPLET": "x64-osx", + "VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2;examples" } }, { - "name": "ios-base", - "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "cacheVariables": { - "CMAKE_SYSTEM_NAME": "iOS", - "CMAKE_OSX_DEPLOYMENT_TARGET": "18.5", - "CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED": "NO", - "CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED": "NO" - }, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Darwin" - } -}, -{ - "name": "ios-base-vcpkg", - "hidden": true, - "inherits": "ios-base", - "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_TARGET_TRIPLET": "arm64-ios", - "VCPKG_HOST_TRIPLET": "arm64-osx" - } -}, -{ - "name": "ios-release-vcpkg", - "displayName": "iOS Release (vcpkg)", - "inherits": "ios-base-vcpkg" -}, + "name": "darwin-debug-vcpkg-x64", + "displayName": "macOS x64 Debug (vcpkg)", + "inherits": ["darwin-x64-vcpkg-base", "debug"] + }, + { + "name": "darwin-release-vcpkg-x64", + "displayName": "macOS x64 Release (vcpkg)", + "inherits": ["darwin-x64-vcpkg-base", "release"] + }, + + { + "name": "ios-base", + "hidden": true, + "inherits": "base", + "cacheVariables": { + "CMAKE_SYSTEM_NAME": "iOS", + "CMAKE_OSX_DEPLOYMENT_TARGET": "18.5", + "CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED": "NO", + "CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED": "NO" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + } + }, + { + "name": "ios-vcpkg-base", + "hidden": true, + "inherits": ["ios-base", "vcpkg-base"], + "cacheVariables": { + "VCPKG_TARGET_TRIPLET": "arm64-ios", + "VCPKG_HOST_TRIPLET": "arm64-osx", + "VCPKG_MANIFEST_FEATURES": "tests;imgui" + } + }, + { + "name": "ios-debug-vcpkg", + "displayName": "iOS Debug (vcpkg)", + "inherits": ["ios-vcpkg-base", "debug"] + }, + { + "name": "ios-release-vcpkg", + "displayName": "iOS Release (vcpkg)", + "inherits": ["ios-vcpkg-base", "release"] + }, + { "name": "freebsd-base", "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "inherits": "base", "cacheVariables": { - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_MAKE_PROGRAM": "ninja" + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++" }, "condition": { "type": "equals", @@ -262,154 +337,262 @@ } }, { - "name": "freebsd-base-vcpkg", + "name": "freebsd-vcpkg-base", "hidden": true, - "inherits": "freebsd-base", + "inherits": ["freebsd-base", "vcpkg-base"], "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2" } }, { "name": "freebsd-debug", "displayName": "FreeBSD Debug", - "inherits": "freebsd-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "freebsd-debug-vcpkg", - "displayName": "FreeBSD Debug Vcpkg", - "inherits": "freebsd-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "inherits": ["freebsd-base", "debug"] }, { "name": "freebsd-release", "displayName": "FreeBSD Release", - "inherits": "freebsd-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "inherits": ["freebsd-base", "release"] + }, + { + "name": "freebsd-debug-vcpkg", + "displayName": "FreeBSD Debug (vcpkg)", + "inherits": ["freebsd-vcpkg-base", "debug"] }, { "name": "freebsd-release-vcpkg", - "displayName": "FreeBSD Release Vcpkg", - "inherits": "freebsd-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "FreeBSD Release (vcpkg)", + "inherits": ["freebsd-vcpkg-base", "release"] }, + { "name": "android-base", "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "inherits": "base", "cacheVariables": { "CMAKE_SYSTEM_NAME": "Android", "CMAKE_SYSTEM_VERSION": "24", - "CMAKE_ANDROID_ARCH_ABI": "arm64-v8a", "CMAKE_ANDROID_NDK": "$env{ANDROID_NDK_HOME}", - "CMAKE_MAKE_PROGRAM": "ninja" + "CMAKE_ANDROID_STL_TYPE": "c++_static" } }, { - "name": "android-base-vcpkg", + "name": "android-vcpkg-base", + "hidden": true, + "inherits": ["android-base", "vcpkg-base"], + "cacheVariables": { + "VCPKG_MANIFEST_FEATURES": "tests;imgui" + } + }, + + { + "name": "android-arm64-base", "hidden": true, "inherits": "android-base", "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", - "VCPKG_TARGET_TRIPLET": "arm64-android", + "CMAKE_ANDROID_ARCH_ABI": "arm64-v8a" + } + }, + { + "name": "android-arm64-vcpkg-base", + "hidden": true, + "inherits": "android-vcpkg-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "arm64-v8a", + "VCPKG_TARGET_TRIPLET": "arm64-android" + } + }, + { + "name": "android-arm64-debug", + "displayName": "Android arm64-v8a Debug", + "inherits": ["android-arm64-base", "debug"] + }, + { + "name": "android-arm64-release", + "displayName": "Android arm64-v8a Release", + "inherits": ["android-arm64-base", "release"] + }, + { + "name": "android-arm64-debug-vcpkg", + "displayName": "Android arm64-v8a Debug (vcpkg)", + "inherits": ["android-arm64-vcpkg-base", "debug"] + }, + { + "name": "android-arm64-release-vcpkg", + "displayName": "Android arm64-v8a Release (vcpkg)", + "inherits": ["android-arm64-vcpkg-base", "release"] + }, + + { + "name": "android-arm-neon-base", + "hidden": true, + "inherits": "android-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "armeabi-v7a", + "CMAKE_ANDROID_ARM_NEON": "ON" + } + }, + { + "name": "android-arm-neon-vcpkg-base", + "hidden": true, + "inherits": "android-vcpkg-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "armeabi-v7a", + "CMAKE_ANDROID_ARM_NEON": "ON", + "VCPKG_TARGET_TRIPLET": "arm-neon-android" + } + }, + { + "name": "android-arm-neon-debug", + "displayName": "Android armeabi-v7a NEON Debug", + "inherits": ["android-arm-neon-base", "debug"] + }, + { + "name": "android-arm-neon-release", + "displayName": "Android armeabi-v7a NEON Release", + "inherits": ["android-arm-neon-base", "release"] + }, + { + "name": "android-arm-neon-debug-vcpkg", + "displayName": "Android armeabi-v7a NEON Debug (vcpkg)", + "inherits": ["android-arm-neon-vcpkg-base", "debug"] + }, + { + "name": "android-arm-neon-release-vcpkg", + "displayName": "Android armeabi-v7a NEON Release (vcpkg)", + "inherits": ["android-arm-neon-vcpkg-base", "release"] + }, + + { + "name": "android-x64-base", + "hidden": true, + "inherits": "android-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "x86_64" + } + }, + { + "name": "android-x64-vcpkg-base", + "hidden": true, + "inherits": "android-vcpkg-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "x86_64", + "VCPKG_TARGET_TRIPLET": "x64-android" + } + }, + { + "name": "android-x64-debug", + "displayName": "Android x86_64 Debug", + "inherits": ["android-x64-base", "debug"] + }, + { + "name": "android-x64-release", + "displayName": "Android x86_64 Release", + "inherits": ["android-x64-base", "release"] + }, + { + "name": "android-x64-debug-vcpkg", + "displayName": "Android x86_64 Debug (vcpkg)", + "inherits": ["android-x64-vcpkg-base", "debug"] + }, + { + "name": "android-x64-release-vcpkg", + "displayName": "Android x86_64 Release (vcpkg)", + "inherits": ["android-x64-vcpkg-base", "release"] + }, + + { + "name": "android-x86-base", + "hidden": true, + "inherits": "android-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "x86" + } + }, + { + "name": "android-x86-vcpkg-base", + "hidden": true, + "inherits": "android-vcpkg-base", + "cacheVariables": { + "CMAKE_ANDROID_ARCH_ABI": "x86", + "VCPKG_TARGET_TRIPLET": "x86-android" + } + }, + { + "name": "android-x86-debug", + "displayName": "Android x86 Debug", + "inherits": ["android-x86-base", "debug"] + }, + { + "name": "android-x86-release", + "displayName": "Android x86 Release", + "inherits": ["android-x86-base", "release"] + }, + { + "name": "android-x86-debug-vcpkg", + "displayName": "Android x86 Debug (vcpkg)", + "inherits": ["android-x86-vcpkg-base", "debug"] + }, + { + "name": "android-x86-release-vcpkg", + "displayName": "Android x86 Release (vcpkg)", + "inherits": ["android-x86-vcpkg-base", "release"] + }, + + { + "name": "android-debug", + "displayName": "Android Debug (default: arm64)", + "inherits": "android-arm64-debug" + }, + { + "name": "android-release", + "displayName": "Android Release (default: arm64)", + "inherits": "android-arm64-release" + }, + { + "name": "android-debug-vcpkg", + "displayName": "Android Debug (default: arm64, vcpkg)", + "inherits": "android-arm64-debug-vcpkg" + }, + { + "name": "android-release-vcpkg", + "displayName": "Android Release (default: arm64, vcpkg)", + "inherits": "android-arm64-release-vcpkg" + }, + + { + "name": "wasm-base", + "hidden": true, + "inherits": "base" + }, + { + "name": "wasm-vcpkg-base", + "hidden": true, + "inherits": ["wasm-base", "vcpkg-base"], + "cacheVariables": { + "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "$env{EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake", + "VCPKG_TARGET_TRIPLET": "wasm32-emscripten", "VCPKG_MANIFEST_FEATURES": "tests;imgui" } }, - { - "name": "android-debug", - "displayName": "Android Debug", - "inherits": "android-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "android-debug-vcpkg", - "displayName": "Android Debug Vcpkg", - "inherits": "android-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "android-release", - "displayName": "Android Release", - "inherits": "android-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "android-release-vcpkg", - "displayName": "Android Release Vcpkg", - "inherits": "android-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "wasm-base", - "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", - "cacheVariables": { - "CMAKE_MAKE_PROGRAM": "ninja" - } - }, - { - "name": "wasm-base-vcpkg", - "hidden": true, - "inherits": "wasm-base", - "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "$env{EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", - "VCPKG_TARGET_TRIPLET": "wasm32-emscripten" - } - }, { "name": "wasm-debug-vcpkg", - "displayName": "WASM Debug Vcpkg", - "inherits": "wasm-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "WebAssembly Debug (vcpkg)", + "inherits": ["wasm-vcpkg-base", "debug"] }, { "name": "wasm-release-vcpkg", - "displayName": "WASM Release Vcpkg", - "inherits": "wasm-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "WebAssembly Release (vcpkg)", + "inherits": ["wasm-vcpkg-base", "release"] }, + { "name": "mingw-base", "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "inherits": "base", "cacheVariables": { - "CMAKE_CXX_COMPILER": "g++", "CMAKE_C_COMPILER": "gcc", - "CMAKE_MAKE_PROGRAM": "ninja" + "CMAKE_CXX_COMPILER": "g++" }, "condition": { "type": "equals", @@ -418,40 +601,13 @@ } }, { - "name": "mingw-ucrt-base-vcpkg", + "name": "mingw-vcpkg-base", "hidden": true, - "inherits": "mingw-base", + "inherits": ["mingw-base", "vcpkg-base"], "environment": { "VCPKG_DEFAULT_HOST_TRIPLET": "x64-mingw-dynamic" }, "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", - "VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic", - "VCPKG_HOST_TRIPLET": "x64-mingw-dynamic", - "VCPKG_MANIFEST_FEATURES": "tests;imgui" - } - }, - { - "name": "mingw-ucrt-release-vcpkg", - "displayName": "MinGW UCRT64 Release Vcpkg", - "inherits": "mingw-ucrt-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "mingw-base-vcpkg", - "hidden": true, - "inherits": "mingw-base", - "environment": { - "VCPKG_DEFAULT_HOST_TRIPLET": "x64-mingw-dynamic" - }, - "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_TARGET_TRIPLET": "x64-mingw-dynamic", "VCPKG_HOST_TRIPLET": "x64-mingw-dynamic", "VCPKG_MANIFEST_FEATURES": "tests;imgui" @@ -459,46 +615,37 @@ }, { "name": "mingw-debug", - "displayName": "MinGW Debug", - "inherits": "mingw-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "mingw-debug-vcpkg", - "displayName": "MinGW Debug Vcpkg", - "inherits": "mingw-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "MinGW x64 Debug", + "inherits": ["mingw-base", "debug"] }, { "name": "mingw-release", - "displayName": "MinGW Release", - "inherits": "mingw-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "MinGW x64 Release", + "inherits": ["mingw-base", "release"] + }, + { + "name": "mingw-debug-vcpkg", + "displayName": "MinGW x64 Debug (vcpkg)", + "inherits": ["mingw-vcpkg-base", "debug"] }, { "name": "mingw-release-vcpkg", - "displayName": "MinGW Release Vcpkg", - "inherits": "mingw-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "MinGW x64 Release (vcpkg)", + "inherits": ["mingw-vcpkg-base", "release"] }, + { + "name": "mingw-ucrt-release-vcpkg", + "displayName": "MinGW UCRT64 Release (vcpkg)", + "inherits": ["mingw-vcpkg-base", "release"] + }, + { "name": "mingw32-base", "hidden": true, - "generator": "Ninja", - "binaryDir": "${sourceDir}/cmake-build/build/${presetName}", - "installDir": "${sourceDir}/cmake-build/install/${presetName}", + "inherits": "base", "cacheVariables": { - "CMAKE_CXX_COMPILER": "g++", "CMAKE_C_COMPILER": "gcc", - "CMAKE_MAKE_PROGRAM": "ninja" + "CMAKE_CXX_COMPILER": "g++" }, "condition": { "type": "equals", @@ -507,16 +654,13 @@ } }, { - "name": "mingw32-base-vcpkg", + "name": "mingw32-vcpkg-base", "hidden": true, - "inherits": "mingw32-base", + "inherits": ["mingw32-base", "vcpkg-base"], "environment": { "VCPKG_DEFAULT_HOST_TRIPLET": "x86-mingw-dynamic" }, "cacheVariables": { - "OMATH_BUILD_VIA_VCPKG": "ON", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", - "VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed", "VCPKG_TARGET_TRIPLET": "x86-mingw-dynamic", "VCPKG_HOST_TRIPLET": "x86-mingw-dynamic", "VCPKG_MANIFEST_FEATURES": "tests;imgui" @@ -524,35 +668,23 @@ }, { "name": "mingw32-debug", - "displayName": "MinGW32 Debug", - "inherits": "mingw32-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - }, - { - "name": "mingw32-debug-vcpkg", - "displayName": "MinGW32 Debug Vcpkg", - "inherits": "mingw32-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } + "displayName": "MinGW x86 Debug", + "inherits": ["mingw32-base", "debug"] }, { "name": "mingw32-release", - "displayName": "MinGW32 Release", - "inherits": "mingw32-base", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "MinGW x86 Release", + "inherits": ["mingw32-base", "release"] + }, + { + "name": "mingw32-debug-vcpkg", + "displayName": "MinGW x86 Debug (vcpkg)", + "inherits": ["mingw32-vcpkg-base", "debug"] }, { "name": "mingw32-release-vcpkg", - "displayName": "MinGW32 Release Vcpkg", - "inherits": "mingw32-base-vcpkg", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } + "displayName": "MinGW x86 Release (vcpkg)", + "inherits": ["mingw32-vcpkg-base", "release"] } ] -} \ No newline at end of file +}