Fix building separate main executable during bindings-only build

This commit is contained in:
Wojtek Figat
2022-01-14 18:13:22 +01:00
parent 4653e64ff4
commit a18faf4f7c

View File

@@ -47,7 +47,7 @@ namespace Flax.Build
public override string GetOutputFilePath(BuildOptions options, TargetOutputType? outputType) public override string GetOutputFilePath(BuildOptions options, TargetOutputType? outputType)
{ {
// If building engine executable for platform doesn't support referencing it when linking game shared libraries // If building engine executable for platform doesn't support referencing it when linking game shared libraries
if (outputType == null && UseSymbolsExports && OutputType == TargetOutputType.Executable && !options.Platform.HasExecutableFileReferenceSupport) if (outputType == null && UseSeparateMainExecutable(options))
{ {
// Build into shared library // Build into shared library
outputType = TargetOutputType.Library; outputType = TargetOutputType.Library;
@@ -62,7 +62,7 @@ namespace Flax.Build
base.SetupTargetEnvironment(options); base.SetupTargetEnvironment(options);
// If building engine executable for platform doesn't support referencing it when linking game shared libraries // If building engine executable for platform doesn't support referencing it when linking game shared libraries
if (UseSymbolsExports && OutputType == TargetOutputType.Executable && !options.Platform.HasExecutableFileReferenceSupport) if (UseSeparateMainExecutable(options))
{ {
// Build into shared library // Build into shared library
options.LinkEnv.Output = LinkerOutput.SharedLibrary; options.LinkEnv.Output = LinkerOutput.SharedLibrary;
@@ -73,7 +73,7 @@ namespace Flax.Build
public override void PreBuild(TaskGraph graph, BuildOptions buildOptions) public override void PreBuild(TaskGraph graph, BuildOptions buildOptions)
{ {
// If building engine executable for platform doesn't support referencing it when linking game shared libraries // If building engine executable for platform doesn't support referencing it when linking game shared libraries
if (UseSymbolsExports && OutputType == TargetOutputType.Executable && !buildOptions.Platform.HasExecutableFileReferenceSupport) if (UseSeparateMainExecutable(buildOptions))
{ {
// Don't link Main module into shared library // Don't link Main module into shared library
Modules.Remove("Main"); Modules.Remove("Main");
@@ -88,7 +88,7 @@ namespace Flax.Build
base.PostBuild(graph, buildOptions); base.PostBuild(graph, buildOptions);
// If building engine executable for platform doesn't support referencing it when linking game shared libraries // If building engine executable for platform doesn't support referencing it when linking game shared libraries
if (UseSymbolsExports && OutputType == TargetOutputType.Executable && !buildOptions.Platform.HasExecutableFileReferenceSupport) if (UseSeparateMainExecutable(buildOptions))
{ {
// Build additional executable with Main module only that uses shared library // Build additional executable with Main module only that uses shared library
using (new ProfileEventScope("BuildExecutable")) using (new ProfileEventScope("BuildExecutable"))
@@ -118,6 +118,11 @@ namespace Flax.Build
} }
} }
private bool UseSeparateMainExecutable(BuildOptions buildOptions)
{
return UseSymbolsExports && OutputType == TargetOutputType.Executable && !buildOptions.Platform.HasExecutableFileReferenceSupport && !Configuration.BuildBindingsOnly;
}
private void BuildMainExecutable(TaskGraph graph, BuildOptions buildOptions) private void BuildMainExecutable(TaskGraph graph, BuildOptions buildOptions)
{ {
if (IsPreBuilt) if (IsPreBuilt)