101 lines
3.5 KiB
Batchfile
101 lines
3.5 KiB
Batchfile
@echo off
|
|
REM HOT-Step engine build (all backends: CPU variants + CUDA + Vulkan)
|
|
REM Uses vswhere to find any Visual Studio edition automatically.
|
|
REM Automatically downloads ONNX Runtime GPU SDK for SuperSep support.
|
|
|
|
REM Skip vcvars if already sourced (prevents PATH overflow on repeated runs)
|
|
if defined VSCMD_VER goto :deps
|
|
|
|
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
|
|
if not exist "%VSWHERE%" (
|
|
echo ERROR: vswhere.exe not found. Is Visual Studio or Build Tools installed?
|
|
exit /b 1
|
|
)
|
|
|
|
set "VCVARS_TMP=%TEMP%\vcvars_path.txt"
|
|
"%VSWHERE%" -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -find "VC\Auxiliary\Build\vcvars64.bat" > "%VCVARS_TMP%" 2>nul
|
|
|
|
set "VCVARS="
|
|
for /f "usebackq tokens=*" %%i in ("%VCVARS_TMP%") do set "VCVARS=%%i"
|
|
del "%VCVARS_TMP%" 2>nul
|
|
|
|
if not defined VCVARS (
|
|
echo ERROR: Could not find vcvars64.bat via vswhere.
|
|
echo Install the "Desktop development with C++" workload.
|
|
exit /b 1
|
|
)
|
|
|
|
echo Using: %VCVARS%
|
|
call "%VCVARS%"
|
|
|
|
:deps
|
|
REM ── ONNX Runtime GPU SDK (for SuperSep stem separation) ────────────
|
|
REM Auto-downloads from Microsoft's GitHub Releases if not present.
|
|
REM Users can skip this by setting ORT_ROOT or ONNXRUNTIME_ROOT env var.
|
|
|
|
set "ORT_VERSION=1.25.1"
|
|
set "ORT_DIR=%~dp0deps\onnxruntime"
|
|
set "ORT_MARKER=%ORT_DIR%\include\onnxruntime_cxx_api.h"
|
|
|
|
if defined ONNXRUNTIME_ROOT (
|
|
echo [ORT] Using ONNXRUNTIME_ROOT=%ONNXRUNTIME_ROOT%
|
|
goto :build
|
|
)
|
|
|
|
if exist "%ORT_MARKER%" (
|
|
echo [ORT] Found at %ORT_DIR%
|
|
goto :build
|
|
)
|
|
|
|
echo.
|
|
echo ══════════════════════════════════════════════════════════════════
|
|
echo ONNX Runtime GPU SDK not found. Downloading v%ORT_VERSION%...
|
|
echo This is needed for SuperSep stem separation (one-time download).
|
|
echo ══════════════════════════════════════════════════════════════════
|
|
echo.
|
|
|
|
set "ORT_ZIP=%TEMP%\onnxruntime-win-x64-gpu-%ORT_VERSION%.zip"
|
|
set "ORT_URL=https://github.com/microsoft/onnxruntime/releases/download/v%ORT_VERSION%/onnxruntime-win-x64-gpu-%ORT_VERSION%.zip"
|
|
|
|
echo [ORT] Downloading from %ORT_URL%
|
|
curl -L -o "%ORT_ZIP%" "%ORT_URL%"
|
|
if errorlevel 1 (
|
|
echo [ORT] WARNING: Download failed. Building without SuperSep support.
|
|
echo [ORT] You can manually download and extract to: %ORT_DIR%
|
|
goto :build
|
|
)
|
|
|
|
echo [ORT] Extracting...
|
|
mkdir "%~dp0deps" 2>nul
|
|
powershell -NoProfile -Command "Expand-Archive -Path '%ORT_ZIP%' -DestinationPath '%~dp0deps' -Force"
|
|
if errorlevel 1 (
|
|
echo [ORT] WARNING: Extraction failed. Building without SuperSep support.
|
|
goto :build
|
|
)
|
|
|
|
REM Rename extracted folder (it has version in the name)
|
|
if exist "%~dp0deps\onnxruntime-win-x64-gpu-%ORT_VERSION%" (
|
|
ren "%~dp0deps\onnxruntime-win-x64-gpu-%ORT_VERSION%" onnxruntime
|
|
)
|
|
|
|
REM Clean up zip
|
|
del "%ORT_ZIP%" 2>nul
|
|
|
|
if exist "%ORT_MARKER%" (
|
|
echo [ORT] Successfully installed to %ORT_DIR%
|
|
) else (
|
|
echo [ORT] WARNING: Installation may have failed. Check %ORT_DIR%
|
|
)
|
|
|
|
:build
|
|
cd /d "%~dp0"
|
|
rem rd /s /q build 2>nul
|
|
mkdir build 2>nul
|
|
cd build
|
|
|
|
REM Build with ORT auto-detection from deps directory
|
|
cmake .. -DGGML_CPU_ALL_VARIANTS=ON -DGGML_CUDA=ON -DGGML_VULKAN=ON -DGGML_BACKEND_DL=ON %RELEASE_CMAKE_EXTRA%
|
|
cmake --build . --config Release -j %NUMBER_OF_PROCESSORS%
|
|
|
|
cd ..
|