Skip to content

Implement PalmBoxSuppressor for enhanced palm detection and suppressi… #166

Implement PalmBoxSuppressor for enhanced palm detection and suppressi…

Implement PalmBoxSuppressor for enhanced palm detection and suppressi… #166

Workflow file for this run

name: Native ARM64 Build Verification (clang-cl)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build-arm64:
# Use the native GitHub-hosted Windows ARM64 runner.
runs-on: windows-11-arm
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Configure MSVC for ARM64
uses: ilammy/msvc-dev-cmd@v1
with:
arch: arm64
- name: Install Latest LLVM (ARM64)
shell: pwsh
run: |
$release = Invoke-RestMethod `
-Headers @{ "User-Agent" = "GitHubActions" } `
-Uri "https://api.github.com/repos/llvm/llvm-project/releases/latest"
$asset = $release.assets |
Where-Object { $_.name -match '^LLVM-.*-woa64\.exe$' } |
Select-Object -First 1
if (-not $asset) {
throw "No Windows ARM64 LLVM installer asset found in latest llvm-project release."
}
$installer = Join-Path $env:RUNNER_TEMP $asset.name
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile $installer
Start-Process -FilePath $installer -ArgumentList "/S" -Wait -NoNewWindow
$llvmBin = "C:\Program Files\LLVM\bin"
if (-not (Test-Path (Join-Path $llvmBin "clang++.exe"))) {
throw "LLVM installation did not provide clang++.exe at $llvmBin."
}
$llvmBin >> $env:GITHUB_PATH
& (Join-Path $llvmBin "clang++.exe") --version
- name: CMake Configure (clang/clang++)
# On a native ARM64 host, we can use the ARM64-native clang/clang++.
run: |
cmake -G "Ninja" -S . -B build `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_C_COMPILER=clang `
-DCMAKE_CXX_COMPILER=clang++ `
-DCMAKE_C_COMPILER_TARGET=arm64-pc-windows-msvc `
-DCMAKE_CXX_COMPILER_TARGET=arm64-pc-windows-msvc `
-DHIMAX_ENABLE_NEON=ON `
-DEGO_BUILD_TESTS=ON
- name: CMake Build
run: cmake --build build --config Release --parallel
- name: Run Unit Tests (Native)
# Since we are on an ARM64 host, we can run hardware-independent tests.
working-directory: build
run: |
# Only running HostSystemStateMonitorTest as it doesn't require hardware.
if (Test-Path "HostSystemStateMonitorTest.exe") {
.\HostSystemStateMonitorTest.exe
} else {
Write-Host "HostSystemStateMonitorTest.exe not found; skipping smoke test."
}