Skip to content

Update integer_pow.hxx #186

Update integer_pow.hxx

Update integer_pow.hxx #186

Workflow file for this run

name: CMake Build
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
name: ${{ matrix.os }}-${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest # native Linux
target: native
- os: windows-latest # native Windows
target: native
# - os: ubuntu-latest # cross Android (Disabled temporarily)
# target: android
steps:
# ───────── checkout ─────────
- uses: actions/checkout@v4
# ───────── Vulkan SDK (all targets) ─────────
- name: Install Vulkan SDK
uses: jakoch/install-vulkan-sdk-action@v1
with:
vulkan_version: 1.3.280.0
cache: true
install_lavapipe: true
# ───────── Export Vulkan env (Linux runner) ─────────
- name: Export Vulkan env (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
echo "VULKAN_SDK=$VULKAN_SDK" >> "$GITHUB_ENV"
echo "PATH=$VULKAN_SDK/bin:$PATH" >> "$GITHUB_ENV"
echo "LD_LIBRARY_PATH=$VULKAN_SDK/lib:${LD_LIBRARY_PATH}" >> "$GITHUB_ENV"
# ───────── Export Vulkan env (Windows runner) ─────────
- name: Export Vulkan env (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
"VULKAN_SDK=$Env:VULKAN_SDK" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
"PATH=$Env:VULKAN_SDK\Bin;$Env:PATH" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
"LIB=$Env:VULKAN_SDK\Lib;$Env:LIB" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: Set up MSVC Developer Command Prompt
if: matrix.os == 'windows-latest'
uses: ilammy/msvc-dev-cmd@v1
- name: Install vcpkg dependencies (Windows)
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
$env:VCPKG_ROOT = "$env:USERPROFILE\vcpkg"
git clone https://github.com/microsoft/vcpkg $env:VCPKG_ROOT
& "$env:VCPKG_ROOT\bootstrap-vcpkg.bat"
& "$env:VCPKG_ROOT\vcpkg.exe" install
# ───────── Host‑specific deps ─────────
- name: Setup deps (Linux native & Android)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y clang ninja-build libomp-dev \
libpng-dev libx11-dev libvulkan-dev qt6* #i want to use all qt6 to practice more deeply later
- name: Deps (Windows)
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
choco install llvm ninja cmake python -y
pip install aqtinstall
# Buat direktori target untuk Qt
$QtDir = "$env:USERPROFILE\Qt"
mkdir $QtDir
# Install Qt 6.6.1 (atau versi lain sesuai kebutuhan)
aqt install-qt windows desktop 6.6.1 win64_msvc2019_64 -O $QtDir
# Simpan lokasi Qt ke ENV agar bisa dipakai nanti
echo "QT_ROOT=$QtDir\6.6.1\msvc2019_64" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "CMAKE_PREFIX_PATH=$QtDir\6.6.1\msvc2019_64" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# # ───────── Android NDK ─────────
# - name: Install Android NDK manually
# if: matrix.target == 'android'
# run: |
# wget https://dl.google.com/android/repository/android-ndk-r26c-linux.zip
# unzip android-ndk-r26c-linux.zip -d $HOME
# echo "ANDROID_NDK=$HOME/android-ndk-r26c" >> "$GITHUB_ENV"
# echo "ANDROID_NDK_HOME=$HOME/android-ndk-r26c" >> "$GITHUB_ENV"
# ───────── build‑dir cache ─────────
- uses: actions/cache@v4
with:
path: build
key: build-${{ runner.os }}-${{ matrix.target }}-${{ hashFiles('**/CMakeLists.txt', '**/*.cpp', '**/*.h') }}
restore-keys: |
build-${{ runner.os }}-${{ matrix.target }}-
# ───────── Configure (Linux native) ─────────
- name: Configure (Linux native)
if: matrix.os == 'ubuntu-latest' && matrix.target == 'native'
run: |
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_PREFIX_PATH="$VULKAN_SDK" \
-DVULKAN_SDK="$VULKAN_SDK" \
# ───────── Configure (Windows native) ─────────
- name: Configure (Windows native)
if: matrix.os == 'windows-latest' && matrix.target == 'native'
shell: pwsh
run: |
cmake -S . -B build -G Ninja `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_C_COMPILER="clang.exe" `
-DCMAKE_CXX_COMPILER="clang++.exe" `
-DCMAKE_PREFIX_PATH="$Env:VULKAN_SDK" `
-DVULKAN_SDK="$Env:VULKAN_SDK" `
-DCMAKE_TOOLCHAIN_FILE="$Env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake"
# # ───────── Configure (Android) ─────────
# - name: Configure (Android arm64‑v8a)
# if: matrix.target == 'android'
# env:
# ANDROID_NDK: ${{ env.ANDROID_NDK_HOME }}
# run: |
# cmake -S . -B build -G Ninja \
# -DCMAKE_BUILD_TYPE=Release \
# -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
# -DANDROID_ABI=arm64-v8a \
# -DANDROID_PLATFORM=android-24 \
# -DVULKAN_SDK="$VULKAN_SDK"make
# ───────── Build ─────────
- name: Build
run: cmake --build build --config Release
# ───────── Tests (native) ─────────
- name: ctest (Linux)
if: matrix.os == 'ubuntu-latest' && matrix.target == 'native'
working-directory: build
run: ctest --output-on-failure
- name: ctest (Windows)
if: matrix.os == 'windows-latest' && matrix.target == 'native'
working-directory: build
run: ctest -C Release --output-on-failure
- name: run test collatz
run: ./bin/collatz -s 63 -e -o
- name: run basicFFN
run: ./bin/basicFFN
# - name: Skip tests (Android)
# if: matrix.target == 'android'
# run: echo "Skipping tests for Android target"