From 54973dbb25b2243bff8d2905ffdc63c558702254 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sun, 10 Nov 2024 02:13:21 +0100
Subject: [PATCH] cmake: install PDB's and build in RelWithDebInfo on ci
---
.github/workflows/main.yml | 11 ++++++-----
CMakeLists.txt | 15 +++++++++++++++
cmake/PrivateSdlFunctions.cmake | 24 +++++++++++++++---------
3 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 656ae17..29988ee 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -47,6 +47,7 @@ jobs:
id: sdl
uses: libsdl-org/setup-sdl@main
with:
+ build-type: RelWithDebInfo
cmake-generator: Ninja
version: 3-head
sdl-test: true
@@ -78,7 +79,7 @@ jobs:
if: ${{ matrix.platform.build-spirv-cross }}
run: |
cmake -S external/SPIRV-Cross -B spirv_cross_build -GNinja \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DSPIRV_CROSS_SHARED=ON \
-DSPIRV_CROSS_STATIC=ON \
-DCMAKE_INSTALL_PREFIX=${PWD}/spirv_cross_prefix
@@ -94,7 +95,7 @@ jobs:
- name: Configure (CMake)
run: |
cmake -S . -B build -GNinja \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DSDLGPUSHADERCROSS_SHARED=ON \
-DSDLGPUSHADERCROSS_STATIC=ON \
-DSDLGPUSHADERCROSS_VENDORED=${{ matrix.platform.vendored }} \
@@ -108,12 +109,12 @@ jobs:
- name: Build (CMake)
id: build
run: |
- cmake --build build --config Release --parallel --verbose
+ cmake --build build --config RelWithDebInfo --parallel --verbose
- name: Install (CMake)
id: install
if: ${{ always() && steps.build.outcome == 'success' }}
run: |
- cmake --install build/ --config Release
+ cmake --install build/ --config RelWithDebInfo
echo "SDL3_gpu_shadercross_ROOT=${PWD}/prefix" >>${GITHUB_ENV}
- name: Package (CPack)
id: package
@@ -125,7 +126,7 @@ jobs:
if: ${{ always() && steps.install.outcome == 'success' }}
run: |
cmake -S cmake/test -B cmake_config_build -GNinja \
- -DCMAKE_BUILD_TYPE=Release
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build cmake_config_build --verbose
- uses: actions/upload-artifact@v4
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8c5e51e..235b84f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -270,6 +270,9 @@ if(SDLGPUSHADERCROSS_INSTALL)
DESTINATION "${SDLGPUSHADERCROSS_INSTALL_CMAKEDIR}"
COMPONENT devel
)
+ if(MSVC)
+ SDL_install_pdb(SDL3_gpu_shadercross-shared "${CMAKE_INSTALL_BINDIR}")
+ endif()
endif()
if(TARGET SDL3_gpu_shadercross-static)
install(TARGETS SDL3_gpu_shadercross-static EXPORT SDL3_gpu_shadercross-static-export
@@ -282,6 +285,9 @@ if(SDLGPUSHADERCROSS_INSTALL)
DESTINATION "${SDLGPUSHADERCROSS_INSTALL_CMAKEDIR}"
COMPONENT devel
)
+ if(MSVC)
+ SDL_install_pdb(SDL3_gpu_shadercross-static "${CMAKE_INSTALL_LIBDIR}")
+ endif()
endif()
if(install_extra_targets)
install(TARGETS ${install_extra_targets} EXPORT SDL3_gpu_shadercross-vendored
@@ -295,6 +301,9 @@ if(SDLGPUSHADERCROSS_INSTALL)
DESTINATION "${SDLGPUSHADERCROSS_INSTALL_CMAKEDIR}"
COMPONENT devel
)
+ if(MSVC)
+ SDL_install_pdb(shadercross "${CMAKE_INSTALL_BINDIR}")
+ endif()
endif()
install(
FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/SDL3_gpu_shadercross/SDL_gpu_shadercross.h"
@@ -302,6 +311,9 @@ if(SDLGPUSHADERCROSS_INSTALL)
)
if(SDLGPUSHADERCROSS_CLI)
install(TARGETS shadercross RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ if(MSVC)
+ SDL_install_pdb(shadercross "${CMAKE_INSTALL_BINDIR}")
+ endif()
endif()
include(CMakePackageConfigHelpers)
@@ -393,6 +405,9 @@ if(SDLGPUSHADERCROSS_INSTALL_RUNTIME)
# Install SDL3
if(SDLGPUSHADERCROSS_CLI AND NOT SDLGPUSHADERCROSS_CLI_STATIC)
install(IMPORTED_RUNTIME_ARTIFACTS SDL3::SDL3-shared RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ if(MSVC)
+ SDL_install_pdb(SDL3::SDL3-shared "${CMAKE_INSTALL_BINDIR}")
+ endif()
endif()
include(ExternalProject)
diff --git a/cmake/PrivateSdlFunctions.cmake b/cmake/PrivateSdlFunctions.cmake
index 0bd77bb..5ad736f 100644
--- a/cmake/PrivateSdlFunctions.cmake
+++ b/cmake/PrivateSdlFunctions.cmake
@@ -341,15 +341,21 @@ function(sdl_get_git_revision_hash VARNAME)
endfunction()
function(SDL_install_pdb TARGET DIRECTORY)
- get_property(type TARGET ${TARGET} PROPERTY TYPE)
- if(type MATCHES "^(SHARED_LIBRARY|EXECUTABLE)$")
- install(FILES $<TARGET_PDB_FILE:${TARGET}> DESTINATION "${DIRECTORY}" OPTIONAL)
- elseif(type STREQUAL "STATIC_LIBRARY")
- # FIXME: Use $<TARGET_COMPILE_PDB_FILE:${TARGET} once it becomes available (https://gitlab.kitware.com/cmake/cmake/-/issues/25244)
- if(CMAKE_GENERATOR MATCHES "^Visual Studio.*")
- install(CODE "file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${DIRECTORY}\" TYPE FILE OPTIONAL FILES \"${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/${TARGET}.pdb\")")
- else()
- install(CODE "file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${DIRECTORY}\" TYPE FILE OPTIONAL FILES \"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET}.dir/${TARGET}.pdb\")")
+ get_property(imported TARGET ${TARGET} PROPERTY IMPORTED)
+ if(imported)
+ install(FILES "$<TARGET_FILE_DIR:${TARGET}>/$<TARGET_FILE_BASE_NAME:${TARGET}>.pdb" DESTINATION "${DIRECTORY}" OPTIONAL)
+ else()
+ get_property(type TARGET ${TARGET} PROPERTY TYPE)
+ if(type MATCHES "^(SHARED_LIBRARY|EXECUTABLE)$")
+ install(FILES $<TARGET_PDB_FILE:${TARGET}> DESTINATION "${DIRECTORY}" OPTIONAL)
+ elseif(type STREQUAL "STATIC_LIBRARY")
+ # FIXME: Use $<TARGET_COMPILE_PDB_FILE:${TARGET} once it becomes available (https://gitlab.kitware.com/cmake/cmake/-/issues/25244)
+ if(CMAKE_GENERATOR MATCHES "^Visual Studio.*")
+ set(pdb_path "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/${TARGET}.pdb")
+ else()
+ set(pdb_path "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TARGET}.dir/${TARGET}.pdb")
+ endif()
+ install(CODE "file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${DIRECTORY}\" TYPE FILE OPTIONAL FILES \"${pdb_path}\")")
endif()
endif()
endfunction()