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)
{