From 3250e00ca87f56677847bdaf4ad73050121bda47 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 17:52:52 -0400 Subject: [PATCH 01/10] Added publish build type --- Scripts/Linux/MakeReleaseBuild.sh | 11 +++++-- .../include/OvEditor/Core/EditorActions.h | 15 ++++++++-- Sources/OvEditor/premake5.lua | 12 ++++---- .../OvEditor/src/OvEditor/Core/Context.cpp | 4 +-- .../src/OvEditor/Core/EditorActions.cpp | 30 ++++++++++++++----- .../src/OvEditor/Panels/ProjectSettings.cpp | 2 +- Sources/OvGame/premake5.lua | 2 +- Sources/OvGame/src/OvGame/Main.cpp | 2 +- premake5.lua | 13 +++++--- 9 files changed, 66 insertions(+), 25 deletions(-) diff --git a/Scripts/Linux/MakeReleaseBuild.sh b/Scripts/Linux/MakeReleaseBuild.sh index 5a0dd3db6..52dc7c6f2 100755 --- a/Scripts/Linux/MakeReleaseBuild.sh +++ b/Scripts/Linux/MakeReleaseBuild.sh @@ -24,6 +24,13 @@ if [ $? -ne 0 ]; then exit $? fi +# Build Publish +"$SCRIPT_DIR/Build.sh" publish +if [ $? -ne 0 ]; then + echo "Publish build failed. Exiting." + exit $? +fi + # Read version from VERSION.txt VERSION=$(cat "$SCRIPT_DIR/../../VERSION.txt") PLATFORM="linux_x64" @@ -39,8 +46,8 @@ fi # Create Releases folder if it doesn't exist mkdir -p ../Releases -# Copy the Release folder to a new folder -cp -r Release "../Releases/Overload-$VERSION-$PLATFORM" +# Copy the Publish folder to a new folder +cp -r Publish "../Releases/Overload-$VERSION-$PLATFORM" # Create the archive, delete any existing one first if [ -f "../Releases/Overload-$VERSION-$PLATFORM.tar.gz" ]; then diff --git a/Sources/OvEditor/include/OvEditor/Core/EditorActions.h b/Sources/OvEditor/include/OvEditor/Core/EditorActions.h index 43712ffbb..7bc3078bd 100644 --- a/Sources/OvEditor/include/OvEditor/Core/EditorActions.h +++ b/Sources/OvEditor/include/OvEditor/Core/EditorActions.h @@ -27,6 +27,13 @@ namespace OvEditor::Core { enum class EGizmoOperation; + enum class EBuildType : int + { + Debug = 0, + Release = 1, + Publish = 2 + }; + /** * A set of editor actions */ @@ -398,11 +405,15 @@ namespace OvEditor::Core /** * Build the current project at the given location - * @param p_configuration + * @param p_buildType * @param p_buildPath * @param p_autoRun */ - void BuildAtLocation(const std::string& p_configuration, const std::filesystem::path&, bool p_autoRun = false); + void BuildAtLocation( + EBuildType p_buildType, + const std::filesystem::path&, + bool p_autoRun = false + ); #pragma endregion #pragma region PROFILNIG diff --git a/Sources/OvEditor/premake5.lua b/Sources/OvEditor/premake5.lua index df692a858..f7a62e777 100644 --- a/Sources/OvEditor/premake5.lua +++ b/Sources/OvEditor/premake5.lua @@ -68,7 +68,7 @@ project "OvEditor" symbols "On" kind "ConsoleApp" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "Speed" kind "WindowedApp" @@ -137,8 +137,9 @@ project "OvEditor" "rm -rf %{builddir}%{cfg.buildcfg}/Data", "mkdir -p %{builddir}%{cfg.buildcfg}/Data", "mkdir -p %{builddir}%{cfg.buildcfg}/Config", - "mkdir -p %{builddir}%{cfg.buildcfg}/Builder/Development", - "mkdir -p %{builddir}%{cfg.buildcfg}/Builder/Shipping", + "mkdir -p %{builddir}%{cfg.buildcfg}/Builder/Debug", + "mkdir -p %{builddir}%{cfg.buildcfg}/Builder/Release", + "mkdir -p %{builddir}%{cfg.buildcfg}/Builder/Publish", "cp -r %{resdir}Engine %{builddir}%{cfg.buildcfg}/Data/Engine", "cp -r %{resdir}Editor %{builddir}%{cfg.buildcfg}/Data/Editor", @@ -146,8 +147,9 @@ project "OvEditor" "cp %{outputdir}%{cfg.buildcfg}/%{prj.name}/OvEditor %{builddir}%{cfg.buildcfg}/", - "cp %{outputdir}Debug/OvGame/OvGame %{builddir}%{cfg.buildcfg}/Builder/Development/ 2>/dev/null || true", - "cp %{outputdir}Release/OvGame/OvGame %{builddir}%{cfg.buildcfg}/Builder/Shipping/ 2>/dev/null || true", + "cp %{outputdir}Debug/OvGame/OvGame %{builddir}%{cfg.buildcfg}/Builder/Debug/OvGame 2>/dev/null || true", + "cp %{outputdir}Release/OvGame/OvGame %{builddir}%{cfg.buildcfg}/Builder/Release/OvGame 2>/dev/null || true", + "cp %{outputdir}Publish/OvGame/OvGame %{builddir}%{cfg.buildcfg}/Builder/Publish/OvGame 2>/dev/null || true", "true" } diff --git a/Sources/OvEditor/src/OvEditor/Core/Context.cpp b/Sources/OvEditor/src/OvEditor/Core/Context.cpp index b797d49b0..91de825ed 100644 --- a/Sources/OvEditor/src/OvEditor/Core/Context.cpp +++ b/Sources/OvEditor/src/OvEditor/Core/Context.cpp @@ -202,7 +202,7 @@ void OvEditor::Core::Context::ResetProjectSettings() projectSettings.Add("vsync", true); projectSettings.Add("multisampling", false); projectSettings.Add("samples", 4); - projectSettings.Add("dev_build", true); + projectSettings.Add("build_type", 0); } bool OvEditor::Core::Context::IsProjectSettingsIntegrityVerified() @@ -217,7 +217,7 @@ bool OvEditor::Core::Context::IsProjectSettingsIntegrityVerified() projectSettings.IsKeyExisting("vsync") && projectSettings.IsKeyExisting("multisampling") && projectSettings.IsKeyExisting("samples") && - projectSettings.IsKeyExisting("dev_build"); + projectSettings.IsKeyExisting("build_type"); } void OvEditor::Core::Context::ApplyProjectSettings() diff --git a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp index a2853fd71..c52ea0448 100644 --- a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp +++ b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp @@ -52,6 +52,16 @@ namespace { constexpr std::string_view kDefaultMaterialPath = ":Materials\\Default.ovmat"; + std::string GetBuildTypeName(OvEditor::Core::EBuildType p_buildType) + { + switch (p_buildType) + { + case OvEditor::Core::EBuildType::Debug: return "Debug"; + case OvEditor::Core::EBuildType::Release: return "Release"; + case OvEditor::Core::EBuildType::Publish: return "Publish"; + } + } + template void MoveEmbeddedResourcesForRenamedModel( TResourceManager& p_resourceManager, @@ -307,10 +317,18 @@ void OvEditor::Core::EditorActions::Build(bool p_autoRun, bool p_tempFolder) return; // Operation cancelled (No folder selected) } - BuildAtLocation(m_context.projectSettings.Get("dev_build") ? "Development" : "Shipping", destinationFolder, p_autoRun); + BuildAtLocation( + static_cast(m_context.projectSettings.Get("build_type")), + destinationFolder, + p_autoRun + ); } -void OvEditor::Core::EditorActions::BuildAtLocation(const std::string & p_configuration, const std::filesystem::path& p_buildPath, bool p_autoRun) +void OvEditor::Core::EditorActions::BuildAtLocation( + EBuildType p_buildType, + const std::filesystem::path& p_buildPath, + bool p_autoRun +) { const std::string extension = #if defined(_WIN32) @@ -406,7 +424,7 @@ void OvEditor::Core::EditorActions::BuildAtLocation(const std::string & p_config failed = true; } - const auto builderFolder = std::filesystem::current_path() / "Builder" / p_configuration; + const auto builderFolder = std::filesystem::current_path() / "Builder" / GetBuildTypeName(p_buildType); if (std::filesystem::exists(builderFolder)) { @@ -456,11 +474,9 @@ void OvEditor::Core::EditorActions::BuildAtLocation(const std::string & p_config } else { - const std::string buildConfiguration = p_configuration == "Development" ? "Debug" : "Release"; OVLOG_ERROR(std::format( - "Builder folder for \"{}\" not found. Verify you have compiled Engine source code in \"{}\" configuration.", - p_configuration, - buildConfiguration + "Builder folder for \"{}\" not found.", + GetBuildTypeName(p_buildType) )); failed = true; } diff --git a/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp b/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp index 7d3569e8e..99056e4df 100644 --- a/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp +++ b/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp @@ -56,7 +56,7 @@ OvEditor::Panels::ProjectSettings::ProjectSettings(const std::string & p_title, auto& columns = generationRoot.CreateWidget>(); columns.widths[0] = 125; - GUIDrawer::DrawBoolean(columns, "Development build", GenerateGatherer("dev_build"), GenerateProvider("dev_build")); + GUIDrawer::DrawScalar(columns, "Build Type", GenerateGatherer("build_type"), GenerateProvider("build_type"), 1, 0, 2); } { diff --git a/Sources/OvGame/premake5.lua b/Sources/OvGame/premake5.lua index fe38679e7..9840762f6 100644 --- a/Sources/OvGame/premake5.lua +++ b/Sources/OvGame/premake5.lua @@ -64,7 +64,7 @@ project "OvGame" symbols "On" kind "ConsoleApp" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "Speed" kind "WindowedApp" diff --git a/Sources/OvGame/src/OvGame/Main.cpp b/Sources/OvGame/src/OvGame/Main.cpp index 3073a4754..c68532d40 100644 --- a/Sources/OvGame/src/OvGame/Main.cpp +++ b/Sources/OvGame/src/OvGame/Main.cpp @@ -26,4 +26,4 @@ int main() app.Run(); return EXIT_SUCCESS; -} \ No newline at end of file +} diff --git a/premake5.lua b/premake5.lua index 7cc290ba2..db46e9c0d 100644 --- a/premake5.lua +++ b/premake5.lua @@ -13,19 +13,24 @@ end local version = readVersion() workspace "Overload" - configurations { "Debug", "Release" } + configurations { "Debug", "Release", "Publish" } platforms { "x64" } startproject "OvEditor" defines { "LUA_SCRIPTING", "GRAPHICS_API_OPENGL", "OVERLOAD_VERSION=\"" .. version .. "\"", - "TRACY_ENABLE", - "TRACY_ON_DEMAND", - "TRACY_MEMORY_ENABLE", "SOL_NO_LUA_HPP" } + filter {"configurations:Debug or configurations:Release"} + defines { + "TRACY_ENABLE", + "TRACY_ON_DEMAND", + "TRACY_MEMORY_ENABLE", + } + filter{} + -- Set toolset based on operating system filter {"system:windows"} toolset("msc") From fdade8a3a494f1a4874402a5babed95a056c35ae Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 18:06:23 -0400 Subject: [PATCH 02/10] Added nice combo-box for build type selection --- .../include/OvEditor/Core/EditorActions.h | 6 ++++++ .../src/OvEditor/Core/EditorActions.cpp | 20 +++++++++---------- .../src/OvEditor/Panels/ProjectSettings.cpp | 13 +++++++++++- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Sources/OvEditor/include/OvEditor/Core/EditorActions.h b/Sources/OvEditor/include/OvEditor/Core/EditorActions.h index 7bc3078bd..99d160d21 100644 --- a/Sources/OvEditor/include/OvEditor/Core/EditorActions.h +++ b/Sources/OvEditor/include/OvEditor/Core/EditorActions.h @@ -34,6 +34,12 @@ namespace OvEditor::Core Publish = 2 }; + /** + * Returns the name of a build type + * @param p_buildType + */ + std::string GetBuildTypeName(EBuildType p_buildType); + /** * A set of editor actions */ diff --git a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp index c52ea0448..9c07a3934 100644 --- a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp +++ b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp @@ -52,16 +52,6 @@ namespace { constexpr std::string_view kDefaultMaterialPath = ":Materials\\Default.ovmat"; - std::string GetBuildTypeName(OvEditor::Core::EBuildType p_buildType) - { - switch (p_buildType) - { - case OvEditor::Core::EBuildType::Debug: return "Debug"; - case OvEditor::Core::EBuildType::Release: return "Release"; - case OvEditor::Core::EBuildType::Publish: return "Publish"; - } - } - template void MoveEmbeddedResourcesForRenamedModel( TResourceManager& p_resourceManager, @@ -128,6 +118,16 @@ namespace } } +std::string OvEditor::Core::GetBuildTypeName(OvEditor::Core::EBuildType p_buildType) +{ + switch (p_buildType) + { + case OvEditor::Core::EBuildType::Debug: return "Debug"; + case OvEditor::Core::EBuildType::Release: return "Release"; + case OvEditor::Core::EBuildType::Publish: return "Publish"; + } +} + OvEditor::Core::EditorActions::EditorActions(Context& p_context, PanelsManager& p_panelsManager) : m_context(p_context), m_panelsManager(p_panelsManager) diff --git a/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp b/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp index 99056e4df..c1bdc2b32 100644 --- a/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp +++ b/Sources/OvEditor/src/OvEditor/Panels/ProjectSettings.cpp @@ -13,6 +13,8 @@ #include #include #include +#include +#include using namespace OvUI::Panels; using namespace OvUI::Widgets; @@ -56,7 +58,16 @@ OvEditor::Panels::ProjectSettings::ProjectSettings(const std::string & p_title, auto& columns = generationRoot.CreateWidget>(); columns.widths[0] = 125; - GUIDrawer::DrawScalar(columns, "Build Type", GenerateGatherer("build_type"), GenerateProvider("build_type"), 1, 0, 2); + GUIDrawer::CreateTitle(columns, "Build Type"); + auto& comboBox = columns.CreateWidget(m_projectFile.Get("build_type")); + comboBox.choices = { + { static_cast(OvEditor::Core::EBuildType::Debug), OvEditor::Core::GetBuildTypeName(OvEditor::Core::EBuildType::Debug) }, + { static_cast(OvEditor::Core::EBuildType::Release), OvEditor::Core::GetBuildTypeName(OvEditor::Core::EBuildType::Release) }, + { static_cast(OvEditor::Core::EBuildType::Publish), OvEditor::Core::GetBuildTypeName(OvEditor::Core::EBuildType::Publish) }, + }; + auto& dispatcher = comboBox.AddPlugin>(); + dispatcher.RegisterGatherer(GenerateGatherer("build_type")); + dispatcher.RegisterProvider(GenerateProvider("build_type")); } { From ef24dbb4a9d77b510437352724b4f885d638edf6 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 18:17:54 -0400 Subject: [PATCH 03/10] Fixed missing tracy header in Profiling.h --- .../OvEditor/src/OvEditor/Rendering/DebugSceneRenderer.cpp | 4 ++-- Sources/OvRendering/include/OvRendering/HAL/Profiling.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Sources/OvEditor/src/OvEditor/Rendering/DebugSceneRenderer.cpp b/Sources/OvEditor/src/OvEditor/Rendering/DebugSceneRenderer.cpp index 2d1f93d9c..f05d274f4 100644 --- a/Sources/OvEditor/src/OvEditor/Rendering/DebugSceneRenderer.cpp +++ b/Sources/OvEditor/src/OvEditor/Rendering/DebugSceneRenderer.cpp @@ -612,8 +612,8 @@ class DebugActorRenderPass : public OvRendering::Core::ARenderPass if (auto capsuleColliderComponent = p_actor.GetComponent(); capsuleColliderComponent) { FVector3 actorScale = p_actor.transform.GetWorldScale(); - float radius = abs(capsuleColliderComponent->GetRadius() * std::max(std::max(actorScale.x, actorScale.z), 0.f)); - float height = abs(capsuleColliderComponent->GetHeight() * actorScale.y); + float radius = std::abs(capsuleColliderComponent->GetRadius() * std::max(std::max(actorScale.x, actorScale.z), 0.f)); + float height = std::abs(capsuleColliderComponent->GetHeight() * actorScale.y); m_debugShapeFeature.DrawCapsule( pso, diff --git a/Sources/OvRendering/include/OvRendering/HAL/Profiling.h b/Sources/OvRendering/include/OvRendering/HAL/Profiling.h index e9ae2b8b4..d447c0bb7 100644 --- a/Sources/OvRendering/include/OvRendering/HAL/Profiling.h +++ b/Sources/OvRendering/include/OvRendering/HAL/Profiling.h @@ -6,6 +6,8 @@ #pragma once +#include + #if defined(GRAPHICS_API_OPENGL) #include #include From 830744dbc25deeb563fee46b553b4e338cb00bc9 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 22:52:45 -0400 Subject: [PATCH 04/10] Updated premake files to include publish --- Dependencies/ImGui/premake5.lua | 4 ++-- Dependencies/assimp/premake5.lua | 2 +- Dependencies/bullet3/premake5.lua | 2 +- Dependencies/glad/premake5.lua | 2 +- Dependencies/glfw/premake5.lua | 2 +- Dependencies/lua/premake5.lua | 4 ++-- Dependencies/soloud/premake5.lua | 2 +- Dependencies/tinyxml2/premake5.lua | 2 +- Dependencies/tracy/premake5.lua | 2 +- Sources/OvAudio/premake5.lua | 2 +- Sources/OvCore/premake5.lua | 2 +- Sources/OvDebug/premake5.lua | 2 +- Sources/OvMaths/premake5.lua | 2 +- Sources/OvPhysics/premake5.lua | 2 +- Sources/OvRendering/premake5.lua | 2 +- Sources/OvTools/premake5.lua | 2 +- Sources/OvUI/premake5.lua | 2 +- Sources/OvWindowing/premake5.lua | 2 +- 18 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Dependencies/ImGui/premake5.lua b/Dependencies/ImGui/premake5.lua index cc78684f0..68f0aa5aa 100644 --- a/Dependencies/ImGui/premake5.lua +++ b/Dependencies/ImGui/premake5.lua @@ -24,6 +24,6 @@ project "ImGui" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } - optimize "On" \ No newline at end of file + optimize "On" diff --git a/Dependencies/assimp/premake5.lua b/Dependencies/assimp/premake5.lua index 86c81ebc6..d940af766 100644 --- a/Dependencies/assimp/premake5.lua +++ b/Dependencies/assimp/premake5.lua @@ -137,6 +137,6 @@ project 'assimp' defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Dependencies/bullet3/premake5.lua b/Dependencies/bullet3/premake5.lua index 08bb41aa9..e8d71fa9c 100644 --- a/Dependencies/bullet3/premake5.lua +++ b/Dependencies/bullet3/premake5.lua @@ -27,6 +27,6 @@ project "bullet3" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Dependencies/glad/premake5.lua b/Dependencies/glad/premake5.lua index bca7d04a7..3d2879fa0 100644 --- a/Dependencies/glad/premake5.lua +++ b/Dependencies/glad/premake5.lua @@ -20,6 +20,6 @@ project "glad" defines { "DEBUG", "_DEBUG" } optimize "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Dependencies/glfw/premake5.lua b/Dependencies/glfw/premake5.lua index 8f1884e8d..e63de0573 100644 --- a/Dependencies/glfw/premake5.lua +++ b/Dependencies/glfw/premake5.lua @@ -43,6 +43,6 @@ project "glfw" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Dependencies/lua/premake5.lua b/Dependencies/lua/premake5.lua index 8f805b324..81d74b4af 100644 --- a/Dependencies/lua/premake5.lua +++ b/Dependencies/lua/premake5.lua @@ -13,6 +13,6 @@ project "lua" symbols "Off" runtime "Debug" -- Ensures /MDd is used - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } - optimize "Speed" \ No newline at end of file + optimize "Speed" diff --git a/Dependencies/soloud/premake5.lua b/Dependencies/soloud/premake5.lua index dbb3fd7f0..1071dc114 100644 --- a/Dependencies/soloud/premake5.lua +++ b/Dependencies/soloud/premake5.lua @@ -25,6 +25,6 @@ project "soloud" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Dependencies/tinyxml2/premake5.lua b/Dependencies/tinyxml2/premake5.lua index 0972fc1f9..fb4af9f1e 100644 --- a/Dependencies/tinyxml2/premake5.lua +++ b/Dependencies/tinyxml2/premake5.lua @@ -20,6 +20,6 @@ project "tinyxml2" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Dependencies/tracy/premake5.lua b/Dependencies/tracy/premake5.lua index cfe6ea585..3f43e7654 100644 --- a/Dependencies/tracy/premake5.lua +++ b/Dependencies/tracy/premake5.lua @@ -23,6 +23,6 @@ project "tracy" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvAudio/premake5.lua b/Sources/OvAudio/premake5.lua index 65aa1a2f0..47d02bb2e 100644 --- a/Sources/OvAudio/premake5.lua +++ b/Sources/OvAudio/premake5.lua @@ -31,6 +31,6 @@ project "OvAudio" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvCore/premake5.lua b/Sources/OvCore/premake5.lua index 6a7ab2c6b..5e9b8f592 100644 --- a/Sources/OvCore/premake5.lua +++ b/Sources/OvCore/premake5.lua @@ -47,6 +47,6 @@ project "OvCore" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvDebug/premake5.lua b/Sources/OvDebug/premake5.lua index 8972deddd..b3142231f 100644 --- a/Sources/OvDebug/premake5.lua +++ b/Sources/OvDebug/premake5.lua @@ -26,6 +26,6 @@ project "OvDebug" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvMaths/premake5.lua b/Sources/OvMaths/premake5.lua index 7ed9c696e..47b037fc7 100644 --- a/Sources/OvMaths/premake5.lua +++ b/Sources/OvMaths/premake5.lua @@ -22,6 +22,6 @@ project "OvMaths" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvPhysics/premake5.lua b/Sources/OvPhysics/premake5.lua index 756bdf6ff..5fd3b4457 100644 --- a/Sources/OvPhysics/premake5.lua +++ b/Sources/OvPhysics/premake5.lua @@ -32,6 +32,6 @@ project "OvPhysics" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvRendering/premake5.lua b/Sources/OvRendering/premake5.lua index 7e0a5f4a4..f4c16ac50 100644 --- a/Sources/OvRendering/premake5.lua +++ b/Sources/OvRendering/premake5.lua @@ -34,6 +34,6 @@ project "OvRendering" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvTools/premake5.lua b/Sources/OvTools/premake5.lua index 5ad8df5f1..6691c8bf2 100644 --- a/Sources/OvTools/premake5.lua +++ b/Sources/OvTools/premake5.lua @@ -29,6 +29,6 @@ project "OvTools" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvUI/premake5.lua b/Sources/OvUI/premake5.lua index 70faa1cfb..4cc35d7f6 100644 --- a/Sources/OvUI/premake5.lua +++ b/Sources/OvUI/premake5.lua @@ -30,6 +30,6 @@ project "OvUI" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" diff --git a/Sources/OvWindowing/premake5.lua b/Sources/OvWindowing/premake5.lua index f15443535..dcec3b228 100644 --- a/Sources/OvWindowing/premake5.lua +++ b/Sources/OvWindowing/premake5.lua @@ -33,6 +33,6 @@ project "OvWindowing" defines { "DEBUG", "_DEBUG" } symbols "On" - filter { "configurations:Release" } + filter { "configurations:Release or configurations:Publish" } defines { "NDEBUG" } optimize "On" From a0f0c943703c33ebf173eb517f1e5264fd3c763b Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 23:20:47 -0400 Subject: [PATCH 05/10] Updated build scripts, added -skip-project-generation flag for Build script --- .github/workflows/windows_release.yml | 2 +- Scripts/Linux/Build.sh | 25 ++++++++++++++++++++----- Scripts/Linux/MakeReleaseBuild.sh | 9 ++++++--- Scripts/Windows/Build.bat | 19 +++++++++++++++---- Scripts/Windows/MakeReleaseBuild.bat | 22 +++++++++++++++++----- 5 files changed, 59 insertions(+), 18 deletions(-) diff --git a/.github/workflows/windows_release.yml b/.github/workflows/windows_release.yml index fd612ee9f..9f4d27cbb 100644 --- a/.github/workflows/windows_release.yml +++ b/.github/workflows/windows_release.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v6 - + - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v3 diff --git a/Scripts/Linux/Build.sh b/Scripts/Linux/Build.sh index df3a309ff..e1700632f 100755 --- a/Scripts/Linux/Build.sh +++ b/Scripts/Linux/Build.sh @@ -1,15 +1,30 @@ #!/bin/bash -# Get the configuration parameter (default to debug) -CONFIGURATION="${1:-debug}" +SKIP_PROJECT_GENERATION=false + +# Parse arguments +for arg in "$@"; do + case $arg in + -skip-project-generation) + SKIP_PROJECT_GENERATION=true + ;; + *) + CONFIGURATION="$arg" + ;; + esac +done + +CONFIGURATION="${CONFIGURATION:-debug}" # Convert to lowercase for make CONFIG_LOWER=$(echo "$CONFIGURATION" | tr '[:upper:]' '[:lower:]') # Generate project files -pushd "$(dirname "$0")" > /dev/null -./GenerateProjects.sh -popd > /dev/null +if [ "$SKIP_PROJECT_GENERATION" != "true" ]; then + pushd "$(dirname "$0")" > /dev/null + ./GenerateProjects.sh + popd > /dev/null +fi # Build the solution echo "Building Overload in $CONFIGURATION mode..." diff --git a/Scripts/Linux/MakeReleaseBuild.sh b/Scripts/Linux/MakeReleaseBuild.sh index 52dc7c6f2..769c1c539 100755 --- a/Scripts/Linux/MakeReleaseBuild.sh +++ b/Scripts/Linux/MakeReleaseBuild.sh @@ -10,22 +10,25 @@ for arg in "$@"; do fi done +# Generate projects +"$SCRIPT_DIR/GenerateProjects.sh" + # Build Debug -"$SCRIPT_DIR/Build.sh" debug +"$SCRIPT_DIR/Build.sh" debug -skip-project-generation if [ $? -ne 0 ]; then echo "Debug build failed. Exiting." exit $? fi # Build Release -"$SCRIPT_DIR/Build.sh" release +"$SCRIPT_DIR/Build.sh" release -skip-project-generation if [ $? -ne 0 ]; then echo "Release build failed. Exiting." exit $? fi # Build Publish -"$SCRIPT_DIR/Build.sh" publish +"$SCRIPT_DIR/Build.sh" publish -skip-project-generation if [ $? -ne 0 ]; then echo "Publish build failed. Exiting." exit $? diff --git a/Scripts/Windows/Build.bat b/Scripts/Windows/Build.bat index 90cd171d8..3b9eff5f8 100644 --- a/Scripts/Windows/Build.bat +++ b/Scripts/Windows/Build.bat @@ -2,12 +2,23 @@ setlocal enabledelayedexpansion :: Get the configuration parameter -set "CONFIGURATION=%~1" +set "CONFIGURATION=" +set "SKIP_PROJECT_GENERATION=false" + +for %%a in (%*) do ( + if "%%a"=="-skip-project-generation" ( + set "SKIP_PROJECT_GENERATION=true" + ) else ( + set "CONFIGURATION=%%a" + ) +) :: Generate the projects -pushd "%~dp0" -call .\GenerateProjects.bat vs2022 %CONFIGURATION% -popd +if "!SKIP_PROJECT_GENERATION!"=="false" ( + pushd "%~dp0" + call .\GenerateProjects.bat vs2022 %CONFIGURATION% + popd +) :: Initialize variables set "VSWHERE_PATH=" diff --git a/Scripts/Windows/MakeReleaseBuild.bat b/Scripts/Windows/MakeReleaseBuild.bat index 32ec208bd..a51f3f50b 100644 --- a/Scripts/Windows/MakeReleaseBuild.bat +++ b/Scripts/Windows/MakeReleaseBuild.bat @@ -3,19 +3,31 @@ pushd "%~dp0" set NO_OPEN=false if "%1"=="--no-open" set NO_OPEN=true -call .\Build.bat Debug +:: Generate projects +call .\GenerateProjects.sh + +:: Build Debug +call .\Build.bat Debug -skip-project-generation if %ERRORLEVEL% neq 0 ( echo Debug build failed. Exiting. exit /b %ERRORLEVEL% ) -call .\Build.bat Release +:: Build Release +call .\Build.bat Release -skip-project-generation if %ERRORLEVEL% neq 0 ( echo Release build failed. Exiting. exit /b %ERRORLEVEL% ) -:: The output is located in a folder called ..\..\Build\Release. Create an archive with this folder's content, and name the archive Overload--.zip. +:: Build Publish +call .\Build.bat Publish -skip-project-generation +if %ERRORLEVEL% neq 0 ( + echo Publish build failed. Exiting. + exit /b %ERRORLEVEL% +) + +:: The output is located in a folder called ..\..\Build\Publish. Create an archive with this folder's content, and name the archive Overload--.zip. for /f "delims=" %%v in (..\..\VERSION.txt) do set version=%%v set platform=windows_x64 @@ -27,8 +39,8 @@ if exist Overload-%version%-%platform% ( rmdir /s /q Overload-%version%-%platform% ) -:: Copy the folder "Release" to a new folder called "Overload-%version%-%platform%" -xcopy Release\ ..\Releases\Overload-%version%-%platform% /E /I +:: Copy the folder "Publish" to a new folder called "Overload-%version%-%platform%" +xcopy Publish\ ..\Releases\Overload-%version%-%platform% /E /I :: Ensure the Releases folder exists if not exist ..\Releases ( From d727a03ecd0770fb68a23a3c21f08ca6ab654f04 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 23:22:55 -0400 Subject: [PATCH 06/10] Fixed windows build (used .sh instead of .bat) --- Scripts/Windows/MakeReleaseBuild.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/Windows/MakeReleaseBuild.bat b/Scripts/Windows/MakeReleaseBuild.bat index a51f3f50b..b85224cb1 100644 --- a/Scripts/Windows/MakeReleaseBuild.bat +++ b/Scripts/Windows/MakeReleaseBuild.bat @@ -4,7 +4,7 @@ set NO_OPEN=false if "%1"=="--no-open" set NO_OPEN=true :: Generate projects -call .\GenerateProjects.sh +call .\GenerateProjects.bat :: Build Debug call .\Build.bat Debug -skip-project-generation From 85f448c2380b6f884437a0d24b184d71a3e0c0dc Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 23:31:17 -0400 Subject: [PATCH 07/10] Added assert when unknown build type is used --- Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp index 9c07a3934..b87fa63c8 100644 --- a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp +++ b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp @@ -5,6 +5,7 @@ */ #include +#include "OvDebug/Assertion.h" #include "OvTools/Utils/OptRef.h" #include #include @@ -126,6 +127,9 @@ std::string OvEditor::Core::GetBuildTypeName(OvEditor::Core::EBuildType p_buildT case OvEditor::Core::EBuildType::Release: return "Release"; case OvEditor::Core::EBuildType::Publish: return "Publish"; } + + OVASSERT(false, "Unknown build type used."); + return ""; } OvEditor::Core::EditorActions::EditorActions(Context& p_context, PanelsManager& p_panelsManager) : From 8924284d0f085dc0df823f3959ba91d776140ca5 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Wed, 15 Apr 2026 23:37:45 -0400 Subject: [PATCH 08/10] Added Windows-specific post-build commands --- Sources/OvEditor/premake5.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Sources/OvEditor/premake5.lua b/Sources/OvEditor/premake5.lua index f7a62e777..a990cf82d 100644 --- a/Sources/OvEditor/premake5.lua +++ b/Sources/OvEditor/premake5.lua @@ -102,10 +102,12 @@ project "OvEditor" "xcopy /Y /I /Q /D \"%{outputdir}%{cfg.buildcfg}\\%{prj.name}\\*.exe\" \"%{builddir}%{cfg.buildcfg}\\\"", "xcopy /Y /I /Q /D \"%{outputdir}%{cfg.buildcfg}\\%{prj.name}\\*.dll\" \"%{builddir}%{cfg.buildcfg}\\\"", - "xcopy \"%{outputdir}Debug\\OvGame\\*.exe\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Development\" /y /i /c", - "xcopy \"%{outputdir}Debug\\OvGame\\*.dll\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Development\" /y /i /c", - "xcopy \"%{outputdir}Release\\OvGame\\*.exe\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Shipping\" /y /i /c", - "xcopy \"%{outputdir}Release\\OvGame\\*.dll\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Shipping\" /y /i /c", + "xcopy \"%{outputdir}Debug\\OvGame\\*.exe\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Debug\" /y /i /c", + "xcopy \"%{outputdir}Debug\\OvGame\\*.dll\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Debug\" /y /i /c", + "xcopy \"%{outputdir}Release\\OvGame\\*.exe\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Release\" /y /i /c", + "xcopy \"%{outputdir}Release\\OvGame\\*.dll\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Release\" /y /i /c", + "xcopy \"%{outputdir}Publish\\OvGame\\*.exe\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Publish\" /y /i /c", + "xcopy \"%{outputdir}Publish\\OvGame\\*.dll\" \"%{builddir}%{cfg.buildcfg}\\Builder\\Publish\" /y /i /c", "EXIT /B 0" } From fc85bd8e307ab029173c6451524dbd3aeb47ac94 Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Thu, 16 Apr 2026 11:05:40 -0400 Subject: [PATCH 09/10] Clearer build failure message, and fixed Layout.ini case --- Sources/OvEditor/premake5.lua | 2 +- Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/OvEditor/premake5.lua b/Sources/OvEditor/premake5.lua index a990cf82d..9f7635b4b 100644 --- a/Sources/OvEditor/premake5.lua +++ b/Sources/OvEditor/premake5.lua @@ -95,7 +95,7 @@ project "OvEditor" "xcopy \"%{resdir}Engine\\*\" \"%{builddir}%{cfg.buildcfg}\\Data\\Engine\" /y /i /r /e /q", "xcopy \"%{resdir}Editor\\*\" \"%{builddir}%{cfg.buildcfg}\\Data\\Editor\" /y /i /r /e /q", - "xcopy \"%{prj.location}\\Layout.ini\" \"%{builddir}%{cfg.buildcfg}\\Config\\\" /y /i", + "xcopy \"%{prj.location}\\layout.ini\" \"%{builddir}%{cfg.buildcfg}\\Config\\\" /y /i", "xcopy \"%{wks.location}\\Tools\\tracy-profiler.exe\" \"%{builddir}%{cfg.buildcfg}\\Tools\\\" /y /i", diff --git a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp index b87fa63c8..258de306f 100644 --- a/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp +++ b/Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp @@ -430,7 +430,9 @@ void OvEditor::Core::EditorActions::BuildAtLocation( const auto builderFolder = std::filesystem::current_path() / "Builder" / GetBuildTypeName(p_buildType); - if (std::filesystem::exists(builderFolder)) + const std::string initialExecutableName = "OvGame" + extension; + + if (std::filesystem::exists(builderFolder) && std::filesystem::exists(builderFolder / initialExecutableName)) { std::error_code err; @@ -440,8 +442,6 @@ void OvEditor::Core::EditorActions::BuildAtLocation( { OVLOG_INFO("Builder data (Dlls and executable) copied"); - const std::string initialExecutableName = "OvGame" + extension; - std::filesystem::rename(p_buildPath / initialExecutableName, p_buildPath / executableName, err); if (!err) @@ -479,7 +479,7 @@ void OvEditor::Core::EditorActions::BuildAtLocation( else { OVLOG_ERROR(std::format( - "Builder folder for \"{}\" not found.", + "OvGame executable not found for \"{}\" configuration. Build OvGame and OvEditor in that configuration first, then try again.", GetBuildTypeName(p_buildType) )); failed = true; From 36a4ffec27e8ceb0ce97a14f2d8ddbd53ef3d49f Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Thu, 16 Apr 2026 11:45:07 -0400 Subject: [PATCH 10/10] Added Publish to build matrix --- .github/workflows/linux.yml | 2 +- .github/workflows/windows.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 2ed7765b3..db3b9b3b6 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: - configuration: [Debug, Release] + configuration: [Debug, Release, Publish] steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index e25f640c6..1f5b7f1ce 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: - configuration: [Debug, Release] + configuration: [Debug, Release, Publish] steps: - uses: actions/checkout@v6