diff --git a/Source/Editor/Content/Settings/BuildSettings.cs b/Source/Editor/Content/Settings/BuildSettings.cs index 87530f1fb..5dc6310c3 100644 --- a/Source/Editor/Content/Settings/BuildSettings.cs +++ b/Source/Editor/Content/Settings/BuildSettings.cs @@ -25,13 +25,6 @@ namespace FlaxEditor.Content.Settings Platform = BuildPlatform.Windows64, Mode = BuildConfiguration.Development, }, - new BuildTarget - { - Name = "Windows 32bit", - Output = "Output\\Win32", - Platform = BuildPlatform.Windows32, - Mode = BuildConfiguration.Development, - }, } }, new BuildPreset @@ -44,14 +37,7 @@ namespace FlaxEditor.Content.Settings Name = "Windows 64bit", Output = "Output\\Win64", Platform = BuildPlatform.Windows64, - Mode = BuildConfiguration.Development, - }, - new BuildTarget - { - Name = "Windows 32bit", - Output = "Output\\Win32", - Platform = BuildPlatform.Windows32, - Mode = BuildConfiguration.Development, + Mode = BuildConfiguration.Release, }, } }, diff --git a/Source/Editor/Content/Settings/BuildTarget.cs b/Source/Editor/Content/Settings/BuildTarget.cs index 7cdc500f6..97c0b8c3d 100644 --- a/Source/Editor/Content/Settings/BuildTarget.cs +++ b/Source/Editor/Content/Settings/BuildTarget.cs @@ -35,6 +35,12 @@ namespace FlaxEditor.Content.Settings [EditorOrder(30), Tooltip("Configuration build mode")] public BuildConfiguration Mode; + /// + /// The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines). + /// + [EditorOrder(90), Tooltip("The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines).")] + public string[] CustomDefines; + /// /// The pre-build action command line. /// @@ -46,11 +52,5 @@ namespace FlaxEditor.Content.Settings /// [EditorOrder(110)] public string PostBuildAction; - - /// - /// Gets the build options computed from the target configuration. - /// - [HideInEditor, NoSerialize] - public virtual BuildOptions Options => BuildOptions.None; } } diff --git a/Source/Editor/Cooker/CookingData.h b/Source/Editor/Cooker/CookingData.h index b46b8ff72..56b15af23 100644 --- a/Source/Editor/Cooker/CookingData.h +++ b/Source/Editor/Cooker/CookingData.h @@ -174,6 +174,11 @@ struct FLAXENGINE_API CookingData /// BuildOptions Options; + /// + /// The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines). + /// + Array CustomDefines; + /// /// The original output path (actual OutputPath could be modified by the Platform Tools or a plugin for additional layout customizations or packaging). This path is preserved. /// diff --git a/Source/Editor/Cooker/GameCooker.cpp b/Source/Editor/Cooker/GameCooker.cpp index d68ca587a..efd6763d8 100644 --- a/Source/Editor/Cooker/GameCooker.cpp +++ b/Source/Editor/Cooker/GameCooker.cpp @@ -257,7 +257,7 @@ PlatformTools* GameCooker::GetTools(BuildPlatform platform) return result; } -void GameCooker::Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options) +void GameCooker::Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options, const Array& customDefines) { if (IsRunning()) { @@ -281,6 +281,7 @@ void GameCooker::Build(BuildPlatform platform, BuildConfiguration configuration, data.Platform = platform; data.Configuration = configuration; data.Options = options; + data.CustomDefines = customDefines; data.OutputPath = outputPath; FileSystem::NormalizePath(data.OutputPath); data.OutputPath = data.OriginalOutputPath = FileSystem::ConvertRelativePathToAbsolute(Globals::ProjectFolder, data.OutputPath); diff --git a/Source/Editor/Cooker/GameCooker.h b/Source/Editor/Cooker/GameCooker.h index 3defe51ff..f1bfc4ad3 100644 --- a/Source/Editor/Cooker/GameCooker.h +++ b/Source/Editor/Cooker/GameCooker.h @@ -84,7 +84,8 @@ public: /// The build configuration. /// The output path (output directory). /// The build options. - API_FUNCTION() static void Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options); + /// The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines). + API_FUNCTION() static void Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options, const Array& customDefines); /// /// Sends a cancel event to the game building service. diff --git a/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp b/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp index 3bb2e1eb6..dd7c77a94 100644 --- a/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp +++ b/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp @@ -217,6 +217,11 @@ bool CompileScriptsStep::Perform(CookingData& data) args += TEXT(" -SkipTargets=FlaxGame"); } #endif + for (auto& define : data.CustomDefines) + { + args += TEXT(" -D"); + args += define; + } if (ScriptsBuilder::RunBuildTool(args)) { data.Error(TEXT("Failed to compile game scripts.")); diff --git a/Source/Editor/Windows/GameCookerWindow.cs b/Source/Editor/Windows/GameCookerWindow.cs index 442cc4c34..278ce69d3 100644 --- a/Source/Editor/Windows/GameCookerWindow.cs +++ b/Source/Editor/Windows/GameCookerWindow.cs @@ -73,6 +73,9 @@ namespace FlaxEditor.Windows [EditorOrder(20), Tooltip("Configuration build mode")] public BuildConfiguration ConfigurationMode = BuildConfiguration.Development; + [EditorOrder(90), Tooltip("The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines).")] + public string[] CustomDefines; + protected abstract BuildPlatform BuildPlatform { get; } protected virtual BuildOptions Options @@ -126,7 +129,7 @@ namespace FlaxEditor.Windows public virtual void Build() { var output = StringUtils.ConvertRelativePathToAbsolute(Globals.ProjectFolder, StringUtils.NormalizePath(Output)); - GameCooker.Build(BuildPlatform, ConfigurationMode, output, Options); + GameCooker.Build(BuildPlatform, ConfigurationMode, output, Options, CustomDefines); } } @@ -793,7 +796,7 @@ namespace FlaxEditor.Windows _preBuildAction = target.PreBuildAction; _postBuildAction = target.PostBuildAction; - GameCooker.Build(target.Platform, target.Mode, target.Output, target.Options); + GameCooker.Build(target.Platform, target.Mode, target.Output, BuildOptions.None, target.CustomDefines); } else if (_exitOnBuildEnd) {