diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs b/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs
index b1159db1c..9939cea53 100644
--- a/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs
+++ b/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs
@@ -56,6 +56,11 @@ namespace Flax.Build.NativeCpp
///
public bool Optimization = false;
+ ///
+ /// Enables the whole program optimization.
+ ///
+ public bool WholeProgramOptimization = false;
+
///
/// Enables functions level linking support.
///
@@ -131,6 +136,7 @@ namespace Flax.Build.NativeCpp
RuntimeTypeInfo = RuntimeTypeInfo,
Inlining = Inlining,
Optimization = Optimization,
+ WholeProgramOptimization = WholeProgramOptimization,
FunctionLevelLinking = FunctionLevelLinking,
DebugInformation = DebugInformation,
UseDebugCRT = UseDebugCRT,
diff --git a/Source/Tools/Flax.Build/Build/Target.cs b/Source/Tools/Flax.Build/Build/Target.cs
index ebf1d36c9..239578d51 100644
--- a/Source/Tools/Flax.Build/Build/Target.cs
+++ b/Source/Tools/Flax.Build/Build/Target.cs
@@ -256,6 +256,7 @@ namespace Flax.Build
options.CompileEnv.IntrinsicFunctions = false;
options.CompileEnv.BufferSecurityCheck = true;
options.CompileEnv.Inlining = false;
+ options.CompileEnv.WholeProgramOptimization = false;
options.LinkEnv.DebugInformation = true;
options.LinkEnv.LinkTimeCodeGeneration = false;
@@ -273,11 +274,11 @@ namespace Flax.Build
options.CompileEnv.IntrinsicFunctions = true;
options.CompileEnv.BufferSecurityCheck = true;
options.CompileEnv.Inlining = true;
- //options.CompileEnv.WholeProgramOptimization = true;
+ options.CompileEnv.WholeProgramOptimization = false;
options.LinkEnv.DebugInformation = true;
- options.LinkEnv.LinkTimeCodeGeneration = true;
- options.LinkEnv.UseIncrementalLinking = false;
+ options.LinkEnv.LinkTimeCodeGeneration = false;
+ options.LinkEnv.UseIncrementalLinking = true;
options.LinkEnv.Optimization = true;
break;
case TargetConfiguration.Release:
@@ -291,7 +292,7 @@ namespace Flax.Build
options.CompileEnv.IntrinsicFunctions = true;
options.CompileEnv.BufferSecurityCheck = false;
options.CompileEnv.Inlining = true;
- //options.CompileEnv.WholeProgramOptimization = true;
+ options.CompileEnv.WholeProgramOptimization = true;
options.LinkEnv.DebugInformation = false;
options.LinkEnv.LinkTimeCodeGeneration = true;
diff --git a/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs b/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs
index 0917b5027..4d3289a86 100644
--- a/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs
+++ b/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs
@@ -467,8 +467,11 @@ namespace Flax.Build.Platforms
// Frame-Pointer Omission
commonArgs.Add("/Oy");
- // Whole Program Optimization
- commonArgs.Add("/GL");
+ if (compileEnvironment.WholeProgramOptimization)
+ {
+ // Whole Program Optimization
+ commonArgs.Add("/GL");
+ }
}
else
{
@@ -721,7 +724,7 @@ namespace Flax.Build.Platforms
args.Add("/PDBALTPATH:%_PDB%");
// Optimize
- if (linkEnvironment.Optimization)
+ if (linkEnvironment.Optimization && !linkEnvironment.UseIncrementalLinking)
{
// Generate an EXE checksum
args.Add("/RELEASE");