--- CMakeLists.txt.orig 2026-10-08 21:02:52 UTC +++ CMakeLists.txt @@ -230,7 +230,7 @@ endif() add_subdirectory(test) endif() -if (NOT CMAKE_CROSSCOMPILING) +if (FREEBSD_BUILD_BENCHMARKS AND NOT CMAKE_CROSSCOMPILING) add_subdirectory(benchmark) endif() @@ -1323,7 +1323,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 $) target_link_libraries(memprof PRIVATE tdutils) if (MEMPROF) @@ -1337,12 +1337,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 $) 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 $ INTERFACE $) target_link_libraries(tdapi PRIVATE tdutils) @@ -1359,7 +1359,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 $ $) 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}) @@ -1376,11 +1376,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 $ $) 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 $ $) target_link_libraries(tdcore_part2 PUBLIC tdapi tdnet tddb tdactor tde2e tdutils PRIVATE tdmtproto) @@ -1389,7 +1389,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 $ $) target_link_libraries(tdcore PUBLIC tdapi tdnet tddb tdactor tde2e tdutils PRIVATE tdmtproto) @@ -1403,7 +1403,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 $) target_link_libraries(tdclient PUBLIC tdapi PRIVATE tdcore) @@ -1436,7 +1436,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 $ $) target_link_libraries(tdc PRIVATE tdclient tdutils) if (NOT CMAKE_CROSSCOMPILING) @@ -1611,5 +1611,53 @@ install(FILES "TdConfig.cmake" "${CMAKE_CURRENT_BINARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td" ) +# Let find_package(tde2e) succeed against the full TDLib too -- as with TD_E2E_ONLY above, +# only the tde2e:: namespace differs from the Td:: targets +if (TD_INSTALL_STATIC_LIBRARIES) + install(EXPORT TdStaticTargets + FILE tde2eStaticTargets.cmake + NAMESPACE tde2e:: + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/tde2e" + ) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/tde2eConfig.cmake" + "include(\"\${CMAKE_CURRENT_LIST_DIR}/tde2eStaticTargets.cmake\")\n" + "include(CMakePackageConfigHelpers)\n" + "include(CMakeFindDependencyMacro)\n" + "find_dependency(Td ${TDLib_VERSION} EXACT CONFIG)\n" + "foreach (_tde2e_target tde2e tdutils)\n" + " if (NOT TARGET tde2e::\${_tde2e_target})\n" + " add_library(tde2e::\${_tde2e_target} INTERFACE IMPORTED)\n" + " set_target_properties(tde2e::\${_tde2e_target} PROPERTIES INTERFACE_LINK_LIBRARIES Td::\${_tde2e_target})\n" + " endif()\n" + "endforeach()\n" + ) + write_basic_package_version_file("tde2eConfigVersion.cmake" + VERSION "${TDLib_VERSION}" + COMPATIBILITY ExactVersion + ) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tde2eConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/tde2eConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/tde2e" + ) +endif() + # Add SOVERSION to shared libraries -set_property(TARGET tdjson PROPERTY SOVERSION "${TDLib_VERSION}") +set_target_properties(tdapi PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME tdapi ) +set_target_properties(tdcore PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME tdcore ) +set_target_properties(tdclient PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME tdclient ) +set_target_properties(tdjson PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME tdjson ) +set_target_properties(tdmtproto PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + EXPORT_NAME tdmtproto )