Fix missing dotnet hosting components for not yet supported platforms during projects generation stage
This commit is contained in:
4
Source/ThirdParty/nethost/nethost.Build.cs
vendored
4
Source/ThirdParty/nethost/nethost.Build.cs
vendored
@@ -34,7 +34,11 @@ public class nethost : ThirdPartyModule
|
|||||||
if (!dotnetSdk.IsValid)
|
if (!dotnetSdk.IsValid)
|
||||||
throw new Exception($"Missing NET SDK {DotNetSdk.MinimumVersion}.");
|
throw new Exception($"Missing NET SDK {DotNetSdk.MinimumVersion}.");
|
||||||
if (!dotnetSdk.GetHostRuntime(options.Platform.Target, options.Architecture, out var hostRuntimePath))
|
if (!dotnetSdk.GetHostRuntime(options.Platform.Target, options.Architecture, out var hostRuntimePath))
|
||||||
|
{
|
||||||
|
if (options.Flags.HasFlag(BuildFlags.GenerateProject))
|
||||||
|
return; // Ignore missing Host Runtime at projects evaluation stage (not important)
|
||||||
throw new Exception($"Missing NET SDK runtime for {options.Platform.Target} {options.Architecture}.");
|
throw new Exception($"Missing NET SDK runtime for {options.Platform.Target} {options.Architecture}.");
|
||||||
|
}
|
||||||
|
|
||||||
// Setup build configuration
|
// Setup build configuration
|
||||||
switch (options.Platform.Target)
|
switch (options.Platform.Target)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace Flax.Build
|
|||||||
var configurationName = "Debug";
|
var configurationName = "Debug";
|
||||||
var configurationText = configurationName;
|
var configurationText = configurationName;
|
||||||
var targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath);
|
var targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath);
|
||||||
|
targetBuildOptions.Flags |= BuildFlags.GenerateProject;
|
||||||
var modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration);
|
var modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration);
|
||||||
foreach (var module in modules)
|
foreach (var module in modules)
|
||||||
{
|
{
|
||||||
@@ -65,6 +66,7 @@ namespace Flax.Build
|
|||||||
configurationName = "Release";
|
configurationName = "Release";
|
||||||
configurationText = configurationName;
|
configurationText = configurationName;
|
||||||
targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath);
|
targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath);
|
||||||
|
targetBuildOptions.Flags |= BuildFlags.GenerateProject;
|
||||||
modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration);
|
modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration);
|
||||||
foreach (var module in modules)
|
foreach (var module in modules)
|
||||||
{
|
{
|
||||||
@@ -115,6 +117,7 @@ namespace Flax.Build
|
|||||||
|
|
||||||
var toolchain = platform.TryGetToolchain(architecture);
|
var toolchain = platform.TryGetToolchain(architecture);
|
||||||
var targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath);
|
var targetBuildOptions = GetBuildOptions(target, platform, toolchain, architecture, configuration, project.WorkspaceRootPath);
|
||||||
|
targetBuildOptions.Flags |= BuildFlags.GenerateProject;
|
||||||
var modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration);
|
var modules = CollectModules(rules, platform, target, targetBuildOptions, toolchain, architecture, configuration);
|
||||||
foreach (var module in modules)
|
foreach (var module in modules)
|
||||||
{
|
{
|
||||||
@@ -275,6 +278,7 @@ namespace Flax.Build
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var referenceBuildOptions = GetBuildOptions(referenceTarget, configurationData.TargetBuildOptions.Platform, configurationData.TargetBuildOptions.Toolchain, configurationData.Architecture, configurationData.Configuration, reference.Project.ProjectFolderPath);
|
var referenceBuildOptions = GetBuildOptions(referenceTarget, configurationData.TargetBuildOptions.Platform, configurationData.TargetBuildOptions.Toolchain, configurationData.Architecture, configurationData.Configuration, reference.Project.ProjectFolderPath);
|
||||||
|
referenceBuildOptions.Flags |= BuildFlags.GenerateProject;
|
||||||
var referenceModules = CollectModules(rules, referenceBuildOptions.Platform, referenceTarget, referenceBuildOptions, referenceBuildOptions.Toolchain, referenceBuildOptions.Architecture, referenceBuildOptions.Configuration);
|
var referenceModules = CollectModules(rules, referenceBuildOptions.Platform, referenceTarget, referenceBuildOptions, referenceBuildOptions.Toolchain, referenceBuildOptions.Architecture, referenceBuildOptions.Configuration);
|
||||||
var referenceBinaryModules = GetBinaryModules(projectInfo, referenceTarget, referenceModules);
|
var referenceBinaryModules = GetBinaryModules(projectInfo, referenceTarget, referenceModules);
|
||||||
foreach (var binaryModule in referenceBinaryModules)
|
foreach (var binaryModule in referenceBinaryModules)
|
||||||
@@ -504,6 +508,8 @@ namespace Flax.Build
|
|||||||
var platform = Platform.BuildPlatform;
|
var platform = Platform.BuildPlatform;
|
||||||
var architecture = TargetArchitecture.x64;
|
var architecture = TargetArchitecture.x64;
|
||||||
var configuration = TargetConfiguration.Debug;
|
var configuration = TargetConfiguration.Debug;
|
||||||
|
var buildOptions = GetBuildOptions(target, platform, null, architecture, configuration, project.WorkspaceRootPath);
|
||||||
|
buildOptions.Flags |= BuildFlags.GenerateProject;
|
||||||
project.Configurations.Add(new Project.ConfigurationData
|
project.Configurations.Add(new Project.ConfigurationData
|
||||||
{
|
{
|
||||||
Platform = platform.Target,
|
Platform = platform.Target,
|
||||||
@@ -513,7 +519,7 @@ namespace Flax.Build
|
|||||||
Configuration = configuration,
|
Configuration = configuration,
|
||||||
ConfigurationName = configuration.ToString(),
|
ConfigurationName = configuration.ToString(),
|
||||||
Target = target,
|
Target = target,
|
||||||
TargetBuildOptions = GetBuildOptions(target, platform, null, architecture, configuration, project.WorkspaceRootPath),
|
TargetBuildOptions = buildOptions,
|
||||||
Modules = new Dictionary<Module, BuildOptions>(),
|
Modules = new Dictionary<Module, BuildOptions>(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,6 +171,7 @@ namespace Flax.Build
|
|||||||
OutputFolder = mainModuleOutputPath,
|
OutputFolder = mainModuleOutputPath,
|
||||||
WorkingDirectory = exeBuildOptions.WorkingDirectory,
|
WorkingDirectory = exeBuildOptions.WorkingDirectory,
|
||||||
HotReloadPostfix = exeBuildOptions.HotReloadPostfix,
|
HotReloadPostfix = exeBuildOptions.HotReloadPostfix,
|
||||||
|
Flags = exeBuildOptions.Flags,
|
||||||
};
|
};
|
||||||
mainModuleOptions.SourcePaths.Add(mainModule.FolderPath);
|
mainModuleOptions.SourcePaths.Add(mainModule.FolderPath);
|
||||||
mainModule.Setup(mainModuleOptions);
|
mainModule.Setup(mainModuleOptions);
|
||||||
|
|||||||
@@ -6,6 +6,23 @@ using System.IO;
|
|||||||
|
|
||||||
namespace Flax.Build.NativeCpp
|
namespace Flax.Build.NativeCpp
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The native C++ module build flag types.
|
||||||
|
/// </summary>
|
||||||
|
[Flags]
|
||||||
|
public enum BuildFlags
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Nothing.
|
||||||
|
/// </summary>
|
||||||
|
None = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Projects generation (not actual build, just build setup evaluation).
|
||||||
|
/// </summary>
|
||||||
|
GenerateProject = 1,
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The native C++ module build settings container.
|
/// The native C++ module build settings container.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -131,6 +148,11 @@ namespace Flax.Build.NativeCpp
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string HotReloadPostfix;
|
public string HotReloadPostfix;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The build flags.
|
||||||
|
/// </summary>
|
||||||
|
public BuildFlags Flags;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The full path to the dependencies folder for the current build platform, configuration, and architecture.
|
/// The full path to the dependencies folder for the current build platform, configuration, and architecture.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -213,7 +235,7 @@ namespace Flax.Build.NativeCpp
|
|||||||
"System.Private.CoreLib",
|
"System.Private.CoreLib",
|
||||||
"System.Private.Uri",
|
"System.Private.Uri",
|
||||||
"System.Private.Xml",
|
"System.Private.Xml",
|
||||||
|
|
||||||
"System.Reflection",
|
"System.Reflection",
|
||||||
"System.Runtime",
|
"System.Runtime",
|
||||||
"System.Runtime.CompilerServices.Unsafe",
|
"System.Runtime.CompilerServices.Unsafe",
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ namespace Flax.Build
|
|||||||
OutputFolder = outputPath,
|
OutputFolder = outputPath,
|
||||||
WorkingDirectory = buildData.TargetOptions.WorkingDirectory,
|
WorkingDirectory = buildData.TargetOptions.WorkingDirectory,
|
||||||
HotReloadPostfix = buildData.TargetOptions.HotReloadPostfix,
|
HotReloadPostfix = buildData.TargetOptions.HotReloadPostfix,
|
||||||
|
Flags = buildData.TargetOptions.Flags,
|
||||||
};
|
};
|
||||||
moduleOptions.SourcePaths.Add(module.FolderPath);
|
moduleOptions.SourcePaths.Add(module.FolderPath);
|
||||||
module.Setup(moduleOptions);
|
module.Setup(moduleOptions);
|
||||||
|
|||||||
Reference in New Issue
Block a user