Files
UnrealEngineUWP/Engine/Source/Developer/Windows/LiveCodingServer/Private/LiveCodingServer.cpp
Ben Marsh 0b8abb31d2 Live Coding: Fixes issue linking patch DLLs with Visual Studio Express, due to PATH environment variable not including path to mspdb140.dll.
Now stores the linker environment block in the live coding manifest, and adds it to the cache before executing the linker.

#rb none
#jira UE-72324

[CL 5740602 by Ben Marsh in 4.22 branch]
2019-04-04 11:55:49 -04:00

108 lines
2.6 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "LiveCodingServer.h"
#include "External/LC_Scheduler.h"
#include "External/LC_UniqueId.h"
#include "External/LC_FileUtil.h"
#include "External/LC_AppSettings.h"
#include "External/LC_ServerCommandThread.h"
#include "External/LC_Compiler.h"
#include "External/LC_Environment.h"
FLiveCodingServer* GLiveCodingServer = nullptr;
////////////////
FLiveCodingServer::FLiveCodingServer()
{
CommandThread = nullptr;
}
FLiveCodingServer::~FLiveCodingServer()
{
check(CommandThread == nullptr);
}
void FLiveCodingServer::Start(const wchar_t* InProcessGroupName)
{
ProcessGroupName = InProcessGroupName;
scheduler::Startup();
file::Startup();
uniqueId::Startup();
appSettings::Startup(ProcessGroupName.c_str());
check(CommandThread == nullptr);
CommandThread = new ServerCommandThread(nullptr, ProcessGroupName.c_str(), RunMode::EXTERNAL_BUILD_SYSTEM);
}
void FLiveCodingServer::Stop()
{
delete CommandThread;
CommandThread = nullptr;
appSettings::Shutdown();
uniqueId::Shutdown();
file::Shutdown();
scheduler::Shutdown();
ProcessGroupName.clear();
}
void FLiveCodingServer::SetLinkerPath(const wchar_t* LinkerPath, const TMap<FString, FString>& LinkerEnvironment)
{
appSettings::g_linkerPath->SetValueWithoutSaving(LinkerPath);
appSettings::UpdateLinkerPathCache();
if (LinkerEnvironment.Num() > 0)
{
environment::Block* block = environment::CreateBlockFromMap(LinkerEnvironment);
compiler::AddEnvironmentToCache(LinkerPath, block);
}
}
ILiveCodingServer::FBringToFrontDelegate& FLiveCodingServer::GetBringToFrontDelegate()
{
return BringToFrontDelegate;
}
ILiveCodingServer::FClearOutputDelegate& FLiveCodingServer::GetClearOutputDelegate()
{
return ClearOutputDelegate;
}
ILiveCodingServer::FStatusChangeDelegate& FLiveCodingServer::GetStatusChangeDelegate()
{
return StatusChangeDelegate;
}
ILiveCodingServer::FLogOutputDelegate& FLiveCodingServer::GetLogOutputDelegate()
{
return LogOutputDelegate;
}
ILiveCodingServer::FCompileDelegate& FLiveCodingServer::GetCompileDelegate()
{
return CompileDelegate;
}
ILiveCodingServer::FCompileStartedDelegate& FLiveCodingServer::GetCompileStartedDelegate()
{
return CompileStartedDelegate;
}
ILiveCodingServer::FCompileFinishedDelegate& FLiveCodingServer::GetCompileFinishedDelegate()
{
return CompileFinishedDelegate;
}
ILiveCodingServer::FShowConsoleDelegate& FLiveCodingServer::GetShowConsoleDelegate()
{
return ShowConsoleDelegate;
}
ILiveCodingServer::FSetVisibleDelegate& FLiveCodingServer::GetSetVisibleDelegate()
{
return SetVisibleDelegate;
}