net-im/tdlib: Remove static libs in favor of shared libs

This commit is contained in:
Yuri Victorovich
2025-05-12 19:11:28 -07:00
parent 9db6ed5517
commit c98351fdf5
14 changed files with 1107 additions and 36 deletions

View File

@@ -14,6 +14,8 @@ WWW= https://github.com/ars3niy/tdlib-purple
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE
BROKEN= fails to compile with the latest revision of net-im/tdlib
LIB_DEPENDS= libfmt.so:devel/libfmt \
libtdapi.so:net-im/tdlib \
librlottie.so:graphics/rlottie \

View File

@@ -1,6 +1,7 @@
PORTNAME= tdlib
DISTVERSIONPREFIX= v
DISTVERSION= 1.8.48
PORTREVISION= 2
CATEGORIES= net-im devel
MAINTAINER= yuri@FreeBSD.org
@@ -15,8 +16,10 @@ USE_GITHUB= yes
GH_PROJECT= td
GH_TAGNAME= b8b08b0 # hash corresponding to 1.8.48
CMAKE_ON= TD_INSTALL_SHARED_LIBRARIES TD_INSTALL_STATIC_LIBRARIES
CMAKE_OFF= BUILD_TESTING FREEBSD_BUILD_BENCHMARKS
CMAKE_ON= TD_INSTALL_SHARED_LIBRARIES TD_INSTALL_STATIC_LIBRARIES \
BUILD_SHARED_LIBS
CMAKE_OFF+= TD_E2E_ONLY # supposed to install tde2e but it fails to install headers
CMAKE_OFF+= BUILD_TESTING FREEBSD_BUILD_BENCHMARKS
PLIST_SUB+= LIBVERSION=${PORTVERSION}
@@ -24,4 +27,12 @@ post-patch:
@${REINPLACE_CMD} -e 's|%%COMMIT%%|${GH_TAGNAME}|g' \
${WRKSRC}/CMake/GetGitRevisionDescription.cmake
post-install: # see https://github.com/tdlib/td/issues/3328
@cd ${WRKSRC}/td && \
${COPYTREE_SHARE} telegram ${STAGEDIR}${PREFIX}/include/td
@cd ${WRKSRC}/tdutils/td && \
${COPYTREE_SHARE} utils ${STAGEDIR}${PREFIX}/include/td
@cd ${WRKSRC}/tde2e/td && \
${COPYTREE_SHARE} e2e ${STAGEDIR}${PREFIX}/include/td
.include <bsd.port.mk>

View File

