diff --git a/External/Imgui b/External/Imgui index 7038887..00b2fe6 160000 --- a/External/Imgui +++ b/External/Imgui @@ -1 +1 @@ -Subproject commit 7038887c3278df0d63b4e7b4f399239ff1d7629d +Subproject commit 00b2fe6b8b5a2fa7cc96c6f2aaa7c14b7b7a436e diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj index ee87eea..28660bf 100644 --- a/Game/Game.vcxproj +++ b/Game/Game.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -14,17 +14,8 @@ x64 - - - - - - - - - - {b1d040d0-6c94-4f93-bc2a-7f5284b7d434} + {b568a67e-05a1-9907-ff4b-a129119528bd} MakeFileProj @@ -32,72 +23,69 @@ Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe - - - - - - - - - - - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + $(SolutionDir)bin\x64-Debug\Game.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Debug\ + $(SolutionDir)Intermediate\x64-Debug\Game\ + $(SolutionDir)bin\x64-Debug\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + $(SolutionDir)bin\x64-Profile\Game.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Profile\ + $(SolutionDir)Intermediate\x64-Profile\Game\ + $(SolutionDir)bin\x64-Profile\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + $(SolutionDir)bin\x64-Release\Game.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;JULIET_EXPORT;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Release\ + $(SolutionDir)Intermediate\x64-Release\Game\ + $(SolutionDir)bin\x64-Release\ - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - + + + + + + - - - \ No newline at end of file + diff --git a/Game/Game.vcxproj.filters b/Game/Game.vcxproj.filters index a36c033..9fdb17f 100644 --- a/Game/Game.vcxproj.filters +++ b/Game/Game.vcxproj.filters @@ -1,23 +1,19 @@ - - - Entity - - - Entity - - - Entity - - - - - - - {6051ee0a-6c94-4f93-bc2a-7f5284b7d434} - \ No newline at end of file + + + Entity + + + + Entity + + + Entity + + + diff --git a/Juliet.sln b/Juliet.sln index fcaee9c..bc8ee6c 100644 --- a/Juliet.sln +++ b/Juliet.sln @@ -1,14 +1,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\ImGui.vcxproj", "{C16FFE36-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietApp", "JulietApp\JulietApp.vcxproj", "{1720427b-c8ba-3195-f931-e97f6d6125c1}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game", "Game\Game.vcxproj", "{B1D040D0-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{a93aa30f-8f29-02fe-57e2-cd3626948b68}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietApp", "JulietApp\JulietApp.vcxproj", "{1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game", "Game\Game.vcxproj", "{b568a67e-05a1-9907-ff4b-a129119528bd}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\imgui\ImGui.vcxproj", "{652d3fea-b417-1d5e-9f79-3f32e9604ddc}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -17,21 +17,30 @@ Global Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {B1D040D0-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {B1D040D0-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {B1D040D0-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.Build.0 = Debug|x64 - {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.Build.0 = Profile|x64 - {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.Build.0 = Release|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 + {1720427b-c8ba-3195-f931-e97f6d6125c1}.Debug|x64.ActiveCfg = Debug|x64 + {1720427b-c8ba-3195-f931-e97f6d6125c1}.Debug|x64.Build.0 = Debug|x64 + {1720427b-c8ba-3195-f931-e97f6d6125c1}.Profile|x64.ActiveCfg = Profile|x64 + {1720427b-c8ba-3195-f931-e97f6d6125c1}.Profile|x64.Build.0 = Profile|x64 + {1720427b-c8ba-3195-f931-e97f6d6125c1}.Release|x64.ActiveCfg = Release|x64 + {1720427b-c8ba-3195-f931-e97f6d6125c1}.Release|x64.Build.0 = Release|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.ActiveCfg = Debug|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.Build.0 = Debug|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.ActiveCfg = Profile|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.Build.0 = Profile|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.ActiveCfg = Release|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.Build.0 = Release|x64 + {b568a67e-05a1-9907-ff4b-a129119528bd}.Debug|x64.ActiveCfg = Debug|x64 + {b568a67e-05a1-9907-ff4b-a129119528bd}.Debug|x64.Build.0 = Debug|x64 + {b568a67e-05a1-9907-ff4b-a129119528bd}.Profile|x64.ActiveCfg = Profile|x64 + {b568a67e-05a1-9907-ff4b-a129119528bd}.Profile|x64.Build.0 = Profile|x64 + {b568a67e-05a1-9907-ff4b-a129119528bd}.Release|x64.ActiveCfg = Release|x64 + {b568a67e-05a1-9907-ff4b-a129119528bd}.Release|x64.Build.0 = Release|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.ActiveCfg = Debug|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.Build.0 = Debug|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.ActiveCfg = Profile|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.Build.0 = Profile|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.ActiveCfg = Release|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Juliet/Juliet.vcxproj b/Juliet/Juliet.vcxproj index e3bb0d3..e2ae34c 100644 --- a/Juliet/Juliet.vcxproj +++ b/Juliet/Juliet.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -14,193 +14,8 @@ x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {ab9c7e88-6c94-4f93-bc2a-7f5284b7d434} + {a93aa30f-8f29-02fe-57e2-cd3626948b68} MakeFileProj @@ -208,72 +23,245 @@ Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe - - - - - - - - - - - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + $(SolutionDir)bin\x64-Debug\Juliet.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Debug\ + $(SolutionDir)Intermediate\x64-Debug\Juliet\ + $(SolutionDir)bin\x64-Debug\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + $(SolutionDir)bin\x64-Profile\Juliet.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Profile\ + $(SolutionDir)Intermediate\x64-Profile\Juliet\ + $(SolutionDir)bin\x64-Profile\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + $(SolutionDir)bin\x64-Release\Juliet.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;JULIET_EXPORT;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Release\ + $(SolutionDir)Intermediate\x64-Release\Juliet\ + $(SolutionDir)bin\x64-Release\ - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - \ No newline at end of file + diff --git a/Juliet/Juliet.vcxproj.filters b/Juliet/Juliet.vcxproj.filters index 6f64aeb..765e4dc 100644 --- a/Juliet/Juliet.vcxproj.filters +++ b/Juliet/Juliet.vcxproj.filters @@ -1,832 +1,661 @@ - - - include\Core\Application - - - include\Core\Application - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Common - - - include\Core\Container - - - include\Core\HAL\Display - - - include\Core\HAL\DynLib - - - include\Core\HAL\Event - - - include\Core\HAL\Filesystem - - - include\Core\HAL\IO - - - include\Core\HAL\Keyboard - - - include\Core\HAL\Keyboard - - - include\Core\HAL\Keyboard - - - include\Core\HAL\Mouse - - - include\Core\HAL\OS - - - include\Core\HotReload - - - include\Core\ImGui - - - include\Core\ImGui - - - include\Core - - - include\Core\Logging - - - include\Core\Logging - - - include\Core - - - include\Core\Math - - - include\Core\Math - - - include\Core\Math - - - include\Core\Math - - - include\Core\Memory - - - include\Core\Memory - - - include\Core\Memory - - - include\Core\Memory - - - include\Core\Memory - - - include\Core\Networking - - - include\Core\Networking - - - include\Core\Networking - - - include\Core\Networking - - - include\Core\Networking - - - include\Core\Networking - - - include\Core\Thread - - - include\Core\Thread - - - include\Engine - - - include\Engine\Debug - - - include\Engine - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include\Graphics - - - include - - - - - src\Core\Application - - - src\Core\Common - - - src\Core\Common - - - src\Core\Container - - - src\Core\HAL\Display - - - src\Core\HAL\Display - - - src\Core\HAL\Display - - - src\Core\HAL\Display\Win32 - - - src\Core\HAL\Display\Win32 - - - src\Core\HAL\Display\Win32 - - - src\Core\HAL\Display\Win32 - - - src\Core\HAL\Display\Win32 - - - src\Core\HAL\Display - - - src\Core\HAL\DynLib\Win32 - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Event - - - src\Core\HAL\Filesystem - - - src\Core\HAL\Filesystem - - - src\Core\HAL\Filesystem - - - src\Core\HAL\Filesystem\Win32 - - - src\Core\HAL\IO - - - src\Core\HAL\IO - - - src\Core\HAL\IO\Win32 - - - src\Core\HAL\OS - - - src\Core\HAL\OS - - - src\Core\HAL\OS\Win32 - - - src\Core\HAL - - - src\Core\HotReload - - - src\Core\HotReload\Win32 - - - src\Core\ImGui - - - src\Core\ImGui - - - src\Core - - - src\Core\Logging - - - src\Core\Math - - - src\Core\Math - - - src\Core\Memory - - - src\Core\Memory - - - src\Core\Memory - - - src\Core\Memory - - - src\Core\Memory - - - src\Core\Networking - - - src\Core\Networking - - - src\Core\Networking - - - src\Core\Networking - - - src\Core\Networking - - - src\Core\Networking\Win32 - - - src\Engine\Debug - - - src\Engine - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK\d3dx12 - - - src\Graphics\D3D12\AgilitySDK - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics\D3D12 - - - src\Graphics - - - src\Graphics - - - src\Graphics - - - src\Graphics - - - src\Graphics - - - src\Graphics - - - src\Graphics - - - src\UnitTest\Container - - - src\UnitTest - - - src\UnitTest - - - - - {5c7eaaef-6c94-4f93-bc2a-7f5284b7d434} - - - - - {6039c8dd-6c94-4f93-bc2a-7f5284b7d434} - - - - - {59f67477-6c94-4f93-bc2a-7f5284b7d434} - - - - - {ac29c266-6c94-4f93-bc2a-7f5284b7d434} - - - - - {ed394e4e-6c94-4f93-bc2a-7f5284b7d434} - - - - - {1cb0928e-6c94-4f93-bc2a-7f5284b7d434} - - - - - {bcf269d1-6c94-4f93-bc2a-7f5284b7d434} - - - - - {fefb3f3a-6c94-4f93-bc2a-7f5284b7d434} - - - - - {54f5d918-6c94-4f93-bc2a-7f5284b7d434} - - - - - {06b1338d-6c94-4f93-bc2a-7f5284b7d434} - - - - - {d111532d-6c94-4f93-bc2a-7f5284b7d434} - - - - - {481eb40e-6c94-4f93-bc2a-7f5284b7d434} - - - - - {4c7d6b5f-6c94-4f93-bc2a-7f5284b7d434} - - - - - {8d491e18-6c94-4f93-bc2a-7f5284b7d434} - - - - - {fe4e9898-6c94-4f93-bc2a-7f5284b7d434} - - - - - {f0573de7-6c94-4f93-bc2a-7f5284b7d434} - - - - - {02138187-6c94-4f93-bc2a-7f5284b7d434} - - - - - {87b853be-6c94-4f93-bc2a-7f5284b7d434} - - - - - {d243d76b-6c94-4f93-bc2a-7f5284b7d434} - - - - - {1f1cb326-6c94-4f93-bc2a-7f5284b7d434} - - - - - {24f2aeeb-6c94-4f93-bc2a-7f5284b7d434} - - - - - {d881a52c-6c94-4f93-bc2a-7f5284b7d434} - - - - - {c6a2048a-6c94-4f93-bc2a-7f5284b7d434} - - - - - {20496e7b-6c94-4f93-bc2a-7f5284b7d434} - - - - - {ab7ca14b-6c94-4f93-bc2a-7f5284b7d434} - - - - - {7d76d9f1-6c94-4f93-bc2a-7f5284b7d434} - - - {58a44f9c-6c94-4f93-bc2a-7f5284b7d434} - - + + + + - {f763d340-6c94-4f93-bc2a-7f5284b7d434} - - - {3e286bee-6c94-4f93-bc2a-7f5284b7d434} - - - - {82da0982-6c94-4f93-bc2a-7f5284b7d434} - - - - {42e45efa-6c94-4f93-bc2a-7f5284b7d434} - - + + - {3a37a82c-6c94-4f93-bc2a-7f5284b7d434} - - - - {966b00ac-6c94-4f93-bc2a-7f5284b7d434} - - - - {2a308679-6c94-4f93-bc2a-7f5284b7d434} - - + + - {16e07e61-6c94-4f93-bc2a-7f5284b7d434} - - - {8dc5a7e5-6c94-4f93-bc2a-7f5284b7d434} - - - {37313215-6c94-4f93-bc2a-7f5284b7d434} - - - {254581d9-6c94-4f93-bc2a-7f5284b7d434} - - - {37523cd5-6c94-4f93-bc2a-7f5284b7d434} - - - {d679d621-6c94-4f93-bc2a-7f5284b7d434} - - - {f6713825-6c94-4f93-bc2a-7f5284b7d434} - - - {35231af8-6c94-4f93-bc2a-7f5284b7d434} - - - {849dd795-6c94-4f93-bc2a-7f5284b7d434} - - - {04960ca3-6c94-4f93-bc2a-7f5284b7d434} - - - {574d127d-6c94-4f93-bc2a-7f5284b7d434} - - - {d5fc938e-6c94-4f93-bc2a-7f5284b7d434} - - - {8a7fc92e-6c94-4f93-bc2a-7f5284b7d434} - - - {80be9352-6c94-4f93-bc2a-7f5284b7d434} - - - {43aa9349-6c94-4f93-bc2a-7f5284b7d434} - - - - {8e9855ac-6c94-4f93-bc2a-7f5284b7d434} - - - - {602a4b6b-6c94-4f93-bc2a-7f5284b7d434} - - - - {8d3eff4b-6c94-4f93-bc2a-7f5284b7d434} + - - - - {41bbd51f-6c94-4f93-bc2a-7f5284b7d434} - - - - {d1949745-6c94-4f93-bc2a-7f5284b7d434} - - + + + + - {0fd13bb0-6c94-4f93-bc2a-7f5284b7d434} - - - - {3fba0971-6c94-4f93-bc2a-7f5284b7d434} - - - - {a650fa16-6c94-4f93-bc2a-7f5284b7d434} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + + + src\Core\Application + + + src\Core\Common + + + src\Core\Common + + + src\Core\Container + + + src\Core\HAL\Display + + + src\Core\HAL\Display\Win32 + + + src\Core\HAL\Display\Win32 + + + src\Core\HAL\Display\Win32 + + + src\Core\HAL\DynLib\Win32 + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Filesystem + + + src\Core\HAL\Filesystem\Win32 + + + src\Core\HAL\IO + + + src\Core\HAL\IO\Win32 + + + src\Core\HAL\OS + + + src\Core\HAL\OS\Win32 + + + src\Core\HotReload + + + src\Core\HotReload\Win32 + + + src\Core\ImGui + + + src\Core\ImGui + + + src\Core + + + src\Core\Logging + + + src\Core\Math + + + src\Core\Memory + + + src\Core\Memory + + + src\Core\Memory + + + src\Core\Memory + + + src\Core\Memory + + + src\Core\Networking + + + src\Core\Networking + + + src\Core\Networking + + + src\Core\Networking + + + src\Core\Networking\Win32 + + + src\Engine\Debug + + + src\Engine + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics + + + src\Graphics + + + src\Graphics + + + src\Graphics + + + src\Graphics + + + src\Graphics + + + src\UnitTest\Container + + + src\UnitTest + + + include\Core\Application + + + include\Core\Application + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Common + + + include\Core\Container + + + include\Core\HAL\Display + + + include\Core\HAL\DynLib + + + include\Core\HAL\Event + + + include\Core\HAL\Filesystem + + + include\Core\HAL\IO + + + include\Core\HAL\Keyboard + + + include\Core\HAL\Keyboard + + + include\Core\HAL\Keyboard + + + include\Core\HAL\Mouse + + + include\Core\HAL\OS + + + include\Core\HotReload + + + include\Core\ImGui + + + include\Core\ImGui + + + include\Core + + + include\Core\Logging + + + include\Core\Logging + + + include\Core + + + include\Core\Math + + + include\Core\Math + + + include\Core\Math + + + include\Core\Math + + + include\Core\Memory + + + include\Core\Memory + + + include\Core\Memory + + + include\Core\Memory + + + include\Core\Memory + + + include\Core\Networking + + + include\Core\Networking + + + include\Core\Networking + + + include\Core\Networking + + + include\Core\Networking + + + include\Core\Networking + + + include\Core\Thread + + + include\Core\Thread + + + include\Engine + + + include\Engine\Debug + + + include\Engine + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include\Graphics + + + include + + + src\Core\HAL\Display + + + src\Core\HAL\Display + + + src\Core\HAL\Display\Win32 + + + src\Core\HAL\Display\Win32 + + + src\Core\HAL\Display + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Event + + + src\Core\HAL\Filesystem + + + src\Core\HAL\Filesystem + + + src\Core\HAL\IO + + + src\Core\HAL\OS + + + src\Core\HAL + + + src\Core\Math + + + src\Core\Networking + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK\d3dx12 + + + src\Graphics\D3D12\AgilitySDK + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics\D3D12 + + + src\Graphics + + + src\UnitTest + + + src\Graphics\D3D12\AgilitySDK + + + diff --git a/Juliet/src/Engine/Engine.cpp b/Juliet/src/Engine/Engine.cpp index 95a991a..6abda27 100644 --- a/Juliet/src/Engine/Engine.cpp +++ b/Juliet/src/Engine/Engine.cpp @@ -1,9 +1,10 @@ +#include + #include #include #include #include #include -#include #include #include #include diff --git a/JulietApp/JulietApp.vcxproj b/JulietApp/JulietApp.vcxproj index 4544872..cebb31a 100644 --- a/JulietApp/JulietApp.vcxproj +++ b/JulietApp/JulietApp.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -14,15 +14,8 @@ x64 - - - - - - - - {1dee51ca-6c94-4f93-bc2a-7f5284b7d434} + {1720427b-c8ba-3195-f931-e97f6d6125c1} MakeFileProj @@ -30,72 +23,67 @@ Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe - - - - - - - - - - - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + $(SolutionDir)bin\x64-Debug\JulietApp.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Debug\ + $(SolutionDir)Intermediate\x64-Debug\JulietApp\ + $(SolutionDir)bin\x64-Debug\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + $(SolutionDir)bin\x64-Profile\JulietApp.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Profile\ + $(SolutionDir)Intermediate\x64-Profile\JulietApp\ + $(SolutionDir)bin\x64-Profile\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + $(SolutionDir)bin\x64-Release\JulietApp.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Release\ + $(SolutionDir)Intermediate\x64-Release\JulietApp\ + $(SolutionDir)bin\x64-Release\ - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - + + + + - - - \ No newline at end of file + diff --git a/JulietApp/JulietApp.vcxproj.filters b/JulietApp/JulietApp.vcxproj.filters index c97636f..d0d238b 100644 --- a/JulietApp/JulietApp.vcxproj.filters +++ b/JulietApp/JulietApp.vcxproj.filters @@ -1,11 +1,9 @@ - - - - - - - \ No newline at end of file + + + + + diff --git a/JulietShaderCompiler.sln b/JulietShaderCompiler.sln index 1793451..33db499 100644 --- a/JulietShaderCompiler.sln +++ b/JulietShaderCompiler.sln @@ -1,12 +1,12 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\ImGui.vcxproj", "{C16FFE36-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietShaderCompiler", "JulietShaderCompiler\JulietShaderCompiler.vcxproj", "{c7df05fe-d5d5-db2a-af36-e7d71d325fda}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietShaderCompiler", "JulietShaderCompiler\JulietShaderCompiler.vcxproj", "{534B94ED-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{a93aa30f-8f29-02fe-57e2-cd3626948b68}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\imgui\ImGui.vcxproj", "{652d3fea-b417-1d5e-9f79-3f32e9604ddc}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,18 +15,24 @@ Global Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.Build.0 = Debug|x64 - {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.Build.0 = Profile|x64 - {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.Build.0 = Release|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 + {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Debug|x64.ActiveCfg = Debug|x64 + {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Debug|x64.Build.0 = Debug|x64 + {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Profile|x64.ActiveCfg = Profile|x64 + {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Profile|x64.Build.0 = Profile|x64 + {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Release|x64.ActiveCfg = Release|x64 + {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Release|x64.Build.0 = Release|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.ActiveCfg = Debug|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.Build.0 = Debug|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.ActiveCfg = Profile|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.Build.0 = Profile|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.ActiveCfg = Release|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.Build.0 = Release|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.ActiveCfg = Debug|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.Build.0 = Debug|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.ActiveCfg = Profile|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.Build.0 = Profile|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.ActiveCfg = Release|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/JulietShaderCompiler/JulietShaderCompiler.vcxproj b/JulietShaderCompiler/JulietShaderCompiler.vcxproj index f28bcbb..3ab1d59 100644 --- a/JulietShaderCompiler/JulietShaderCompiler.vcxproj +++ b/JulietShaderCompiler/JulietShaderCompiler.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -14,17 +14,8 @@ x64 - - - - - - - - - - {534b94ed-6c94-4f93-bc2a-7f5284b7d434} + {c7df05fe-d5d5-db2a-af36-e7d71d325fda} MakeFileProj @@ -32,75 +23,72 @@ Makefile false v143 - ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe - - - - - - - - - - - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + $(SolutionDir)bin\x64-Debug\JulietShaderCompiler.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil + $(SolutionDir)bin\x64-Debug\ + $(SolutionDir)Intermediate\x64-Debug\JulietShaderCompiler\ + $(SolutionDir)bin\x64-Debug\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + $(SolutionDir)bin\x64-Profile\JulietShaderCompiler.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil + $(SolutionDir)bin\x64-Profile\ + $(SolutionDir)Intermediate\x64-Profile\JulietShaderCompiler\ + $(SolutionDir)bin\x64-Profile\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + $(SolutionDir)bin\x64-Release\JulietShaderCompiler.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil + $(SolutionDir)bin\x64-Release\ + $(SolutionDir)Intermediate\x64-Release\JulietShaderCompiler\ + $(SolutionDir)bin\x64-Release\ - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - + + + + + + - - - \ No newline at end of file + diff --git a/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters b/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters index afc1766..a2a2e11 100644 --- a/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters +++ b/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters @@ -1,21 +1,15 @@ - - - DXShaderCompiler - - - - - - - - - - - {9f537123-6c94-4f93-bc2a-7f5284b7d434} - \ No newline at end of file + + + + + DXShaderCompiler + + + + diff --git a/Romeo.sln b/Romeo.sln index 49c24ed..6f1f418 100644 --- a/Romeo.sln +++ b/Romeo.sln @@ -1,12 +1,12 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.22823.1 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\ImGui.vcxproj", "{C16FFE36-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Romeo", "Romeo\Romeo.vcxproj", "{767620a7-b286-e7a1-9f79-3e14ce9e5ab1}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{a93aa30f-8f29-02fe-57e2-cd3626948b68}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Romeo", "Romeo\Romeo.vcxproj", "{05CD1167-6C94-4F93-BC2A-7F5284B7D434}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\imgui\ImGui.vcxproj", "{652d3fea-b417-1d5e-9f79-3f32e9604ddc}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,18 +15,24 @@ Global Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64 - {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.Build.0 = Debug|x64 - {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64 - {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.Build.0 = Profile|x64 - {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64 - {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.Build.0 = Release|x64 + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Debug|x64.ActiveCfg = Debug|x64 + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Debug|x64.Build.0 = Debug|x64 + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Profile|x64.ActiveCfg = Profile|x64 + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Profile|x64.Build.0 = Profile|x64 + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Release|x64.ActiveCfg = Release|x64 + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Release|x64.Build.0 = Release|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.ActiveCfg = Debug|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.Build.0 = Debug|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.ActiveCfg = Profile|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.Build.0 = Profile|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.ActiveCfg = Release|x64 + {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.Build.0 = Release|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.ActiveCfg = Debug|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.Build.0 = Debug|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.ActiveCfg = Profile|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.Build.0 = Profile|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.ActiveCfg = Release|x64 + {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Romeo/Romeo.vcxproj b/Romeo/Romeo.vcxproj index bb85c77..e3a2dde 100644 --- a/Romeo/Romeo.vcxproj +++ b/Romeo/Romeo.vcxproj @@ -1,5 +1,5 @@ - + Debug @@ -14,24 +14,8 @@ x64 - - - - - - - - - - - - - - - - - {05cd1167-6c94-4f93-bc2a-7f5284b7d434} + {767620a7-b286-e7a1-9f79-3e14ce9e5ab1} MakeFileProj @@ -39,72 +23,76 @@ Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe Makefile false v143 - $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe - - - - - - - - - - - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName) + $(SolutionDir)bin\x64-Debug\Romeo.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Debug\ + $(SolutionDir)Intermediate\x64-Debug\Romeo\ + $(SolutionDir)bin\x64-Debug\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName) + $(SolutionDir)bin\x64-Profile\Romeo.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Profile\ + $(SolutionDir)Intermediate\x64-Profile\Romeo\ + $(SolutionDir)bin\x64-Profile\ - cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName) - cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName) - $(SolutionDir)\bin\x64-$(Configuration)\ - $(SolutionDir)\Intermediate - $(SolutionDir)\bin + cd $(SolutionDir) & misc\build.bat Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName) + $(SolutionDir)bin\x64-Release\Romeo.exe + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath) + $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath) + JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;$(NMakePreprocessorDefinitions) + /std:c++20 + stdcpp20 + $(SolutionDir)bin\x64-Release\ + $(SolutionDir)Intermediate\x64-Release\Romeo\ + $(SolutionDir)bin\x64-Release\ - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - - - - $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log - - + + + + + + + + + + + + + - - - \ No newline at end of file + diff --git a/Romeo/Romeo.vcxproj.filters b/Romeo/Romeo.vcxproj.filters index c2dfc9d..d41ebac 100644 --- a/Romeo/Romeo.vcxproj.filters +++ b/Romeo/Romeo.vcxproj.filters @@ -1,45 +1,42 @@ - - - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - {58a44f9c-6c94-4f93-bc2a-7f5284b7d434} - \ No newline at end of file + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + diff --git a/misc/Generate.bat b/misc/Generate.bat index 96b0495..f783f4b 100644 --- a/misc/Generate.bat +++ b/misc/Generate.bat @@ -4,8 +4,67 @@ setlocal set SCRIPT_DIR=%~dp0 cd /d "%SCRIPT_DIR%.." +if not exist "Intermediate" mkdir "Intermediate" + echo Generating Visual Studio / Rider solution and project files... -misc\fbuild.exe gen + +set PLAN=Intermediate\vs_plan.txt +if exist "%PLAN%" del /f /q "%PLAN%" + +>>"%PLAN%" echo GLOBAL_INCLUDE $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends; +>>"%PLAN%" echo DEF_COMMON JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS; +>>"%PLAN%" echo DEF_DEBUG DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI; +>>"%PLAN%" echo DEF_PROFILE RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI; +>>"%PLAN%" echo DEF_RELEASE RELEASE; + +>>"%PLAN%" echo PROJECT Juliet +>>"%PLAN%" echo EXTRA_DEF JULIET_EXPORT; + +>>"%PLAN%" echo PROJECT Game +>>"%PLAN%" echo EXTRA_DEF JULIET_EXPORT; + +>>"%PLAN%" echo PROJECT JulietApp + +>>"%PLAN%" echo PROJECT Romeo + +>>"%PLAN%" echo PROJECT JulietShaderCompiler +>>"%PLAN%" echo INCLUDE_SEARCH $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler; +>>"%PLAN%" echo DEBUG_CMD ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil + +>>"%PLAN%" echo PROJECT ImGui External\imgui +>>"%PLAN%" echo EXTRA_DEF IMGUI_API=__declspec(dllexport); +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_demo.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_draw.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_tables.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_widgets.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_win32.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_dx12.cpp +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui.h +>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_internal.h +>>"%PLAN%" echo PROJECT_SRC External\imgui\imstb_rectpack.h +>>"%PLAN%" echo PROJECT_SRC External\imgui\imstb_textedit.h +>>"%PLAN%" echo PROJECT_SRC External\imgui\imstb_truetype.h +>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_win32.h +>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_dx12.h + +>>"%PLAN%" echo SOLUTION Juliet +>>"%PLAN%" echo SLN_PROJ JulietApp +>>"%PLAN%" echo SLN_PROJ Juliet +>>"%PLAN%" echo SLN_PROJ Game +>>"%PLAN%" echo SLN_PROJ ImGui + +>>"%PLAN%" echo SOLUTION Romeo +>>"%PLAN%" echo SLN_PROJ Romeo +>>"%PLAN%" echo SLN_PROJ Juliet +>>"%PLAN%" echo SLN_PROJ ImGui + +>>"%PLAN%" echo SOLUTION JulietShaderCompiler +>>"%PLAN%" echo SLN_PROJ JulietShaderCompiler +>>"%PLAN%" echo SLN_PROJ Juliet +>>"%PLAN%" echo SLN_PROJ ImGui + +call misc\build.bat gen_vs "%PLAN%" if %ERRORLEVEL% neq 0 ( echo Solution generation failed! diff --git a/misc/build.bat b/misc/build.bat index 8530fb4..5fdf51f 100644 --- a/misc/build.bat +++ b/misc/build.bat @@ -27,6 +27,11 @@ set CONFIG_SPECIFIED=0 :parse_args if "%~1"=="" goto check_defaults +if /i "%~1"=="gen_vs" ( + set COMMAND_GEN_VS=1 + set GEN_VS_PLAN=%~2 + goto do_compile_build_tool +) if /i "%~1"=="debug" set CONFIG_DEBUG=1& set CONFIG_SPECIFIED=1 if /i "%~1"=="release" set CONFIG_RELEASE=1& set CONFIG_SPECIFIED=1 if /i "%~1"=="profile" set CONFIG_PROFILE=1& set CONFIG_SPECIFIED=1 @@ -41,7 +46,7 @@ goto parse_args if !CONFIG_SPECIFIED! equ 0 set CONFIG_DEBUG=1& if !TARGET_SPECIFIED! equ 0 set CONFIG_RELEASE=1& set CONFIG_PROFILE=1 if !TARGET_SPECIFIED! equ 0 set TARGET_JULIET=1& set TARGET_GAME=1& set TARGET_ROMEO=1& set TARGET_SHADER=1 -:start_build +:do_compile_build_tool if not exist "%FBUILD%" ( echo [BUILD FAILED] Could not find %FBUILD%. exit /b 1 @@ -60,7 +65,7 @@ if !ERRORLEVEL! neq 0 ( ) :: Check if build.exe needs to be compiled (missing, version changed, or source changed) -set BUILD_TOOL_VER=4 +set BUILD_TOOL_VER=11 set NEED_RECOMPILE_BUILD_TOOL=0 if not exist "%BUILD_TOOL%" ( set NEED_RECOMPILE_BUILD_TOOL=1 @@ -109,6 +114,12 @@ if !NEED_RECOMPILE_BUILD_TOOL! equ 1 ( for %%I in ("%BUILD_SRC%") do (echo %%~tI)>"Intermediate\build_tool.stamp" ) +if "!COMMAND_GEN_VS!"=="1" ( + echo [BUILD] Generating Visual Studio Projects and Solutions... + "%BUILD_TOOL%" gen_vs "!GEN_VS_PLAN!" + exit /b !ERRORLEVEL! +) + echo [BUILD] Generating Build Plan... set PLAN_FILE=Intermediate\build_plan.txt if exist "!PLAN_FILE!" del /f /q "!PLAN_FILE!" @@ -183,10 +194,13 @@ echo COMMAND %COMPILER% %COMPILER_FLAGS% /DIMGUI_API=__declspec^(dllexport^) /DJ :: --- Game.dll --- if !BUILD_GAME_DLL! equ 1 ( - echo STEP Building Game.dll [!CFG!]>>"!PLAN_FILE!" - echo OUTPUT bin\x64-!CFG!\Game.dll>>"!PLAN_FILE!" + set "GAME_DLL_NAME=Game" + if defined GAME_BUILD_ID set "GAME_DLL_NAME=Game-!GAME_BUILD_ID!" + + echo STEP Building !GAME_DLL_NAME!.dll [!CFG!]>>"!PLAN_FILE!" + echo OUTPUT bin\x64-!CFG!\!GAME_DLL_NAME!.dll>>"!PLAN_FILE!" echo DEPENDS Game^|Juliet^|External\imgui>>"!PLAN_FILE!" - echo COMMAND %COMPILER% %COMPILER_FLAGS% /DIMGUI_API=__declspec^(dllimport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\Game.dll" Intermediate\Game\*.cpp /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /INCREMENTAL /ILK:Intermediate\x64-!CFG!\Game.ilk /PDB:Intermediate\x64-!CFG!\Game.pdb>>"!PLAN_FILE!" + echo COMMAND %COMPILER% %COMPILER_FLAGS% /DIMGUI_API=__declspec^(dllimport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\!GAME_DLL_NAME!.dll" Intermediate\Game\*.cpp /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /INCREMENTAL /ILK:Intermediate\x64-!CFG!\!GAME_DLL_NAME!.ilk /PDB:Intermediate\x64-!CFG!\!GAME_DLL_NAME!.pdb>>"!PLAN_FILE!" ) :: --- JulietApp.exe --- diff --git a/misc/build_game.bat b/misc/build_game.bat index e2910e0..ed5c8d5 100644 --- a/misc/build_game.bat +++ b/misc/build_game.bat @@ -1,37 +1,35 @@ @echo off setlocal -:: --- 1. Handle Compiler Choice --- -:: Default to Clang, but allow override via "build_game.bat msvc" -set "COMPILER_TYPE=%~1" -if "%COMPILER_TYPE%"=="" set "COMPILER_TYPE=clang" +:: --- 1. Handle Config Choice --- +:: Default to debug config, but allow override +set "CONFIG_ARG=%~1" +if /I "%CONFIG_ARG%"=="" set "CONFIG_ARG=debug" +if /I "%CONFIG_ARG%"=="clang" set "CONFIG_ARG=debug" +if /I "%CONFIG_ARG%"=="msvc" set "CONFIG_ARG=debug" -if /I "%COMPILER_TYPE%"=="clang" ( - set "PLATFORM=x64Clang" -) else ( - set "PLATFORM=x64" -) +set "CONFIG=Debug" +if /I "%CONFIG_ARG%"=="profile" set "CONFIG=Profile" +if /I "%CONFIG_ARG%"=="release" set "CONFIG=Release" :: --- 2. Generate Random ID & Setup Paths --- -set "CONFIG=Debug" set "GAME_BUILD_ID=%RANDOM%" -set "TARGET=Game-%PLATFORM%-%CONFIG%" -set "OUT_DIR=%~dp0..\bin\%PLATFORM%-%CONFIG%" +set "OUT_DIR=%~dp0..\bin\x64-%CONFIG%" -echo --- Building %TARGET% (ID: %GAME_BUILD_ID%) --- +echo --- Building Game (ID: %GAME_BUILD_ID%) [%CONFIG%] --- :: --- 3. Manage Lock File --- if not exist "%OUT_DIR%" mkdir "%OUT_DIR%" pushd "%OUT_DIR%" :: Clean up old DLLs/PDBs in this folder to prevent clutter -del Game-*.dll Game-*.pdb > NUL 2> NUL +del Game-*.dll Game-*.pdb Game-*.ilk Game-*.exp Game-*.lib > NUL 2> NUL echo %GAME_BUILD_ID% > lock.tmp popd -:: --- 4. Run FASTBuild --- -:: We pass the ID via an Environment Variable so the .bff can read it +:: --- 4. Run Build System --- +:: Pass GAME_BUILD_ID environment variable so build.bat can use it set "GAME_BUILD_ID=%GAME_BUILD_ID%" -fbuild %TARGET% -cache +call "%~dp0build.bat" %CONFIG_ARG% game if %ERRORLEVEL% NEQ 0 ( echo. @@ -39,6 +37,9 @@ if %ERRORLEVEL% NEQ 0 ( goto :cleanup ) +:: Copy output to Game.dll for the engine to load +copy /y "%OUT_DIR%\Game-%GAME_BUILD_ID%.dll" "%OUT_DIR%\Game.dll" > NUL + echo. echo SUCCESS: Generated %OUT_DIR%\Game-%GAME_BUILD_ID%.dll diff --git a/tools/build_system.c b/tools/build_system.c index 6e27555..59d6807 100644 --- a/tools/build_system.c +++ b/tools/build_system.c @@ -844,6 +844,467 @@ static int CommandRunPlan(int argc, char* argv[]) return 0; } +static void GenerateProject(const char* projectName, const char* projectDir, const char* guid, const char* includeSearchPath, const char* extraDefs, const char* debuggerCommandArgs, const char Srcs[64][256], int SrcCount, const char* defCommon, const char* defDebug, const char* defProfile, const char* defRelease) +{ + FilePathList* srcFiles = CreateFilePathList(); + if (SrcCount > 0) { + for (int i = 0; i < SrcCount; i++) { + FilePathListAdd(srcFiles, Srcs[i]); + } + } else { + CollectFiles(projectDir, NULL, ".cpp", srcFiles); + CollectFiles(projectDir, NULL, ".c", srcFiles); + CollectFiles(projectDir, NULL, ".h", srcFiles); + CollectFiles(projectDir, NULL, ".hpp", srcFiles); + CollectFiles(projectDir, NULL, ".inl", srcFiles); + } + + char* buf = (char*)ArenaPush(4 * 1024 * 1024); + int offset = 0; + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + "\n" + "\n" + " \n" + " \n" + " Debug\n" + " x64\n" + " \n" + " \n" + " Profile\n" + " x64\n" + " \n" + " \n" + " Release\n" + " x64\n" + " \n" + " \n" + " \n" + " {%s}\n" + " MakeFileProj\n" + " \n" + " \n", guid); + + const char* configs[] = { "Debug", "Profile", "Release" }; + for (int i = 0; i < 3; i++) { + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " \n" + " Makefile\n" + " false\n" + " v143\n" + " \n", configs[i]); + } + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " \n" + " \n" + " \n"); + + for (int i = 0; i < 3; i++) { + const char* cfg = configs[i]; + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " \n" + " cd $(SolutionDir) & misc\\build.bat %s $(SolutionName)\n" + " cd $(SolutionDir) & misc\\build.bat -clean %s $(SolutionName)\n" + " cd $(SolutionDir) & misc\\build.bat -clean %s $(SolutionName)\n" + " $(SolutionDir)bin\\x64-%s\\%s.exe\n" + " %s$(NMakeIncludeSearchPath)\n" + " %s$(IncludePath)\n", + cfg, cfg, cfg, cfg, cfg, projectName, includeSearchPath, includeSearchPath); + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " "); + if (defCommon && defCommon[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defCommon); + if (strcmp(cfg, "Debug") == 0 && defDebug && defDebug[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defDebug); + else if (strcmp(cfg, "Profile") == 0 && defProfile && defProfile[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defProfile); + else if (strcmp(cfg, "Release") == 0 && defRelease && defRelease[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defRelease); + if (extraDefs && extraDefs[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", extraDefs); + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "$(NMakePreprocessorDefinitions)\n" + " /std:c++20\n" + " stdcpp20\n"); + + if (debuggerCommandArgs && debuggerCommandArgs[0] != '\0') { + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " %s\n", debuggerCommandArgs); + } + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " $(SolutionDir)bin\\x64-%s\\\n" + " $(SolutionDir)Intermediate\\x64-%s\\%s\\\n" + " $(SolutionDir)bin\\x64-%s\\\n" + " \n", cfg, cfg, projectName, cfg); + } + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n"); + int projectDirLen = (int)strlen(projectDir); + for (int i = 0; i < srcFiles->Count; i++) { + const char* path = srcFiles->Paths[i]; + const char* relPath = path; + if (strncmp(path, projectDir, projectDirLen) == 0 && (path[projectDirLen] == '\\' || path[projectDirLen] == '/')) { + relPath = path + projectDirLen + 1; + } + + if (EndsWithNoCase(path, ".cpp") || EndsWithNoCase(path, ".c")) { + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n", relPath); + } else { + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n", relPath); + } + } + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n"); + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " \n" + " \n" + " \n" + "\n"); + + char outPath[MAX_PATH_LEN]; + snprintf(outPath, sizeof(outPath), "%s\\%s.vcxproj", projectDir, projectName); + WriteEntireFile(outPath, buf, offset); + printf("Generated %s\n", outPath); + + // --- Generate .vcxproj.filters --- + char filters[512][256]; + int filterCount = 0; + + for (int i = 0; i < srcFiles->Count; i++) { + const char* path = srcFiles->Paths[i]; + const char* relPath = path; + if (strncmp(path, projectDir, projectDirLen) == 0 && (path[projectDirLen] == '\\' || path[projectDirLen] == '/')) { + relPath = path + projectDirLen + 1; + } + + const char* lastSlash = strrchr(relPath, '\\'); + if (!lastSlash) lastSlash = strrchr(relPath, '/'); + if (lastSlash) { + char dir[256]; + int len = (int)(lastSlash - relPath); + if (len >= 256) len = 255; + memcpy(dir, relPath, len); + dir[len] = '\0'; + + char cur[256]; + int c = 0; + for (int k = 0; k < len; k++) { + cur[c++] = dir[k]; + if (dir[k] == '\\' || dir[k] == '/') { + cur[c - 1] = '\0'; + bool found = false; + for (int f = 0; f < filterCount; f++) { + if (_stricmp(filters[f], cur) == 0) { found = true; break; } + } + if (!found && filterCount < 512) { + strcpy_s(filters[filterCount++], 256, cur); + } + cur[c - 1] = '\\'; + } + } + bool found = false; + for (int f = 0; f < filterCount; f++) { + if (_stricmp(filters[f], dir) == 0) { found = true; break; } + } + if (!found && filterCount < 512) { + strcpy_s(filters[filterCount++], 256, dir); + } + } + } + + char* filterBuf = (char*)ArenaPush(4 * 1024 * 1024); + int filterOffset = 0; + filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset, + "\n" + "\n" + " \n"); + for (int i = 0; i < filterCount; i++) { + filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset, + " \n" + " \n", filters[i]); + } + filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset, + " \n" + " \n"); + + for (int i = 0; i < srcFiles->Count; i++) { + const char* path = srcFiles->Paths[i]; + const char* relPath = path; + if (strncmp(path, projectDir, projectDirLen) == 0 && (path[projectDirLen] == '\\' || path[projectDirLen] == '/')) { + relPath = path + projectDirLen + 1; + } + + const char* lastSlash = strrchr(relPath, '\\'); + if (!lastSlash) lastSlash = strrchr(relPath, '/'); + + const char* type = (EndsWithNoCase(path, ".cpp") || EndsWithNoCase(path, ".c")) ? "ClCompile" : "ClInclude"; + + if (lastSlash) { + char dir[256]; + int len = (int)(lastSlash - relPath); + if (len >= 256) len = 255; + memcpy(dir, relPath, len); + dir[len] = '\0'; + + filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset, + " <%s Include=\"%s\">\n" + " %s\n" + " \n", type, relPath, dir, type); + } else { + filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset, + " <%s Include=\"%s\" />\n", type, relPath); + } + } + filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset, + " \n\n"); + + char filterOutPath[MAX_PATH_LEN]; + snprintf(filterOutPath, sizeof(filterOutPath), "%s\\%s.vcxproj.filters", projectDir, projectName); + WriteEntireFile(filterOutPath, filterBuf, filterOffset); + printf("Generated %s\n", filterOutPath); +} + +static void GenerateSolution(const char* slnName, const char** projectNames, const char** projectDirs, const char** projectGuids, int projCount) +{ + char* buf = (char*)ArenaPush(4 * 1024 * 1024); + int offset = 0; + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + "Microsoft Visual Studio Solution File, Format Version 12.00\n" + "# Visual Studio Version 17\n" + "VisualStudioVersion = 17.0.31903.59\n" + "MinimumVisualStudioVersion = 10.0.40219.1\n"); + + for (int i = 0; i < projCount; i++) { + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"%s\", \"%s\\%s.vcxproj\", \"{%s}\"\n" + "EndProject\n", projectNames[i], projectDirs[i], projectNames[i], projectGuids[i]); + } + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + "Global\n" + " GlobalSection(SolutionConfigurationPlatforms) = preSolution\n" + " Debug|x64 = Debug|x64\n" + " Profile|x64 = Profile|x64\n" + " Release|x64 = Release|x64\n" + " EndGlobalSection\n" + " GlobalSection(ProjectConfigurationPlatforms) = postSolution\n"); + + for (int i = 0; i < projCount; i++) { + const char* configs[] = { "Debug", "Profile", "Release" }; + for (int c = 0; c < 3; c++) { + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " {%s}.%s|x64.ActiveCfg = %s|x64\n" + " {%s}.%s|x64.Build.0 = %s|x64\n", + projectGuids[i], configs[c], configs[c], + projectGuids[i], configs[c], configs[c]); + } + } + + offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, + " EndGlobalSection\n" + " GlobalSection(SolutionProperties) = preSolution\n" + " HideSolutionNode = FALSE\n" + " EndGlobalSection\n" + "EndGlobal\n"); + + char outPath[MAX_PATH_LEN]; + snprintf(outPath, sizeof(outPath), "%s.sln", slnName); + WriteEntireFile(outPath, buf, offset); + printf("Generated %s\n", outPath); +} + +typedef struct { + char Name[64]; + char Dir[256]; + char Guid[64]; + char ExtraDef[1024]; + char IncludeSearch[1024]; + char DebugCmd[1024]; + char Srcs[64][256]; + int SrcCount; +} VSProject; + +typedef struct { + char Name[64]; + char Projects[16][64]; + int ProjCount; +} VSSolution; + +static void GenerateDeterministicGuid(const char* input, char* outputGuid) { + unsigned long long hash1 = 14695981039346656037ULL; + unsigned long long hash2 = 1099511628211ULL; + for (const char* c = input; *c; ++c) { + hash1 ^= (unsigned long long)(*c); + hash1 *= 1099511628211ULL; + hash2 ^= (unsigned long long)(*c); + hash2 *= 137ULL; + } + sprintf_s(outputGuid, 64, "%08x-%04x-%04x-%04x-%012llx", + (unsigned int)(hash1 >> 32), + (unsigned int)((hash1 >> 16) & 0xFFFF), + (unsigned int)(hash1 & 0xFFFF), + (unsigned int)((hash2 >> 48) & 0xFFFF), + hash2 & 0xFFFFFFFFFFFFULL); +} + +static int CommandGenVS(int argc, char* argv[]) +{ + if (argc < 3) { + printf("[ERROR] Usage: build_system gen_vs \n"); + return 1; + } + const char* planFile = argv[2]; + FileContent planContent = ReadEntireFile(planFile); + if (!planContent.Data) { + printf("[ERROR] Could not read VS plan: %s\n", planFile); + return 1; + } + + char globalInclude[1024] = {0}; + char globalDefCommon[1024] = {0}; + char globalDefDebug[1024] = {0}; + char globalDefProfile[1024] = {0}; + char globalDefRelease[1024] = {0}; + VSProject projects[16]; + int projCount = 0; + + VSSolution solutions[8]; + int slnCount = 0; + + const char* pos = planContent.Data; + while (*pos) { + const char* lineStart = pos; + while (*pos && *pos != '\n' && *pos != '\r') pos++; + int lineLen = (int)(pos - lineStart); + + if (lineLen > 0) { + if (lineLen > 15 && memcmp(lineStart, "GLOBAL_INCLUDE ", 15) == 0) { + int nLen = lineLen - 15; + if (nLen >= 1024) nLen = 1023; + memcpy(globalInclude, lineStart + 15, nLen); + globalInclude[nLen] = '\0'; + } + else if (lineLen > 11 && memcmp(lineStart, "DEF_COMMON ", 11) == 0) { + int nLen = lineLen - 11; + if (nLen >= 1024) nLen = 1023; + memcpy(globalDefCommon, lineStart + 11, nLen); + globalDefCommon[nLen] = '\0'; + } + else if (lineLen > 10 && memcmp(lineStart, "DEF_DEBUG ", 10) == 0) { + int nLen = lineLen - 10; + if (nLen >= 1024) nLen = 1023; + memcpy(globalDefDebug, lineStart + 10, nLen); + globalDefDebug[nLen] = '\0'; + } + else if (lineLen > 12 && memcmp(lineStart, "DEF_PROFILE ", 12) == 0) { + int nLen = lineLen - 12; + if (nLen >= 1024) nLen = 1023; + memcpy(globalDefProfile, lineStart + 12, nLen); + globalDefProfile[nLen] = '\0'; + } + else if (lineLen > 12 && memcmp(lineStart, "DEF_RELEASE ", 12) == 0) { + int nLen = lineLen - 12; + if (nLen >= 1024) nLen = 1023; + memcpy(globalDefRelease, lineStart + 12, nLen); + globalDefRelease[nLen] = '\0'; + } + else if (lineLen > 8 && memcmp(lineStart, "PROJECT ", 8) == 0) { + if (projCount < 16) { + VSProject* p = &projects[projCount++]; + memset(p, 0, sizeof(VSProject)); + char lineBuf[1024]; + int nLen = lineLen - 8; + if (nLen >= 1024) nLen = 1023; + memcpy(lineBuf, lineStart + 8, nLen); + lineBuf[nLen] = '\0'; + int scanned = sscanf_s(lineBuf, "%s %s %s", p->Name, (unsigned)_countof(p->Name), p->Dir, (unsigned)_countof(p->Dir), p->Guid, (unsigned)_countof(p->Guid)); + if (scanned < 2) { + strcpy_s(p->Dir, sizeof(p->Dir), p->Name); + } + if (scanned < 3) { + GenerateDeterministicGuid(p->Name, p->Guid); + } + } + } + else if (lineLen > 12 && memcmp(lineStart, "PROJECT_SRC ", 12) == 0 && projCount > 0) { + VSProject* p = &projects[projCount - 1]; + if (p->SrcCount < 64) { + int nLen = lineLen - 12; + if (nLen >= 256) nLen = 255; + memcpy(p->Srcs[p->SrcCount], lineStart + 12, nLen); + p->Srcs[p->SrcCount][nLen] = '\0'; + p->SrcCount++; + } + } + else if (lineLen > 10 && memcmp(lineStart, "EXTRA_DEF ", 10) == 0 && projCount > 0) { + VSProject* p = &projects[projCount - 1]; + int nLen = lineLen - 10; + if (nLen >= 1024) nLen = 1023; + memcpy(p->ExtraDef, lineStart + 10, nLen); + p->ExtraDef[nLen] = '\0'; + } + else if (lineLen > 15 && memcmp(lineStart, "INCLUDE_SEARCH ", 15) == 0 && projCount > 0) { + VSProject* p = &projects[projCount - 1]; + int nLen = lineLen - 15; + if (nLen >= 1024) nLen = 1023; + memcpy(p->IncludeSearch, lineStart + 15, nLen); + p->IncludeSearch[nLen] = '\0'; + } + else if (lineLen > 10 && memcmp(lineStart, "DEBUG_CMD ", 10) == 0 && projCount > 0) { + VSProject* p = &projects[projCount - 1]; + int nLen = lineLen - 10; + if (nLen >= 1024) nLen = 1023; + memcpy(p->DebugCmd, lineStart + 10, nLen); + p->DebugCmd[nLen] = '\0'; + } + else if (lineLen > 9 && memcmp(lineStart, "SOLUTION ", 9) == 0) { + if (slnCount < 8) { + VSSolution* s = &solutions[slnCount++]; + memset(s, 0, sizeof(VSSolution)); + int nLen = lineLen - 9; + if (nLen >= 64) nLen = 63; + memcpy(s->Name, lineStart + 9, nLen); + s->Name[nLen] = '\0'; + } + } + else if (lineLen > 9 && memcmp(lineStart, "SLN_PROJ ", 9) == 0 && slnCount > 0) { + VSSolution* s = &solutions[slnCount - 1]; + if (s->ProjCount < 16) { + int nLen = lineLen - 9; + if (nLen >= 64) nLen = 63; + memcpy(s->Projects[s->ProjCount], lineStart + 9, nLen); + s->Projects[s->ProjCount][nLen] = '\0'; + s->ProjCount++; + } + } + } + while (*pos == '\n' || *pos == '\r') pos++; + } + + for (int i = 0; i < projCount; i++) { + VSProject* p = &projects[i]; + const char* incs = p->IncludeSearch[0] != '\0' ? p->IncludeSearch : globalInclude; + GenerateProject(p->Name, p->Dir, p->Guid, incs, p->ExtraDef, p->DebugCmd, p->Srcs, p->SrcCount, globalDefCommon, globalDefDebug, globalDefProfile, globalDefRelease); + } + + for (int i = 0; i < slnCount; i++) { + VSSolution* s = &solutions[i]; + const char* pNames[16]; + const char* pDirs[16]; + const char* pGuids[16]; + for (int j = 0; j < s->ProjCount; j++) { + pNames[j] = s->Projects[j]; + for (int k = 0; k < projCount; k++) { + if (strcmp(projects[k].Name, s->Projects[j]) == 0) { + pDirs[j] = projects[k].Dir; + pGuids[j] = projects[k].Guid; + break; + } + } + } + GenerateSolution(s->Name, pNames, pDirs, pGuids, s->ProjCount); + } + + return 0; +} int main(int argc, char* argv[]) { @@ -855,6 +1316,7 @@ int main(int argc, char* argv[]) printf("Usage: build_system [args...]\n"); printf("Commands:\n"); printf(" run_plan Run the build from a generated plan file\n"); + printf(" gen_vs Generate Visual Studio project and solution files\n"); printf(" check_alive Returns 0 immediately to test execution\n"); return 1; } @@ -862,6 +1324,7 @@ int main(int argc, char* argv[]) const char* cmd = argv[1]; if (strcmp(cmd, "check_alive") == 0) return 0; if (strcmp(cmd, "run_plan") == 0) return CommandRunPlan(argc, argv); + if (strcmp(cmd, "gen_vs") == 0) return CommandGenVS(argc, argv); printf("[ERROR] Unknown command: %s\n", cmd); return 1;