Files
UnrealEngineUWP/Engine/Build/BatchFiles/BuildUAT.sh
joe kirchoff f1edb85ce3 Fix up code compile batch scripts to better support visual studio
* If invoked from VS2022, use visual studio to build UnrealBuildTool to prevent unnecessary rebuilds
* If invoked from VS2019 or on the command line without visual studio, use bundled dotnet to build
* Deduplicate all logic into Build.bat, and have Clean.bat and Rebuild.bat call Build.bat with either -Clean or -Rebuild
* Print entire dotnet version
* Replace various calls to dotnet msbuild with dotnet build
* Update old UE4 comments

#jira UE-165754
#rb ?

[CL 22387871 by joe kirchoff in ue5-main branch]
2022-10-06 19:45:24 -04:00

95 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
## Unreal Engine AutomationTool build script
## Copyright Epic Games, Inc. All Rights Reserved
##
## This script is expecting to exist in the Engine/Build/BatchFiles directory. It will not work correctly
## if you copy it to a different location and run it.
## First, make sure the batch file exists in the folder we expect it to. This is necessary in order to
## verify that our relative path to the /Engine/Source directory is correct
SCRIPT_DIR=$(cd "`dirname "$0"`" && pwd)
pushd "$SCRIPT_DIR/../../Source" >/dev/null
if [ ! -f ../Build/BatchFiles/BuildUAT.sh ]; then
echo
echo "BuildUAT ERROR: The script does not appear to be located in the /Engine/Build/BatchFiles directory. This script must be run from within that directory."
echo
popd >/dev/null
exit 1
fi
MSBuild_Verbosity="${1:quiet}"
# Check to see if the files in the AutomationTool, EpicGames.Build, EpicGames.Core, or UnrealBuildTool
# directory have changed.
mkdir -p ../Intermediate/Build
PERFORM_REBUILD=0
if [ "$1" == "FORCE" ]; then
PERFORM_REBUILD=1
echo "Rebuilding: build requested"
elif [ ! -f ../Binaries/DotNET/AutomationTool/AutomationTool.dll ]; then
PERFORM_REBUILD=1
echo "Rebuilding: AutomationTool assembly not found"
elif [ -f ../Intermediate/Build/AutomationToolLastBuildTime ]; then
UPDATED_DEP_FILES="$(find \
Programs/Shared/EpicGames.Core Programs/Shared/EpicGames.Build Programs/Shared/EpicGames.MsBuild Programs/Shared/EpicGames.UHT Programs/UnrealBuildTool \
-type f \
\( -iname \*.cs -or -iname \*.csproj \) \
-newer ../Intermediate/Build/AutomationToolLastBuildTime)"
if [ -n "$UPDATED_DEP_FILES" ]; then
PERFORM_REBUILD=1
echo "Rebuilding: found updated files:"
echo "$UPDATED_DEP_FILES"
fi
UPDATED_AUTOMATIONTOOL_FILES="$(find \
Programs/Shared \
Programs/AutomationTool \
-maxdepth 1 \
-type f \
\( -iname \*.cs -or -iname \*.csproj \) \
-newer ../Intermediate/Build/AutomationToolLastBuildTime)"
if [ -n "$UPDATED_AUTOMATIONTOOL_FILES" ]; then
PERFORM_REBUILD=1
echo "Rebuilding: Found updated files:"
echo "$UPDATED_AUTOMATIONTOOL_FILES"
fi
else
PERFORM_REBUILD=1
echo "Rebuilding: No record of previous builld"
fi
if [ $PERFORM_REBUILD -eq 1 ]; then
if [ "$(uname)" = "Darwin" ]; then
# Setup Environment
source "$SCRIPT_DIR/Mac/SetupEnvironment.sh" -dotnet "$SCRIPT_DIR/Mac"
fi
if [ "$(uname)" = "Linux" ]; then
# Setup Environment
source "$SCRIPT_DIR/Linux/SetupEnvironment.sh" $EnvironmentType "$SCRIPT_DIR/Linux"
fi
dotnet build Programs/AutomationTool/AutomationTool.csproj -c Development -v $MSBuild_Verbosity
if [ $? -ne 0 ]; then
echo "Compilation failed"
popd >/dev/null
exit 1
fi
touch ../Intermediate/Build/AutomationToolLastBuildTime
else
echo "AutomationTool.dll is up to date"
fi
popd >/dev/null
exit 0