You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Build now takes optional inputs for consistency with BuildAction. - BuildAction has been renamed to Build and works the same as Build except it starts from an action. - Build now takes a FBuildPolicy, which is implicitly constructible from EBuildPolicy, and allows setting the policy by payload. - FBuildContext and FBuildConfigContext now have policy masks that allow clearing flags across every payload in the build. - EBuildPolicy has CacheStore split into CacheStoreOnQuery and CacheStoreOnBuild for more control of cache behavior. - Builds now use consistent completion callback parameters, FBuildCompleteParams. - Build types now have debugger visualization. #rb Zousar.Shaker #rnx #ROBOMERGE-AUTHOR: devin.doucette #ROBOMERGE-SOURCE: CL 17874670 in //UE5/Release-5.0/... via CL 17874724 #ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v883-17842818) #ROBOMERGE[STARSHIP]: UE5-Main [CL 17874740 by devin doucette in ue5-release-engine-test branch]
112 lines
3.7 KiB
C++
112 lines
3.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Containers/StringFwd.h"
|
|
#include "DerivedDataBuildTypes.h"
|
|
#include "Logging/LogMacros.h"
|
|
#include "Misc/AsciiSet.h"
|
|
|
|
struct FGuid;
|
|
|
|
template <typename FuncType> class TUniqueFunction;
|
|
|
|
namespace UE::DerivedData { class FBuildAction; }
|
|
namespace UE::DerivedData { class FBuildActionBuilder; }
|
|
namespace UE::DerivedData { class FBuildDefinition; }
|
|
namespace UE::DerivedData { class FBuildDefinitionBuilder; }
|
|
namespace UE::DerivedData { class FBuildInputsBuilder; }
|
|
namespace UE::DerivedData { class FBuildOutputBuilder; }
|
|
namespace UE::DerivedData { class FBuildPolicy; }
|
|
namespace UE::DerivedData { class FBuildSession; }
|
|
namespace UE::DerivedData { class FOptionalBuildInputs; }
|
|
namespace UE::DerivedData { class IBuild; }
|
|
namespace UE::DerivedData { class IBuildFunctionRegistry; }
|
|
namespace UE::DerivedData { class IBuildInputResolver; }
|
|
namespace UE::DerivedData { class IBuildScheduler; }
|
|
namespace UE::DerivedData { class IBuildWorkerRegistry; }
|
|
namespace UE::DerivedData { class ICache; }
|
|
namespace UE::DerivedData { class IRequestOwner; }
|
|
namespace UE::DerivedData { struct FBuildKey; }
|
|
|
|
namespace UE::DerivedData::Private
|
|
{
|
|
|
|
DECLARE_LOG_CATEGORY_EXTERN(LogDerivedDataBuild, Log, All);
|
|
|
|
// Implemented in DerivedDataBuild.cpp
|
|
IBuild* CreateBuild(ICache& Cache);
|
|
|
|
// Implemented in DerivedDataBuildFunctionRegistry.cpp
|
|
IBuildFunctionRegistry* CreateBuildFunctionRegistry();
|
|
|
|
// Implemented in DerivedDataBuildWorkerRegistry.cpp
|
|
IBuildWorkerRegistry* CreateBuildWorkerRegistry();
|
|
|
|
// Implemented in DerivedDataBuildScheduler.cpp
|
|
IBuildScheduler* CreateBuildScheduler();
|
|
|
|
// Implemented in DerivedDataBuildDefinition.cpp
|
|
FBuildDefinitionBuilder CreateBuildDefinition(FStringView Name, FStringView Function);
|
|
|
|
// Implemented in DerivedDataBuildAction.cpp
|
|
FBuildActionBuilder CreateBuildAction(FStringView Name, FStringView Function, const FGuid& FunctionVersion, const FGuid& BuildSystemVersion);
|
|
|
|
// Implemented in DerivedDataBuildInput.cpp
|
|
FBuildInputsBuilder CreateBuildInputs(FStringView Name);
|
|
|
|
// Implemented in DerivedDataBuildOutput.cpp
|
|
FBuildOutputBuilder CreateBuildOutput(FStringView Name, FStringView Function);
|
|
|
|
// Implemented in DerivedDataBuildSession.cpp
|
|
FBuildSession CreateBuildSession(
|
|
FStringView Name,
|
|
ICache& Cache,
|
|
IBuild& BuildSystem,
|
|
IBuildScheduler& Scheduler,
|
|
IBuildInputResolver* InputResolver);
|
|
|
|
// Implemented in DerivedDataBuildJob.cpp
|
|
struct FBuildJobCreateParams
|
|
{
|
|
ICache& Cache;
|
|
IBuild& BuildSystem;
|
|
IBuildScheduler& Scheduler;
|
|
IBuildInputResolver* InputResolver{};
|
|
IRequestOwner& Owner;
|
|
};
|
|
void CreateBuildJob(
|
|
const FBuildJobCreateParams& Params,
|
|
const FBuildKey& Key,
|
|
const FBuildPolicy& Policy,
|
|
FOnBuildComplete&& OnComplete);
|
|
void CreateBuildJob(
|
|
const FBuildJobCreateParams& Params,
|
|
const FBuildDefinition& Definition,
|
|
const FOptionalBuildInputs& Inputs,
|
|
const FBuildPolicy& Policy,
|
|
FOnBuildComplete&& OnComplete);
|
|
void CreateBuildJob(
|
|
const FBuildJobCreateParams& Params,
|
|
const FBuildAction& Action,
|
|
const FOptionalBuildInputs& Inputs,
|
|
const FBuildPolicy& Policy,
|
|
FOnBuildComplete&& OnComplete);
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
inline bool IsValidBuildFunctionName(FStringView Function)
|
|
{
|
|
constexpr FAsciiSet Valid("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
|
return !Function.IsEmpty() && FAsciiSet::HasOnly(Function, Valid);
|
|
}
|
|
|
|
inline void AssertValidBuildFunctionName(FStringView Function, FStringView Name)
|
|
{
|
|
checkf(IsValidBuildFunctionName(Function),
|
|
TEXT("A build function name must be alphanumeric and non-empty for build of '%.*s' by '%.*s'."),
|
|
Name.Len(), Name.GetData(), Function.Len(), Function.GetData());
|
|
}
|
|
|
|
} // UE::DerivedData::Private
|