@@ -9,3 +9,95 @@
add_subdirectory(benchmark)
endif()
@@ -1148,7 +1148,7 @@ set(MEMPROF_STAT_SOURCE
# LIBRARIES
# memprof - simple library for memory usage profiling
-add_library(memprof STATIC ${MEMPROF_SOURCE})
+add_library(memprof ${MEMPROF_SOURCE})
target_include_directories(memprof PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(memprof PRIVATE tdutils)
if (MEMPROF)
@@ -1162,12 +1162,12 @@ endif()
endif()
endif()
-add_library(memprof_stat EXCLUDE_FROM_ALL STATIC ${MEMPROF_STAT_SOURCE})
+add_library(memprof_stat EXCLUDE_FROM_ALL ${MEMPROF_STAT_SOURCE})
target_include_directories(memprof_stat PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(memprof_stat PRIVATE tdutils)
-add_library(tdapi STATIC ${TL_TD_API_SOURCE})
+add_library(tdapi ${TL_TD_API_SOURCE})
target_include_directories(tdapi PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> INTERFACE $<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
target_link_libraries(tdapi PRIVATE tdutils)
@@ -1184,7 +1184,7 @@ endif()
add_dependencies(tdapi tl_generate_common)
endif()
-add_library(tdmtproto STATIC ${TD_MTPROTO_SOURCE})
+add_library(tdmtproto ${TD_MTPROTO_SOURCE})
target_include_directories(tdmtproto PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
target_include_directories(tdmtproto SYSTEM PRIVATE ${OPENSSL_INCLUDE_DIR})
target_link_libraries(tdmtproto PUBLIC tdactor tdnet tdutils PRIVATE ${OPENSSL_CRYPTO_LIBRARY} ${CMAKE_DL_LIBS} ${ZLIB_LIBRARIES})
@@ -1201,11 +1201,11 @@ if (MSVC AND TD_ENABLE_LTO)
# tdcore - internal TDLib interface
if (MSVC AND TD_ENABLE_LTO)
- add_library(tdcore_part1 STATIC ${TDLIB_SOURCE_PART1})
+ add_library(tdcore_part1 ${TDLIB_SOURCE_PART1})
target_include_directories(tdcore_part1 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
target_link_libraries(tdcore_part1 PUBLIC tdapi tdnet tddb tdactor tde2e tdutils PRIVATE tdmtproto)
- add_library(tdcore_part2 STATIC ${TDLIB_SOURCE_PART2})
+ add_library(tdcore_part2 ${TDLIB_SOURCE_PART2})
target_include_directories(tdcore_part2 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
target_link_libraries(tdcore_part2 PUBLIC tdapi tdnet tddb tdactor tde2e tdutils PRIVATE tdmtproto)
@@ -1214,7 +1214,7 @@ else()
set(TD_CORE_PART_TARGETS tdcore_part1 tdcore_part2)
else()
- add_library(tdcore STATIC ${TDLIB_SOURCE})
+ add_library(tdcore ${TDLIB_SOURCE})
target_include_directories(tdcore PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
target_link_libraries(tdcore PUBLIC tdapi tdnet tddb tdactor tde2e tdutils PRIVATE tdmtproto)
@@ -1231,7 +1231,7 @@ endif()
endif()
endif()
-add_library(tdclient STATIC td/telegram/Client.cpp td/telegram/Client.h td/telegram/Log.cpp td/telegram/Log.h)
+add_library(tdclient td/telegram/Client.cpp td/telegram/Client.h td/telegram/Log.cpp td/telegram/Log.h)
target_include_directories(tdclient PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
@@ -1263,7 +1263,7 @@ endif()
endif()
# tdc - TDLib interface in pure C
-add_library(tdc STATIC EXCLUDE_FROM_ALL ${TL_C_SCHEME_SOURCE} td/telegram/td_c_client.cpp td/telegram/td_c_client.h)
+add_library(tdc EXCLUDE_FROM_ALL ${TL_C_SCHEME_SOURCE} td/telegram/td_c_client.cpp td/telegram/td_c_client.h)
target_include_directories(tdc PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
@@ -1272,7 +1272,7 @@ endif()
add_dependencies(tdc tl_generate_c)
endif()
-add_library(tdjson_private STATIC ${TL_TD_JSON_SOURCE} td/telegram/ClientJson.cpp td/telegram/ClientJson.h)
+add_library(tdjson_private ${TL_TD_JSON_SOURCE} td/telegram/ClientJson.cpp td/telegram/ClientJson.h)
target_include_directories(tdjson_private PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${TL_TD_AUTO_INCLUDE_DIR}>)
@@ -1299,7 +1299,7 @@ endif()
set_target_properties(tdjson PROPERTIES LINK_FLAGS "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/tdclientjson_export_list")
endif()
-add_library(tdjson_static STATIC ${TD_JSON_SOURCE} ${TD_JSON_HEADERS})
+add_library(tdjson_static ${TD_JSON_SOURCE} ${TD_JSON_HEADERS})
target_link_libraries(tdjson_static PRIVATE tdjson_private)
target_compile_definitions(tdjson_static PUBLIC TDJSON_STATIC_DEFINE)
target_include_directories(tdjson_static PUBLIC

View File

@@ -5,7 +5,7 @@
if (GIT_DIR STREQUAL "")
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
- set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+ set(${_hashvar} "%%COMMIT%%" PARENT_SCOPE)
+ set(${_hashvar} "b8b08b0" PARENT_SCOPE)
return()
endif()

View File

@@ -0,0 +1,11 @@
--- sqlite/CMakeLists.txt.orig 2025-05-09 16:44:31 UTC
+++ sqlite/CMakeLists.txt
@@ -23,7 +23,7 @@ set(SQLITE_SOURCE
# all SQLite functions are moved to namespace tdsqlite3 by `sed -Ebi 's/sqlite3([^.]|$)/td&/g' *`
-add_library(tdsqlite STATIC ${SQLITE_SOURCE})
+add_library(tdsqlite ${SQLITE_SOURCE})
target_include_directories(tdsqlite PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_include_directories(tdsqlite SYSTEM PRIVATE ${OPENSSL_INCLUDE_DIR})
target_link_libraries(tdsqlite PRIVATE ${OPENSSL_CRYPTO_LIBRARY} ${CMAKE_DL_LIBS} ${ZLIB_LIBRARIES})

View File

@@ -0,0 +1,11 @@
--- tdactor/CMakeLists.txt.orig 2025-05-09 16:50:48 UTC
+++ tdactor/CMakeLists.txt
@@ -44,7 +44,7 @@ set(TDACTOR_TEST_SOURCE
PARENT_SCOPE
)
-add_library(tdactor STATIC ${TDACTOR_SOURCE})
+add_library(tdactor ${TDACTOR_SOURCE})
target_include_directories(tdactor PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(tdactor PUBLIC tdutils)

View File

@@ -0,0 +1,11 @@
--- tddb/CMakeLists.txt.orig 2025-05-09 16:50:17 UTC
+++ tddb/CMakeLists.txt
@@ -48,7 +48,7 @@ set(TDDB_SOURCE
td/db/detail/RawSqliteDb.h
)
-add_library(tddb STATIC ${TDDB_SOURCE})
+add_library(tddb ${TDDB_SOURCE})
target_include_directories(tddb PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(tddb PUBLIC tdactor tdutils PRIVATE tdsqlite)

View File

@@ -1,10 +1,11 @@
--- tde2e/CMakeLists.txt.orig 2025-04-30 22:25:21 UTC
--- tde2e/CMakeLists.txt.orig 2025-05-09 16:51:07 UTC
+++ tde2e/CMakeLists.txt
@@ -83,4 +83,7 @@ if (TDE2E_ENABLE_INSTALL)
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)
+ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/td
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING PATTERN "*.h")
@@ -62,7 +62,7 @@ set(TDE2E_TEST_SOURCE "${TDE2E_TEST_SOURCE}" PARENT_SC
set(TDE2E_TEST_SOURCE "${TDE2E_TEST_SOURCE}" PARENT_SCOPE)
-add_library(tde2e STATIC ${TDE2E_SOURCE})
+add_library(tde2e ${TDE2E_SOURCE})
if (NOT CMAKE_CROSSCOMPILING)
add_dependencies(tde2e tl_generate_common)
endif()

View File

@@ -0,0 +1,11 @@
--- tdnet/CMakeLists.txt.orig 2025-05-09 16:51:47 UTC
+++ tdnet/CMakeLists.txt
@@ -60,7 +60,7 @@ endif()
set_source_files_properties(td/net/DarwinHttp.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
endif()
-add_library(tdnet STATIC ${TDNET_SOURCE})
+add_library(tdnet ${TDNET_SOURCE})
target_include_directories(tdnet PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_include_directories(tdnet SYSTEM PRIVATE $<BUILD_INTERFACE:${OPENSSL_INCLUDE_DIR}>)
target_link_libraries(tdnet PUBLIC tdutils tdactor)

View File

@@ -0,0 +1,9 @@
--- tdtl/CMakeLists.txt.orig 2025-05-09 16:52:10 UTC
+++ tdtl/CMakeLists.txt
@@ -24,5 +24,5 @@ set(TDTL_SOURCE
td/tl/tl_writer.h
)
-add_library(tdtl STATIC ${TDTL_SOURCE})
+add_library(tdtl ${TDTL_SOURCE})
target_include_directories(tdtl PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)

View File

@@ -1,12 +1,11 @@
--- tdutils/CMakeLists.txt.orig 2025-04-30 22:25:21 UTC
--- tdutils/CMakeLists.txt.orig 2025-05-09 16:51:24 UTC
+++ tdutils/CMakeLists.txt
@@ -416,6 +416,9 @@ if (TDUTILS_ENABLE_INSTALL)
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)
+ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/td
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ FILES_MATCHING PATTERN "*.h")
endif()
@@ -351,7 +351,7 @@ set(TDUTILS_TEST_SOURCE
PARENT_SCOPE
)
if (TD_TEST_FOLLY AND ABSL_FOUND AND TDUTILS_USE_EXTERNAL_DEPENDENCIES)
-add_library(tdutils STATIC ${TDUTILS_SOURCE})
+add_library(tdutils ${TDUTILS_SOURCE})
if (NOT CMAKE_CROSSCOMPILING AND TDUTILS_MIME_TYPE)
add_dependencies(tdutils tdmime_auto)

View File

@@ -0,0 +1,11 @@
--- test/CMakeLists.txt.orig 2025-05-09 17:43:17 UTC
+++ test/CMakeLists.txt
@@ -61,7 +61,7 @@ if (NOT CMAKE_CROSSCOMPILING OR EMSCRIPTEN)
target_include_directories(run_all_tests PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_include_directories(test-tdutils PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(test-tdutils PRIVATE tdutils)
- target_link_libraries(run_all_tests PRIVATE tdcore tdclient)
+ target_link_libraries(run_all_tests PRIVATE tdcore tdclient tdmtproto)
target_link_libraries(test-online PRIVATE tdcore tdjson_private tdclient tdutils tdactor)
if (CLANG)

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,6 @@
PORTNAME= telegram-desktop
DISTVERSION= 5.14.1
PORTREVISION= 1
CATEGORIES= net-im
MASTER_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/releases/download/v${DISTVERSION}/
DISTNAME= tdesktop-${DISTVERSION}-full
@@ -27,7 +28,6 @@ BUILD_DEPENDS= boost-libs>0:devel/boost-libs \
tl-expected>0:devel/tl-expected \
v4l_compat>0:multimedia/v4l_compat \
yasm:devel/yasm \
${LOCALBASE}/lib/libtde2e.a:net-im/tdlib \
${LOCALBASE}/lib/libtg_owt.a:net-im/tg_owt
LIB_DEPENDS= libabsl_base.so:devel/abseil \
libada.so:devel/libada \
@@ -47,6 +47,7 @@ LIB_DEPENDS= libabsl_base.so:devel/abseil \
libqrcodegencpp.so:graphics/qr-code-generator \
librnnoise.so:audio/rnnoise \
libsrtp2.so:net/libsrtp2 \
libtde2e.so:net-im/tdlib \
libxxhash.so:devel/xxhash \
libvpx.so:multimedia/libvpx