Skip to content

Commit

Permalink
Install PDB files when available (shader-slang#5665)
Browse files Browse the repository at this point in the history
* Install PDB files when available

Closes shader-slang#5562

* format code

* format code

---------

Co-authored-by: Jay Kwak <[email protected]>
Co-authored-by: slangbot <[email protected]>
  • Loading branch information
3 people authored Dec 3, 2024
1 parent 2f42388 commit 6c655ca
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 3 deletions.
2 changes: 1 addition & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
"generators": ["ZIP"],
"variables": {
"CPACK_PACKAGE_FILE_NAME": "slang",
"CPACK_COMPONENTS_ALL": "Unspecified;metadata;slang-llvm"
"CPACK_COMPONENTS_ALL": "Unspecified;metadata;debug-info;slang-llvm"
}
},
{
Expand Down
26 changes: 26 additions & 0 deletions cmake/SlangTarget.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ function(slang_add_target dir type)
DEBUG_DIR
# Install this target as part of a component
INSTALL_COMPONENT
# Don't install debug info by default for this target and use this
# explicit name instead, used for externally built things such as
# slang-glslang and slang-llvm which have large pdb files
DEBUG_INFO_INSTALL_COMPONENT
)
set(multi_value_args
# Use exactly these sources, instead of globbing from the directory
Expand Down Expand Up @@ -415,9 +419,31 @@ function(slang_add_target dir type)
endmacro()
if(ARG_INSTALL)
i()
set(pdb_component "debug-info")
endif()
if(ARG_INSTALL_COMPONENT)
i(EXCLUDE_FROM_ALL COMPONENT ${ARG_INSTALL_COMPONENT})
set(pdb_component "${ARG_INSTALL_COMPONENT}-debug-info")
endif()
if(ARG_DEBUG_INFO_INSTALL_COMPONENT)
set(pdb_component ${ARG_DEBUG_INFO_INSTALL_COMPONENT})
endif()
if(MSVC AND DEFINED pdb_component)
if(
type STREQUAL "EXECUTABLE"
OR type STREQUAL "SHARED"
OR type STREQUAL "MODULE"
)
install(
FILES $<TARGET_PDB_FILE:${target}>
DESTINATION ${runtime_subdir}
# Optional, because if we're building without debug info (like
# a release build) then we don't want to fail here.
OPTIONAL
COMPONENT ${pdb_component}
EXCLUDE_FROM_ALL
)
endif()
endif()
endfunction()

Expand Down
4 changes: 2 additions & 2 deletions include/slang.h
Original file line number Diff line number Diff line change
Expand Up @@ -823,8 +823,8 @@ typedef uint32_t SlangSizeT;
enum SlangDebugInfoFormat : SlangDebugInfoFormatIntegral
{
SLANG_DEBUG_INFO_FORMAT_DEFAULT, ///< Use the default debugging format for the target
SLANG_DEBUG_INFO_FORMAT_C7, ///< CodeView C7 format (typically means debugging information is
///< embedded in the binary)
SLANG_DEBUG_INFO_FORMAT_C7, ///< CodeView C7 format (typically means debugging information
///< is embedded in the binary)
SLANG_DEBUG_INFO_FORMAT_PDB, ///< Program database

SLANG_DEBUG_INFO_FORMAT_STABS, ///< Stabs
Expand Down
1 change: 1 addition & 0 deletions source/slang-glslang/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ if(SLANG_ENABLE_SLANG_GLSLANG)
LINK_WITH_PRIVATE glslang SPIRV SPIRV-Tools-opt
INCLUDE_DIRECTORIES_PRIVATE ${slang_SOURCE_DIR}/include
INSTALL
DEBUG_INFO_INSTALL_COMPONENT slang-glslang-debug-info
)
# Our only interface is through what we define in source/slang-glslang, in the
# interests of hygiene, hide anything else we link in.
Expand Down

0 comments on commit 6c655ca

Please sign in to comment.