File: 0002-Add-option-to-install-only-BUILD_SHARED_LIBS-matchin.patch

package info (click to toggle)
td1.8.11 1.8.11~git20230202.3179d35%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,056 kB
  • sloc: cpp: 266,976; ansic: 4,457; javascript: 1,708; php: 1,474; java: 740; cs: 254; sh: 87; python: 87; makefile: 58
file content (178 lines) | stat: -rw-r--r-- 6,648 bytes parent folder | download | duplicates (2)
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
178
Description: Add option to install only BUILD_SHARED_LIBS-matching files
 TD_ENABLE_FILTERED_INSTALL allows limiting installed libraries & supporting files to only those matching
 BUILD_SHARED_LIBS.
Author: Cosima Neidahl <opna2608@protonmail.com>
Origin: backport, https://github.com/tdlib/td/commit/1e380de89fddff7132b31372f3c90091b6375077.patch
Bug: https://github.com/tdlib/td/issues/1810
Forwarded: https://github.com/tdlib/td/pull/3081
Applied-Upstream: 1.8.38
Last-Update: 2025-01-10
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/CMake/GeneratePkgConfig.cmake
+++ b/CMake/GeneratePkgConfig.cmake
@@ -88,5 +88,13 @@
 Libs: -L\"${PKGCONFIG_LIBDIR}\" -l${TARGET}
 ${REQUIRES}${LIBRARIES}")
 
-  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+  get_target_property(LIBRARY_TYPE "${TARGET}" TYPE)
+  if (NOT (LIBRARY_TYPE STREQUAL STATIC_LIBRARY OR LIBRARY_TYPE STREQUAL SHARED_LIBRARY))
+    message(FATAL_ERROR "Don't know how to handle ${TARGET} of type ${LIBRARY_TYPE}")
+  endif()
+  if (NOT TD_ENABLE_FILTERED_INSTALL
+    OR (LIBRARY_TYPE STREQUAL SHARED_LIBRARY AND BUILD_SHARED_LIBS)
+    OR (LIBRARY_TYPE STREQUAL STATIC_LIBRARY AND NOT BUILD_SHARED_LIBS))
+    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+  endif()
 endfunction()
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,7 @@
 include(PreventInSourceBuild)
 prevent_in_source_build()
 
+option(TD_ENABLE_FILTERED_INSTALL "Use \"ON\" to limit installation to files (libraries, dev files) relevant for the chosen \"BUILD_SHARED_LIBS\" value." OFF)
 option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")
 option(TD_ENABLE_DOTNET "Use \"ON\" to enable generation of C++/CLI or C++/CX TDLib API bindings.")
 
@@ -1013,18 +1014,22 @@
 set(INSTALL_TARGETS tdjson TdJson)
 set(INSTALL_STATIC_TARGETS tdjson_static TdJsonStatic tdjson_private tdclient tdcore tdapi TdStatic)
 
-install(TARGETS ${INSTALL_TARGETS} EXPORT TdTargets
-  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
-  INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
+  install(TARGETS ${INSTALL_TARGETS} EXPORT TdTargets
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+    INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+  )
+endif()
 
-install(TARGETS ${INSTALL_STATIC_TARGETS} EXPORT TdStaticTargets
-  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+  install(TARGETS ${INSTALL_STATIC_TARGETS} EXPORT TdStaticTargets
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+  )
+endif()
 
 # generate pkg-config files
 include(GeneratePkgConfig)
@@ -1048,11 +1053,21 @@
 generate_pkgconfig(tdjson "Telegram Library - JSON interface (shared)")
 generate_pkgconfig(tdjson_static "Telegram Library - JSON interface (static)")
 
-install(EXPORT TdTargets
-  FILE TdTargets.cmake
-  NAMESPACE Td::
-  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
+  install(EXPORT TdTargets
+    FILE TdTargets.cmake
+    NAMESPACE Td::
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
+  )
+endif()
+
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+  install(EXPORT TdStaticTargets
+    FILE TdStaticTargets.cmake
+    NAMESPACE Td::
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
+  )
+endif()
 
 # Install tdjson/tdjson_static:
 install(FILES ${TD_JSON_HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/td/telegram/tdjson_export.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
--- a/TdConfig.cmake
+++ b/TdConfig.cmake
@@ -1,3 +1,8 @@
 include(CMakeFindDependencyMacro)
 #TODO: write all external dependencies
-include("${CMAKE_CURRENT_LIST_DIR}/TdTargets.cmake")
+if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/TdTargets.cmake")
+  include("${CMAKE_CURRENT_LIST_DIR}/TdTargets.cmake")
+endif()
+if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/TdStaticTargets.cmake")
+  include("${CMAKE_CURRENT_LIST_DIR}/TdStaticTargets.cmake")
+endif()
--- a/tdactor/CMakeLists.txt
+++ b/tdactor/CMakeLists.txt
@@ -56,7 +56,9 @@
   target_link_libraries(example PRIVATE tdactor)
 endif()
 
-install(TARGETS tdactor EXPORT TdTargets
-  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+  install(TARGETS tdactor EXPORT TdStaticTargets
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+  )
+endif()
--- a/tddb/CMakeLists.txt
+++ b/tddb/CMakeLists.txt
@@ -56,7 +56,9 @@
   target_link_libraries(binlog_dump PRIVATE tddb)
 endif()
 
-install(TARGETS tddb EXPORT TdTargets
-  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+  install(TARGETS tddb EXPORT TdStaticTargets
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+  )
+endif()
--- a/tdnet/CMakeLists.txt
+++ b/tdnet/CMakeLists.txt
@@ -84,7 +84,9 @@
   target_link_libraries(tdnet PRIVATE ${FOUNDATION_LIBRARY})
 endif()
 
-install(TARGETS tdnet EXPORT TdTargets
-  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+  install(TARGETS tdnet EXPORT TdStaticTargets
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+  )
+endif()
--- a/tdutils/CMakeLists.txt
+++ b/tdutils/CMakeLists.txt
@@ -406,10 +406,12 @@
   target_link_libraries(tdutils PUBLIC atomic)
 endif()
 
-install(TARGETS tdutils EXPORT TdTargets
-  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+  install(TARGETS tdutils EXPORT TdStaticTargets
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+  )
+endif()
 
 if (TD_TEST_FOLLY AND ABSL_FOUND)
   find_package(benchmark QUIET)