Files
guru/dev-cpp/cpptrace/files/cpptrace-fix-zstd.patch
David Roman 946a4de160 dev-cpp/cpptrace: fix missing zstd
Signed-off-by: David Roman <davidroman96@gmail.com>
2024-04-29 12:04:16 +02:00

178 lines
5.9 KiB
Diff

From c73b3faf73c51c2c3bfe0e971e3ca527e4e5e5c7 Mon Sep 17 00:00:00 2001
From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com>
Date: Sun, 28 Apr 2024 20:18:13 -0500
Subject: [PATCH 1/3] Remove find_dependency(zstd)
---
cmake/in/cpptrace-config-cmake.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/cmake/in/cpptrace-config-cmake.in b/cmake/in/cpptrace-config-cmake.in
index 412a9d0..0b25aac 100644
--- a/cmake/in/cpptrace-config-cmake.in
+++ b/cmake/in/cpptrace-config-cmake.in
@@ -4,7 +4,6 @@
# Dependencies
if(@CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF@)
include(CMakeFindDependencyMacro)
- find_dependency(zstd REQUIRED)
find_dependency(libdwarf REQUIRED)
endif()
From 8d66998a67fcdfbf362aca39c8cc67060cf7a6d1 Mon Sep 17 00:00:00 2001
From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com>
Date: Sun, 28 Apr 2024 22:38:45 -0500
Subject: [PATCH 2/3] Provide a Findzstd script
---
cmake/Findzstd.cmake | 51 +++++++++++++++++++++++++++++++
cmake/InstallRules.cmake | 3 ++
cmake/in/cpptrace-config-cmake.in | 5 +++
3 files changed, 59 insertions(+)
create mode 100644 cmake/Findzstd.cmake
diff --git a/cmake/Findzstd.cmake b/cmake/Findzstd.cmake
new file mode 100644
index 0000000..fc8eb52
--- /dev/null
+++ b/cmake/Findzstd.cmake
@@ -0,0 +1,51 @@
+# Libdwarf needs zstd, cpptrace doesn't, and libdwarf has its own Findzstd but it doesn't define zstd::libzstd_static /
+# zstd::libzstd_shared targets which leads to issues, necessitating a find_dependency(zstd) in cpptrace's cmake config
+# and in order to support non-cmake-module installs we need to provide a Findzstd script.
+# https://github.com/jeremy-rifkin/cpptrace/issues/112
+
+# This will define
+# zstd_FOUND
+# zstd_INCLUDE_DIR
+# zstd_LIBRARY
+
+find_path(zstd_INCLUDE_DIR NAMES zstd.h)
+
+find_library(zstd_LIBRARY_DEBUG NAMES zstdd zstd_staticd)
+find_library(zstd_LIBRARY_RELEASE NAMES zstd zstd_static)
+
+include(SelectLibraryConfigurations)
+SELECT_LIBRARY_CONFIGURATIONS(zstd)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ zstd DEFAULT_MSG
+ zstd_LIBRARY zstd_INCLUDE_DIR
+)
+
+if(zstd_FOUND)
+ message(STATUS "Found Zstd: ${zstd_LIBRARY}")
+endif()
+
+mark_as_advanced(zstd_INCLUDE_DIR zstd_LIBRARY)
+
+if(zstd_FOUND)
+ # just defining them the same... cmake will figure it out
+ if(NOT TARGET zstd::libzstd_static)
+ add_library(zstd::libzstd_static UNKNOWN IMPORTED)
+ set_target_properties(
+ zstd::libzstd_static
+ PROPERTIES
+ IMPORTED_LOCATION "${zstd_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
+ )
+ endif()
+ if(NOT TARGET zstd::libzstd_shared)
+ add_library(zstd::libzstd_shared UNKNOWN IMPORTED)
+ set_target_properties(
+ zstd::libzstd_shared
+ PROPERTIES
+ IMPORTED_LOCATION "${zstd_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${zstd_INCLUDE_DIR}"
+ )
+ endif()
+endif()
diff --git a/cmake/InstallRules.cmake b/cmake/InstallRules.cmake
index b35c4d7..5087cbb 100644
--- a/cmake/InstallRules.cmake
+++ b/cmake/InstallRules.cmake
@@ -62,6 +62,9 @@ install(
COMPONENT ${package_name}-development
)
+# Findzstd.cmake
+install(FILES "${PROJECT_SOURCE_DIR}/cmake/Findzstd.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}")
+
# support packaging library
if(PROJECT_IS_TOP_LEVEL)
include(CPack)
diff --git a/cmake/in/cpptrace-config-cmake.in b/cmake/in/cpptrace-config-cmake.in
index 0b25aac..a128d52 100644
--- a/cmake/in/cpptrace-config-cmake.in
+++ b/cmake/in/cpptrace-config-cmake.in
@@ -4,6 +4,11 @@
# Dependencies
if(@CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF@)
include(CMakeFindDependencyMacro)
+ set(CMAKE_MODULE_PATH_OLD "${CMAKE_MODULE_PATH}")
+ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_LIST_DIR}")
+ find_dependency(zstd)
+ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH_OLD}")
+ unset(CMAKE_MODULE_PATH_OLD)
find_dependency(libdwarf REQUIRED)
endif()
From 27438a34eb3534a9efe3733c67e629ed611facb2 Mon Sep 17 00:00:00 2001
From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com>
Date: Sun, 28 Apr 2024 23:13:12 -0500
Subject: [PATCH 3/3] Update handling in vcpkg
---
cmake/InstallRules.cmake | 8 +++++++-
cmake/in/cpptrace-config-cmake.in | 15 ++++++++++-----
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/cmake/InstallRules.cmake b/cmake/InstallRules.cmake
index 5087cbb..529e51a 100644
--- a/cmake/InstallRules.cmake
+++ b/cmake/InstallRules.cmake
@@ -63,7 +63,13 @@ install(
)
# Findzstd.cmake
-install(FILES "${PROJECT_SOURCE_DIR}/cmake/Findzstd.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}")
+# vcpkg doesn't like anything being put in share/, which is where this goes apparently on their setup
+if(NOT CPPTRACE_VCPKG)
+ install(
+ FILES "${PROJECT_SOURCE_DIR}/cmake/Findzstd.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}"
+ )
+endif()
# support packaging library
if(PROJECT_IS_TOP_LEVEL)
diff --git a/cmake/in/cpptrace-config-cmake.in b/cmake/in/cpptrace-config-cmake.in
index a128d52..fc017ad 100644
--- a/cmake/in/cpptrace-config-cmake.in
+++ b/cmake/in/cpptrace-config-cmake.in
@@ -4,11 +4,16 @@
# Dependencies
if(@CPPTRACE_GET_SYMBOLS_WITH_LIBDWARF@)
include(CMakeFindDependencyMacro)
- set(CMAKE_MODULE_PATH_OLD "${CMAKE_MODULE_PATH}")
- set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_LIST_DIR}")
- find_dependency(zstd)
- set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH_OLD}")
- unset(CMAKE_MODULE_PATH_OLD)
+ # we don't go the Findzstd.cmake route on vcpkg
+ if(@CPPTRACE_VCPKG@)
+ find_dependency(zstd CONFIG REQUIRED)
+ else()
+ set(CMAKE_MODULE_PATH_OLD "${CMAKE_MODULE_PATH}")
+ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_LIST_DIR}")
+ find_dependency(zstd)
+ set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH_OLD}")
+ unset(CMAKE_MODULE_PATH_OLD)
+ endif()
find_dependency(libdwarf REQUIRED)
endif()