diff --git a/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs b/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs index c64ee38b3..6e9fbea83 100644 --- a/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs +++ b/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs @@ -128,7 +128,7 @@ namespace Flax.Build sourceFiles.Sort(); // Build assembly - BuildDotNet(graph, buildData, targetBuildOptions, target.OutputName, sourceFiles); + BuildDotNet(graph, buildData, targetBuildOptions, target.OutputName, sourceFiles, optimizeAssembly: buildData.TargetOptions.ScriptingAPI.Optimization); } // Deploy files @@ -152,7 +152,7 @@ namespace Flax.Build } } - private static void BuildDotNet(TaskGraph graph, BuildData buildData, BuildOptions buildOptions, string name, List sourceFiles, HashSet fileReferences = null, IGrouping binaryModule = null) + private static void BuildDotNet(TaskGraph graph, BuildData buildData, BuildOptions buildOptions, string name, List sourceFiles, HashSet fileReferences = null, IGrouping binaryModule = null, bool? optimizeAssembly = null) { // Setup build options var buildPlatform = Platform.BuildTargetPlatform; @@ -257,10 +257,8 @@ namespace Flax.Build if (buildOptions.ScriptingAPI.IgnoreMissingDocumentationWarnings) args.Add("-nowarn:1591"); - // Optimizations prevent debugging, only enable in release builds - var optimize = buildData.Configuration == TargetConfiguration.Release; - if (buildData.TargetOptions.ScriptingAPI.Optimization.HasValue) - optimize = buildData.TargetOptions.ScriptingAPI.Optimization.Value; + // Optimizations prevent debugging, only enable in release builds by default + var optimize = optimizeAssembly.HasValue ? optimizeAssembly.Value : buildData.Configuration == TargetConfiguration.Release; args.Add(optimize ? "/optimize+" : "/optimize-"); #if !USE_NETCORE args.Add(string.Format("/reference:\"{0}mscorlib.dll\"", referenceAssemblies)); @@ -374,11 +372,15 @@ namespace Flax.Build // Get references fileReferences.Clear(); + bool? optimizeAssembly = null; foreach (var module in binaryModule) { if (!buildData.Modules.TryGetValue(module, out var moduleBuildOptions)) continue; + if (moduleBuildOptions.ScriptingAPI.Optimization.HasValue) + optimizeAssembly |= moduleBuildOptions.ScriptingAPI.Optimization; + // Find references based on the modules dependencies foreach (var dependencyName in moduleBuildOptions.PublicDependencies.Concat(moduleBuildOptions.PrivateDependencies)) { @@ -408,7 +410,7 @@ namespace Flax.Build } // Build assembly - BuildDotNet(graph, buildData, buildOptions, binaryModuleName + ".CSharp", sourceFiles, fileReferences, binaryModule); + BuildDotNet(graph, buildData, buildOptions, binaryModuleName + ".CSharp", sourceFiles, fileReferences, binaryModule, optimizeAssembly); } } } diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs b/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs index 72cefbfca..e161024b4 100644 --- a/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs +++ b/Source/Tools/Flax.Build/Build/NativeCpp/BuildOptions.cs @@ -225,7 +225,7 @@ namespace Flax.Build.NativeCpp public CSharpNullableReferences CSharpNullableReferences = CSharpNullableReferences.Disable; /// - /// Enable code optimization. + /// Enable code optimizations for the managed module assembly. /// public bool? Optimization; @@ -237,19 +237,13 @@ namespace Flax.Build.NativeCpp /// Adds the other options into this. /// /// The other. - public void Add(ScriptingAPIOptions other, bool addBuildOptions = true) + public void Add(ScriptingAPIOptions other) { Defines.AddRange(other.Defines); SystemReferences.AddRange(other.SystemReferences); FileReferences.AddRange(other.FileReferences); Analyzers.AddRange(other.Analyzers); IgnoreMissingDocumentationWarnings |= other.IgnoreMissingDocumentationWarnings; - - if (addBuildOptions) - { - if (other.Optimization.HasValue) - Optimization |= other.Optimization; - } } } diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs index 1e8550c4e..225e46ba7 100644 --- a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs +++ b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs @@ -403,7 +403,7 @@ namespace Flax.Build moduleOptions.PrivateIncludePaths.AddRange(dependencyOptions.PublicIncludePaths); moduleOptions.Libraries.AddRange(dependencyOptions.Libraries); moduleOptions.DelayLoadLibraries.AddRange(dependencyOptions.DelayLoadLibraries); - moduleOptions.ScriptingAPI.Add(dependencyOptions.ScriptingAPI, false); + moduleOptions.ScriptingAPI.Add(dependencyOptions.ScriptingAPI); moduleOptions.ExternalModules.AddRange(dependencyOptions.ExternalModules); } } @@ -418,7 +418,7 @@ namespace Flax.Build moduleOptions.PublicIncludePaths.AddRange(dependencyOptions.PublicIncludePaths); moduleOptions.Libraries.AddRange(dependencyOptions.Libraries); moduleOptions.DelayLoadLibraries.AddRange(dependencyOptions.DelayLoadLibraries); - moduleOptions.ScriptingAPI.Add(dependencyOptions.ScriptingAPI, false); + moduleOptions.ScriptingAPI.Add(dependencyOptions.ScriptingAPI); moduleOptions.ExternalModules.AddRange(dependencyOptions.ExternalModules); } }