From bd45cacc6ceebb21fd6483f72a7dfd15f0203e32 Mon Sep 17 00:00:00 2001 From: Patedam Date: Fri, 9 Jan 2026 14:07:36 -0500 Subject: [PATCH] Added the shader compiler to the fastbuild pipeline. --- External/SDK/Clang/Windows/Clang.bff | 10 + External/SDK/VisualStudio/VS2022.bff | 5 + Game/Game.vcxproj | 48 ++--- Juliet/Juliet.vcxproj | 36 ++-- Juliet/include/Core/Common/String.h | 4 +- Juliet/src/Core/Common/String.cpp | 34 ++- JulietApp/JulietApp.bff | 8 +- JulietApp/JulietApp.vcxproj | 78 +++---- JulietShaderCompiler.sln | 25 +++ JulietShaderCompiler/JulietShaderCompiler.bff | 100 +++++++++ .../JulietShaderCompiler.vcxproj | 201 ++++++++---------- .../JulietShaderCompiler.vcxproj.filters | 29 ++- JulietShaderCompiler/ShaderCompiler.cpp | 7 +- JulietShaderCompiler/ShaderCompiler.h | 2 +- fbuild.bff | 7 +- misc/recompile_shaders.bat | 37 +++- 16 files changed, 398 insertions(+), 233 deletions(-) create mode 100644 JulietShaderCompiler.sln diff --git a/External/SDK/Clang/Windows/Clang.bff b/External/SDK/Clang/Windows/Clang.bff index 39aaa4f..5237edc 100644 --- a/External/SDK/Clang/Windows/Clang.bff +++ b/External/SDK/Clang/Windows/Clang.bff @@ -151,6 +151,11 @@ Compiler( 'Compiler-Clang19-NonCL' ) .Compiler = 'Compiler-Clang19' .CommonCompilerOptions = ' -c' // Compile only + ' /Z7' // Include debug info + + ' -D_CRT_SECURE_NO_WARNINGS' + + // Unicode + + ' /utf-8' + + ' /D "_UNICODE" /D "UNICODE"' // Include paths + ' -I"./"' @@ -186,6 +191,11 @@ Compiler( 'Compiler-Clang19-NonCL' ) .Compiler = 'Compiler-Clang19-NonCL' .CommonCompilerOptions = ' -c' // Compile only + ' -g' // Include debug info + + ' -D_CRT_SECURE_NO_WARNINGS' + + // Unicode + + ' /utf-8' + + ' /D "_UNICODE" /D "UNICODE"' // Include paths + ' "-I./"' diff --git a/External/SDK/VisualStudio/VS2022.bff b/External/SDK/VisualStudio/VS2022.bff index dad3d15..a36bb3d 100644 --- a/External/SDK/VisualStudio/VS2022.bff +++ b/External/SDK/VisualStudio/VS2022.bff @@ -145,6 +145,11 @@ Compiler( 'Compiler-VS2022-ARM64' ) + ' /GR-' // No RTTI + ' /EHs-c-' // No exceptions + + ' -D_CRT_SECURE_NO_WARNINGS' + + + ' /utf-8' + + ' /D "_UNICODE" /D "UNICODE"' + // Warnings + ' /Wall' // Enable all warnings (we'll disable those that are not useful) + ' /WX' // Warnings as errors diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj index 4887c02..c3d9e1f 100644 --- a/Game/Game.vcxproj +++ b/Game/Game.vcxproj @@ -177,8 +177,8 @@ - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -187,8 +187,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -197,8 +197,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -207,8 +207,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -217,8 +217,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -227,8 +227,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -237,8 +237,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -247,8 +247,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -257,8 +257,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -267,8 +267,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -277,8 +277,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -287,8 +287,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 diff --git a/Juliet/Juliet.vcxproj b/Juliet/Juliet.vcxproj index 54e837b..1722a3f 100644 --- a/Juliet/Juliet.vcxproj +++ b/Juliet/Juliet.vcxproj @@ -235,9 +235,9 @@ - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) - WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;include;src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 $(SolutionDir)\bin\$(Configuration)\ @@ -245,9 +245,9 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) - WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;include;src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 $(SolutionDir)\bin\$(Configuration)\ @@ -255,9 +255,9 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) - WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; ..\;include;src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 $(SolutionDir)\bin\$(Configuration)\ @@ -265,9 +265,9 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) - WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;include;src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 $(SolutionDir)\bin\$(Configuration)\ @@ -275,9 +275,9 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) - WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;include;src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 $(SolutionDir)\bin\$(Configuration)\ @@ -285,9 +285,9 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) - WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; ..\;include;src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 $(SolutionDir)\bin\$(Configuration)\ diff --git a/Juliet/include/Core/Common/String.h b/Juliet/include/Core/Common/String.h index 7f6c039..3914566 100644 --- a/Juliet/include/Core/Common/String.h +++ b/Juliet/include/Core/Common/String.h @@ -137,8 +137,8 @@ namespace Juliet // src and dst will be casted based on the encoding. // size will correspond to the number of characters // Will convert \0 character if present. - extern JULIET_API bool ConvertString(StringEncoding from, StringEncoding to, String src, StringBuffer& dst); - extern JULIET_API bool ConvertString(String from, String to, String src, StringBuffer& dst); + extern JULIET_API bool ConvertString(StringEncoding from, StringEncoding to, String src, StringBuffer& dst, bool nullTerminate); + extern JULIET_API bool ConvertString(String from, String to, String src, StringBuffer& dst, bool nullTerminate); } // namespace Juliet diff --git a/Juliet/src/Core/Common/String.cpp b/Juliet/src/Core/Common/String.cpp index 8b9c15f..7b55149 100644 --- a/Juliet/src/Core/Common/String.cpp +++ b/Juliet/src/Core/Common/String.cpp @@ -249,7 +249,7 @@ namespace Juliet return 0; } - bool ConvertString(StringEncoding from, StringEncoding to, String src, StringBuffer& dst) + bool ConvertString(StringEncoding from, StringEncoding to, String src, StringBuffer& dst, bool nullTerminate) { Assert(IsValid(src)); @@ -421,10 +421,38 @@ namespace Juliet case StringEncoding::UCS4: Assert(false, "ConvertString: Unsupported Destination Format"); break; } } + + if (nullTerminate) + { + switch (to) + { + case StringEncoding::UTF16: + { + if (remainingCapacity < 2) + { + Log(LogLevel::Error, LogCategory::Core, + "ConvertString: Destination buffer too short to add null terminator into UTF16 buffer"); + return false; + } + dstStr[0] = 0; + dstStr[1] = 0; + remainingCapacity -= 2; + break; + } + case StringEncoding::Unknown: Assert(false, "ConvertString: Invalid Source Format: Unknown"); break; + case StringEncoding::ASCII: + case StringEncoding::LATIN1: + case StringEncoding::UTF8: + case StringEncoding::UTF32: + case StringEncoding::UCS2: + case StringEncoding::UCS4: Assert(false, "ConvertString: Unsupported Destination Format"); break; + } + } + return true; } - bool ConvertString(String from, String to, String src, StringBuffer& dst) + bool ConvertString(String from, String to, String src, StringBuffer& dst, bool nullTerminate) { Assert(IsValid(from)); Assert(IsValid(to)); @@ -457,6 +485,6 @@ namespace Juliet return false; } - return ConvertString(sourceFormat, destFormat, src, dst); + return ConvertString(sourceFormat, destFormat, src, dst, nullTerminate); } } // namespace Juliet diff --git a/JulietApp/JulietApp.bff b/JulietApp/JulietApp.bff index 42876f7..573851b 100644 --- a/JulietApp/JulietApp.bff +++ b/JulietApp/JulietApp.bff @@ -11,6 +11,7 @@ ForEach( .BuildConfig in .BuildConfigs ) { Using( .BuildConfig ) + .OutputBase + '\$Platform$-$BuildConfigName$' // Unity @@ -84,9 +85,14 @@ Alias( '$ProjectName$-$Platform$-$BuildConfigName$' ) { .Targets = '$ProjectName$-Exe-$Platform$-$BuildConfigName$' } ^'Targets_$Platform$_$BuildConfigName$' + { '$ProjectName$-$Platform$-$BuildConfigName$' } + #if __WINDOWS__ - .ProjectConfig = [ Using( .'Project_$Platform$_$BuildConfigName$' ) .Target = '$ProjectName$-$Platform$-$BuildConfigName$' ] + .ProjectConfig = + [ + Using( .'Project_$Platform$_$BuildConfigName$' ) + .Target = '$ProjectName$-$Config$' + ] ^ProjectConfigs + .ProjectConfig #endif } diff --git a/JulietApp/JulietApp.vcxproj b/JulietApp/JulietApp.vcxproj index e0d8ed9..8cbfced 100644 --- a/JulietApp/JulietApp.vcxproj +++ b/JulietApp/JulietApp.vcxproj @@ -253,8 +253,8 @@ - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -263,8 +263,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -273,8 +273,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -283,8 +283,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -293,8 +293,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -303,8 +303,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -313,8 +313,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -323,8 +323,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -333,8 +333,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -343,8 +343,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -353,8 +353,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -363,8 +363,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_WIN32; ..\;..\Juliet\include;..\Game;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -373,8 +373,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -383,8 +383,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -393,8 +393,8 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_WIN32; ..\;..\Juliet\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 @@ -403,31 +403,31 @@ $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; - /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 + /std:c++20 $(SolutionDir)\bin\$(Configuration)\ $(SolutionDir)\Intermediate $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;PROFILING_ENABLED;JULIET_WIN32; ..\;..\Juliet\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; - /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 + /std:c++20 $(SolutionDir)\bin\$(Configuration)\ $(SolutionDir)\Intermediate $(SolutionDir)\bin - cd $(SolutionDir) & misc\fbuild -vs -dist -monitor -cache $(ProjectName)-$(Configuration) - cd $(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & mics\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_WIN32; ..\;..\Juliet\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; - /std:c++20 /wd5267 /wd4061 /wd4505 /wd4514 /wd4577 /wd4625 /wd4710 /wd4711 /wd4746 /wd4820 /wd5045 /wd5220 /wd5245 + /std:c++20 $(SolutionDir)\bin\$(Configuration)\ $(SolutionDir)\Intermediate $(SolutionDir)\bin diff --git a/JulietShaderCompiler.sln b/JulietShaderCompiler.sln new file mode 100644 index 0000000..d12c32d --- /dev/null +++ b/JulietShaderCompiler.sln @@ -0,0 +1,25 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.22823.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietShaderCompiler", "JulietShaderCompiler\JulietShaderCompiler.vcxproj", "{534B94ED-6C94-4F93-BC2A-7F5284B7D434}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64Clang = Debug|x64Clang + Release|x64Clang = Release|x64Clang + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64Clang.ActiveCfg = x64Clang-Debug|x64 + {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64Clang.Build.0 = x64Clang-Debug|x64 + {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Release|x64Clang.ActiveCfg = x64Clang-Release|x64 + {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Release|x64Clang.Build.0 = x64Clang-Release|x64 + {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64Clang.ActiveCfg = x64Clang-Debug|x64 + {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64Clang.ActiveCfg = x64Clang-Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/JulietShaderCompiler/JulietShaderCompiler.bff b/JulietShaderCompiler/JulietShaderCompiler.bff index e69de29..a743fb0 100644 --- a/JulietShaderCompiler/JulietShaderCompiler.bff +++ b/JulietShaderCompiler/JulietShaderCompiler.bff @@ -0,0 +1,100 @@ +.ProjectName = 'JulietShaderCompiler' +.ProjectPath = 'JulietShaderCompiler' + +// 1. Define the configurations and a container for the VS Project +.ShaderCompilerConfigs = { .X64ClangDebugConfig, .X64ClangReleaseConfig } +.ProjectConfigsShader = {} +.DXCSourcePath = '$ProjectPath$/DXShaderCompiler' + +ForEach( .BuildConfig in .ShaderCompilerConfigs ) +{ + Using( .BuildConfig ) + .OutputBase + '\$Platform$-$BuildConfigName$' + + // 2. Define the Build Targets for this specific configuration + ObjectList( '$ProjectName$-Obs-$Platform$-$BuildConfigName$' ) + { + .CompilerInputPath = '$ProjectPath$/' + .CompilerOutputPath = '$OutputBase$/$ProjectPath$/' + .CompilerOptions + ' "-IJuliet/include"' + + ' "-IJulietShaderCompiler"' + + #if __WINDOWS__ + .CompilerOptions + ' -DJULIET_WIN32' + #endif + } + +#if __WINDOWS__ + Copy( '$ProjectName$-CopyDeps-$Platform$-$BuildConfigName$' ) + { + .Source = { + '$DXCSourcePath$/dxcompiler.dll', + '$DXCSourcePath$/dxil.dll' + } + .Dest = '$BinPath$/$Platform$-$BuildConfigName$/' + } +#endif + + Executable( '$ProjectName$-Exe-$Platform$-$BuildConfigName$' ) + { + .Libraries = { + 'Juliet-Lib-$Platform$-$BuildConfigName$', + '$ProjectName$-Obs-$Platform$-$BuildConfigName$' + } + + .LinkerOutput = '$BinPath$/$Platform$-$BuildConfigName$/$ProjectName$$ExeExtension$' + + #if __WINDOWS__ + + .CRTLibs = .CRTLibs_Dynamic + If ( .BuildConfigName == 'Debug' ) + { + ^CRTLibs = .CRTLibs_DynamicDebug + } + .LinkerOptions + .CRTLibs + + .LinkerOptions + .CommonWinLibs + ' dxcompiler.lib' + #endif + + #if __WINDOWS__ + .PreBuildDependencies = { '$ProjectName$-CopyDeps-$Platform$-$BuildConfigName$' } + #endif + } + + Alias( '$ProjectName$-$Platform$-$BuildConfigName$' ) { .Targets = '$ProjectName$-Exe-$Platform$-$BuildConfigName$' } + ^'Targets_$Platform$_$BuildConfigName$' + { '$ProjectName$-$Platform$-$BuildConfigName$' } + + #if __WINDOWS__ + .ConfigInfo = + [ + Using( .'Project_$Platform$_$BuildConfigName$' ) + + .LocalDebuggerCommandArguments = '..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil' + + .Target = '$ProjectName$-$Config$' + ] + ^ProjectConfigsShader + .ConfigInfo + #endif +} + +// 4. Create the Project and Solution using the generated list +VCXProject( '$ProjectName$-Proj' ) +{ + .ProjectOutput = '$ProjectPath$/$ProjectName$.vcxproj' + .ProjectBasePath = '$ProjectPath$/' + .ProjectInputPaths = { .ProjectBasePath } + .ProjectConfigs = .ProjectConfigsShader +} + +VSSolution( 'ShaderCompiler-Solution' ) +{ + .SolutionOutput = 'JulietShaderCompiler.sln' + .SolutionProjects = { '$ProjectName$-Proj' , 'Juliet' } + .SolutionConfigs = .ProjectConfigsShader + .SolutionBuildProject = '$ProjectName$-Proj' +} + +// 5. Global Aliases +Alias( 'gen-shader' ) { .Targets = 'ShaderCompiler-Solution' } +Alias( 'shader' ) { .Targets = { '$ProjectName$-x64Clang-Release' } } +Alias( 'shader-debug' ) { .Targets = { '$ProjectName$-x64Clang-Debug', } } \ No newline at end of file diff --git a/JulietShaderCompiler/JulietShaderCompiler.vcxproj b/JulietShaderCompiler/JulietShaderCompiler.vcxproj index be69e12..9a44bf6 100644 --- a/JulietShaderCompiler/JulietShaderCompiler.vcxproj +++ b/JulietShaderCompiler/JulietShaderCompiler.vcxproj @@ -1,119 +1,86 @@ - - - - Debug - x64 - - - Release - x64 - - - - 15.0 - {26880364-45F4-4817-BFD3-0ACC0958757D} - Win32Proj - JulietShaderCompiler - 10.0.26100.0 - - - - x64 - - - Application - true - ClangCL - Unicode - - - Application - false - ClangCL - true - Unicode - - - - - - - - - - - - - - - true - $(SolutionDir)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\ - - - false - $(SolutionDir)\bin\$(Platform)\$(Configuration)\ - $(SolutionDir)Intermediate\$(ProjectName)\$(Platform)\$(Configuration)\ - - - - NotUsing - Level3 - Disabled - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - pch.h - $(SolutionDir)Juliet\include\;$(SolutionDir)JulietShaderCompiler; - stdcpp20 - - - Console - true - $(SolutionDir)\lib\$(Platform)\$(Configuration)\ - Juliet.lib; $(CoreLibraryDependencies);%(AdditionalDependencies) - - - - - NotUsing - Level3 - MaxSpeed - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - pch.h - stdcpp20 - - - Console - true - true - true - $(SolutionDir)\lib\$(Platform)\$(Configuration)\; - Juliet.lib; $(CoreLibraryDependencies);%(AdditionalDependencies) - - - - - - - - - PreserveNewest - - - PreserveNewest - - - - - - - - - + + + + x64Clang-Debug + x64 + + + x64Clang-Release + x64 + + + + + + + + + + + + + {534b94ed-6c94-4f93-bc2a-7f5284b7d434} + MakeFileProj + + + + Makefile + false + v143 + ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil + $(SolutionDir)\bin\$(Configuration)\$(ProjectName).exe + + + Makefile + false + v143 + ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil + $(SolutionDir)\bin\$(Configuration)\$(ProjectName).exe + + + + + + + + + + + + + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;DEBUG;PROFILING_ENABLED;JULIET_EXPORT;JULIET_WIN32; + ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; + /std:c++20 + $(SolutionDir)\bin\$(Configuration)\ + $(SolutionDir)\Intermediate + $(SolutionDir)\bin + + + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache $(ProjectName)-$(Configuration) + cd $(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean $(ProjectName)-$(Configuration) + _CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;WIN32_LEAN_AND_MEAN;WIN32;_WIN32;__WINDOWS__;_HAS_EXCEPTIONS=0;WIN64;RELEASE;JULIET_EXPORT;JULIET_WIN32; + ..\;..\Juliet\include;..\Juliet\src;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared; + /std:c++20 + $(SolutionDir)\bin\$(Configuration)\ + $(SolutionDir)\Intermediate + $(SolutionDir)\bin + + + + $(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 54afe9d..afc1766 100644 --- a/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters +++ b/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters @@ -1,22 +1,21 @@ - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - + + DXShaderCompiler + + + + + + + + + - - Source Files - + + {9f537123-6c94-4f93-bc2a-7f5284b7d434} + \ No newline at end of file diff --git a/JulietShaderCompiler/ShaderCompiler.cpp b/JulietShaderCompiler/ShaderCompiler.cpp index 57af9be..ae10fb8 100644 --- a/JulietShaderCompiler/ShaderCompiler.cpp +++ b/JulietShaderCompiler/ShaderCompiler.cpp @@ -6,8 +6,6 @@ #include #include -#pragma comment(lib, "dxcompiler.lib") - using namespace Juliet; namespace @@ -66,7 +64,8 @@ namespace char inplaceBuffer[1024]; convertedBuffer.Data = inplaceBuffer; convertedBuffer.Capacity = sizeof(inplaceBuffer); - if (!ConvertString(StringEncoding::UTF8, StringEncoding::UTF16, info.EntryPoint, convertedBuffer)) + constexpr bool kAddNullTerminator = true; + if (!ConvertString(StringEncoding::UTF8, StringEncoding::UTF16, info.EntryPoint, convertedBuffer, kAddNullTerminator)) { LogError(LogCategory::Tool, "Cannot convert entry point string to utf16"); return {}; @@ -130,7 +129,7 @@ namespace StringBuffer nameUtf16 = {}; nameUtf16.Data = nameInplaceBuffer; nameUtf16.Capacity = sizeof(nameInplaceBuffer); - if (ConvertString(StringEncoding::UTF8, StringEncoding::UTF16, info.Name, nameUtf16)) + if (ConvertString(StringEncoding::UTF8, StringEncoding::UTF16, info.Name, nameUtf16, kAddNullTerminator)) { args[argCount++] = reinterpret_cast(nameInplaceBuffer); } diff --git a/JulietShaderCompiler/ShaderCompiler.h b/JulietShaderCompiler/ShaderCompiler.h index e83cf27..8a23b2c 100644 --- a/JulietShaderCompiler/ShaderCompiler.h +++ b/JulietShaderCompiler/ShaderCompiler.h @@ -39,4 +39,4 @@ struct HLSLShaderInfo : ShaderInfo // TODO Defines and includes }; -ByteBuffer CompileDXIL(HLSLShaderInfo& info); \ No newline at end of file +ByteBuffer CompileDXIL(HLSLShaderInfo& info); diff --git a/fbuild.bff b/fbuild.bff index 8ab03a1..08120e8 100644 --- a/fbuild.bff +++ b/fbuild.bff @@ -140,8 +140,8 @@ Settings #if __WINDOWS__ .ProjectCommon = [ - .ProjectBuildCommand = 'cd ^$(SolutionDir) & misc\fbuild -vs -dist -monitor -cache ^$(ProjectName)-^$(Configuration)' - .ProjectRebuildCommand = 'cd ^$(SolutionDir) & mics\fbuild -vs -dist -monitor -cache -clean ^$(ProjectName)-^$(Configuration)' + .ProjectBuildCommand = 'cd ^$(SolutionDir) & misc\fbuild -ide -dist -monitor -cache ^$(ProjectName)-^$(Configuration)' + .ProjectRebuildCommand = 'cd ^$(SolutionDir) & misc\fbuild -ide -dist -monitor -cache -clean ^$(ProjectName)-^$(Configuration)' .OutputDirectory = '^$(SolutionDir)\bin' .IntermediateDirectory = '^$(SolutionDir)\Intermediate' .BuildLogFile = '^$(SolutionDir)\Intermediate\^$(ProjectName)-^$(Configuration).log' @@ -177,6 +177,7 @@ Settings #include "Juliet/Juliet.bff" #include "Game/Game.bff" #include "JulietApp/JulietApp.Bff" +#include "JulietShaderCompiler/JulietShaderCompiler.Bff" // Aliases : All-$Platform$-$Config$ //------------------------------------------------------------------------------ @@ -256,4 +257,4 @@ VSSolution( 'GenerateSolution' ) .SolutionConfigs = .ProjectConfigs .SolutionBuildProject = 'JulietApp' } -Alias( 'gen' ) { .Targets = 'GenerateSolution' } \ No newline at end of file +Alias( 'gen' ) { .Targets = 'GenerateSolution' } diff --git a/misc/recompile_shaders.bat b/misc/recompile_shaders.bat index feb6c45..bd1b57e 100644 --- a/misc/recompile_shaders.bat +++ b/misc/recompile_shaders.bat @@ -1,18 +1,35 @@ @echo off setlocal enabledelayedexpansion -set TARGET=x64\Debug +set TARGET=x64Clang-Release REM Chemin relatif vers JulietShaderCompiler.exe -set COMPILER_PATH=..\bin\%TARGET%\JulietShaderCompiler.exe +set COMPILER_PATH=bin\%TARGET%\JulietShaderCompiler.exe echo Compiler Path: !COMPILER_PATH! +REM --- GESTION D'ERREUR : Vérification du compilateur --- +if not exist "!COMPILER_PATH!" ( + echo. + echo ERREUR : Le compilateur est introuvable au chemin : !COMPILER_PATH! + echo Assurez-vous d'avoir bien bati le projet JulietShaderCompiler. + pause + exit /b 1 +) + REM Dossier source contenant les fichiers .frag.hlsl et .vert.hlsl -set SOURCE_DIR=..\Assets\source +set SOURCE_DIR=Assets\source echo Source Dir: !SOURCE_DIR! +REM --- GESTION D'ERREUR : Vérification du dossier source --- +if not exist "!SOURCE_DIR!" ( + echo. + echo ERREUR : Le dossier source est introuvable : !SOURCE_DIR! + pause + exit /b 1 +) + REM Dossier de sortie pour les fichiers compilés -set OUTPUT_DIR=..\Assets\compiled +set OUTPUT_DIR=Assets\compiled echo Output Dir: !OUTPUT_DIR! REM Créer le dossier de sortie s'il n'existe pas @@ -32,10 +49,18 @@ for %%F in ("%SOURCE_DIR%\*.frag.hlsl" "%SOURCE_DIR%\*.vert.hlsl") do ( ) REM Construire la ligne de commande set "COMMAND=%COMPILER_PATH% %SOURCE_DIR%\!FILENAME!!EXTENSION! -o %OUTPUT_DIR%\!FILENAME!!SHORT_EXTENSION!.dxil" - REM Afficher la ligne de commande pour le débogage echo !COMMAND! - REM Appeler JulietShaderCompiler.exe avec les arguments spécifiés + REM Afficher la ligne de commande pour le débogage + echo Compiling: !FILENAME!!EXTENSION! + REM Appeler JulietShaderCompiler.exe avec les arguments spécifiés !COMMAND! + + if !ERRORLEVEL! NEQ 0 ( + echo ERREUR lors de la compilation de %%F + ) ) +echo. +echo Operation terminee. +pause endlocal \ No newline at end of file