219 lines
5.8 KiB
Bash
Executable File
219 lines
5.8 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
#
|
|
# This script builds all the required targets for the NNERuntimeIREE plugin.
|
|
#
|
|
# If an intermediate step fails, the script exits.
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: [Script] [Working dir]"
|
|
exit 1
|
|
fi
|
|
|
|
WORKING_DIR=$1
|
|
|
|
BUILD_DIR=$WORKING_DIR/iree-org
|
|
BUILD_SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
|
UE_SOURCE_DIR=$BUILD_SCRIPT_DIR/../../Source
|
|
UE_PATCHES_DIR=$BUILD_SCRIPT_DIR/../../Patch
|
|
UE_CMAKE_DIR=$BUILD_SCRIPT_DIR/../../CMake
|
|
UE_PLUGIN_ROOT=$BUILD_SCRIPT_DIR/../../../..
|
|
|
|
echo Plugin root dir: "$UE_PLUGIN_ROOT"
|
|
echo Build dir: "$BUILD_DIR"
|
|
echo Source dir: "$UE_SOURCE_DIR"
|
|
|
|
IREE_GIT_REPOSITORY=https://github.com/iree-org/iree.git
|
|
IREE_GIT_COMMIT=v3.5.0
|
|
IREE_THIRD_PARTY_LIBRARIES=("flatcc" "llvm-project" "stablehlo" "torch-mlir" "benchmark" "spirv_cross")
|
|
IREE_COMPILER_VERSION_STRING="IREE-for-UE"
|
|
|
|
BUILD_TYPE=Release
|
|
|
|
# Unreal Shader compiler plugin
|
|
IREE_CMAKE_PLUGIN_PATH=../../Iree/Compiler/Plugins/Target/UnrealShader
|
|
|
|
SPIRV_CROSS_DIR=$BUILD_DIR/iree/third_party/spirv_cross
|
|
|
|
OSX_TARGET=13.0
|
|
ARCHITECTURES="arm64;x86_64"
|
|
|
|
|
|
echo =========================================
|
|
echo ============= Copy Source ===============
|
|
echo =========================================
|
|
|
|
mkdir -p "$WORKING_DIR/iree/compiler"
|
|
cp -a "$UE_SOURCE_DIR/Iree/Compiler/." "$WORKING_DIR/iree/compiler/" > /dev/null
|
|
|
|
echo
|
|
echo Copied IREE compiler plugin.
|
|
echo
|
|
|
|
|
|
echo =========================================
|
|
echo ============= Cloning IREE =============
|
|
echo =========================================
|
|
|
|
if [ ! -d "$BUILD_DIR/iree" ]; then
|
|
mkdir $BUILD_DIR 2>/dev/null
|
|
cd $BUILD_DIR
|
|
git clone -n $IREE_GIT_REPOSITORY
|
|
cd iree
|
|
echo Using IREE git commit $IREE_GIT_COMMIT
|
|
git checkout $IREE_GIT_COMMIT
|
|
cd third_party
|
|
for D in */; do
|
|
if [ ! -f "$D/CMakeLists.txt" ]; then
|
|
echo -n "" > "$D/CMakeLists.txt"
|
|
fi
|
|
done
|
|
for L in ${IREE_THIRD_PARTY_LIBRARIES[@]}; do
|
|
if [ -d $L ]; then
|
|
rm "$L/CMakeLists.txt"
|
|
git submodule update --init -- $L
|
|
if [ -d "$L/third-party" ]; then
|
|
rm -R -f "$L/third-party"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
cd ../../..
|
|
|
|
echo Check for $SPIRV_CROSS_DIR
|
|
if [ -d "$SPIRV_CROSS_DIR" ]; then
|
|
echo Apply git patch to spirv_cross
|
|
cd $SPIRV_CROSS_DIR
|
|
git apply $UE_PATCHES_DIR/spirv_cross.patch
|
|
cd ../../../..
|
|
echo Done.
|
|
fi
|
|
|
|
echo
|
|
echo Cloning IREE: Done
|
|
echo
|
|
else
|
|
echo
|
|
echo Cloning IREE: Skipped
|
|
echo
|
|
fi
|
|
|
|
echo =========================================
|
|
echo ======== Building IREE Compiler =========
|
|
echo =========================================
|
|
|
|
if [ ! -d "$BUILD_DIR/iree-compiler" ]; then
|
|
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 \
|
|
-DCMAKE_OSX_ARCHITECTURES="$ARCHITECTURES" \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_TARGET \
|
|
-DIREE_EMBEDDED_RELEASE_INFO=ON \
|
|
-DIREE_RELEASE_VERSION=$IREE_COMPILER_VERSION_STRING \
|
|
-DIREE_RELEASE_REVISION=$IREE_GIT_COMMIT
|
|
|
|
cmake --build $BUILD_DIR/iree-compiler
|
|
|
|
echo
|
|
echo Building Compiler: Done
|
|
echo
|
|
else
|
|
echo
|
|
echo Building Compiler: Incremental build... Please do not use for production.
|
|
echo
|
|
|
|
cmake --build $BUILD_DIR/iree-compiler
|
|
fi
|
|
|
|
|
|
echo =========================================
|
|
echo ======== Building NNEMlirTools ==========
|
|
echo =========================================
|
|
|
|
if [ ! -d "$BUILD_DIR/NNEMlirTools" ]; then
|
|
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 \
|
|
-DCMAKE_OSX_ARCHITECTURES="$ARCHITECTURES" \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_TARGET
|
|
|
|
cmake --build $BUILD_DIR/NNEMlirTools
|
|
|
|
echo
|
|
echo Building NNEMlirTools: Done
|
|
echo
|
|
else
|
|
echo
|
|
echo Building NNEMlirTools: Incremental build... Please do not use for production.
|
|
echo
|
|
|
|
cmake --build $BUILD_DIR/NNEMlirTools
|
|
fi
|
|
|
|
|
|
echo =========================================
|
|
echo ========= Building Mac Runtime ==========
|
|
echo =========================================
|
|
|
|
if [ ! -d "$BUILD_DIR/iree-runtime-mac" ]; then
|
|
cmake -G Ninja -B $BUILD_DIR/iree-runtime-mac $UE_SOURCE_DIR/Iree/Runtime \
|
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
|
-DCMAKE_MODULE_PATH=$UE_CMAKE_DIR \
|
|
-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 \
|
|
-DCMAKE_OSX_ARCHITECTURES="$ARCHITECTURES" \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_TARGET
|
|
|
|
cmake --build $BUILD_DIR/iree-runtime-mac
|
|
|
|
echo
|
|
echo Building Mac Runtime: Done
|
|
echo
|
|
else
|
|
echo
|
|
echo Building Mac Runtime: Skipped
|
|
echo
|
|
fi
|