natvis support in build system + some natvis
This commit is contained in:
1 parent
2fd675cf11
commit
1367146503
5 files changed
+137
-6
No files matched your search
@@ -3,4 +3,7 @@
|
||||
<LLVMInstallDir>C:\Program Files\LLVM</LLVMInstallDir>
|
||||
<LLVMToolsVersion>19.1.0</LLVMToolsVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Natvis Include="$(MSBuildThisFileDirectory)Natvis\*.natvis" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||
<Type Name="NonNullPtr<void>">
|
||||
<DisplayString>{(void*)InternalPtr}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[ptr]">InternalPtr</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="NonNullPtr<*>">
|
||||
<DisplayString Condition="InternalPtr == 0"><null></DisplayString>
|
||||
<DisplayString>{InternalPtr}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>InternalPtr</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="VectorArena<*,*>">
|
||||
<DisplayString>{{ size={Count} capacity={Capacity} }}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">Count</Item>
|
||||
<Item Name="[capacity]">Capacity</Item>
|
||||
<ArrayItems>
|
||||
<Size>Count</Size>
|
||||
<ValuePointer>Data</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="Arena">
|
||||
<DisplayString Condition="Name != 0">{Name,s} (used={Position} / reserved={ReserveSize})</DisplayString>
|
||||
<DisplayString Condition="Name == 0">Arena (used={Position} / reserved={ReserveSize})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[name]" Condition="Name != 0">Name,s</Item>
|
||||
<Item Name="[used]">Position</Item>
|
||||
<Item Name="[committed]">Committed</Item>
|
||||
<Item Name="[reserved]">ReserveSize</Item>
|
||||
<Item Name="[alignment]">Alignment</Item>
|
||||
<Item Name="Current">Current</Item>
|
||||
<Item Name="Previous">Previous</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
</AutoVisualizer>
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||
<Type Name="String8">
|
||||
<DisplayString Condition="Str == 0 || Size == 0"><empty></DisplayString>
|
||||
<DisplayString>{Str,[Size]s8}</DisplayString>
|
||||
<StringView>Str,[Size]s8</StringView>
|
||||
<Expand>
|
||||
<Item Name="[size]">Size</Item>
|
||||
<ArrayItems>
|
||||
<Size>Size</Size>
|
||||
<ValuePointer>Str</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="String16">
|
||||
<DisplayString Condition="Str == 0 || Size == 0"><empty></DisplayString>
|
||||
<DisplayString>{Str,[Size]su}</DisplayString>
|
||||
<StringView>Str,[Size]su</StringView>
|
||||
<Expand>
|
||||
<Item Name="[size]">Size</Item>
|
||||
<ArrayItems>
|
||||
<Size>Size</Size>
|
||||
<ValuePointer>Str</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="StringBuffer">
|
||||
<DisplayString Condition="Str == 0 || Size == 0"><empty> (capacity={Capacity})</DisplayString>
|
||||
<DisplayString>{Str,[Size]s8} (capacity={Capacity})</DisplayString>
|
||||
<StringView>Str,[Size]s8</StringView>
|
||||
<Expand>
|
||||
<Item Name="[size]">Size</Item>
|
||||
<Item Name="[capacity]">Capacity</Item>
|
||||
<ArrayItems>
|
||||
<Size>Size</Size>
|
||||
<ValuePointer>Str</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
</AutoVisualizer>
|
||||
+14
-6
@@ -9,7 +9,7 @@ cd /d "%~dp0\.."
|
||||
|
||||
set BUILD_TOOL=misc\build_system.exe
|
||||
set BUILD_SRC=tools\build_system.c
|
||||
set BUILD_TOOL_VER=1.6
|
||||
set BUILD_TOOL_VER=1.7
|
||||
|
||||
set COMMAND_GEN_VS=0
|
||||
|
||||
@@ -177,6 +177,14 @@ if /i "!CFG!"=="Debug" (
|
||||
|
||||
set COMMON_LIBS=kernel32.lib user32.lib Advapi32.lib gdi32.lib dxguid.lib Ws2_32.lib dxgi.lib imm32.lib dwmapi.lib d3dcompiler.lib dxcompiler.lib shell32.lib winhttp.lib delayimp.lib
|
||||
|
||||
set NATVIS_LINK_FLAGS=
|
||||
for %%F in (Natvis\*.natvis) do (
|
||||
set "NATVIS_LINK_FLAGS=!NATVIS_LINK_FLAGS! /NATVIS:%%F"
|
||||
)
|
||||
if exist External\imgui\misc\debuggers\imgui.natvis (
|
||||
set "NATVIS_LINK_FLAGS=!NATVIS_LINK_FLAGS! /NATVIS:External\imgui\misc\debuggers\imgui.natvis"
|
||||
)
|
||||
|
||||
if defined IMGUI_UNITY_SRCS (
|
||||
echo STEP Compiling ImGui Shared Objs [!CFG!]>>"!PLAN_FILE!"
|
||||
echo OUTPUT Intermediate\x64-!CFG!\ImGui_Unity1.obj>>"!PLAN_FILE!"
|
||||
@@ -206,7 +214,7 @@ set "JULIET_LINK_CMD=!LINK_FLAGS!"
|
||||
echo STEP Building Juliet.dll [!CFG!]>>"!PLAN_FILE!"
|
||||
echo OUTPUT bin\x64-!CFG!\Juliet.dll>>"!PLAN_FILE!"
|
||||
echo DEPENDS Juliet^|External\imgui^|Intermediate\x64-!CFG!\Juliet_PCH.obj>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !JULIET_LINK_CMD! /DIMGUI_API=__declspec^(dllexport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\Juliet.dll" !JULIET_INPUTS! Intermediate\x64-!CFG!\Juliet_PCH.obj %IMGUI_OBJS% /link %COMMON_LIBS% /INCREMENTAL /ILK:Intermediate\x64-!CFG!\Juliet.ilk /PDB:Intermediate\x64-!CFG!\Juliet.pdb>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !JULIET_LINK_CMD! /DIMGUI_API=__declspec^(dllexport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\Juliet.dll" !JULIET_INPUTS! Intermediate\x64-!CFG!\Juliet_PCH.obj %IMGUI_OBJS% /link %COMMON_LIBS% !NATVIS_LINK_FLAGS! /INCREMENTAL /ILK:Intermediate\x64-!CFG!\Juliet.ilk /PDB:Intermediate\x64-!CFG!\Juliet.pdb>>"!PLAN_FILE!"
|
||||
|
||||
:: --- Game.dll ---
|
||||
if !BUILD_GAME_DLL! equ 1 (
|
||||
@@ -231,7 +239,7 @@ if !BUILD_GAME_DLL! equ 1 (
|
||||
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^|Intermediate\x64-!CFG!\Game_PCH.obj>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !GAME_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\!GAME_DLL_NAME!.dll" !GAME_INPUTS! Intermediate\x64-!CFG!\Game_PCH.obj /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!"
|
||||
echo COMMAND %COMPILER% !GAME_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\!GAME_DLL_NAME!.dll" !GAME_INPUTS! Intermediate\x64-!CFG!\Game_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib !NATVIS_LINK_FLAGS! /INCREMENTAL /ILK:Intermediate\x64-!CFG!\!GAME_DLL_NAME!.ilk /PDB:Intermediate\x64-!CFG!\!GAME_DLL_NAME!.pdb>>"!PLAN_FILE!"
|
||||
)
|
||||
|
||||
:: --- JulietApp.exe ---
|
||||
@@ -254,7 +262,7 @@ if !TARGET_JULIET! equ 1 (
|
||||
echo STEP Building JulietApp.exe [!CFG!]>>"!PLAN_FILE!"
|
||||
echo OUTPUT bin\x64-!CFG!\JulietApp.exe>>"!PLAN_FILE!"
|
||||
echo DEPENDS JulietApp^|Game^|Juliet^|External\imgui^|Intermediate\x64-!CFG!\JulietApp_PCH.obj>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !APP_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /Fe"bin\x64-!CFG!\JulietApp.exe" !APP_INPUTS! Intermediate\x64-!CFG!\JulietApp_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /SUBSYSTEM:CONSOLE /INCREMENTAL /ILK:Intermediate\x64-!CFG!\JulietApp.ilk /PDB:Intermediate\x64-!CFG!\JulietApp.pdb>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !APP_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /Fe"bin\x64-!CFG!\JulietApp.exe" !APP_INPUTS! Intermediate\x64-!CFG!\JulietApp_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib !NATVIS_LINK_FLAGS! /SUBSYSTEM:CONSOLE /INCREMENTAL /ILK:Intermediate\x64-!CFG!\JulietApp.ilk /PDB:Intermediate\x64-!CFG!\JulietApp.pdb>>"!PLAN_FILE!"
|
||||
)
|
||||
|
||||
:: --- Romeo.exe ---
|
||||
@@ -277,7 +285,7 @@ if !TARGET_ROMEO! equ 1 (
|
||||
echo STEP Building Romeo.exe [!CFG!]>>"!PLAN_FILE!"
|
||||
echo OUTPUT bin\x64-!CFG!\Romeo.exe>>"!PLAN_FILE!"
|
||||
echo DEPENDS Romeo^|Juliet^|External\imgui^|Intermediate\x64-!CFG!\Romeo_PCH.obj>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !ROMEO_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /Fe"bin\x64-!CFG!\Romeo.exe" !ROMEO_INPUTS! Intermediate\x64-!CFG!\Romeo_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /SUBSYSTEM:WINDOWS /INCREMENTAL /ILK:Intermediate\x64-!CFG!\Romeo.ilk /PDB:Intermediate\x64-!CFG!\Romeo.pdb>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !ROMEO_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /Fe"bin\x64-!CFG!\Romeo.exe" !ROMEO_INPUTS! Intermediate\x64-!CFG!\Romeo_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib !NATVIS_LINK_FLAGS! /SUBSYSTEM:WINDOWS /INCREMENTAL /ILK:Intermediate\x64-!CFG!\Romeo.ilk /PDB:Intermediate\x64-!CFG!\Romeo.pdb>>"!PLAN_FILE!"
|
||||
)
|
||||
|
||||
:: --- JulietShaderCompiler.exe ---
|
||||
@@ -300,7 +308,7 @@ if !TARGET_SHADER! equ 1 (
|
||||
echo STEP Building JulietShaderCompiler.exe [!CFG!]>>"!PLAN_FILE!"
|
||||
echo OUTPUT bin\x64-!CFG!\JulietShaderCompiler.exe>>"!PLAN_FILE!"
|
||||
echo DEPENDS JulietShaderCompiler^|Juliet^|Intermediate\x64-!CFG!\JulietShaderCompiler_PCH.obj>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !SHADER_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /Fe"bin\x64-!CFG!\JulietShaderCompiler.exe" !SHADER_INPUTS! Intermediate\x64-!CFG!\JulietShaderCompiler_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /SUBSYSTEM:CONSOLE /INCREMENTAL /ILK:Intermediate\x64-!CFG!\JulietShaderCompiler.ilk /PDB:Intermediate\x64-!CFG!\JulietShaderCompiler.pdb>>"!PLAN_FILE!"
|
||||
echo COMMAND %COMPILER% !SHADER_LINK_CMD! /DIMGUI_API=__declspec^(dllimport^) /Fe"bin\x64-!CFG!\JulietShaderCompiler.exe" !SHADER_INPUTS! Intermediate\x64-!CFG!\JulietShaderCompiler_PCH.obj /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib !NATVIS_LINK_FLAGS! /SUBSYSTEM:CONSOLE /INCREMENTAL /ILK:Intermediate\x64-!CFG!\JulietShaderCompiler.ilk /PDB:Intermediate\x64-!CFG!\JulietShaderCompiler.pdb>>"!PLAN_FILE!"
|
||||
)
|
||||
|
||||
exit /b 0
|
||||
@@ -1221,6 +1221,14 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
|
||||
CollectFiles(projectDir, NULL, ".inl", srcFiles);
|
||||
}
|
||||
|
||||
FilePathList* natvisFiles = CreateFilePathList();
|
||||
if (DirectoryExists("Natvis")) {
|
||||
CollectFiles("Natvis", NULL, ".natvis", natvisFiles);
|
||||
}
|
||||
if (FileExists("External\\imgui\\misc\\debuggers\\imgui.natvis")) {
|
||||
FilePathListAdd(natvisFiles, "External\\imgui\\misc\\debuggers\\imgui.natvis");
|
||||
}
|
||||
|
||||
char* buf = (char*)ArenaPush(4 * 1024 * 1024);
|
||||
int offset = 0;
|
||||
|
||||
@@ -1315,6 +1323,14 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
|
||||
}
|
||||
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " </ItemGroup>\n");
|
||||
|
||||
if (natvisFiles->Count > 0) {
|
||||
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " <ItemGroup>\n");
|
||||
for (int i = 0; i < natvisFiles->Count; i++) {
|
||||
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " <Natvis Include=\"..\\%s\" />\n", natvisFiles->Paths[i]);
|
||||
}
|
||||
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " </ItemGroup>\n");
|
||||
}
|
||||
|
||||
offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
|
||||
" <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n"
|
||||
" <ImportGroup Label=\"ExtensionTargets\">\n"
|
||||
@@ -1373,6 +1389,16 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
|
||||
}
|
||||
}
|
||||
|
||||
if (natvisFiles->Count > 0) {
|
||||
bool found = false;
|
||||
for (int f = 0; f < filterCount; f++) {
|
||||
if (_stricmp(filters[f], "Natvis") == 0) { found = true; break; }
|
||||
}
|
||||
if (!found && filterCount < 512) {
|
||||
strcpy_s(filters[filterCount++], 256, "Natvis");
|
||||
}
|
||||
}
|
||||
|
||||
char* filterBuf = (char*)ArenaPush(4 * 1024 * 1024);
|
||||
int filterOffset = 0;
|
||||
filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
|
||||
@@ -1416,6 +1442,15 @@ static void GenerateProject(const char* projectName, const char* projectDir, con
|
||||
" <%s Include=\"..\\%s\" />\n", type, path);
|
||||
}
|
||||
}
|
||||
|
||||
if (natvisFiles->Count > 0) {
|
||||
for (int i = 0; i < natvisFiles->Count; i++) {
|
||||
filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
|
||||
" <Natvis Include=\"..\\%s\">\n"
|
||||
" <Filter>Natvis</Filter>\n"
|
||||
" </Natvis>\n", natvisFiles->Paths[i]);
|
||||
}
|
||||
}
|
||||
filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
|
||||
" </ItemGroup>\n</Project>\n");
|
||||
|
||||
|
||||
Reference in new issue
Block a user