Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

284 lines
7.8 KiB
Batchfile
Executable File

@ECHO off
SETLOCAL
::
:: This script builds all the required targets for the NNERuntimeIREE plugin.
::
:: If an intermediate step fails, the script exits.
::
:: Get arguments
IF NOT DEFINED ARGS_PARSED (
CALL "%~dp0_ParseArgs.bat" %* || EXIT /B %ERRORLEVEL%
)
IF NOT EXIST "%WORKING_DIR%" (
ECHO:
ECHO Warning: Working directory "%WORKING_DIR%" does not exist, creating...
EHCO:
MKDIR "%WORKING_DIR%" 2>NUL
)
SET "BUILD_DIR=%WORKING_DIR%\iree-org"
SET "BUILD_SCRIPT_DIR=%~dp0"
SET "UE_SOURCE_DIR=%BUILD_SCRIPT_DIR%\..\..\Source"
SET "UE_PATCHES_DIR=%BUILD_SCRIPT_DIR%\..\..\Patch"
SET "UE_CMAKE_DIR=%BUILD_SCRIPT_DIR%\..\..\CMake"
SET "UE_PLUGIN_ROOT=%BUILD_SCRIPT_DIR%\..\..\..\.."
ECHO Plugin root dir: "%UE_PLUGIN_ROOT%"
ECHO Build dir: "%BUILD_DIR%"
ECHO Source dir: "%UE_SOURCE_DIR%"
ECHO Additional runtime platform argument list: %PLATFORM_LIST%
SET IREE_GIT_REPOSITORY=https://github.com/iree-org/iree.git
SET IREE_GIT_COMMIT=v3.5.0
SET IREE_THIRD_PARTY_LIBRARIES=flatcc,llvm-project,stablehlo,torch-mlir,benchmark,spirv_cross
SET IREE_COMPILER_VERSION_STRING="IREE-for-UE"
SET BUILD_TYPE=Release
:: Unreal Shader compiler plugin
SET "IREE_CMAKE_PLUGIN_PATH=..\..\Iree\Compiler\Plugins\Target\UnrealShader"
SET "SPIRV_CROSS_DIR=%BUILD_DIR%\iree\third_party\spirv_cross"
SET VC_TOOLSET=14.38
SET WIN_SDK_FOR_IREE=10.0.22621.0
SET WIN_SDK_FOR_RUNTIME=10.0.22621.0
ECHO =========================================
ECHO ============= Copy Source ===============
ECHO =========================================
:: Need to copy at least IREE compiler plugin to avoid path lengths exploding
robocopy "%UE_SOURCE_DIR%\iree\compiler" "%WORKING_DIR%\iree\compiler" /E >NUL
IF ERRORLEVEL 8 GOTO :fail
ECHO:
ECHO Copied IREE compiler plugin.
ECHO:
ECHO =========================================
ECHO ============= Cloning IREE ==============
ECHO =========================================
IF NOT EXIST "%BUILD_DIR%\iree" (
MKDIR "%BUILD_DIR%" 2>NUL
CD "%BUILD_DIR%"
git clone -n %IREE_GIT_REPOSITORY%
IF ERRORLEVEL 1 GOTO :fail
CD iree
ECHO Using IREE git commit '%IREE_GIT_COMMIT%'
git checkout %IREE_GIT_COMMIT%
IF ERRORLEVEL 1 GOTO :fail
FOR /F "tokens=*" %%F IN ('DIR "%BUILD_DIR%\iree\third_party" /AD /B') DO (
IF NOT EXIST "%BUILD_DIR%\iree\third_party\%%F\CMakeLists.txt" COPY NUL "%BUILD_DIR%\iree\third_party\%%F\CMakeLists.txt" >NUL
)
FOR %%L IN (%IREE_THIRD_PARTY_LIBRARIES%) DO (
IF EXIST "third_party\%%L" (
DEL ".\third_party\%%L\CMakeLists.txt"
git submodule update --init -- ""./third_party/%%L"
IF ERRORLEVEL 1 GOTO :fail
IF EXIST "third_party\%%L\third-party" RMDIR /S /Q "third_party\%%L\third-party"
)
)
CD ../..
:: Patch SPIRV-Cross
ECHO Check for "%SPIRV_CROSS_DIR%"
IF EXIST "%SPIRV_CROSS_DIR%" (
ECHO Apply git patch to spirv_cross
CD "%SPIRV_CROSS_DIR%"
git apply "%UE_PATCHES_DIR%\spirv_cross.patch"
IF ERRORLEVEL 1 GOTO :fail
CD ..\..\..\..
ECHO Done.
)
ECHO:
ECHO Cloning IREE: Done
ECHO:
) ELSE (
ECHO:
ECHO Cloning IREE: Skipped
ECHO:
)
ECHO =========================================
ECHO ======== Building IREE Compiler =========
ECHO =========================================
IF NOT EXIST "%BUILD_DIR%\iree-compiler" (
SETLOCAL
CALL "%VCVARSALL_PATH%" x64 %WIN_SDK_FOR_IREE% -vcvars_ver=%VC_TOOLSET%
cmake -G Ninja -B "%BUILD_DIR%\iree-compiler" "%BUILD_DIR%\iree" ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^
-DIREE_CMAKE_PLUGIN_PATHS="%IREE_CMAKE_PLUGIN_PATH%" ^
-DIREE_ENABLE_CPUINFO=OFF ^
-DIREE_BUILD_TESTS=OFF ^
-DIREE_BUILD_SAMPLES=OFF ^
-DIREE_BUILD_BINDINGS_TFLITE=OFF ^
-DIREE_BUILD_BINDINGS_TFLITE_JAVA=OFF ^
-DIREE_BUILD_ALL_CHECK_TEST_MODULES=OFF ^
-DIREE_HAL_DRIVER_DEFAULTS=OFF ^
-DIREE_HAL_DRIVER_LOCAL_SYNC=ON ^
-DIREE_HAL_DRIVER_LOCAL_TASK=ON ^
-DIREE_TARGET_BACKEND_DEFAULTS=OFF ^
-DIREE_TARGET_BACKEND_LLVM_CPU=ON ^
-DIREE_ERROR_ON_MISSING_SUBMODULES=OFF ^
-DIREE_EMBEDDED_RELEASE_INFO=ON ^
-DIREE_RELEASE_VERSION=%IREE_COMPILER_VERSION_STRING% ^
-DIREE_RELEASE_REVISION=%IREE_GIT_COMMIT%
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
cmake --build "%BUILD_DIR%\iree-compiler"
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
ENDLOCAL
ECHO:
ECHO Building IREE Compiler: Done
ECHO:
) ELSE (
ECHO:
ECHO Building IREE Compiler: Incremental build... Please do not use for Release build.
ECHO:
SETLOCAL
CALL "%VCVARSALL_PATH%" x64 %WIN_SDK_FOR_IREE% -vcvars_ver=%VC_TOOLSET%
cmake --build "%BUILD_DIR%\iree-compiler"
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
ENDLOCAL
ECHO:
)
ECHO =========================================
ECHO ======== Building NNEMlirTools ==========
ECHO =========================================
IF NOT EXIST "%BUILD_DIR%\NNEMlirTools" (
SETLOCAL
CALL "%VCVARSALL_PATH%" x64 %WIN_SDK_FOR_IREE% -vcvars_ver=%VC_TOOLSET%
cmake -G Ninja -B "%BUILD_DIR%/NNEMlirTools" "%UE_SOURCE_DIR%\NNEMlirTools" ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^
-DUE_IREE_BUILD_ROOT="%BUILD_DIR%" ^
-DIREE_ENABLE_CPUINFO=OFF ^
-DIREE_BUILD_TESTS=OFF ^
-DIREE_BUILD_SAMPLES=OFF ^
-DIREE_BUILD_BINDINGS_TFLITE=OFF ^
-DIREE_BUILD_BINDINGS_TFLITE_JAVA=OFF ^
-DIREE_BUILD_ALL_CHECK_TEST_MODULES=OFF ^
-DIREE_HAL_DRIVER_DEFAULTS=OFF ^
-DIREE_HAL_DRIVER_LOCAL_SYNC=OFF ^
-DIREE_HAL_DRIVER_LOCAL_TASK=OFF ^
-DIREE_TARGET_BACKEND_DEFAULTS=OFF ^
-DIREE_TARGET_BACKEND_LLVM_CPU=OFF ^
-DIREE_ERROR_ON_MISSING_SUBMODULES=OFF
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
cmake --build "%BUILD_DIR%/NNEMlirTools"
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
ENDLOCAL
ECHO:
ECHO Building NNEMlirTools: Done
ECHO:
) ELSE (
ECHO:
ECHO Building NNEMlirTools: Incremental build... Please do not use for Release build.
ECHO:
SETLOCAL
CALL "%VCVARSALL_PATH%" x64 %WIN_SDK_FOR_IREE% -vcvars_ver=%VC_TOOLSET%
cmake --build "%BUILD_DIR%/NNEMlirTools"
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
ENDLOCAL
ECHO:
)
ECHO =========================================
ECHO ======= Building Windows Runtime ========
ECHO =========================================
:: Need to sanitize for cmake
SET "UE_CMAKE_DIR_SANITIZED=%UE_CMAKE_DIR:\=/%"
ECHO Sanitized path: "%UE_CMAKE_DIR_SANITIZED%"
IF NOT EXIST "%BUILD_DIR%\iree-runtime-windows" (
SETLOCAL
CALL "%VCVARSALL_PATH%" x64 %WIN_SDK_FOR_RUNTIME% -vcvars_ver=%VC_TOOLSET%
cmake -G Ninja -B "%BUILD_DIR%\iree-runtime-windows" "%UE_SOURCE_DIR%\iree\runtime" ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^
-DCMAKE_MODULE_PATH="%UE_CMAKE_DIR_SANITIZED%" ^
-DUE_IREE_BUILD_ROOT="%BUILD_DIR%" ^
-DIREE_ENABLE_CPUINFO=OFF ^
-DIREE_BUILD_TESTS=OFF ^
-DIREE_BUILD_SAMPLES=OFF ^
-DIREE_BUILD_BINDINGS_TFLITE=OFF ^
-DIREE_BUILD_BINDINGS_TFLITE_JAVA=OFF ^
-DIREE_BUILD_ALL_CHECK_TEST_MODULES=OFF ^
-DIREE_HAL_DRIVER_DEFAULTS=OFF ^
-DIREE_HAL_DRIVER_LOCAL_SYNC=ON ^
-DIREE_HAL_DRIVER_LOCAL_TASK=ON ^
-DIREE_TARGET_BACKEND_DEFAULTS=OFF ^
-DIREE_TARGET_BACKEND_LLVM_CPU=ON ^
-DIREE_ERROR_ON_MISSING_SUBMODULES=OFF ^
-DIREE_BUILD_COMPILER=OFF ^
-DIREE_ENABLE_THREADING=ON ^
-DIREE_HAL_EXECUTABLE_LOADER_DEFAULTS=OFF ^
-DIREE_HAL_EXECUTABLE_PLUGIN_DEFAULTS=OFF
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
cmake --build "%BUILD_DIR%\iree-runtime-windows"
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
ENDLOCAL
ECHO:
ECHO Building Windows Runtime: Done
ECHO:
) ELSE (
ECHO:
ECHO Building Windows Runtime: Incremental build... Please do not use for Release build.
ECHO:
SETLOCAL
CALL "%VCVARSALL_PATH%" x64 %WIN_SDK_FOR_RUNTIME% -vcvars_ver=%VC_TOOLSET%
cmake --build "%BUILD_DIR%\iree-runtime-windows"
IF ERRORLEVEL 1 (ENDLOCAL & GOTO :fail )
ENDLOCAL
ECHO:
)
:: Run additional platform build scripts
FOR %%i IN (%PLATFORM_LIST% "") DO IF NOT "%%~i"=="" (
CALL "%UE_PLUGIN_ROOT%\..\..\..\Platforms\%%~i\Plugins\Experimental\NNERuntimeIREE\Source\ExternalBuild\Scripts\Windows\BuildWindows.bat" "%BUILD_DIR%" "%BUILD_TYPE%" "%UE_CMAKE_DIR_SANITIZED%"
IF ERRORLEVEL 1 GOTO :fail
)
ENDLOCAL
EXIT /B 0
:fail
ECHO.
ECHO Build script failed. Exiting 1>&2
ENDLOCAL & EXIT /B 1