summaryrefslogtreecommitdiff
path: root/dev-cpp/cpptrace/files/cpptrace-fix-zstd.patch
blob: b05581fad444aee08faf30a1e0ac8a1ccf5a6896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
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()