Include toolchain preprocessor definitions in binding generation
This commit is contained in:
@@ -173,6 +173,7 @@ namespace Flax.Build
|
||||
//throw new Exception(string.Format("Platform {0} {1} is not supported.", targetPlatform, architecture));
|
||||
|
||||
var platform = Platform.GetPlatform(targetPlatform);
|
||||
var toolchain = platform.GetToolchain(architecture);
|
||||
|
||||
// Special case: building C# bindings only (eg. when building Linux game on Windows without C++ scripting or for C#-only projects)
|
||||
if (Configuration.BuildBindingsOnly || (project.IsCSharpOnlyProject && platform.HasModularBuildSupport))
|
||||
@@ -186,7 +187,7 @@ namespace Flax.Build
|
||||
switch (target.Type)
|
||||
{
|
||||
case TargetType.NativeCpp:
|
||||
BuildTargetNativeCppBindingsOnly(rules, graph, target, buildContext, platform, architecture, configuration);
|
||||
BuildTargetNativeCppBindingsOnly(rules, graph, target, buildContext, toolchain, platform, architecture, configuration);
|
||||
break;
|
||||
case TargetType.DotNet:
|
||||
BuildTargetDotNet(rules, graph, target, platform, configuration);
|
||||
@@ -197,8 +198,6 @@ namespace Flax.Build
|
||||
continue;
|
||||
}
|
||||
|
||||
var toolchain = platform.GetToolchain(architecture);
|
||||
|
||||
using (new ProfileEventScope(target.Name))
|
||||
{
|
||||
Log.Info(string.Format("Building target {0} in {1} for {2} {3}", target.Name, configuration, targetPlatform, architecture));
|
||||
|
||||
@@ -553,7 +553,7 @@ namespace Flax.Build
|
||||
var graph = new TaskGraph(reference.Project.ProjectFolderPath);
|
||||
var skipBuild = target.IsPreBuilt || (Configuration.SkipTargets != null && Configuration.SkipTargets.Contains(target.Name));
|
||||
target.PreBuild();
|
||||
referencedBuildData = BuildTargetNativeCppBindingsOnly(buildData.Rules, graph, target, buildContext, buildData.Platform, buildData.Architecture, buildData.Configuration);
|
||||
referencedBuildData = BuildTargetNativeCppBindingsOnly(buildData.Rules, graph, target, buildContext, buildData.Toolchain, buildData.Platform, buildData.Architecture, buildData.Configuration, skipBuild);
|
||||
if (!skipBuild)
|
||||
{
|
||||
using (new ProfileEventScope("PrepareTasks"))
|
||||
@@ -935,7 +935,7 @@ namespace Flax.Build
|
||||
return buildData;
|
||||
}
|
||||
|
||||
private static BuildData BuildTargetNativeCppBindingsOnly(RulesAssembly rules, TaskGraph graph, Target target, Dictionary<Target, BuildData> buildContext, Platform platform, TargetArchitecture architecture, TargetConfiguration configuration)
|
||||
private static BuildData BuildTargetNativeCppBindingsOnly(RulesAssembly rules, TaskGraph graph, Target target, Dictionary<Target, BuildData> buildContext, Toolchain toolchain, Platform platform, TargetArchitecture architecture, TargetConfiguration configuration, bool skipBuild = false)
|
||||
{
|
||||
if (buildContext.TryGetValue(target, out var buildData))
|
||||
return buildData;
|
||||
@@ -954,24 +954,7 @@ namespace Flax.Build
|
||||
throw new Exception($"Cannot build target {target.Name}. The project file is missing (.flaxproj located in the folder above).");
|
||||
|
||||
// Setup build environment for the target
|
||||
var platformName = platform.Target.ToString();
|
||||
var architectureName = architecture.ToString();
|
||||
var configurationName = configuration.ToString();
|
||||
var targetBuildOptions = new BuildOptions
|
||||
{
|
||||
Target = target,
|
||||
Platform = platform,
|
||||
Toolchain = null,
|
||||
Architecture = architecture,
|
||||
Configuration = configuration,
|
||||
CompileEnv = new CompileEnvironment(),
|
||||
LinkEnv = new LinkEnvironment(),
|
||||
IntermediateFolder = Path.Combine(project.ProjectFolderPath, Configuration.IntermediateFolder, target.Name, platformName, architectureName, configurationName),
|
||||
OutputFolder = Path.Combine(project.ProjectFolderPath, Configuration.BinariesFolder, target.Name, platformName, architectureName, configurationName),
|
||||
WorkingDirectory = project.ProjectFolderPath,
|
||||
HotReloadPostfix = Configuration.HotReloadPostfix,
|
||||
};
|
||||
target.SetupTargetEnvironment(targetBuildOptions);
|
||||
var targetBuildOptions = GetBuildOptions(target, toolchain.Platform, toolchain, toolchain.Architecture, configuration, project.ProjectFolderPath, skipBuild ? string.Empty : Configuration.HotReloadPostfix);
|
||||
|
||||
using (new ProfileEventScope("PreBuild"))
|
||||
{
|
||||
@@ -1009,16 +992,13 @@ namespace Flax.Build
|
||||
{
|
||||
using (new ProfileEventScope(reference.Project.Name))
|
||||
{
|
||||
if (buildData.Toolchain == null)
|
||||
buildData.Toolchain = platform.GetToolchain(architecture);
|
||||
|
||||
if (Configuration.BuildBindingsOnly || project.IsCSharpOnlyProject || reference.Project.IsCSharpOnlyProject || !platform.HasRequiredSDKsInstalled)
|
||||
{
|
||||
BuildTargetReferenceNativeCppBindingsOnly(buildContext, buildData, reference);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (buildData.Toolchain == null)
|
||||
buildData.Toolchain = platform.GetToolchain(architecture);
|
||||
BuildTargetReferenceNativeCpp(buildContext, buildData, reference);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user