2016-01-07 08:17:16 -05:00
|
|
|
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
#include "TargetPlatformPrivatePCH.h"
|
2014-07-23 17:11:42 -04:00
|
|
|
#include "PlatformInfo.h"
|
2014-09-05 13:31:22 -04:00
|
|
|
#include "DesktopPlatformModule.h"
|
2014-09-09 16:30:29 -04:00
|
|
|
#include "IPhysXFormatModule.h"
|
|
|
|
|
#include "IPhysXFormat.h"
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
DEFINE_LOG_CATEGORY_STATIC(LogTargetPlatformManager, Log, All);
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
|
2014-07-22 17:59:23 -04:00
|
|
|
// autosdks only function properly on windows right now.
|
|
|
|
|
#if !IS_MONOLITHIC && (PLATFORM_WINDOWS)
|
2014-09-21 20:35:48 -04:00
|
|
|
#define AUTOSDKS_ENABLED 1
|
2014-07-22 17:59:23 -04:00
|
|
|
#else
|
2014-09-21 20:35:48 -04:00
|
|
|
#define AUTOSDKS_ENABLED 0
|
2014-07-22 17:59:23 -04:00
|
|
|
#endif
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
/**
|
|
|
|
|
* Module for the target platform manager
|
|
|
|
|
*/
|
|
|
|
|
class FTargetPlatformManagerModule
|
|
|
|
|
: public ITargetPlatformManagerModule
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
/** Default constructor. */
|
2014-03-14 14:13:41 -04:00
|
|
|
FTargetPlatformManagerModule()
|
2015-04-10 09:30:29 -04:00
|
|
|
: bRestrictFormatsToRuntimeOnly(false)
|
|
|
|
|
, bForceCacheUpdate(true)
|
|
|
|
|
, bIgnoreFirstDelegateCall(true)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2014-07-22 17:59:23 -04:00
|
|
|
#if AUTOSDKS_ENABLED
|
2014-08-13 09:53:04 -04:00
|
|
|
|
2014-08-13 09:37:59 -04:00
|
|
|
// AutoSDKs only enabled if UE_SDKS_ROOT is set.
|
2014-08-13 09:53:04 -04:00
|
|
|
if (IsAutoSDKsEnabled())
|
2014-08-13 09:37:59 -04:00
|
|
|
{
|
2015-04-09 05:54:05 -04:00
|
|
|
DECLARE_SCOPE_CYCLE_COUNTER( TEXT( "FTargetPlatformManagerModule.StartAutoSDK" ), STAT_FTargetPlatformManagerModule_StartAutoSDK, STATGROUP_TargetPlatform );
|
|
|
|
|
|
2014-08-13 09:37:59 -04:00
|
|
|
// amortize UBT cost by calling it once for all platforms, rather than once per platform.
|
2015-07-06 10:03:34 -04:00
|
|
|
if (FParse::Param(FCommandLine::Get(), TEXT("Multiprocess"))==false)
|
2014-07-23 17:11:42 -04:00
|
|
|
{
|
2015-07-06 10:03:34 -04:00
|
|
|
FString UBTParams(TEXT("-autosdkonly"));
|
|
|
|
|
int32 UBTReturnCode = -1;
|
|
|
|
|
FString UBTOutput;
|
|
|
|
|
if (!FDesktopPlatformModule::Get()->InvokeUnrealBuildToolSync(UBTParams, *GLog, true, UBTReturnCode, UBTOutput))
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Fatal, TEXT("Failed to run UBT to check SDK status!"));
|
|
|
|
|
}
|
2014-08-13 09:37:59 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// we have to setup our local environment according to AutoSDKs or the ITargetPlatform's IsSDkInstalled calls may fail
|
|
|
|
|
// before we get a change to setup for a given platform. Use the platforminfo list to avoid any kind of interdependency.
|
|
|
|
|
int32 NumPlatforms;
|
|
|
|
|
const PlatformInfo::FPlatformInfo* PlatformInfoArray = PlatformInfo::GetPlatformInfoArray(NumPlatforms);
|
|
|
|
|
for (int32 i = 0; i < NumPlatforms; ++i)
|
|
|
|
|
{
|
|
|
|
|
const PlatformInfo::FPlatformInfo& PlatformInfo = PlatformInfoArray[i];
|
|
|
|
|
if (PlatformInfo.AutoSDKPath.Len() > 0)
|
|
|
|
|
{
|
|
|
|
|
SetupAndValidateAutoSDK(PlatformInfo.AutoSDKPath);
|
|
|
|
|
}
|
2014-07-23 17:11:42 -04:00
|
|
|
}
|
|
|
|
|
}
|
2014-07-22 17:59:23 -04:00
|
|
|
#endif
|
|
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
SetupSDKStatus();
|
2015-04-10 09:30:29 -04:00
|
|
|
//GetTargetPlatforms(); redudant with next call
|
2014-03-14 14:13:41 -04:00
|
|
|
GetActiveTargetPlatforms();
|
|
|
|
|
GetAudioFormats();
|
|
|
|
|
GetTextureFormats();
|
|
|
|
|
GetShaderFormats();
|
|
|
|
|
|
|
|
|
|
bForceCacheUpdate = false;
|
|
|
|
|
|
|
|
|
|
FModuleManager::Get().OnModulesChanged().AddRaw(this, &FTargetPlatformManagerModule::ModulesChangesCallback);
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
/** Destructor. */
|
2014-03-14 14:13:41 -04:00
|
|
|
virtual ~FTargetPlatformManagerModule()
|
|
|
|
|
{
|
|
|
|
|
FModuleManager::Get().OnModulesChanged().RemoveAll(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
// ITargetPlatformManagerModule interface
|
|
|
|
|
|
2015-04-01 07:20:55 -04:00
|
|
|
virtual void Invalidate() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
bForceCacheUpdate = true;
|
|
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
SetupSDKStatus();
|
2015-04-10 09:30:29 -04:00
|
|
|
//GetTargetPlatforms(); redudant with next call
|
2014-03-14 14:13:41 -04:00
|
|
|
GetActiveTargetPlatforms();
|
|
|
|
|
GetAudioFormats();
|
|
|
|
|
GetTextureFormats();
|
|
|
|
|
GetShaderFormats();
|
|
|
|
|
|
|
|
|
|
bForceCacheUpdate = false;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<ITargetPlatform*>& GetTargetPlatforms() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
if (Platforms.Num() == 0 || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
DiscoverAvailablePlatforms();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Platforms;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual ITargetDevicePtr FindTargetDevice(const FTargetDeviceId& DeviceId) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
ITargetPlatform* Platform = FindTargetPlatform(DeviceId.GetPlatformName());
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
if (Platform != nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
return Platform->GetDevice(DeviceId);
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
return nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual ITargetPlatform* FindTargetPlatform(FString Name) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
const TArray<ITargetPlatform*>& TargetPlatforms = GetTargetPlatforms();
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < TargetPlatforms.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
if (TargetPlatforms[Index]->PlatformName() == Name)
|
|
|
|
|
{
|
|
|
|
|
return TargetPlatforms[Index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
return nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<ITargetPlatform*>& GetCookingTargetPlatforms() override
|
2014-04-23 16:44:02 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
static TArray<ITargetPlatform*> Results;
|
|
|
|
|
|
|
|
|
|
if ( !bInitialized || bForceCacheUpdate )
|
|
|
|
|
{
|
|
|
|
|
Results = GetActiveTargetPlatforms();
|
|
|
|
|
|
|
|
|
|
FString PlatformStr;
|
|
|
|
|
if (FParse::Value(FCommandLine::Get(), TEXT("TARGETPLATFORM="), PlatformStr))
|
|
|
|
|
{
|
|
|
|
|
if (PlatformStr == TEXT("None"))
|
|
|
|
|
{
|
|
|
|
|
Results = Platforms;
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-09-16 12:15:46 -04:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Results = Platforms;
|
|
|
|
|
}
|
2014-04-23 16:44:02 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Results;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<ITargetPlatform*>& GetActiveTargetPlatforms() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
static TArray<ITargetPlatform*> Results;
|
|
|
|
|
|
|
|
|
|
if (!bInitialized || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
bInitialized = true;
|
|
|
|
|
|
|
|
|
|
Results.Empty(Results.Num());
|
|
|
|
|
|
|
|
|
|
const TArray<ITargetPlatform*>& TargetPlatforms = GetTargetPlatforms();
|
|
|
|
|
|
|
|
|
|
FString PlatformStr;
|
|
|
|
|
|
|
|
|
|
if (FParse::Value(FCommandLine::Get(), TEXT("TARGETPLATFORM="), PlatformStr))
|
|
|
|
|
{
|
|
|
|
|
if (PlatformStr == TEXT("None"))
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
else if (PlatformStr == TEXT("All"))
|
|
|
|
|
{
|
|
|
|
|
Results = TargetPlatforms;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
TArray<FString> PlatformNames;
|
|
|
|
|
|
2015-03-02 15:51:37 -05:00
|
|
|
PlatformStr.ParseIntoArray(PlatformNames, TEXT("+"), true);
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2014-09-30 13:28:26 -04:00
|
|
|
// for nicer user response
|
|
|
|
|
FString AvailablePlatforms;
|
|
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
for (int32 Index = 0; Index < TargetPlatforms.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
if (PlatformNames.Contains(TargetPlatforms[Index]->PlatformName()))
|
2014-07-22 17:59:23 -04:00
|
|
|
{
|
|
|
|
|
Results.Add(TargetPlatforms[Index]);
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
2014-09-30 13:28:26 -04:00
|
|
|
|
|
|
|
|
if(!AvailablePlatforms.IsEmpty())
|
|
|
|
|
{
|
|
|
|
|
AvailablePlatforms += TEXT(", ");
|
|
|
|
|
}
|
|
|
|
|
AvailablePlatforms += TargetPlatforms[Index]->PlatformName();
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Results.Num() == 0)
|
|
|
|
|
{
|
|
|
|
|
// An invalid platform was specified...
|
|
|
|
|
// Inform the user and exit.
|
2015-04-21 18:57:46 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Error, TEXT("Invalid target platform specified (%s). Available = { %s } "), *PlatformStr, *AvailablePlatforms);
|
2014-09-30 13:28:26 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Fatal, TEXT("Invalid target platform specified (%s). Available = { %s } "), *PlatformStr, *AvailablePlatforms);
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// if there is no argument, use the current platform and only build formats that are actually needed to run.
|
|
|
|
|
bRestrictFormatsToRuntimeOnly = true;
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < TargetPlatforms.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
if (TargetPlatforms[Index]->IsRunningPlatform())
|
2014-07-22 17:59:23 -04:00
|
|
|
{
|
|
|
|
|
Results.Add(TargetPlatforms[Index]);
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!Results.Num())
|
|
|
|
|
{
|
2014-05-01 01:01:20 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Display, TEXT("Not building assets for any platform."));
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (int32 Index = 0; Index < Results.Num(); Index++)
|
|
|
|
|
{
|
2014-05-01 01:01:20 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Display, TEXT("Building Assets For %s"), *Results[Index]->PlatformName());
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Results;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual bool RestrictFormatsToRuntimeOnly() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
GetActiveTargetPlatforms(); // make sure this is initialized
|
|
|
|
|
|
|
|
|
|
return bRestrictFormatsToRuntimeOnly;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual ITargetPlatform* GetRunningTargetPlatform() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
2014-09-21 20:35:48 -04:00
|
|
|
static ITargetPlatform* Result = nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
if (!bInitialized || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
bInitialized = true;
|
2014-09-21 20:35:48 -04:00
|
|
|
Result = nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
const TArray<ITargetPlatform*>& TargetPlatforms = GetTargetPlatforms();
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < TargetPlatforms.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
if (TargetPlatforms[Index]->IsRunningPlatform())
|
|
|
|
|
{
|
|
|
|
|
// we should not have two running platforms
|
2014-09-21 20:35:48 -04:00
|
|
|
checkf((Result == nullptr),
|
2014-03-14 14:13:41 -04:00
|
|
|
TEXT("Found multiple running platforms.\n\t%s\nand\n\t%s"),
|
|
|
|
|
*Result->PlatformName(),
|
|
|
|
|
*TargetPlatforms[Index]->PlatformName()
|
|
|
|
|
);
|
|
|
|
|
Result = TargetPlatforms[Index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Result;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<const IAudioFormat*>& GetAudioFormats() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
static TArray<const IAudioFormat*> Results;
|
|
|
|
|
|
|
|
|
|
if (!bInitialized || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
bInitialized = true;
|
|
|
|
|
Results.Empty(Results.Num());
|
|
|
|
|
|
|
|
|
|
TArray<FName> Modules;
|
|
|
|
|
|
|
|
|
|
FModuleManager::Get().FindModules(TEXT("*AudioFormat*"), Modules);
|
|
|
|
|
|
|
|
|
|
if (!Modules.Num())
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Error, TEXT("No target audio formats found!"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < Modules.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
IAudioFormatModule* Module = FModuleManager::LoadModulePtr<IAudioFormatModule>(Modules[Index]);
|
|
|
|
|
if (Module)
|
|
|
|
|
{
|
|
|
|
|
IAudioFormat* Format = Module->GetAudioFormat();
|
2014-09-21 20:35:48 -04:00
|
|
|
if (Format != nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
Results.Add(Format);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Results;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const IAudioFormat* FindAudioFormat(FName Name) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
const TArray<const IAudioFormat*>& AudioFormats = GetAudioFormats();
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < AudioFormats.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
TArray<FName> Formats;
|
|
|
|
|
|
|
|
|
|
AudioFormats[Index]->GetSupportedFormats(Formats);
|
|
|
|
|
|
|
|
|
|
for (int32 FormatIndex = 0; FormatIndex < Formats.Num(); FormatIndex++)
|
|
|
|
|
{
|
|
|
|
|
if (Formats[FormatIndex] == Name)
|
|
|
|
|
{
|
|
|
|
|
return AudioFormats[Index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
return nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<const ITextureFormat*>& GetTextureFormats() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
static TArray<const ITextureFormat*> Results;
|
|
|
|
|
|
|
|
|
|
if (!bInitialized || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
bInitialized = true;
|
|
|
|
|
Results.Empty(Results.Num());
|
|
|
|
|
|
|
|
|
|
TArray<FName> Modules;
|
|
|
|
|
|
|
|
|
|
FModuleManager::Get().FindModules(TEXT("*TextureFormat*"), Modules);
|
|
|
|
|
|
|
|
|
|
if (!Modules.Num())
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Error, TEXT("No target texture formats found!"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < Modules.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
ITextureFormatModule* Module = FModuleManager::LoadModulePtr<ITextureFormatModule>(Modules[Index]);
|
|
|
|
|
if (Module)
|
|
|
|
|
{
|
|
|
|
|
ITextureFormat* Format = Module->GetTextureFormat();
|
2014-09-21 20:35:48 -04:00
|
|
|
if (Format != nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
Results.Add(Format);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Results;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const ITextureFormat* FindTextureFormat(FName Name) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
const TArray<const ITextureFormat*>& TextureFormats = GetTextureFormats();
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < TextureFormats.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
TArray<FName> Formats;
|
|
|
|
|
|
|
|
|
|
TextureFormats[Index]->GetSupportedFormats(Formats);
|
|
|
|
|
|
|
|
|
|
for (int32 FormatIndex = 0; FormatIndex < Formats.Num(); FormatIndex++)
|
|
|
|
|
{
|
|
|
|
|
if (Formats[FormatIndex] == Name)
|
|
|
|
|
{
|
|
|
|
|
return TextureFormats[Index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
return nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<const IShaderFormat*>& GetShaderFormats() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
static TArray<const IShaderFormat*> Results;
|
|
|
|
|
|
|
|
|
|
if (!bInitialized || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
bInitialized = true;
|
|
|
|
|
Results.Empty(Results.Num());
|
|
|
|
|
|
|
|
|
|
TArray<FName> Modules;
|
|
|
|
|
|
|
|
|
|
FModuleManager::Get().FindModules(SHADERFORMAT_MODULE_WILDCARD, Modules);
|
|
|
|
|
|
|
|
|
|
if (!Modules.Num())
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Error, TEXT("No target shader formats found!"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < Modules.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
IShaderFormatModule* Module = FModuleManager::LoadModulePtr<IShaderFormatModule>(Modules[Index]);
|
|
|
|
|
if (Module)
|
|
|
|
|
{
|
|
|
|
|
IShaderFormat* Format = Module->GetShaderFormat();
|
2014-09-21 20:35:48 -04:00
|
|
|
if (Format != nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
Results.Add(Format);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Results;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const IShaderFormat* FindShaderFormat(FName Name) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
const TArray<const IShaderFormat*>& ShaderFormats = GetShaderFormats();
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < ShaderFormats.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
TArray<FName> Formats;
|
|
|
|
|
|
|
|
|
|
ShaderFormats[Index]->GetSupportedFormats(Formats);
|
|
|
|
|
|
|
|
|
|
for (int32 FormatIndex = 0; FormatIndex < Formats.Num(); FormatIndex++)
|
|
|
|
|
{
|
|
|
|
|
if (Formats[FormatIndex] == Name)
|
|
|
|
|
{
|
|
|
|
|
return ShaderFormats[Index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
return nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual uint16 ShaderFormatVersion(FName Name) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static TMap<FName, uint16> AlreadyFound;
|
|
|
|
|
uint16* Result = AlreadyFound.Find(Name);
|
|
|
|
|
|
|
|
|
|
if (!Result)
|
|
|
|
|
{
|
|
|
|
|
const IShaderFormat* SF = FindShaderFormat(Name);
|
|
|
|
|
|
|
|
|
|
if (SF)
|
|
|
|
|
{
|
|
|
|
|
Result = &AlreadyFound.Add(Name, SF->GetVersion(Name));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
check(Result);
|
|
|
|
|
|
|
|
|
|
return *Result;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const TArray<const IPhysXFormat*>& GetPhysXFormats() override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
static TArray<const IPhysXFormat*> Results;
|
|
|
|
|
|
|
|
|
|
if (!bInitialized || bForceCacheUpdate)
|
|
|
|
|
{
|
|
|
|
|
bInitialized = true;
|
|
|
|
|
Results.Empty(Results.Num());
|
|
|
|
|
|
|
|
|
|
TArray<FName> Modules;
|
|
|
|
|
FModuleManager::Get().FindModules(TEXT("PhysXFormat*"), Modules);
|
|
|
|
|
|
|
|
|
|
if (!Modules.Num())
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Error, TEXT("No target PhysX formats found!"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < Modules.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
IPhysXFormatModule* Module = FModuleManager::LoadModulePtr<IPhysXFormatModule>(Modules[Index]);
|
|
|
|
|
if (Module)
|
|
|
|
|
{
|
|
|
|
|
IPhysXFormat* Format = Module->GetPhysXFormat();
|
2014-09-21 20:35:48 -04:00
|
|
|
if (Format != nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
Results.Add(Format);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Results;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-13 06:14:46 -04:00
|
|
|
virtual const IPhysXFormat* FindPhysXFormat(FName Name) override
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
const TArray<const IPhysXFormat*>& PhysXFormats = GetPhysXFormats();
|
|
|
|
|
|
|
|
|
|
for (int32 Index = 0; Index < PhysXFormats.Num(); Index++)
|
|
|
|
|
{
|
|
|
|
|
TArray<FName> Formats;
|
|
|
|
|
|
|
|
|
|
PhysXFormats[Index]->GetSupportedFormats(Formats);
|
|
|
|
|
|
|
|
|
|
for (int32 FormatIndex = 0; FormatIndex < Formats.Num(); FormatIndex++)
|
|
|
|
|
{
|
|
|
|
|
if (Formats[FormatIndex] == Name)
|
|
|
|
|
{
|
|
|
|
|
return PhysXFormats[Index];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
return nullptr;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
/**
|
|
|
|
|
* Checks whether the AutoDesk software development kit (SDK) is enabled.
|
|
|
|
|
*
|
|
|
|
|
* @return true if the SDK is enabled, false otherwise.
|
|
|
|
|
*/
|
2014-08-13 09:53:04 -04:00
|
|
|
bool IsAutoSDKsEnabled()
|
|
|
|
|
{
|
|
|
|
|
static const FString SDKRootEnvFar(TEXT("UE_SDKS_ROOT"));
|
|
|
|
|
const int32 MaxPathSize = 16384;
|
|
|
|
|
TCHAR SDKPath[MaxPathSize] = { 0 };
|
|
|
|
|
FPlatformMisc::GetEnvironmentVariable(*SDKRootEnvFar, SDKPath, MaxPathSize);
|
|
|
|
|
|
|
|
|
|
// AutoSDKs only enabled if UE_SDKS_ROOT is set.
|
|
|
|
|
if (SDKPath[0] != 0)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
/** Discovers the available target platforms. */
|
2014-10-10 20:59:10 -04:00
|
|
|
void DiscoverAvailablePlatforms()
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2015-04-09 05:54:05 -04:00
|
|
|
DECLARE_SCOPE_CYCLE_COUNTER( TEXT( "FTargetPlatformManagerModule::DiscoverAvailablePlatforms" ), STAT_FTargetPlatformManagerModule_DiscoverAvailablePlatforms, STATGROUP_TargetPlatform );
|
|
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
Platforms.Empty(Platforms.Num());
|
|
|
|
|
|
|
|
|
|
TArray<FName> Modules;
|
|
|
|
|
|
2016-03-07 20:55:29 -05:00
|
|
|
FString ModuleWildCard = TEXT("*TargetPlatform");
|
|
|
|
|
|
|
|
|
|
#if WITH_EDITOR
|
|
|
|
|
// if we have the editor and we are using -game
|
|
|
|
|
// only need to instantiate the current platform
|
|
|
|
|
#if PLATFORM_WINDOWS
|
|
|
|
|
if (IsRunningGame())
|
|
|
|
|
{
|
|
|
|
|
ModuleWildCard = TEXT("Windows*TargetPlatform");
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
FModuleManager::Get().FindModules(*ModuleWildCard, Modules);
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
// remove this module from the list
|
|
|
|
|
Modules.Remove(FName(TEXT("TargetPlatform")));
|
|
|
|
|
|
|
|
|
|
if (!Modules.Num())
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Error, TEXT("No target platforms found!"));
|
|
|
|
|
}
|
|
|
|
|
|
2014-12-17 02:15:23 -05:00
|
|
|
FScopedSlowTask SlowTask(Modules.Num());
|
2014-03-14 14:13:41 -04:00
|
|
|
for (int32 Index = 0; Index < Modules.Num(); Index++)
|
|
|
|
|
{
|
2014-12-17 02:15:23 -05:00
|
|
|
SlowTask.EnterProgressFrame(1);
|
2014-03-14 14:13:41 -04:00
|
|
|
ITargetPlatformModule* Module = FModuleManager::LoadModulePtr<ITargetPlatformModule>(Modules[Index]);
|
|
|
|
|
if (Module)
|
|
|
|
|
{
|
|
|
|
|
ITargetPlatform* Platform = Module->GetTargetPlatform();
|
2014-09-21 20:35:48 -04:00
|
|
|
if (Platform != nullptr)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2014-07-22 17:59:23 -04:00
|
|
|
// would like to move this check to GetActiveTargetPlatforms, but too many things cache this result
|
2015-06-16 12:43:26 -04:00
|
|
|
// this setup will become faster after TTP 341897 is complete.
|
|
|
|
|
RETRY_SETUPANDVALIDATE:
|
2014-07-23 17:11:42 -04:00
|
|
|
if (SetupAndValidateAutoSDK(Platform->GetPlatformInfo().AutoSDKPath))
|
2014-07-22 17:59:23 -04:00
|
|
|
{
|
2015-04-10 09:30:29 -04:00
|
|
|
UE_LOG(LogTemp, Display, TEXT("Loaded TP %s"), *Modules[Index].ToString());
|
2014-07-22 17:59:23 -04:00
|
|
|
Platforms.Add(Platform);
|
|
|
|
|
}
|
2015-06-16 12:43:26 -04:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// this hack is here because if you try and setup and validate autosdk some times it will fail because shared files are in use by another child cooker
|
|
|
|
|
static bool bIsChildCooker = FParse::Param(FCommandLine::Get(), TEXT("cookchild"));
|
|
|
|
|
if (bIsChildCooker)
|
|
|
|
|
{
|
|
|
|
|
static int Counter = 0;
|
|
|
|
|
++Counter;
|
|
|
|
|
if (Counter < 10)
|
|
|
|
|
{
|
|
|
|
|
goto RETRY_SETUPANDVALIDATE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
UE_LOG(LogTemp, Display, TEXT("Failed to SetupAndValidateAutoSDK for platform %s"), *Modules[Index].ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTemp, Display, TEXT("Failed to get target platform %s"), *Modules[Index].ToString());
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-01 07:20:55 -04:00
|
|
|
bool UpdatePlatformEnvironment(FString PlatformName, TArray<FString> &Keys, TArray<FString> &Values) override
|
2015-01-20 10:05:42 -05:00
|
|
|
{
|
|
|
|
|
SetupEnvironmentVariables(Keys, Values);
|
|
|
|
|
return SetupSDKStatus(PlatformName);
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-23 17:11:42 -04:00
|
|
|
bool SetupAndValidateAutoSDK(const FString& AutoSDKPath)
|
2014-07-22 17:59:23 -04:00
|
|
|
{
|
2014-07-22 18:48:48 -04:00
|
|
|
#if AUTOSDKS_ENABLED
|
2014-07-22 17:59:23 -04:00
|
|
|
bool bValidSDK = false;
|
2014-07-23 17:11:42 -04:00
|
|
|
if (AutoSDKPath.Len() > 0)
|
|
|
|
|
{
|
|
|
|
|
FName PlatformFName(*AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
|
2014-07-23 17:11:42 -04:00
|
|
|
// cache result of the last setup attempt to avoid calling UBT all the time.
|
|
|
|
|
bool* bPreviousSetupSuccessful = PlatformsSetup.Find(PlatformFName);
|
|
|
|
|
if (bPreviousSetupSuccessful)
|
|
|
|
|
{
|
|
|
|
|
bValidSDK = *bPreviousSetupSuccessful;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bValidSDK = SetupEnvironmentFromAutoSDK(AutoSDKPath);
|
|
|
|
|
PlatformsSetup.Add(PlatformFName, bValidSDK);
|
|
|
|
|
}
|
2014-07-22 17:59:23 -04:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-07-23 17:11:42 -04:00
|
|
|
// if a platform has no AutoSDKPath, then just assume the SDK is installed, we have no basis for determining it.
|
|
|
|
|
bValidSDK = true;
|
2014-07-22 17:59:23 -04:00
|
|
|
}
|
|
|
|
|
return bValidSDK;
|
2014-07-22 18:48:48 -04:00
|
|
|
#else
|
|
|
|
|
return true;
|
|
|
|
|
#endif // AUTOSDKS_ENABLED
|
2014-07-22 17:59:23 -04:00
|
|
|
}
|
|
|
|
|
|
2014-07-23 17:11:42 -04:00
|
|
|
bool SetupEnvironmentFromAutoSDK(const FString& AutoSDKPath)
|
2014-07-22 17:59:23 -04:00
|
|
|
{
|
|
|
|
|
#if AUTOSDKS_ENABLED
|
2014-08-13 09:53:04 -04:00
|
|
|
|
|
|
|
|
if (!IsAutoSDKsEnabled())
|
2014-07-22 17:59:23 -04:00
|
|
|
{
|
|
|
|
|
return true;
|
2014-08-13 09:53:04 -04:00
|
|
|
}
|
2014-07-22 17:59:23 -04:00
|
|
|
|
2014-07-23 17:11:42 -04:00
|
|
|
// Invoke UBT to perform SDK switching, or detect that a proper manual SDK is already setup.
|
2014-07-22 17:59:23 -04:00
|
|
|
#if PLATFORM_WINDOWS
|
|
|
|
|
FString HostPlatform(TEXT("HostWin64"));
|
|
|
|
|
#else
|
|
|
|
|
#error Fill in your host platform directory
|
2014-07-23 17:11:42 -04:00
|
|
|
#endif
|
2014-07-22 17:59:23 -04:00
|
|
|
|
2014-08-13 09:53:04 -04:00
|
|
|
static const FString SDKRootEnvFar(TEXT("UE_SDKS_ROOT"));
|
|
|
|
|
const int32 MaxPathSize = 16384;
|
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2975196 on 2016/05/12 by Robert.Manuszewski
Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading.
- This way we can avoid very long GC times after new blueprints have been loaded.
- Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes)
Change 2993960 on 2016/05/30 by Robert.Manuszewski
Fixing leaked linkers created by blocking load requests during async loading.
Change 2959398 on 2016/04/28 by Steve.Robb
TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled.
#jira UE-20828
Change 2960723 on 2016/04/29 by Graeme.Thornton
Fix for texture asset import data being ignored when async loaded
Change 2960938 on 2016/04/29 by Robert.Manuszewski
Nulling out sql db handle after closing it.
Change 2967127 on 2016/05/05 by Steve.Robb
Move constructors explicitly disabled in generated code.
Change 2967143 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2967164 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer
Change 2968650 on 2016/05/06 by Steve.Robb
Fix for HotReload copying module manager.
Change 2968915 on 2016/05/06 by Robert.Manuszewski
Fixing spelling of SetImageIntegrityStatus function name.
Change 2970406 on 2016/05/09 by Steve.Robb
Static analysis fixes:
Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap.
Change 2970419 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
warning C6011: Dereferencing NULL pointer '...'.
warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read.
warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written.
Change 2970431 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results.
Change 2972032 on 2016/05/10 by Steven.Hutton
Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries.
Change 2972085 on 2016/05/10 by Steve.Robb
Const-correctness fix for FLogCategoryBase::IsSuppressed.
Change 2972087 on 2016/05/10 by Steve.Robb
ELogVerbosity moved into its own header.
Change 2972090 on 2016/05/10 by Steve.Robb
Redundant ensure removed.
Change 2972103 on 2016/05/10 by Steve.Robb
Removal of redundant use of USING_CODE_ANALYSIS.
Change 2972139 on 2016/05/10 by Steve.Robb
Fix for ensure macros throwing C6326 warnings during static analysis.
Change 2972147 on 2016/05/10 by Steve.Robb
Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis.
Change 2972162 on 2016/05/10 by Steve.Robb
SCOPE_CYCLE_COUNTER_GUARD removed.
Change 2972168 on 2016/05/10 by Steve.Robb
Compile error fix for logOrEnsureNanError in static analysis builds.
Change 2973084 on 2016/05/10 by Chris.Wood
Crash Report Server performance tweak
Change 2974030 on 2016/05/11 by Steve.Robb
Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*.
Change 2974053 on 2016/05/11 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2974191 on 2016/05/11 by Steve.Robb
Fix for template instantiation error in VS2013.
Change 2975298 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2975318 on 2016/05/12 by Steve.Robb
Fix for hot reload info being reported as warnings.
#jira UE-30586
Change 2975447 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator?
warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects.
warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead?
warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set.
Change 2975478 on 2016/05/12 by Steve.Robb
Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings.
Change 2975538 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'StaticResource'
Change 2976640 on 2016/05/13 by Robert.Manuszewski
Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked.
#jira UE-30675
Change 2978320 on 2016/05/16 by Steve.Robb
Fix for static analysis warnings in XNA headers.
Change 2978329 on 2016/05/16 by Steve.Robb
Static analysis fixes:
warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages.
Change 2980222 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2980458 on 2016/05/17 by Chris.Wood
Attempt to fix crash report submission problems from CRP to CR website
[UE-30257] - Crashreports are sometimes missing file attachments
Passing crash GUID so that website can easily check for duplicates in future
Increased request timeout for AddCrash to be longer than website database timeout
Logging retries for future visibility
CRP v.1.1.6
Change 2980639 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2981750 on 2016/05/18 by Steve.Robb
check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly.
Change 2982106 on 2016/05/18 by John.Mahoney
Fixed a crash caused by loading two stat capture files simultaneously in the profiler.
If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load.
Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId.
This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading.
Cleaned up some weak pointer usage in the profiler window.
#jira UE-30741
Change 2983366 on 2016/05/19 by Steven.Hutton
Changes for passing crash type directly from CRP to CRW.
Change 2983394 on 2016/05/19 by Steven.Hutton
Minor changes to add crash with more error reporting
Change 2984685 on 2016/05/20 by Robert.Manuszewski
Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core)
Change 2985143 on 2016/05/20 by Steve.Robb
Missing semi-colons.
Change 2986463 on 2016/05/23 by Steve.Robb
CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs.
Change 2986475 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986476 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986480 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant
Change 2986515 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func'
Change 2986680 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written.
warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func'
warning C6031: Return value ignored: 'snprintf'.
warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'.
Change 2986865 on 2016/05/23 by Robert.Manuszewski
Removing redundand AddReferencedObjects functions
Change 2987968 on 2016/05/24 by Robert.Manuszewski
Removing redundant UPROPERTY macros from intrinsic classes.
Change 2987979 on 2016/05/24 by Steve.Robb
Optimization of some FString and FPaths operations to produce fewer temporaries.
Change 2988297 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2988430 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read.
Change 2988461 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
Change 2988464 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap.
Change 2988494 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects.
Change 2989411 on 2016/05/25 by Robert.Manuszewski
Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds.
Change 2989429 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'.
Change 2989982 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6001: Using uninitialized memory 'LODPlanesMin'.
Change 2990018 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'X'
Change 2990077 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2990114 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent.
Change 2990125 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
Change 2990162 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed.
Change 2990193 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did.
warning C6011: Dereferencing NULL pointer 'Semantic'.
Change 2991006 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered.
Change 2991012 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'.
Change 2991013 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2991016 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2991017 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2991019 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6292: Ill-defined for-loop: counts up from maximum.
Change 2991023 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6322: Empty _except block.
warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations.
Change 2991070 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did.
Change 2991416 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992738 on 2016/05/27 by Steve.Robb
Revert changes to FString::MatchesWildcard.
Change 2992916 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992960 on 2016/05/27 by Chris.Wood
Optimized P4 access in Crash Report Process and MinidumpDiagostics.
Change 2992964 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2993956 on 2016/05/30 by Robert.Manuszewski
Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload.
#jira UE-31309
Change 2993977 on 2016/05/30 by Robert.Manuszewski
Don't wait for all packages to finish loading before PostLoading those which already have.
Change 2994206 on 2016/05/31 by Robert.Manuszewski
PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium)
#lockdown Nick.Penwarden
[CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
|
|
|
FString SDKPath = FString::ChrN(16384, TEXT('\0'));
|
|
|
|
|
FPlatformMisc::GetEnvironmentVariable(*SDKRootEnvFar, SDKPath.GetCharArray().GetData(), MaxPathSize);
|
2014-08-13 09:53:04 -04:00
|
|
|
|
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2975196 on 2016/05/12 by Robert.Manuszewski
Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading.
- This way we can avoid very long GC times after new blueprints have been loaded.
- Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes)
Change 2993960 on 2016/05/30 by Robert.Manuszewski
Fixing leaked linkers created by blocking load requests during async loading.
Change 2959398 on 2016/04/28 by Steve.Robb
TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled.
#jira UE-20828
Change 2960723 on 2016/04/29 by Graeme.Thornton
Fix for texture asset import data being ignored when async loaded
Change 2960938 on 2016/04/29 by Robert.Manuszewski
Nulling out sql db handle after closing it.
Change 2967127 on 2016/05/05 by Steve.Robb
Move constructors explicitly disabled in generated code.
Change 2967143 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2967164 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer
Change 2968650 on 2016/05/06 by Steve.Robb
Fix for HotReload copying module manager.
Change 2968915 on 2016/05/06 by Robert.Manuszewski
Fixing spelling of SetImageIntegrityStatus function name.
Change 2970406 on 2016/05/09 by Steve.Robb
Static analysis fixes:
Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap.
Change 2970419 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
warning C6011: Dereferencing NULL pointer '...'.
warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read.
warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written.
Change 2970431 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results.
Change 2972032 on 2016/05/10 by Steven.Hutton
Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries.
Change 2972085 on 2016/05/10 by Steve.Robb
Const-correctness fix for FLogCategoryBase::IsSuppressed.
Change 2972087 on 2016/05/10 by Steve.Robb
ELogVerbosity moved into its own header.
Change 2972090 on 2016/05/10 by Steve.Robb
Redundant ensure removed.
Change 2972103 on 2016/05/10 by Steve.Robb
Removal of redundant use of USING_CODE_ANALYSIS.
Change 2972139 on 2016/05/10 by Steve.Robb
Fix for ensure macros throwing C6326 warnings during static analysis.
Change 2972147 on 2016/05/10 by Steve.Robb
Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis.
Change 2972162 on 2016/05/10 by Steve.Robb
SCOPE_CYCLE_COUNTER_GUARD removed.
Change 2972168 on 2016/05/10 by Steve.Robb
Compile error fix for logOrEnsureNanError in static analysis builds.
Change 2973084 on 2016/05/10 by Chris.Wood
Crash Report Server performance tweak
Change 2974030 on 2016/05/11 by Steve.Robb
Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*.
Change 2974053 on 2016/05/11 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2974191 on 2016/05/11 by Steve.Robb
Fix for template instantiation error in VS2013.
Change 2975298 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2975318 on 2016/05/12 by Steve.Robb
Fix for hot reload info being reported as warnings.
#jira UE-30586
Change 2975447 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator?
warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects.
warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead?
warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set.
Change 2975478 on 2016/05/12 by Steve.Robb
Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings.
Change 2975538 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'StaticResource'
Change 2976640 on 2016/05/13 by Robert.Manuszewski
Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked.
#jira UE-30675
Change 2978320 on 2016/05/16 by Steve.Robb
Fix for static analysis warnings in XNA headers.
Change 2978329 on 2016/05/16 by Steve.Robb
Static analysis fixes:
warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages.
Change 2980222 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2980458 on 2016/05/17 by Chris.Wood
Attempt to fix crash report submission problems from CRP to CR website
[UE-30257] - Crashreports are sometimes missing file attachments
Passing crash GUID so that website can easily check for duplicates in future
Increased request timeout for AddCrash to be longer than website database timeout
Logging retries for future visibility
CRP v.1.1.6
Change 2980639 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2981750 on 2016/05/18 by Steve.Robb
check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly.
Change 2982106 on 2016/05/18 by John.Mahoney
Fixed a crash caused by loading two stat capture files simultaneously in the profiler.
If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load.
Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId.
This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading.
Cleaned up some weak pointer usage in the profiler window.
#jira UE-30741
Change 2983366 on 2016/05/19 by Steven.Hutton
Changes for passing crash type directly from CRP to CRW.
Change 2983394 on 2016/05/19 by Steven.Hutton
Minor changes to add crash with more error reporting
Change 2984685 on 2016/05/20 by Robert.Manuszewski
Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core)
Change 2985143 on 2016/05/20 by Steve.Robb
Missing semi-colons.
Change 2986463 on 2016/05/23 by Steve.Robb
CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs.
Change 2986475 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986476 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986480 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant
Change 2986515 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func'
Change 2986680 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written.
warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func'
warning C6031: Return value ignored: 'snprintf'.
warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'.
Change 2986865 on 2016/05/23 by Robert.Manuszewski
Removing redundand AddReferencedObjects functions
Change 2987968 on 2016/05/24 by Robert.Manuszewski
Removing redundant UPROPERTY macros from intrinsic classes.
Change 2987979 on 2016/05/24 by Steve.Robb
Optimization of some FString and FPaths operations to produce fewer temporaries.
Change 2988297 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2988430 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read.
Change 2988461 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
Change 2988464 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap.
Change 2988494 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects.
Change 2989411 on 2016/05/25 by Robert.Manuszewski
Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds.
Change 2989429 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'.
Change 2989982 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6001: Using uninitialized memory 'LODPlanesMin'.
Change 2990018 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'X'
Change 2990077 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2990114 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent.
Change 2990125 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
Change 2990162 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed.
Change 2990193 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did.
warning C6011: Dereferencing NULL pointer 'Semantic'.
Change 2991006 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered.
Change 2991012 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'.
Change 2991013 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2991016 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2991017 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2991019 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6292: Ill-defined for-loop: counts up from maximum.
Change 2991023 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6322: Empty _except block.
warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations.
Change 2991070 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did.
Change 2991416 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992738 on 2016/05/27 by Steve.Robb
Revert changes to FString::MatchesWildcard.
Change 2992916 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992960 on 2016/05/27 by Chris.Wood
Optimized P4 access in Crash Report Process and MinidumpDiagostics.
Change 2992964 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2993956 on 2016/05/30 by Robert.Manuszewski
Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload.
#jira UE-31309
Change 2993977 on 2016/05/30 by Robert.Manuszewski
Don't wait for all packages to finish loading before PostLoading those which already have.
Change 2994206 on 2016/05/31 by Robert.Manuszewski
PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium)
#lockdown Nick.Penwarden
[CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
|
|
|
FString TargetSDKRoot = FPaths::Combine(*SDKPath, *HostPlatform, *AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
static const FString SDKInstallManifestFileName(TEXT("CurrentlyInstalled.txt"));
|
|
|
|
|
FString SDKInstallManifestFilePath = FPaths::Combine(*TargetSDKRoot, *SDKInstallManifestFileName);
|
|
|
|
|
|
|
|
|
|
// If we are using a manual install, then it is valid for there to be no OutputEnvVars file.
|
|
|
|
|
TAutoPtr<FArchive> InstallManifestFile(IFileManager::Get().CreateFileReader(*SDKInstallManifestFilePath));
|
|
|
|
|
if (InstallManifestFile.IsValid())
|
|
|
|
|
{
|
|
|
|
|
TArray<FString> FileLines;
|
|
|
|
|
int64 FileSize = InstallManifestFile->TotalSize();
|
|
|
|
|
int64 MemSize = FileSize + 1;
|
|
|
|
|
void* FileMem = FMemory::Malloc(MemSize);
|
|
|
|
|
FMemory::Memset(FileMem, 0, MemSize);
|
|
|
|
|
|
|
|
|
|
InstallManifestFile->Serialize(FileMem, FileSize);
|
|
|
|
|
|
|
|
|
|
FString FileAsString(ANSI_TO_TCHAR(FileMem));
|
2015-03-02 15:51:37 -05:00
|
|
|
FileAsString.ParseIntoArrayLines(FileLines);
|
2014-07-22 17:59:23 -04:00
|
|
|
|
|
|
|
|
FMemory::Free(FileMem);
|
|
|
|
|
InstallManifestFile->Close();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (FileLines.Num() != 2)
|
|
|
|
|
{
|
2014-07-25 12:09:27 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Warning, TEXT("Malformed install manifest file for Platform %s"), *AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const FString ManualSDKString(TEXT("ManualSDK"));
|
|
|
|
|
if (FileLines[1].Compare(ManualSDKString, ESearchCase::IgnoreCase) == 0)
|
|
|
|
|
{
|
2014-07-23 17:11:42 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Verbose, TEXT("Platform %s has manual sdk install"), *AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2015-06-25 19:07:10 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Log, TEXT("Install manifest file for Platform %s not found. Platform not set up."), *AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const FString SDKEnvironmentVarsFile(TEXT("OutputEnvVars.txt"));
|
|
|
|
|
FString EnvVarFileName = FPaths::Combine(*TargetSDKRoot, *SDKEnvironmentVarsFile);
|
|
|
|
|
|
|
|
|
|
// If we are using a manual install, then it is valid for there to be no OutputEnvVars file.
|
|
|
|
|
TAutoPtr<FArchive> EnvVarFile(IFileManager::Get().CreateFileReader(*EnvVarFileName));
|
|
|
|
|
if (EnvVarFile.IsValid())
|
|
|
|
|
{
|
|
|
|
|
TArray<FString> FileLines;
|
|
|
|
|
{
|
|
|
|
|
int64 FileSize = EnvVarFile->TotalSize();
|
|
|
|
|
int64 MemSize = FileSize + 1;
|
|
|
|
|
void* FileMem = FMemory::Malloc(MemSize);
|
|
|
|
|
FMemory::Memset(FileMem, 0, MemSize);
|
|
|
|
|
|
|
|
|
|
EnvVarFile->Serialize(FileMem, FileSize);
|
|
|
|
|
|
|
|
|
|
FString FileAsString(ANSI_TO_TCHAR(FileMem));
|
2015-03-02 15:51:37 -05:00
|
|
|
FileAsString.ParseIntoArrayLines(FileLines);
|
2014-07-22 17:59:23 -04:00
|
|
|
|
|
|
|
|
FMemory::Free(FileMem);
|
|
|
|
|
EnvVarFile->Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TArray<FString> PathAdds;
|
|
|
|
|
TArray<FString> PathRemoves;
|
|
|
|
|
TArray<FString> EnvVarNames;
|
|
|
|
|
TArray<FString> EnvVarValues;
|
|
|
|
|
|
|
|
|
|
const FString VariableSplit(TEXT("="));
|
|
|
|
|
for (int32 i = 0; i < FileLines.Num(); ++i)
|
|
|
|
|
{
|
|
|
|
|
const FString& VariableString = FileLines[i];
|
|
|
|
|
|
|
|
|
|
FString Left;
|
|
|
|
|
FString Right;
|
|
|
|
|
VariableString.Split(VariableSplit, &Left, &Right);
|
|
|
|
|
|
|
|
|
|
if (Left.Compare(TEXT("strippath"), ESearchCase::IgnoreCase) == 0)
|
|
|
|
|
{
|
|
|
|
|
PathRemoves.Add(Right);
|
|
|
|
|
}
|
|
|
|
|
else if (Left.Compare(TEXT("addpath"), ESearchCase::IgnoreCase) == 0)
|
|
|
|
|
{
|
|
|
|
|
PathAdds.Add(Right);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// convenience for setup.bat writers. Trim any accidental whitespace from var names/values.
|
|
|
|
|
EnvVarNames.Add(Left.Trim().TrimTrailing());
|
|
|
|
|
EnvVarValues.Add(Right.Trim().TrimTrailing());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// don't actually set anything until we successfully validate and read all values in.
|
|
|
|
|
// we don't want to set a few vars, return a failure, and then have a platform try to
|
|
|
|
|
// build against a manually installed SDK with half-set env vars.
|
2015-01-20 10:05:42 -05:00
|
|
|
SetupEnvironmentVariables(EnvVarNames, EnvVarValues);
|
|
|
|
|
|
2014-07-22 17:59:23 -04:00
|
|
|
|
|
|
|
|
const int32 MaxPathVarLen = 32768;
|
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2975196 on 2016/05/12 by Robert.Manuszewski
Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading.
- This way we can avoid very long GC times after new blueprints have been loaded.
- Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes)
Change 2993960 on 2016/05/30 by Robert.Manuszewski
Fixing leaked linkers created by blocking load requests during async loading.
Change 2959398 on 2016/04/28 by Steve.Robb
TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled.
#jira UE-20828
Change 2960723 on 2016/04/29 by Graeme.Thornton
Fix for texture asset import data being ignored when async loaded
Change 2960938 on 2016/04/29 by Robert.Manuszewski
Nulling out sql db handle after closing it.
Change 2967127 on 2016/05/05 by Steve.Robb
Move constructors explicitly disabled in generated code.
Change 2967143 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2967164 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer
Change 2968650 on 2016/05/06 by Steve.Robb
Fix for HotReload copying module manager.
Change 2968915 on 2016/05/06 by Robert.Manuszewski
Fixing spelling of SetImageIntegrityStatus function name.
Change 2970406 on 2016/05/09 by Steve.Robb
Static analysis fixes:
Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap.
Change 2970419 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
warning C6011: Dereferencing NULL pointer '...'.
warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read.
warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written.
Change 2970431 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results.
Change 2972032 on 2016/05/10 by Steven.Hutton
Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries.
Change 2972085 on 2016/05/10 by Steve.Robb
Const-correctness fix for FLogCategoryBase::IsSuppressed.
Change 2972087 on 2016/05/10 by Steve.Robb
ELogVerbosity moved into its own header.
Change 2972090 on 2016/05/10 by Steve.Robb
Redundant ensure removed.
Change 2972103 on 2016/05/10 by Steve.Robb
Removal of redundant use of USING_CODE_ANALYSIS.
Change 2972139 on 2016/05/10 by Steve.Robb
Fix for ensure macros throwing C6326 warnings during static analysis.
Change 2972147 on 2016/05/10 by Steve.Robb
Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis.
Change 2972162 on 2016/05/10 by Steve.Robb
SCOPE_CYCLE_COUNTER_GUARD removed.
Change 2972168 on 2016/05/10 by Steve.Robb
Compile error fix for logOrEnsureNanError in static analysis builds.
Change 2973084 on 2016/05/10 by Chris.Wood
Crash Report Server performance tweak
Change 2974030 on 2016/05/11 by Steve.Robb
Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*.
Change 2974053 on 2016/05/11 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2974191 on 2016/05/11 by Steve.Robb
Fix for template instantiation error in VS2013.
Change 2975298 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2975318 on 2016/05/12 by Steve.Robb
Fix for hot reload info being reported as warnings.
#jira UE-30586
Change 2975447 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator?
warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects.
warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead?
warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set.
Change 2975478 on 2016/05/12 by Steve.Robb
Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings.
Change 2975538 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'StaticResource'
Change 2976640 on 2016/05/13 by Robert.Manuszewski
Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked.
#jira UE-30675
Change 2978320 on 2016/05/16 by Steve.Robb
Fix for static analysis warnings in XNA headers.
Change 2978329 on 2016/05/16 by Steve.Robb
Static analysis fixes:
warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages.
Change 2980222 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2980458 on 2016/05/17 by Chris.Wood
Attempt to fix crash report submission problems from CRP to CR website
[UE-30257] - Crashreports are sometimes missing file attachments
Passing crash GUID so that website can easily check for duplicates in future
Increased request timeout for AddCrash to be longer than website database timeout
Logging retries for future visibility
CRP v.1.1.6
Change 2980639 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2981750 on 2016/05/18 by Steve.Robb
check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly.
Change 2982106 on 2016/05/18 by John.Mahoney
Fixed a crash caused by loading two stat capture files simultaneously in the profiler.
If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load.
Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId.
This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading.
Cleaned up some weak pointer usage in the profiler window.
#jira UE-30741
Change 2983366 on 2016/05/19 by Steven.Hutton
Changes for passing crash type directly from CRP to CRW.
Change 2983394 on 2016/05/19 by Steven.Hutton
Minor changes to add crash with more error reporting
Change 2984685 on 2016/05/20 by Robert.Manuszewski
Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core)
Change 2985143 on 2016/05/20 by Steve.Robb
Missing semi-colons.
Change 2986463 on 2016/05/23 by Steve.Robb
CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs.
Change 2986475 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986476 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986480 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant
Change 2986515 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func'
Change 2986680 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written.
warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func'
warning C6031: Return value ignored: 'snprintf'.
warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'.
Change 2986865 on 2016/05/23 by Robert.Manuszewski
Removing redundand AddReferencedObjects functions
Change 2987968 on 2016/05/24 by Robert.Manuszewski
Removing redundant UPROPERTY macros from intrinsic classes.
Change 2987979 on 2016/05/24 by Steve.Robb
Optimization of some FString and FPaths operations to produce fewer temporaries.
Change 2988297 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2988430 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read.
Change 2988461 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
Change 2988464 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap.
Change 2988494 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects.
Change 2989411 on 2016/05/25 by Robert.Manuszewski
Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds.
Change 2989429 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'.
Change 2989982 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6001: Using uninitialized memory 'LODPlanesMin'.
Change 2990018 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'X'
Change 2990077 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2990114 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent.
Change 2990125 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
Change 2990162 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed.
Change 2990193 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did.
warning C6011: Dereferencing NULL pointer 'Semantic'.
Change 2991006 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered.
Change 2991012 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'.
Change 2991013 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2991016 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2991017 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2991019 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6292: Ill-defined for-loop: counts up from maximum.
Change 2991023 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6322: Empty _except block.
warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations.
Change 2991070 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did.
Change 2991416 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992738 on 2016/05/27 by Steve.Robb
Revert changes to FString::MatchesWildcard.
Change 2992916 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992960 on 2016/05/27 by Chris.Wood
Optimized P4 access in Crash Report Process and MinidumpDiagostics.
Change 2992964 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2993956 on 2016/05/30 by Robert.Manuszewski
Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload.
#jira UE-31309
Change 2993977 on 2016/05/30 by Robert.Manuszewski
Don't wait for all packages to finish loading before PostLoading those which already have.
Change 2994206 on 2016/05/31 by Robert.Manuszewski
PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium)
#lockdown Nick.Penwarden
[CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
|
|
|
FString OrigPathVar = FString::ChrN(MaxPathVarLen, TEXT('\0'));
|
|
|
|
|
FPlatformMisc::GetEnvironmentVariable(TEXT("PATH"), OrigPathVar.GetCharArray().GetData(), MaxPathVarLen);
|
2014-07-22 17:59:23 -04:00
|
|
|
|
|
|
|
|
// actually perform the PATH stripping / adding.
|
|
|
|
|
const TCHAR* PathDelimiter = FPlatformMisc::GetPathVarDelimiter();
|
|
|
|
|
TArray<FString> PathVars;
|
2015-03-02 15:51:37 -05:00
|
|
|
OrigPathVar.ParseIntoArray(PathVars, PathDelimiter, true);
|
2014-07-22 17:59:23 -04:00
|
|
|
|
|
|
|
|
TArray<FString> ModifiedPathVars;
|
|
|
|
|
ModifiedPathVars = PathVars;
|
|
|
|
|
|
|
|
|
|
// perform removes first, in case they overlap with any adds.
|
|
|
|
|
for (int32 PathRemoveIndex = 0; PathRemoveIndex < PathRemoves.Num(); ++PathRemoveIndex)
|
|
|
|
|
{
|
|
|
|
|
const FString& PathRemove = PathRemoves[PathRemoveIndex];
|
|
|
|
|
for (int32 PathVarIndex = 0; PathVarIndex < PathVars.Num(); ++PathVarIndex)
|
|
|
|
|
{
|
|
|
|
|
const FString& PathVar = PathVars[PathVarIndex];
|
|
|
|
|
if (PathVar.Find(PathRemove, ESearchCase::IgnoreCase) >= 0)
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Verbose, TEXT("Removing Path: '%s'"), *PathVar);
|
|
|
|
|
ModifiedPathVars.Remove(PathVar);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// remove all the of ADDs so that if this function is executed multiple times, the paths will be guarateed to be in the same order after each run.
|
|
|
|
|
// If we did not do this, a 'remove' that matched some, but not all, of our 'adds' would cause the order to change.
|
|
|
|
|
for (int32 PathAddIndex = 0; PathAddIndex < PathAdds.Num(); ++PathAddIndex)
|
|
|
|
|
{
|
|
|
|
|
const FString& PathAdd = PathAdds[PathAddIndex];
|
|
|
|
|
for (int32 PathVarIndex = 0; PathVarIndex < PathVars.Num(); ++PathVarIndex)
|
|
|
|
|
{
|
|
|
|
|
const FString& PathVar = PathVars[PathVarIndex];
|
|
|
|
|
if (PathVar.Find(PathAdd, ESearchCase::IgnoreCase) >= 0)
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Verbose, TEXT("Removing Path: '%s'"), *PathVar);
|
|
|
|
|
ModifiedPathVars.Remove(PathVar);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// perform adds, but don't add duplicates
|
|
|
|
|
for (int32 PathAddIndex = 0; PathAddIndex < PathAdds.Num(); ++PathAddIndex)
|
|
|
|
|
{
|
|
|
|
|
const FString& PathAdd = PathAdds[PathAddIndex];
|
|
|
|
|
if (!ModifiedPathVars.Contains(PathAdd))
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Verbose, TEXT("Adding Path: '%s'"), *PathAdd);
|
|
|
|
|
ModifiedPathVars.Add(PathAdd);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FString ModifiedPath = FString::Join(ModifiedPathVars, PathDelimiter);
|
|
|
|
|
FPlatformMisc::SetEnvironmentVar(TEXT("PATH"), *ModifiedPath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-07-25 12:09:27 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Warning, TEXT("OutputEnvVars.txt not found for platform: '%s'"), *AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-23 17:11:42 -04:00
|
|
|
UE_LOG(LogTargetPlatformManager, Verbose, TEXT("Platform %s has auto sdk install"), *AutoSDKPath);
|
2014-07-22 17:59:23 -04:00
|
|
|
return true;
|
|
|
|
|
#else
|
|
|
|
|
return true;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
bool SetupSDKStatus()
|
2015-01-20 10:05:42 -05:00
|
|
|
{
|
|
|
|
|
return SetupSDKStatus(TEXT(""));
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-21 09:13:13 -05:00
|
|
|
bool SetupSDKStatus(FString TargetPlatforms)
|
2014-07-31 13:31:22 -04:00
|
|
|
{
|
2015-04-09 05:54:05 -04:00
|
|
|
DECLARE_SCOPE_CYCLE_COUNTER( TEXT( "FTargetPlatformManagerModule::SetupSDKStatus" ), STAT_FTargetPlatformManagerModule_SetupSDKStatus, STATGROUP_TargetPlatform );
|
|
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
// run UBT with -validate -allplatforms and read the output
|
2015-02-20 23:37:46 -05:00
|
|
|
FString CmdExe, CommandLine;
|
|
|
|
|
|
|
|
|
|
if (PLATFORM_MAC)
|
|
|
|
|
{
|
|
|
|
|
CmdExe = TEXT("/bin/sh");
|
|
|
|
|
FString ScriptPath = FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Build/BatchFiles/Mac/RunMono.sh"));
|
|
|
|
|
CommandLine = TEXT("\"") + ScriptPath + TEXT("\" \"") + FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Binaries/DotNET/UnrealBuildTool.exe")) + TEXT("\" -validateplatform");
|
|
|
|
|
}
|
|
|
|
|
else if (PLATFORM_WINDOWS)
|
|
|
|
|
{
|
|
|
|
|
CmdExe = FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Binaries/DotNet/UnrealBuildTool.exe"));
|
|
|
|
|
CommandLine = TEXT("-validateplatform");
|
|
|
|
|
}
|
|
|
|
|
else if (PLATFORM_LINUX)
|
|
|
|
|
{
|
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3206916)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3175510 on 2016/10/26 by Josh.Adams
- New Wolf SDK support (11).
- Added new input plugin now that extra NDA is lifted
Change 3176629 on 2016/10/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3177232 on 2016/10/27 by Josh.Adams
- Minor comment change
Change 3177348 on 2016/10/27 by Dmitry.Rekman
Linux: default to GL4.
Change 3177523 on 2016/10/27 by Dmitry.Rekman
Linux: update libc++ to 3.9 and add AArch64.
Change 3178208 on 2016/10/28 by Daniel.Lamb
Enable multithreaded lightmap encoding.
Change 3178273 on 2016/10/28 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix crash in PS4 packaging step.
- Parallel-for accessing the same log files, causing IOException.
Change 3178573 on 2016/10/28 by Dmitry.Rekman
Linux: fix for projects not having proper version associations (UE-5954).
- Fixed by CengizT.
Change 3180487 on 2016/10/31 by Josh.Adams
Moved new file to peoper spot
Change 3180508 on 2016/10/31 by Josh.Adams
- Fixed crash on audio free for Wolf
Change 3181821 on 2016/11/01 by Josh.Adams
- Fixed ShooterGame cooking after sync from main
Change 3182469 on 2016/11/01 by Josh.Adams
- test/shipping build wolf fixes
Change 3183078 on 2016/11/02 by Josh.Adams
- Added AllDesktop back in for Windows (File | Package)
Change 3183229 on 2016/11/02 by Josh.Adams
- Fixed wrong path in JunkManifest.txt
Change 3184245 on 2016/11/02 by Dmitry.Rekman
Linux: add AArch64 (ARM64) libs.
Change 3184326 on 2016/11/02 by Dmitry.Rekman
Linux: add more files for AArch64.
Change 3184353 on 2016/11/02 by Dmitry.Rekman
Linux: Add missed AArch64 libpng.
Change 3184871 on 2016/11/03 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix broken DownloadImage blueprint node on PS4.
- Node should return a UTexture2DDynamic, otherwise the RHI assumes the data has been pre-formatted for the GPU, and we get pitch/layout issues.
#jira UE-36365
Change 3185407 on 2016/11/03 by Dmitry.Rekman
Linux: fix PhysX on AArch64.
(Edigrating 3184484 from Wombat to Dev-Platform).
Change 3187488 on 2016/11/04 by Josh.Adams
Copying //Tasks/UE4/Private-Platform-Switch to Dev-Platform-Minimal (//UE4/Dev-Platform-Minimal)
Change 3187740 on 2016/11/04 by Josh.Adams
- Re-copying the Switch files, now with proper case in the directory names
Change 3188304 on 2016/11/07 by Dan.Mahashin
- Removed deprecated functions in NVN window creation
Change 3188865 on 2016/11/07 by Luke.Thatcher
[PLATFORM] [PS4] [~] Move PS4 console input handler into engine classes from OrionGame.
- Enables console input from Sony's "Console Output" tool for all games, in debug/development builds.
#jira UE-37672
Change 3189517 on 2016/11/07 by Jeff.Campeau
Fix incorrect local platform identification in device manager.
#jira UE-38312
Change 3189897 on 2016/11/08 by Luke.Thatcher
[PLATFORM] [!] Fix width/height mismatch in DownloadImage blueprint node.
Change 3190042 on 2016/11/08 by Josh.Adams
- Fixed default and Shooter App Ids for Switch
Change 3190181 on 2016/11/08 by Joe.Barnes
[UE-37275] Split reflection capture error message into two UE_LOG()s. Line length causes truncation and line wrap on some platforms.
Change 3190185 on 2016/11/08 by Joe.Barnes
Fix another instance of UE_LOG() where the string was being truncated on Switch platform.
Change 3190272 on 2016/11/08 by Daniel.Lamb
Add file hashes to depependency tracking info.
Moved partial gc controlling code outside of the cooker.
Store cooked file hashes in cooked asset registry.
Cooked asset registry is now part of the cooker instead of chunking manifest.
#test cook paragon
Change 3190332 on 2016/11/08 by Omar.Rodriguez
Fixing issues with iOS remote notifications
* Update UPlatformGameInstance::FPlatformRegisteredForRemoteNotificationsDelegate signature so the parameter is const& which will work with BlueprintAssignable
* Fix misspelling when doing respondsToSelector check
* Update generated Xcode project to use the generated entitlements file
* Add remote-notification as a background mode
* Update the generated entitlements file contents to include APS environment for push notifications
* Added bEnableRemoteNotificationsSupport ini parameter to control whether iOS push notifications code is compiled
Change 3190391 on 2016/11/08 by Brent.Pease
UE-31739 - Crash when Deploying to iPad Air with BC4 Texture Compression Setting
(Josh's suggestion worked out of the box)
Change 3190786 on 2016/11/08 by Bart.Hawthorne
Fix some missing PLATFORM_WOLF changes to PLATFORM_SWITCH in ShooterGame
Change 3190902 on 2016/11/08 by Alicia.Cano
Allow RTTI and exceptions to be enabled for Android
#jira UE-37845
#android
Change 3190973 on 2016/11/08 by Chris.Babcock
Add ability to set element value field with new text parameter for UPL
#jira UE-37390
#PR #2869
#ue4
#upl
Change 3191411 on 2016/11/09 by Josh.Stoddard
Warn when user tries to use a shared pak reader on the wrong thread
#jira UE-38049
Change 3191635 on 2016/11/09 by Josh.Stoddard
More useful message during cook when AT9 assets fail to encode using SCE's tool
#jira UE-38053
Change 3191663 on 2016/11/09 by Peter.Sauerbrei
fix for ios build from PC
Change 3191701 on 2016/11/09 by Brent.Pease
implement iOS device logs on windows
Change 3191794 on 2016/11/09 by Daniel.Lamb
Fixed up compile error missing header file.
#test Compile editor
#jira UE-38414
Change 3191807 on 2016/11/09 by Josh.Adams
- Fixed one chage that was missed in the WolfPlat->Switch rename
Change 3191867 on 2016/11/09 by Josh.Adams
- Enabled Switch for ShooterGame project
Change 3191958 on 2016/11/09 by Jeff.Campeau
Add warning for anyone still using XP
Change 3192185 on 2016/11/09 by Josh.Adams
- Updated to SDK 0.11.12
- Added TrackLotCheckItem API to track guidelines with limits (nothing using it yet)
Change 3192241 on 2016/11/09 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3192324 on 2016/11/09 by Josh.Adams
- Worked around an issue with RunOnTarget stripping quotes around paths with spaces
#jira UE-38388
Change 3192387 on 2016/11/09 by Josh.Adams
- Updating editor icon for Switch
#jira UE-38295
Change 3192476 on 2016/11/09 by Dmitry.Rekman
Linux: put correct OpenAL lib per architecture.
(Edigrating CL 3185947 from Wombat to Dev-Platform)
Change 3192527 on 2016/11/09 by Josh.Adams
- Fixed a shadow variable warning
#jira UE-38408
Change 3192606 on 2016/11/09 by Jeff.Campeau
XP option removed
#jira UEPLAT-1542
Change 3192644 on 2016/11/09 by Josh.Adams
- Fixed a CIS error (not sure why I don't get it, but hey)
Change 3192659 on 2016/11/09 by Josh.Adams
- Fixed a crash in DeploymentServer
Change 3192672 on 2016/11/09 by Jeff.Campeau
Fix WinXP message spamming
Change 3193252 on 2016/11/10 by Josh.Adams
- Remove assertion in SwitchTextureFormat when the SDK can't be found (if you are sharing DLLs)
Change 3193756 on 2016/11/10 by Dmitry.Rekman
Linux: add support for touch events.
(Edigrating CL 3188159 from Wombat to Dev-Platform).
Change 3194297 on 2016/11/10 by Jeff.Campeau
HarfBuzz implementation for Xbox One
#jira UE-28590
Change 3194299 on 2016/11/10 by Jeff.Campeau
Pump Xbox One messaging during slow startup tasks
#jira UEPLAT-1276
Change 3194300 on 2016/11/10 by Jeff.Campeau
Use response files when building for Xbox One
#jira UEPLAT-1296
Change 3194313 on 2016/11/11 by Jeff.Campeau
Stop uploading symbols on the first error
Show a more detailed error message if symbol uploading fails
Add a command line option to disable upload of symbols
#1852
#jira UE-24425
Change 3194327 on 2016/11/11 by Jeff.Campeau
Deduplicate Xbox One build.cs setup for several modules
#jira UE-37540
Change 3194402 on 2016/11/11 by Dmitry.Rekman
Linux: do not apply mouse workaround unnecessarily.
- Only matters when there is more than one window.
(Edigrating 3194399 from Wombat to Dev-Platform).
Change 3194434 on 2016/11/11 by Dan.Mahashin
- Ported fix CL 3193690: Add workaround to file I/O error about ResultInvalidCurrentMemory when reloading levels - remove uncached attribute during memory pool finalization
Change 3194569 on 2016/11/11 by Daniel.Lamb
Fixed issue with CreateLinker failing to return LinkerLoad but creating a UPackage which can't be cleaned up.
Change 3194570 on 2016/11/11 by Daniel.Lamb
Fix for DiffSerializeArchive not using the correct archive when saving packages.
#test Cook paragon
Change 3194571 on 2016/11/11 by Daniel.Lamb
Make sure dependent packages are valid before using them.
Added FastBuildCookRun bat file for paragon testing.
#test Cook Paragon
Change 3194575 on 2016/11/11 by Daniel.Lamb
Reworked a warning for the cooker.
Change 3194698 on 2016/11/11 by Daniel.Lamb
Skip skin verify only runs on build machines now.
Saves paragon cook time.
Change 3194699 on 2016/11/11 by Daniel.Lamb
Changed the wording of skip editor content setting so it's more clear.
#test none
Change 3194702 on 2016/11/11 by Daniel.Lamb
Potential fix for default materials not being in chunk zero.
#test run ps4 cooked build paragon
Change 3194711 on 2016/11/11 by Alicia.Cano
Allow RTTI and exceptions to be enabled for Android
Allow RTTI to be enabled for IOS, Mac
#jira UE-37845, UE-20314
#android
#ios
#mac
Change 3194956 on 2016/11/11 by Josh.Adams
- Removed the crash with unknown socket error code, left in the warning
Change 3195028 on 2016/11/11 by Dmitry.Rekman
Linux: repair launch on.
(Edigrating 3194384 from //UE4/Private-Wombat/... to //UE4/Dev-Platform/...)
Change 3195041 on 2016/11/11 by Dmitry.Rekman
Linux: support selecting architectures per project.
(Edigrating 3192783 from Wombat to Dev-Platform).
Change 3195058 on 2016/11/11 by Dmitry.Rekman
Linux: fix code to determine number of cores.
- ARM topology seems not to be in line with the assumptions made by x86-centric code.
(Merging 3184632 from Wombat to Dev-Platform).
Change 3195082 on 2016/11/11 by Josh.Adams
- Fixed name of packaged Switch builds to have the config in it (Shipping, etc)
#jira UE-38394
Change 3195151 on 2016/11/11 by Bart.Hawthorne
- Add game server settings to project settings to connect to the actual game server, instead of the debug login
- Use the system software dialog box to show error codes for login failures
Change 3195153 on 2016/11/11 by Josh.Adams
- Fixed copy and paste logs errors
Change 3195156 on 2016/11/11 by Josh.Adams
- Fixed some default values, especially for save games (uses their default of 4MB size)
- Added some LotCheck write tracking
Change 3195285 on 2016/11/11 by Jeff.Campeau
Fix HarfBuzz warning on Xbox One
Change 3195477 on 2016/11/11 by Josh.Adams
- Fixed up some IsGameOnly calls
#jira UE-37575
Change 3195490 on 2016/11/11 by Dmitry.Rekman
UAT: fix CIS (removed old variables).
Change 3195724 on 2016/11/11 by Josh.Adams
- Final fix for name of .nsp (content only projects in Shipping config, etc)
#jira UE-38394
Change 3195755 on 2016/11/11 by Josh.Adams
- Made translucent Switch icons
Change 3195771 on 2016/11/11 by Josh.Adams
- Fixed some Switch "space in path" issues
#jira UE-38393
Change 3195801 on 2016/11/11 by Josh.Adams
- Handle making sure the save is completed before we shutdown
#jira UE-38215
Change 3196593 on 2016/11/14 by Michael.Trepka
Implemented Info string in AvfMedia for display in Media Player Editor
#jira UE-35386
Change 3196782 on 2016/11/14 by Josh.Adams
- Added a comment for a workaround
Change 3196784 on 2016/11/14 by Michael.Trepka
Alembic importer for Mac
#jira UE-37708
Change 3196901 on 2016/11/14 by Alicia.Cano
ADB over wifi fails to deploy on Launch on.
#jira UE-37957
#android
Change 3197055 on 2016/11/14 by Josh.Adams
- Fixed BinnedAllocator crash that happened with PoisonProxy and large allocations with large alignment
Change 3197059 on 2016/11/14 by Josh.Adams
- Removed some stat code with no STATS
Change 3197066 on 2016/11/14 by Josh.Adams
- Fixed the generic growableallocator to not free metadata before it's used for stats, and cleaned up a couple minor things
Change 3197176 on 2016/11/14 by Josh.Adams
- Added some helper scripts to switch in and out of debug mode on Switch
Change 3197183 on 2016/11/14 by Bart.Hawthorne
Error dialog fixes based on peer review feedback from JoshA
Change 3197339 on 2016/11/14 by Josh.Adams
Allow -htcs on the commandline now to override disabling Htcs in packaged builds
Change 3197401 on 2016/11/14 by Josh.Adams
- Fixed the Switch package installation script to remove the path of the package, since it causes problems with spaces, and also it makes the script less portable!
#jira UE-38556
Change 3197691 on 2016/11/14 by Dmitry.Rekman
Linux: save added devices.
(Edigrating 3196529 from Wombat to Dev-Platform).
Change 3197854 on 2016/11/15 by Dan.Mahashin
- MemoryProfiler2: fixed Switch parser file path in the csproj
Change 3197960 on 2016/11/15 by Dan.Mahashin
- NVN RHITransitionResources() directly uses a barrier instead of relying on CopyToResolveTarget() side effect (UE-33834)
Change 3198488 on 2016/11/15 by Bart.Hawthorne
Submit missing NoRedist/DefaultEngine.ini file
Change 3198970 on 2016/11/15 by Michael.Trepka
Don't try to use installed Mono 4.6 on Mac as it's known to have issues on macOS 10.12 (for example building the editor with UBT often fails with Mono running out of file desriptors)
Change 3199050 on 2016/11/15 by Daniel.Lamb
Some more output to help track down iterative cooking scenarios
#test Cook paragon
Change 3199097 on 2016/11/15 by Josh.Adams
- Fixed up Switch packaging to re-generate the meta data in case it changed since compile time (esp with content only projects
- Fixed default Program Id in code
- Fixed a problem with Run with a space in the path
#jira UE-38608
Change 3199181 on 2016/11/15 by Dmitry.Rekman
Fix CIS (compiling LinuxTargetDevice without engine).
Change 3199253 on 2016/11/15 by Dmitry.Rekman
Hopeful fix for a static analysis warning.
Change 3199325 on 2016/11/15 by Joe.Barnes
Start a new CommandBuffer immediately upon ending one. Prevents fetching when there's no CommandBuffer. Needed for Loading Screen movie playback.
Change 3199814 on 2016/11/15 by Dmitry.Rekman
Linux: remove forced -windowed when launching.
(Merging CL 3199789 from Wombat to Dev-Platform)
Change 3200580 on 2016/11/16 by Josh.Adams
Updasted DeploymentServer
Change 3200595 on 2016/11/16 by Joe.Barnes
Removed inadvertent SleepThread() when starting movie playback.
Change 3200604 on 2016/11/16 by Josh.Adams
- Added NN_MIDDLEWARE macros to tag ths apps as using UE4 middleware
Change 3200632 on 2016/11/16 by Brent.Pease
Update PlatformShowcase with latest tests
Change 3200704 on 2016/11/16 by Dmitry.Rekman
Linux: fix native compilation.
Change 3200711 on 2016/11/16 by Brent.Pease
- Support ios audio streaming from disk
- Flushed out ADPCMAudioInfo to be more flexible with buffer management in addition to support streaming from disk. This should make more code platform independent.
+ Other platforms should work fine but will need to be updated to use the new buffer flexability (and hence simplify their own code and buffer management)
- IOS audio implementation simplified to use new ADPCMAudioInfo functionality
- Fixed adpcm seamless looping
NOTE: While everything works with my testing (admittedly simple tests) a little more code cleanup needs to happen...
Change 3201015 on 2016/11/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3201023 on 2016/11/16 by Josh.Stoddard
Fix splash screen assignment for iPad
#jira UE-38623
Change 3201215 on 2016/11/16 by Brent.Pease
Hopefully final fix for build breakage
Change 3201259 on 2016/11/16 by Josh.Adams
- Removed the clock rate settings from the Project Settings, and the cvars - it was just confusing
- Further improved the metadata recreation during packaging (can get rid of the temp meta/desc files now I believe)
- Reduced audio pool alignment to not waste massive memory from it
Change 3202332 on 2016/11/17 by Daniel.Lamb
Changed build scripts to support iterative cooking
#test Ran new build scripts
Change 3202371 on 2016/11/17 by Michael.Trepka
Changed FAppleHttpResponse::GetContentLength to return expected content size instead of payload size so it's consistent with other implementations
#jira UE-38392
Change 3202421 on 2016/11/17 by Michael.Trepka
Decrease the number of max open files for a thread on Apple platforms from 256 to 192 to leave more file descriptors to Cocoa
#jira UE-18343
Change 3202462 on 2016/11/17 by Michael.Trepka
Fixed HTTP If-None-Match response code on Mac and iOS
Fixed by iktomi, https://answers.unrealengine.com/questions/492514/http-if-none-match-logic-isnt-working-on-mac-due-t.html
#jira UE-36317
Change 3202620 on 2016/11/17 by Daniel.Lamb
Fixed issue with some objects being garbage collected which shouldn't be because the collection handler didn't get registered.
Commandlets now do not always have GIsRequestingExit true.
Made crash handler check for commandlets running and exit appropriately.
#test Rebuild lighting QAGame
Change 3202955 on 2016/11/17 by Daniel.Lamb
Add support for clearing all the cached cooked platform data for a platform when requested.
#test cook QA game
#jira UE-38361
Change 3202983 on 2016/11/17 by Daniel.Lamb
Added support to rebuild lightmaps commandlet for building lightmaps in seperate files.
#test rebuild lighting Custom QAGame maps.
#jira OR-31907
Change 3203128 on 2016/11/17 by Josh.Adams
- Fixed split screen user selection in ShooterGame (brought over some changes from NickD for it as well)
Change 3203537 on 2016/11/18 by Dmitry.Rekman
Fix ProjectWorldToScreen node for letterboxed viewports.
(Merging CL 3201546 from Wombat to Dev-Platform).
Change 3203540 on 2016/11/18 by Dmitry.Rekman
Linux: be more verbose when setting vblank sync.
(Merging CL 3199633 from Private-Wombat to Dev-Platform).
Change 3203599 on 2016/11/18 by Dmitry.Rekman
Speedup bForceCompilationAtStartup=True when nothing changed (UE-37067).
- PR #2849: Contributed by slonopotamus.
Change 3203610 on 2016/11/18 by Dmitry.Rekman
Add CEF support for Linux (UE-6743).
Change 3203615 on 2016/11/18 by Dmitry.Rekman
Linux: fix bootstrap script so it is independent of working dir (UE-37016).
- PR #2842 contributed by slonopotamus
Change 3203645 on 2016/11/18 by Dmitry.Rekman
Linux: fix UnrealCEFSubProcess.
Change 3203658 on 2016/11/18 by Dmitry.Rekman
Remove hard-coded paths to mono binary (UE-35228).
- Another way to implement pull request #2741.
Change 3203770 on 2016/11/18 by Josh.Adams
- Brought over some changes from Dev-Core to not crash in AsyncLoading with debug code
Change 3204244 on 2016/11/18 by Dmitry.Rekman
Unsuppress mistakenly suppressed warnings and fix one more (UE-38788).
Change 3204277 on 2016/11/18 by Brent.Pease
+ Fix seamless looping bug found on Dan's QAGame test
+ Fix static analyzer warning (which was a real bug with uncompressed streaming)
+ Code review feedback from Aaron
+ Small addition from channel sync ios bug fix
Change 3204576 on 2016/11/18 by Omar.Rodriguez
Expose the bEnableRemoteNotificationsSupport ini setting in the iOS project settings.
Change 3204629 on 2016/11/18 by Chris.Babcock
Fix case of VulkanSwapChain.h #include
#jira UE-38843
#ue4
#vulkan
Change 3204708 on 2016/11/18 by Josh.Adams
- Set SwitchMoviePlayer to include the libs from the proper directory
Change 3204730 on 2016/11/18 by Josh.Adams
- Changed a check to a checkf to narrow down why FMaterialUniformExpressionType::GetTypeMap().FindRef(TypeName) is returning nullptr on tvOS
Change 3204865 on 2016/11/18 by Brent.Pease
+ Turn off ios console logs on Windows to help sort through ios packaging and launch-on issues - This is NOT a fix but it should make it easier to track down the problem with it off.
Change 3204883 on 2016/11/18 by Dmitry.Rekman
Linux: fix native LaunchOn (UE-38616).
Change 3204914 on 2016/11/18 by Brent.Pease
+ Turn off the device check to prevent it from conflicting with remote packaging/launch-on
Change 3204940 on 2016/11/18 by Josh.Adams
Backing out changes to the profiler for Switch. Shouldn't have checked it in today during smoke
Change 3204952 on 2016/11/18 by Dmitry.Rekman
Linux: fix bootstrap script (UE-38851).
- Caused by UE-37016.
Change 3205630 on 2016/11/21 by Brent.Pease
+ Fix audio sound queuing bug by ensuring audio buffers are not reused by different sound source objects.
+ Cleaned up the locking mechanism around stopping sound sources to make its intent and function are clear
+ Cleaned up memory tracking and freeing.
#jira ue-38846
Change 3205787 on 2016/11/21 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
[CL 3206922 by Josh Adams in Main branch]
2016-11-21 20:27:58 -05:00
|
|
|
CmdExe = TEXT("/bin/bash"); // bash and not sh because of pushd
|
|
|
|
|
FString ScriptPath = FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Build/BatchFiles/Linux/RunMono.sh"));
|
|
|
|
|
CommandLine = TEXT("\"") + ScriptPath + TEXT("\" \"") + FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Binaries/DotNET/UnrealBuildTool.exe")) + TEXT("\" -validateplatform");
|
2015-02-20 23:37:46 -05:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
checkf(false, TEXT("FTargetPlatformManagerModule::SetupSDKStatus(): Unsupported platform!"));
|
|
|
|
|
}
|
2015-01-20 10:05:42 -05:00
|
|
|
|
|
|
|
|
// Allow for only a subset of platforms to be reparsed - needed when kicking a change from the UI
|
2015-01-21 09:13:13 -05:00
|
|
|
CommandLine += TargetPlatforms.IsEmpty() ? TEXT(" -allplatforms") : (TEXT(" -platforms=") + TargetPlatforms);
|
2015-01-20 10:05:42 -05:00
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
TSharedPtr<FMonitoredProcess> UBTProcess = MakeShareable(new FMonitoredProcess(CmdExe, CommandLine, true));
|
|
|
|
|
UBTProcess->OnOutput().BindStatic(&FTargetPlatformManagerModule::OnStatusOutput);
|
|
|
|
|
SDKStatusMessage = TEXT("");
|
|
|
|
|
UBTProcess->Launch();
|
|
|
|
|
while(UBTProcess->IsRunning())
|
|
|
|
|
{
|
|
|
|
|
FPlatformProcess::Sleep(0.01f);
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-31 15:44:52 -04:00
|
|
|
TArray<FString> PlatArray;
|
2015-03-02 15:51:37 -05:00
|
|
|
SDKStatusMessage.ParseIntoArrayWS(PlatArray);
|
2014-07-31 15:44:52 -04:00
|
|
|
for (int Index = 0; Index < PlatArray.Num()-2; ++Index)
|
2014-07-31 13:31:22 -04:00
|
|
|
{
|
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3206916)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3175510 on 2016/10/26 by Josh.Adams
- New Wolf SDK support (11).
- Added new input plugin now that extra NDA is lifted
Change 3176629 on 2016/10/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3177232 on 2016/10/27 by Josh.Adams
- Minor comment change
Change 3177348 on 2016/10/27 by Dmitry.Rekman
Linux: default to GL4.
Change 3177523 on 2016/10/27 by Dmitry.Rekman
Linux: update libc++ to 3.9 and add AArch64.
Change 3178208 on 2016/10/28 by Daniel.Lamb
Enable multithreaded lightmap encoding.
Change 3178273 on 2016/10/28 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix crash in PS4 packaging step.
- Parallel-for accessing the same log files, causing IOException.
Change 3178573 on 2016/10/28 by Dmitry.Rekman
Linux: fix for projects not having proper version associations (UE-5954).
- Fixed by CengizT.
Change 3180487 on 2016/10/31 by Josh.Adams
Moved new file to peoper spot
Change 3180508 on 2016/10/31 by Josh.Adams
- Fixed crash on audio free for Wolf
Change 3181821 on 2016/11/01 by Josh.Adams
- Fixed ShooterGame cooking after sync from main
Change 3182469 on 2016/11/01 by Josh.Adams
- test/shipping build wolf fixes
Change 3183078 on 2016/11/02 by Josh.Adams
- Added AllDesktop back in for Windows (File | Package)
Change 3183229 on 2016/11/02 by Josh.Adams
- Fixed wrong path in JunkManifest.txt
Change 3184245 on 2016/11/02 by Dmitry.Rekman
Linux: add AArch64 (ARM64) libs.
Change 3184326 on 2016/11/02 by Dmitry.Rekman
Linux: add more files for AArch64.
Change 3184353 on 2016/11/02 by Dmitry.Rekman
Linux: Add missed AArch64 libpng.
Change 3184871 on 2016/11/03 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix broken DownloadImage blueprint node on PS4.
- Node should return a UTexture2DDynamic, otherwise the RHI assumes the data has been pre-formatted for the GPU, and we get pitch/layout issues.
#jira UE-36365
Change 3185407 on 2016/11/03 by Dmitry.Rekman
Linux: fix PhysX on AArch64.
(Edigrating 3184484 from Wombat to Dev-Platform).
Change 3187488 on 2016/11/04 by Josh.Adams
Copying //Tasks/UE4/Private-Platform-Switch to Dev-Platform-Minimal (//UE4/Dev-Platform-Minimal)
Change 3187740 on 2016/11/04 by Josh.Adams
- Re-copying the Switch files, now with proper case in the directory names
Change 3188304 on 2016/11/07 by Dan.Mahashin
- Removed deprecated functions in NVN window creation
Change 3188865 on 2016/11/07 by Luke.Thatcher
[PLATFORM] [PS4] [~] Move PS4 console input handler into engine classes from OrionGame.
- Enables console input from Sony's "Console Output" tool for all games, in debug/development builds.
#jira UE-37672
Change 3189517 on 2016/11/07 by Jeff.Campeau
Fix incorrect local platform identification in device manager.
#jira UE-38312
Change 3189897 on 2016/11/08 by Luke.Thatcher
[PLATFORM] [!] Fix width/height mismatch in DownloadImage blueprint node.
Change 3190042 on 2016/11/08 by Josh.Adams
- Fixed default and Shooter App Ids for Switch
Change 3190181 on 2016/11/08 by Joe.Barnes
[UE-37275] Split reflection capture error message into two UE_LOG()s. Line length causes truncation and line wrap on some platforms.
Change 3190185 on 2016/11/08 by Joe.Barnes
Fix another instance of UE_LOG() where the string was being truncated on Switch platform.
Change 3190272 on 2016/11/08 by Daniel.Lamb
Add file hashes to depependency tracking info.
Moved partial gc controlling code outside of the cooker.
Store cooked file hashes in cooked asset registry.
Cooked asset registry is now part of the cooker instead of chunking manifest.
#test cook paragon
Change 3190332 on 2016/11/08 by Omar.Rodriguez
Fixing issues with iOS remote notifications
* Update UPlatformGameInstance::FPlatformRegisteredForRemoteNotificationsDelegate signature so the parameter is const& which will work with BlueprintAssignable
* Fix misspelling when doing respondsToSelector check
* Update generated Xcode project to use the generated entitlements file
* Add remote-notification as a background mode
* Update the generated entitlements file contents to include APS environment for push notifications
* Added bEnableRemoteNotificationsSupport ini parameter to control whether iOS push notifications code is compiled
Change 3190391 on 2016/11/08 by Brent.Pease
UE-31739 - Crash when Deploying to iPad Air with BC4 Texture Compression Setting
(Josh's suggestion worked out of the box)
Change 3190786 on 2016/11/08 by Bart.Hawthorne
Fix some missing PLATFORM_WOLF changes to PLATFORM_SWITCH in ShooterGame
Change 3190902 on 2016/11/08 by Alicia.Cano
Allow RTTI and exceptions to be enabled for Android
#jira UE-37845
#android
Change 3190973 on 2016/11/08 by Chris.Babcock
Add ability to set element value field with new text parameter for UPL
#jira UE-37390
#PR #2869
#ue4
#upl
Change 3191411 on 2016/11/09 by Josh.Stoddard
Warn when user tries to use a shared pak reader on the wrong thread
#jira UE-38049
Change 3191635 on 2016/11/09 by Josh.Stoddard
More useful message during cook when AT9 assets fail to encode using SCE's tool
#jira UE-38053
Change 3191663 on 2016/11/09 by Peter.Sauerbrei
fix for ios build from PC
Change 3191701 on 2016/11/09 by Brent.Pease
implement iOS device logs on windows
Change 3191794 on 2016/11/09 by Daniel.Lamb
Fixed up compile error missing header file.
#test Compile editor
#jira UE-38414
Change 3191807 on 2016/11/09 by Josh.Adams
- Fixed one chage that was missed in the WolfPlat->Switch rename
Change 3191867 on 2016/11/09 by Josh.Adams
- Enabled Switch for ShooterGame project
Change 3191958 on 2016/11/09 by Jeff.Campeau
Add warning for anyone still using XP
Change 3192185 on 2016/11/09 by Josh.Adams
- Updated to SDK 0.11.12
- Added TrackLotCheckItem API to track guidelines with limits (nothing using it yet)
Change 3192241 on 2016/11/09 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3192324 on 2016/11/09 by Josh.Adams
- Worked around an issue with RunOnTarget stripping quotes around paths with spaces
#jira UE-38388
Change 3192387 on 2016/11/09 by Josh.Adams
- Updating editor icon for Switch
#jira UE-38295
Change 3192476 on 2016/11/09 by Dmitry.Rekman
Linux: put correct OpenAL lib per architecture.
(Edigrating CL 3185947 from Wombat to Dev-Platform)
Change 3192527 on 2016/11/09 by Josh.Adams
- Fixed a shadow variable warning
#jira UE-38408
Change 3192606 on 2016/11/09 by Jeff.Campeau
XP option removed
#jira UEPLAT-1542
Change 3192644 on 2016/11/09 by Josh.Adams
- Fixed a CIS error (not sure why I don't get it, but hey)
Change 3192659 on 2016/11/09 by Josh.Adams
- Fixed a crash in DeploymentServer
Change 3192672 on 2016/11/09 by Jeff.Campeau
Fix WinXP message spamming
Change 3193252 on 2016/11/10 by Josh.Adams
- Remove assertion in SwitchTextureFormat when the SDK can't be found (if you are sharing DLLs)
Change 3193756 on 2016/11/10 by Dmitry.Rekman
Linux: add support for touch events.
(Edigrating CL 3188159 from Wombat to Dev-Platform).
Change 3194297 on 2016/11/10 by Jeff.Campeau
HarfBuzz implementation for Xbox One
#jira UE-28590
Change 3194299 on 2016/11/10 by Jeff.Campeau
Pump Xbox One messaging during slow startup tasks
#jira UEPLAT-1276
Change 3194300 on 2016/11/10 by Jeff.Campeau
Use response files when building for Xbox One
#jira UEPLAT-1296
Change 3194313 on 2016/11/11 by Jeff.Campeau
Stop uploading symbols on the first error
Show a more detailed error message if symbol uploading fails
Add a command line option to disable upload of symbols
#1852
#jira UE-24425
Change 3194327 on 2016/11/11 by Jeff.Campeau
Deduplicate Xbox One build.cs setup for several modules
#jira UE-37540
Change 3194402 on 2016/11/11 by Dmitry.Rekman
Linux: do not apply mouse workaround unnecessarily.
- Only matters when there is more than one window.
(Edigrating 3194399 from Wombat to Dev-Platform).
Change 3194434 on 2016/11/11 by Dan.Mahashin
- Ported fix CL 3193690: Add workaround to file I/O error about ResultInvalidCurrentMemory when reloading levels - remove uncached attribute during memory pool finalization
Change 3194569 on 2016/11/11 by Daniel.Lamb
Fixed issue with CreateLinker failing to return LinkerLoad but creating a UPackage which can't be cleaned up.
Change 3194570 on 2016/11/11 by Daniel.Lamb
Fix for DiffSerializeArchive not using the correct archive when saving packages.
#test Cook paragon
Change 3194571 on 2016/11/11 by Daniel.Lamb
Make sure dependent packages are valid before using them.
Added FastBuildCookRun bat file for paragon testing.
#test Cook Paragon
Change 3194575 on 2016/11/11 by Daniel.Lamb
Reworked a warning for the cooker.
Change 3194698 on 2016/11/11 by Daniel.Lamb
Skip skin verify only runs on build machines now.
Saves paragon cook time.
Change 3194699 on 2016/11/11 by Daniel.Lamb
Changed the wording of skip editor content setting so it's more clear.
#test none
Change 3194702 on 2016/11/11 by Daniel.Lamb
Potential fix for default materials not being in chunk zero.
#test run ps4 cooked build paragon
Change 3194711 on 2016/11/11 by Alicia.Cano
Allow RTTI and exceptions to be enabled for Android
Allow RTTI to be enabled for IOS, Mac
#jira UE-37845, UE-20314
#android
#ios
#mac
Change 3194956 on 2016/11/11 by Josh.Adams
- Removed the crash with unknown socket error code, left in the warning
Change 3195028 on 2016/11/11 by Dmitry.Rekman
Linux: repair launch on.
(Edigrating 3194384 from //UE4/Private-Wombat/... to //UE4/Dev-Platform/...)
Change 3195041 on 2016/11/11 by Dmitry.Rekman
Linux: support selecting architectures per project.
(Edigrating 3192783 from Wombat to Dev-Platform).
Change 3195058 on 2016/11/11 by Dmitry.Rekman
Linux: fix code to determine number of cores.
- ARM topology seems not to be in line with the assumptions made by x86-centric code.
(Merging 3184632 from Wombat to Dev-Platform).
Change 3195082 on 2016/11/11 by Josh.Adams
- Fixed name of packaged Switch builds to have the config in it (Shipping, etc)
#jira UE-38394
Change 3195151 on 2016/11/11 by Bart.Hawthorne
- Add game server settings to project settings to connect to the actual game server, instead of the debug login
- Use the system software dialog box to show error codes for login failures
Change 3195153 on 2016/11/11 by Josh.Adams
- Fixed copy and paste logs errors
Change 3195156 on 2016/11/11 by Josh.Adams
- Fixed some default values, especially for save games (uses their default of 4MB size)
- Added some LotCheck write tracking
Change 3195285 on 2016/11/11 by Jeff.Campeau
Fix HarfBuzz warning on Xbox One
Change 3195477 on 2016/11/11 by Josh.Adams
- Fixed up some IsGameOnly calls
#jira UE-37575
Change 3195490 on 2016/11/11 by Dmitry.Rekman
UAT: fix CIS (removed old variables).
Change 3195724 on 2016/11/11 by Josh.Adams
- Final fix for name of .nsp (content only projects in Shipping config, etc)
#jira UE-38394
Change 3195755 on 2016/11/11 by Josh.Adams
- Made translucent Switch icons
Change 3195771 on 2016/11/11 by Josh.Adams
- Fixed some Switch "space in path" issues
#jira UE-38393
Change 3195801 on 2016/11/11 by Josh.Adams
- Handle making sure the save is completed before we shutdown
#jira UE-38215
Change 3196593 on 2016/11/14 by Michael.Trepka
Implemented Info string in AvfMedia for display in Media Player Editor
#jira UE-35386
Change 3196782 on 2016/11/14 by Josh.Adams
- Added a comment for a workaround
Change 3196784 on 2016/11/14 by Michael.Trepka
Alembic importer for Mac
#jira UE-37708
Change 3196901 on 2016/11/14 by Alicia.Cano
ADB over wifi fails to deploy on Launch on.
#jira UE-37957
#android
Change 3197055 on 2016/11/14 by Josh.Adams
- Fixed BinnedAllocator crash that happened with PoisonProxy and large allocations with large alignment
Change 3197059 on 2016/11/14 by Josh.Adams
- Removed some stat code with no STATS
Change 3197066 on 2016/11/14 by Josh.Adams
- Fixed the generic growableallocator to not free metadata before it's used for stats, and cleaned up a couple minor things
Change 3197176 on 2016/11/14 by Josh.Adams
- Added some helper scripts to switch in and out of debug mode on Switch
Change 3197183 on 2016/11/14 by Bart.Hawthorne
Error dialog fixes based on peer review feedback from JoshA
Change 3197339 on 2016/11/14 by Josh.Adams
Allow -htcs on the commandline now to override disabling Htcs in packaged builds
Change 3197401 on 2016/11/14 by Josh.Adams
- Fixed the Switch package installation script to remove the path of the package, since it causes problems with spaces, and also it makes the script less portable!
#jira UE-38556
Change 3197691 on 2016/11/14 by Dmitry.Rekman
Linux: save added devices.
(Edigrating 3196529 from Wombat to Dev-Platform).
Change 3197854 on 2016/11/15 by Dan.Mahashin
- MemoryProfiler2: fixed Switch parser file path in the csproj
Change 3197960 on 2016/11/15 by Dan.Mahashin
- NVN RHITransitionResources() directly uses a barrier instead of relying on CopyToResolveTarget() side effect (UE-33834)
Change 3198488 on 2016/11/15 by Bart.Hawthorne
Submit missing NoRedist/DefaultEngine.ini file
Change 3198970 on 2016/11/15 by Michael.Trepka
Don't try to use installed Mono 4.6 on Mac as it's known to have issues on macOS 10.12 (for example building the editor with UBT often fails with Mono running out of file desriptors)
Change 3199050 on 2016/11/15 by Daniel.Lamb
Some more output to help track down iterative cooking scenarios
#test Cook paragon
Change 3199097 on 2016/11/15 by Josh.Adams
- Fixed up Switch packaging to re-generate the meta data in case it changed since compile time (esp with content only projects
- Fixed default Program Id in code
- Fixed a problem with Run with a space in the path
#jira UE-38608
Change 3199181 on 2016/11/15 by Dmitry.Rekman
Fix CIS (compiling LinuxTargetDevice without engine).
Change 3199253 on 2016/11/15 by Dmitry.Rekman
Hopeful fix for a static analysis warning.
Change 3199325 on 2016/11/15 by Joe.Barnes
Start a new CommandBuffer immediately upon ending one. Prevents fetching when there's no CommandBuffer. Needed for Loading Screen movie playback.
Change 3199814 on 2016/11/15 by Dmitry.Rekman
Linux: remove forced -windowed when launching.
(Merging CL 3199789 from Wombat to Dev-Platform)
Change 3200580 on 2016/11/16 by Josh.Adams
Updasted DeploymentServer
Change 3200595 on 2016/11/16 by Joe.Barnes
Removed inadvertent SleepThread() when starting movie playback.
Change 3200604 on 2016/11/16 by Josh.Adams
- Added NN_MIDDLEWARE macros to tag ths apps as using UE4 middleware
Change 3200632 on 2016/11/16 by Brent.Pease
Update PlatformShowcase with latest tests
Change 3200704 on 2016/11/16 by Dmitry.Rekman
Linux: fix native compilation.
Change 3200711 on 2016/11/16 by Brent.Pease
- Support ios audio streaming from disk
- Flushed out ADPCMAudioInfo to be more flexible with buffer management in addition to support streaming from disk. This should make more code platform independent.
+ Other platforms should work fine but will need to be updated to use the new buffer flexability (and hence simplify their own code and buffer management)
- IOS audio implementation simplified to use new ADPCMAudioInfo functionality
- Fixed adpcm seamless looping
NOTE: While everything works with my testing (admittedly simple tests) a little more code cleanup needs to happen...
Change 3201015 on 2016/11/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3201023 on 2016/11/16 by Josh.Stoddard
Fix splash screen assignment for iPad
#jira UE-38623
Change 3201215 on 2016/11/16 by Brent.Pease
Hopefully final fix for build breakage
Change 3201259 on 2016/11/16 by Josh.Adams
- Removed the clock rate settings from the Project Settings, and the cvars - it was just confusing
- Further improved the metadata recreation during packaging (can get rid of the temp meta/desc files now I believe)
- Reduced audio pool alignment to not waste massive memory from it
Change 3202332 on 2016/11/17 by Daniel.Lamb
Changed build scripts to support iterative cooking
#test Ran new build scripts
Change 3202371 on 2016/11/17 by Michael.Trepka
Changed FAppleHttpResponse::GetContentLength to return expected content size instead of payload size so it's consistent with other implementations
#jira UE-38392
Change 3202421 on 2016/11/17 by Michael.Trepka
Decrease the number of max open files for a thread on Apple platforms from 256 to 192 to leave more file descriptors to Cocoa
#jira UE-18343
Change 3202462 on 2016/11/17 by Michael.Trepka
Fixed HTTP If-None-Match response code on Mac and iOS
Fixed by iktomi, https://answers.unrealengine.com/questions/492514/http-if-none-match-logic-isnt-working-on-mac-due-t.html
#jira UE-36317
Change 3202620 on 2016/11/17 by Daniel.Lamb
Fixed issue with some objects being garbage collected which shouldn't be because the collection handler didn't get registered.
Commandlets now do not always have GIsRequestingExit true.
Made crash handler check for commandlets running and exit appropriately.
#test Rebuild lighting QAGame
Change 3202955 on 2016/11/17 by Daniel.Lamb
Add support for clearing all the cached cooked platform data for a platform when requested.
#test cook QA game
#jira UE-38361
Change 3202983 on 2016/11/17 by Daniel.Lamb
Added support to rebuild lightmaps commandlet for building lightmaps in seperate files.
#test rebuild lighting Custom QAGame maps.
#jira OR-31907
Change 3203128 on 2016/11/17 by Josh.Adams
- Fixed split screen user selection in ShooterGame (brought over some changes from NickD for it as well)
Change 3203537 on 2016/11/18 by Dmitry.Rekman
Fix ProjectWorldToScreen node for letterboxed viewports.
(Merging CL 3201546 from Wombat to Dev-Platform).
Change 3203540 on 2016/11/18 by Dmitry.Rekman
Linux: be more verbose when setting vblank sync.
(Merging CL 3199633 from Private-Wombat to Dev-Platform).
Change 3203599 on 2016/11/18 by Dmitry.Rekman
Speedup bForceCompilationAtStartup=True when nothing changed (UE-37067).
- PR #2849: Contributed by slonopotamus.
Change 3203610 on 2016/11/18 by Dmitry.Rekman
Add CEF support for Linux (UE-6743).
Change 3203615 on 2016/11/18 by Dmitry.Rekman
Linux: fix bootstrap script so it is independent of working dir (UE-37016).
- PR #2842 contributed by slonopotamus
Change 3203645 on 2016/11/18 by Dmitry.Rekman
Linux: fix UnrealCEFSubProcess.
Change 3203658 on 2016/11/18 by Dmitry.Rekman
Remove hard-coded paths to mono binary (UE-35228).
- Another way to implement pull request #2741.
Change 3203770 on 2016/11/18 by Josh.Adams
- Brought over some changes from Dev-Core to not crash in AsyncLoading with debug code
Change 3204244 on 2016/11/18 by Dmitry.Rekman
Unsuppress mistakenly suppressed warnings and fix one more (UE-38788).
Change 3204277 on 2016/11/18 by Brent.Pease
+ Fix seamless looping bug found on Dan's QAGame test
+ Fix static analyzer warning (which was a real bug with uncompressed streaming)
+ Code review feedback from Aaron
+ Small addition from channel sync ios bug fix
Change 3204576 on 2016/11/18 by Omar.Rodriguez
Expose the bEnableRemoteNotificationsSupport ini setting in the iOS project settings.
Change 3204629 on 2016/11/18 by Chris.Babcock
Fix case of VulkanSwapChain.h #include
#jira UE-38843
#ue4
#vulkan
Change 3204708 on 2016/11/18 by Josh.Adams
- Set SwitchMoviePlayer to include the libs from the proper directory
Change 3204730 on 2016/11/18 by Josh.Adams
- Changed a check to a checkf to narrow down why FMaterialUniformExpressionType::GetTypeMap().FindRef(TypeName) is returning nullptr on tvOS
Change 3204865 on 2016/11/18 by Brent.Pease
+ Turn off ios console logs on Windows to help sort through ios packaging and launch-on issues - This is NOT a fix but it should make it easier to track down the problem with it off.
Change 3204883 on 2016/11/18 by Dmitry.Rekman
Linux: fix native LaunchOn (UE-38616).
Change 3204914 on 2016/11/18 by Brent.Pease
+ Turn off the device check to prevent it from conflicting with remote packaging/launch-on
Change 3204940 on 2016/11/18 by Josh.Adams
Backing out changes to the profiler for Switch. Shouldn't have checked it in today during smoke
Change 3204952 on 2016/11/18 by Dmitry.Rekman
Linux: fix bootstrap script (UE-38851).
- Caused by UE-37016.
Change 3205630 on 2016/11/21 by Brent.Pease
+ Fix audio sound queuing bug by ensuring audio buffers are not reused by different sound source objects.
+ Cleaned up the locking mechanism around stopping sound sources to make its intent and function are clear
+ Cleaned up memory tracking and freeing.
#jira ue-38846
Change 3205787 on 2016/11/21 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
[CL 3206922 by Josh Adams in Main branch]
2016-11-21 20:27:58 -05:00
|
|
|
FString Item = PlatArray[Index];
|
2014-07-31 15:44:52 -04:00
|
|
|
if (PlatArray[Index].Contains(TEXT("##PlatformValidate:")))
|
2014-07-31 13:31:22 -04:00
|
|
|
{
|
2014-07-31 15:44:52 -04:00
|
|
|
PlatformInfo::EPlatformSDKStatus Status = PlatArray[Index+2].Contains(TEXT("INVALID")) ? PlatformInfo::EPlatformSDKStatus::NotInstalled : PlatformInfo::EPlatformSDKStatus::Installed;
|
|
|
|
|
FString PlatformName = PlatArray[Index+1];
|
2014-07-31 13:31:22 -04:00
|
|
|
if (PlatformName == TEXT("Win32") || PlatformName == TEXT("Win64"))
|
|
|
|
|
{
|
|
|
|
|
PlatformName = TEXT("Windows");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("WindowsNoEditor");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("WindowsClient");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("WindowsServer");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
}
|
|
|
|
|
else if (PlatformName == TEXT("Mac"))
|
|
|
|
|
{
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("MacNoEditor");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("MacClient");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("MacServer");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
}
|
|
|
|
|
else if (PlatformName == TEXT("Linux"))
|
|
|
|
|
{
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("LinuxNoEditor");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("LinuxClient");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
PlatformName = TEXT("LinuxServer");
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
}
|
2015-04-08 16:59:20 -04:00
|
|
|
else if (PlatformName == TEXT("Desktop"))
|
|
|
|
|
{
|
|
|
|
|
// since Desktop is just packaging, we don't need an SDK, and UBT will return INVALID, since it doesn't build for it
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, PlatformInfo::EPlatformSDKStatus::Installed);
|
|
|
|
|
}
|
2014-07-31 13:31:22 -04:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
PlatformInfo::UpdatePlatformSDKStatus(PlatformName, Status);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2014-03-14 14:13:41 -04:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
Copying //UE4/Dev-Framework to //UE4/Main
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2786974 on 2015/12/02 by Aaron.McLeran
UE-23930 Fix for concatenator node's not working correctly when it has child nodes that are mixer nodes.
- Fix was to track the number of sounds a sound a node can simultaneously play. In concatenator node, when a sound is notified as finishing, it tracks the sound index in the current child node before incrementing the child node index.
#codereview marc.audy
Change 2787015 on 2015/12/02 by Lukasz.Furman
changed color of root level decorator nodes in behavikor tree editor
#ue UE-23957
#rb Mieszko.Zielinski
Change 2787249 on 2015/12/02 by Ori.Cohen
Make scene queries thread safe by ensuring that any data that is not thread safe is not returned. This is for the benefit of the user, but also we cannot access these pointers off the game thread.
#rb Zak.Middleton
Change 2788469 on 2015/12/03 by Marc.Audy
Ability system cleanup:
Pass parameters around by const ref instead of value (FGameplayAbilityTargetDataHandle , TArray, FHitResult)
Eliminate unnecessary multiple derferences of weak pointers in a single function
Remove uses of auto, switch to using nullptr
Reorganize booleans to properly pack them
Const functions
Properly mark functions virtual and override
#rb Dave.Ratti, James.Golding
Change 2788787 on 2015/12/03 by Laurent.Delayen
Reinitialize top level state machines when they become relevant, to match behavior of nested state machines.
#rb lina.halper
#codereview lina.halper
Change 2789417 on 2015/12/03 by Aaron.McLeran
UE-19482 Fixing error in reporting audio asset memory usage for PS4 (and other platforms)
- Issue was that USoundWave::GetResourceSize() was incorrectly summing uncompressed PCM data size alongside compressed data size for PS4
- Added check using same condition in FAudioDevice::Precache which determines if compressed asset is fully decompressed into memory (and other decompression modes/types).
#codereview marc.audy, marcus.wassmer
#tests Tested loading maps in PS4 and confirming the uncompressed PCM data is not counted in audio asset resource size checks. Tested cooking assets in a map.
Change 2790152 on 2015/12/04 by Marc.Audy
Avoid unnecessary TArray and FHitResult copies
Change 2790182 on 2015/12/04 by Laurent.Delayen
Fixed notifies not being triggered when server calls Montage_JumpToSection.
#rb lina.halper
#tests Agora60p golden path, hyperbreach ultimate networked
Change 2790325 on 2015/12/04 by Zak.Middleton
#ue4 - Optimized USceneComponent::SetWorldTransform() to avoid unnecessary copies and avoid unaligned SIMD reads and writes.
#rb James.Golding, Chad.Taylor
Change 2792284 on 2015/12/06 by Marc.Audy
Avoid unnecessary FGameplayTagContainer copies
Change 2792305 on 2015/12/06 by Marc.Audy
Avoid unnecessary FGameplayAbilitySpec copies
Change 2792592 on 2015/12/07 by Martin.Wilson
Remove component reregistering logic from SetSkeletalMesh
#rb James.Goldng
Change 2792652 on 2015/12/07 by Ori.Cohen
Add a way to opt out of ignoring trigger volumes. This makes it possible to run collision module off the game thread.
#rb Gil.Gribb
Change 2793378 on 2015/12/07 by Lukasz.Furman
fixed resetting path data between repaths
#ue4 UE-22624
#rb Mieszko.Zielinski
Change 2794690 on 2015/12/08 by Lina.Halper
#ANIM: Skeleton
- fix crash when retargeting source that has been edited in editor
- make sure to copy sockets when retarget skeleton
#RB: Martin.Wilson
#Code review: Martin.Wilson
Change 2794694 on 2015/12/08 by Benn.Gallagher
Fixed duplicate slot names in anim slot groups. This was caused by not building the slot->group mapping at serialize time. COL would then re-add all the used slots to the group for a second time as the mapping wasn't built until postload.
#rb Lina.Halper
Change 2795241 on 2015/12/08 by Lukasz.Furman
fixed potential division by zero in acceleration driven path following
#ue4
#rb Mieszko.Zielinski
Change 2796109 on 2015/12/09 by James.Golding
Pass FGameplayCueParameters by const ref in more places (avoids malloc allocations due to containing 2 FGameplayTagContainers)
#rb marc.audy
#codereview david.ratti
Change 2796110 on 2015/12/09 by James.Golding
2015-12-17 12:11:11 -05:00
|
|
|
void SetupEnvironmentVariables(TArray<FString> &EnvVarNames, const TArray<FString>& EnvVarValues)
|
2015-01-20 10:05:42 -05:00
|
|
|
{
|
|
|
|
|
for (int i = 0; i < EnvVarNames.Num(); ++i)
|
|
|
|
|
{
|
|
|
|
|
const FString& EnvVarName = EnvVarNames[i];
|
|
|
|
|
const FString& EnvVarValue = EnvVarValues[i];
|
|
|
|
|
UE_LOG(LogTargetPlatformManager, Verbose, TEXT("Setting variable '%s' to '%s'."), *EnvVarName, *EnvVarValue);
|
|
|
|
|
FPlatformMisc::SetEnvironmentVar(*EnvVarName, *EnvVarValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-18 19:23:34 -04:00
|
|
|
void ModulesChangesCallback(FName ModuleName, EModuleChangeReason ReasonForChange)
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
2015-04-10 09:30:29 -04:00
|
|
|
if (!bIgnoreFirstDelegateCall && ModuleName.ToString().Contains(TEXT("TargetPlatform")) && !ModuleName.ToString().Contains(TEXT("ProjectTargetPlatformEditor")))
|
2014-03-14 14:13:41 -04:00
|
|
|
{
|
|
|
|
|
Invalidate();
|
|
|
|
|
}
|
2015-04-10 09:30:29 -04:00
|
|
|
bIgnoreFirstDelegateCall = false;
|
2014-03-14 14:13:41 -04:00
|
|
|
}
|
|
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
static FString SDKStatusMessage;
|
|
|
|
|
static void OnStatusOutput(FString Message)
|
|
|
|
|
{
|
|
|
|
|
SDKStatusMessage += Message;
|
|
|
|
|
}
|
|
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
// If true we should build formats that are actually required for use by the runtime.
|
|
|
|
|
// This happens for an ordinary editor run and more specifically whenever there is no
|
|
|
|
|
// TargetPlatform= on the command line.
|
|
|
|
|
bool bRestrictFormatsToRuntimeOnly;
|
|
|
|
|
|
|
|
|
|
// Flag to force reinitialization of all cached data. This is needed to have up-to-date caches
|
|
|
|
|
// in case of a module reload of a TargetPlatform-Module.
|
|
|
|
|
bool bForceCacheUpdate;
|
|
|
|
|
|
2015-04-10 09:30:29 -04:00
|
|
|
// Flag to avoid redunant reloads
|
|
|
|
|
bool bIgnoreFirstDelegateCall;
|
|
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
// Holds the list of discovered platforms.
|
|
|
|
|
TArray<ITargetPlatform*> Platforms;
|
2014-07-22 17:59:23 -04:00
|
|
|
|
|
|
|
|
#if AUTOSDKS_ENABLED
|
|
|
|
|
// holds the list of Platforms that have attempted setup.
|
|
|
|
|
TMap<FName, bool> PlatformsSetup;
|
|
|
|
|
#endif
|
2014-03-14 14:13:41 -04:00
|
|
|
};
|
|
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
|
2014-07-31 13:31:22 -04:00
|
|
|
FString FTargetPlatformManagerModule::SDKStatusMessage = TEXT("");
|
2014-03-14 14:13:41 -04:00
|
|
|
|
2014-09-21 20:35:48 -04:00
|
|
|
|
2014-03-14 14:13:41 -04:00
|
|
|
IMPLEMENT_MODULE(FTargetPlatformManagerModule, TargetPlatform);
|