@@ -318,7 +318,7 @@ set(TD_MTPROTO_SOURCE
318318 td/tl/tl_object_store.h
319319)
320320
321- set (TDLIB_SOURCE
321+ set (TDLIB_SOURCE_PART1
322322 td/telegram/AccountManager.cpp
323323 td/telegram/AnimationsManager.cpp
324324 td/telegram/Application.cpp
@@ -471,6 +471,8 @@ set(TDLIB_SOURCE
471471 td/telegram/MessageViewer.cpp
472472 td/telegram/misc.cpp
473473 td/telegram/MissingInvitee.cpp
474+ )
475+ set (TDLIB_SOURCE_PART2
474476 td/telegram/net/AuthDataShared.cpp
475477 td/telegram/net/ConnectionCreator.cpp
476478 td/telegram/net/DcAuthManager.cpp
@@ -1016,6 +1018,10 @@ set(TDLIB_SOURCE
10161018
10171019 ${CMAKE_CURRENT_BINARY_DIR } /td/telegram/GitCommitHash.cpp
10181020)
1021+ set (TDLIB_SOURCE
1022+ ${TDLIB_SOURCE_PART1}
1023+ ${TDLIB_SOURCE_PART2}
1024+ )
10191025
10201026set (MEMPROF_SOURCE
10211027 memprof/memprof.cpp
@@ -1079,9 +1085,26 @@ if (WIN32)
10791085endif ()
10801086
10811087# tdcore - mostly internal TDLib interface. One should use tdactor for interactions with it.
1082- add_library (tdcore STATIC ${TDLIB_SOURCE} )
1083- target_include_directories (tdcore PUBLIC $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } > $<BUILD_INTERFACE :${TL_TD_AUTO_INCLUDE_DIR} >)
1084- target_link_libraries (tdcore PUBLIC tdapi tdnet tddb tdactor tdutils PRIVATE tdmtproto )
1088+ if (MSVC AND TD_ENABLE_LTO)
1089+ add_library (tdcore_part1 STATIC ${TDLIB_SOURCE_PART1} )
1090+ target_include_directories (tdcore_part1 PUBLIC $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } > $<BUILD_INTERFACE :${TL_TD_AUTO_INCLUDE_DIR} >)
1091+ target_link_libraries (tdcore_part1 PUBLIC tdapi tdnet tddb tdactor tdutils PRIVATE tdmtproto )
1092+
1093+ add_library (tdcore_part2 STATIC ${TDLIB_SOURCE_PART2} )
1094+ target_include_directories (tdcore_part2 PUBLIC $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } > $<BUILD_INTERFACE :${TL_TD_AUTO_INCLUDE_DIR} >)
1095+ target_link_libraries (tdcore_part2 PUBLIC tdapi tdnet tddb tdactor tdutils PRIVATE tdmtproto )
1096+
1097+ add_library (tdcore INTERFACE )
1098+ target_link_libraries (tdcore INTERFACE tdcore_part1 tdcore_part2 )
1099+
1100+ set (TD_CORE_PART_TARGETS tdcore_part1 tdcore_part2)
1101+ else ()
1102+ add_library (tdcore STATIC ${TDLIB_SOURCE} )
1103+ target_include_directories (tdcore PUBLIC $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } > $<BUILD_INTERFACE :${TL_TD_AUTO_INCLUDE_DIR} >)
1104+ target_link_libraries (tdcore PUBLIC tdapi tdnet tddb tdactor tdutils PRIVATE tdmtproto )
1105+
1106+ set (TD_CORE_PART_TARGETS)
1107+ endif ()
10851108
10861109if (NOT CMAKE_CROSSCOMPILING )
10871110 add_dependencies (tdcore tl_generate_common )
@@ -1221,7 +1244,7 @@ add_library(Td::TdJson ALIAS TdJson)
12211244add_library (Td::TdJsonStatic ALIAS TdJsonStatic )
12221245
12231246set (INSTALL_TARGETS tdjson TdJson)
1224- set (INSTALL_STATIC_TARGETS tdjson_static TdJsonStatic tdjson_private tdcore tdmtproto)
1247+ set (INSTALL_STATIC_TARGETS tdjson_static TdJsonStatic tdjson_private " ${TD_CORE_PART_TARGETS} " tdcore tdmtproto)
12251248if (BUILD_SHARED_LIBS )
12261249 set (INSTALL_TARGETS ${INSTALL_TARGETS} tdclient TdStatic tdapi)
12271250else ()
0 commit comments