add debug realpath on the original collatz function #171
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 matrices(3d XD) | |
run: ./bin/collatz highestOddStarter 1000 longestPath 10 seed 27 | |
- name: run basicFFN | |
run: ./bin/basicFFN | |
# - name: Skip tests (Android) | |
# if: matrix.target == 'android' | |
# run: echo "Skipping tests for Android target" |