diff --git a/ports/tdlib/fix-cross-compile.patch b/ports/tdlib/fix-cross-compile.patch new file mode 100644 index 00000000000000..8b626e8cedb3b4 --- /dev/null +++ b/ports/tdlib/fix-cross-compile.patch @@ -0,0 +1,28 @@ +diff --git a/td/generate/CMakeLists.txt b/td/generate/CMakeLists.txt +--- a/td/generate/CMakeLists.txt ++++ b/td/generate/CMakeLists.txt +@@ -249,4 +249,10 @@ + DEPENDS td_generate_dotnet_api tl_generate_tlo ${TD_API_TLO_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/scheme/td_api.tl ${CMAKE_CURRENT_SOURCE_DIR}/DotnetTlDocumentationGenerator.php + ) + endif() ++ ++ if (TD_INSTALL_HOST_GENERATORS) ++ install(TARGETS tl-parser generate_mtproto generate_common generate_json ++ CONFIGURATIONS Release ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") ++ endif() + endif() +diff --git a/tdutils/generate/CMakeLists.txt b/tdutils/generate/CMakeLists.txt +--- a/tdutils/generate/CMakeLists.txt ++++ b/tdutils/generate/CMakeLists.txt +@@ -59,4 +59,10 @@ + COMMAND ${EXTENSION_TO_MIME_TYPE_CMD} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/auto/extension_to_mime_type.gperf + ) ++ ++ if (TD_INSTALL_HOST_GENERATORS) ++ install(TARGETS generate_mime_types_gperf ++ CONFIGURATIONS Release ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") ++ endif() + endif() diff --git a/ports/tdlib/fix-pc.patch b/ports/tdlib/fix-pc.patch index d7e991629e786f..948508ed54012c 100644 --- a/ports/tdlib/fix-pc.patch +++ b/ports/tdlib/fix-pc.patch @@ -1,113 +1,81 @@ diff --git a/CMake/GeneratePkgConfig.cmake b/CMake/GeneratePkgConfig.cmake -index 3d3fa01d1..9303a2f43 100644 +index 3d3fa01d1f69..499b1c86be93 100644 --- a/CMake/GeneratePkgConfig.cmake +++ b/CMake/GeneratePkgConfig.cmake -@@ -9,10 +9,20 @@ function(get_relative_link OUTPUT PATH) +@@ -8,12 +8,13 @@ function(get_relative_link OUTPUT PATH) + get_filename_component(NAME "${PATH}" NAME_WE) if (IS_ABSOLUTE ${PATH}) get_filename_component(DIRECTORY_NAME "${PATH}" DIRECTORY) - if (WIN32) +- if (WIN32) - set(${OUTPUT} "-l\"${DIRECTORY_NAME}/${NAME}\"" PARENT_SCOPE) -+ # On Windows, library files can be libname.lib or name.lib -+ get_filename_component(FULL_NAME "${PATH}" NAME) -+ # Extract library name without lib prefix and extension -+ string(REGEX REPLACE "^lib(.+)\\.[^.]+$" "\\1" LIB_NAME "${FULL_NAME}") -+ # If the regex didn't match (no lib prefix), use the name without extension -+ if ("${LIB_NAME}" STREQUAL "${FULL_NAME}") -+ set(LIB_NAME "${NAME}") -+ endif() -+ set(${OUTPUT} "-L\"${DIRECTORY_NAME}\" -l${LIB_NAME}" PARENT_SCOPE) - else() - get_filename_component(FULL_NAME "${PATH}" NAME) +- else() +- get_filename_component(FULL_NAME "${PATH}" NAME) - set(${OUTPUT} "-L\"${DIRECTORY_NAME}\" -l:${FULL_NAME}" PARENT_SCOPE) -+ # Extract library name without lib prefix and extension for all platforms -+ string(REGEX REPLACE "^lib(.+)\\.[^.]+$" "\\1" LIB_NAME "${FULL_NAME}") -+ set(${OUTPUT} "-L\"${DIRECTORY_NAME}\" -l${LIB_NAME}" PARENT_SCOPE) ++ get_filename_component(FULL_NAME "${PATH}" NAME) ++ string(REGEX REPLACE "^lib([^.]+).*$" "\\1" LIB_NAME "${FULL_NAME}") ++ # If the regex didn't match (no lib prefix), fall back to name without extension ++ if ("${LIB_NAME}" STREQUAL "${FULL_NAME}") ++ set(LIB_NAME "${NAME}") endif() ++ set(${OUTPUT} "-L\"${DIRECTORY_NAME}\" -l${LIB_NAME}" PARENT_SCOPE) return() endif() -@@ -31,17 +41,86 @@ function(generate_pkgconfig TARGET DESCRIPTION) + +@@ -31,7 +32,42 @@ function(generate_pkgconfig TARGET DESCRIPTION) # message("Generating pkg-config for ${TARGET}") get_filename_component(PREFIX "${CMAKE_INSTALL_PREFIX}" REALPATH) - + - get_target_property(LIST "${TARGET}" LINK_LIBRARIES) -+ # Get the target type to handle interface libraries differently + get_target_property(LIBRARY_TYPE "${TARGET}" TYPE) -+ -+ # For interface libraries, use INTERFACE_LINK_LIBRARIES instead of LINK_LIBRARIES + if ("${LIBRARY_TYPE}" STREQUAL "INTERFACE_LIBRARY") + get_target_property(LIST "${TARGET}" INTERFACE_LINK_LIBRARIES) + else() + get_target_property(LIST "${TARGET}" LINK_LIBRARIES) + endif() -+ -+ # Handle the case when no libraries are found ++ + if ("${LIST}" STREQUAL "LIST-NOTFOUND") + set(LIST "") + endif() -+ -+ # Special handling for tdcore interface library -+ if ("${TARGET}" STREQUAL "tdcore" AND "${LIBRARY_TYPE}" STREQUAL "INTERFACE_LIBRARY") -+ # For tdcore interface library, we need to link to the actual part libraries -+ # instead of the non-existent tdcore library -+ set(TDCORE_LIBS "") -+ set(COMBINED_REQS "") -+ set(COMBINED_LIBS "") -+ -+ foreach (PART_LIB ${LIST}) -+ if (TARGET "${PART_LIB}" AND "${PART_LIB}" MATCHES "^tdcore_part[0-9]+$") -+ # Add the actual part library to link against -+ list(APPEND TDCORE_LIBS "-l${PART_LIB}") -+ -+ # Collect dependencies from the parts -+ get_target_property(PART_LIST "${PART_LIB}" LINK_LIBRARIES) -+ if (NOT "${PART_LIST}" STREQUAL "PART_LIST-NOTFOUND") -+ foreach (PART_DEP ${PART_LIST}) -+ if (TARGET "${PART_DEP}") -+ list(APPEND COMBINED_REQS "${PART_DEP}") -+ else() -+ list(APPEND COMBINED_LIBS "${PART_DEP}") -+ endif() -+ endforeach() ++ ++ set(INTERFACE_LIBS "") ++ if ("${LIBRARY_TYPE}" STREQUAL "INTERFACE_LIBRARY") ++ set(PROPAGATED "") ++ foreach (DEP ${LIST}) ++ if (TARGET "${DEP}") ++ get_target_property(DEP_TYPE "${DEP}" TYPE) ++ if ("${DEP_TYPE}" STREQUAL "STATIC_LIBRARY" OR "${DEP_TYPE}" STREQUAL "SHARED_LIBRARY") ++ list(APPEND INTERFACE_LIBS "${DEP}") ++ get_target_property(DEP_LIBS "${DEP}" LINK_LIBRARIES) ++ if (NOT "${DEP_LIBS}" STREQUAL "DEP_LIBS-NOTFOUND") ++ list(APPEND PROPAGATED ${DEP_LIBS}) ++ endif() ++ else() ++ list(APPEND PROPAGATED "${DEP}") + endif() -+ elseif (TARGET "${PART_LIB}") -+ list(APPEND COMBINED_REQS "${PART_LIB}") + else() -+ list(APPEND COMBINED_LIBS "${PART_LIB}") ++ list(APPEND PROPAGATED "${DEP}") + endif() + endforeach() -+ -+ # Remove duplicates -+ if (COMBINED_REQS) -+ list(REMOVE_DUPLICATES COMBINED_REQS) -+ endif() -+ if (COMBINED_LIBS) -+ list(REMOVE_DUPLICATES COMBINED_LIBS) ++ if (PROPAGATED) ++ list(REMOVE_DUPLICATES PROPAGATED) + endif() -+ if (TDCORE_LIBS) -+ list(REMOVE_DUPLICATES TDCORE_LIBS) -+ endif() -+ -+ set(LIST "") -+ list(APPEND LIST ${COMBINED_REQS}) -+ list(APPEND LIST ${COMBINED_LIBS}) -+ -+ # Set a flag to use different Libs line for tdcore -+ set(USE_TDCORE_PARTS TRUE) -+ else() -+ set(USE_TDCORE_PARTS FALSE) ++ set(LIST "${PROPAGATED}") + endif() -+ ++ set(REQS "") set(LIBS "") foreach (LIB ${LIST}) +@@ -38,3 +74,9 @@ function(generate_pkgconfig TARGET DESCRIPTION) if (TARGET "${LIB}") -- set(HAS_REQS 1) -- list(APPEND REQS "${LIB}") -+ # Skip internal tdcore parts as they don't have their own .pc files -+ if (NOT "${LIB}" MATCHES "^tdcore_part[0-9]+$") -+ set(HAS_REQS 1) -+ list(APPEND REQS "${LIB}") ++ if ("${LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY") ++ get_target_property(LIB_TYPE "${LIB}" TYPE) ++ if ("${LIB_TYPE}" STREQUAL "STATIC_LIBRARY") ++ continue() ++ endif() + endif() + set(HAS_REQS 1) + list(APPEND REQS "${LIB}") +@@ -41,7 +83,7 @@ function(generate_pkgconfig TARGET DESCRIPTION) else() set(HAS_LIBS 1) get_relative_link(LINK "${LIB}") @@ -116,40 +84,56 @@ index 3d3fa01d1..9303a2f43 100644 list(APPEND LIBS "${LINK}") endif() endif() -@@ -77,6 +156,19 @@ function(generate_pkgconfig TARGET DESCRIPTION) +@@ -77,6 +119,36 @@ function(generate_pkgconfig TARGET DESCRIPTION) endif() - + file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig") -+ -+ # Generate the correct Libs line based on library type -+ if (USE_TDCORE_PARTS) -+ # For tdcore interface library, link to the actual part libraries ++ ++ get_target_property(TARGET_OUTPUT_NAME "${TARGET}" OUTPUT_NAME) ++ if ("${TARGET_OUTPUT_NAME}" STREQUAL "TARGET_OUTPUT_NAME-NOTFOUND") ++ set(TARGET_OUTPUT_NAME "${TARGET}") ++ endif() ++ ++ if ("${LIBRARY_TYPE}" STREQUAL "INTERFACE_LIBRARY") + set(LIBS_LINE "") -+ foreach (PART_LIB ${TDCORE_LIBS}) -+ set(LIBS_LINE "${LIBS_LINE} ${PART_LIB}") ++ foreach (ILIB ${INTERFACE_LIBS}) ++ get_target_property(ILIB_OUTPUT_NAME "${ILIB}" OUTPUT_NAME) ++ if ("${ILIB_OUTPUT_NAME}" STREQUAL "ILIB_OUTPUT_NAME-NOTFOUND") ++ set(ILIB_OUTPUT_NAME "${ILIB}") ++ endif() ++ set(LIBS_LINE "${LIBS_LINE} -l${ILIB_OUTPUT_NAME}") + endforeach() + set(LIBS_LINE "Libs: -L\"${PKGCONFIG_LIBDIR}\"${LIBS_LINE}") + else() -+ set(LIBS_LINE "Libs: -L\"${PKGCONFIG_LIBDIR}\" -l${TARGET}") ++ set(LIBS_LINE "Libs: -L\"${PKGCONFIG_LIBDIR}\" -l${TARGET_OUTPUT_NAME}") ++ endif() ++ ++ get_target_property(_td_iface_defs "${TARGET}" INTERFACE_COMPILE_DEFINITIONS) ++ set(CFLAGS_DEFS "") ++ if (NOT "${_td_iface_defs}" STREQUAL "_td_iface_defs-NOTFOUND") ++ foreach(_def ${_td_iface_defs}) ++ string(APPEND CFLAGS_DEFS " -D${_def}") ++ endforeach() ++ unset(_def) + endif() -+ ++ unset(_td_iface_defs) ++ file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" CONTENT "prefix=${PREFIX} - -@@ -85,14 +177,14 @@ Description: ${DESCRIPTION} + +@@ -85,14 +157,12 @@ Description: ${DESCRIPTION} Version: ${PROJECT_VERSION} - - CFlags: -I\"${PKGCONFIG_INCLUDEDIR}\" + +-CFlags: -I\"${PKGCONFIG_INCLUDEDIR}\" ++CFlags: -I\"${PKGCONFIG_INCLUDEDIR}\"${CFLAGS_DEFS} -Libs: -L\"${PKGCONFIG_LIBDIR}\" -l${TARGET} +${LIBS_LINE} ${REQUIRES}${LIBRARIES}") - + - get_target_property(LIBRARY_TYPE "${TARGET}" TYPE) - if (LIBRARY_TYPE STREQUAL "STATIC_LIBRARY" OR LIBRARY_TYPE STREQUAL "SHARED_LIBRARY") -+ if ("${LIBRARY_TYPE}" STREQUAL "STATIC_LIBRARY" OR "${LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY") -+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") -+ elseif ("${LIBRARY_TYPE}" STREQUAL "INTERFACE_LIBRARY") -+ # Interface libraries are also supported, install the .pc file ++ if ("${LIBRARY_TYPE}" STREQUAL "STATIC_LIBRARY" OR "${LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY" OR ++ "${LIBRARY_TYPE}" STREQUAL "INTERFACE_LIBRARY") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") - elseif (LIBRARY_TYPE STREQUAL "INTERFACE_LIBRARY") - # TODO: support interface libraries diff --git a/ports/tdlib/portfile.cmake b/ports/tdlib/portfile.cmake index 05f7fd27b82409..88d0785970ac69 100644 --- a/ports/tdlib/portfile.cmake +++ b/ports/tdlib/portfile.cmake @@ -1,35 +1,152 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO tdlib/td - REF 7d257dcda5dd2c616c1146540ef51147c5bb2c69 + REF f06b0bac65278b03d26414c096080e7bfecfef52 HEAD_REF master - SHA512 fca25e017e6bc27bcc0a69b35ad478a5acfc46b511917440c3e560c18378c3f4133c1c553eb9a0752db5328f61c5813312d653f4ad5e5d0284b7a79d4f480be8 + SHA512 91967a24eee9f1491b780ce72a1323aa99e228c10ecd588979e325d57417c6897eeebf375c609c99b2fd0d6137bcb950628a30f5cfc2e6838fb14d2803d02b7a PATCHES fix-pc.patch + fix-cross-compile.patch ) vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/gperf") +# When cross-compiling, run the generator executables that were installed by +# the host build of tdlib[tools] (declared as a host:true dependency in +# vcpkg.json). Running them directly avoids a cmake sub-invocation and +# therefore sidesteps the Windows ARM64 problem where a cmake subprocess +# inherits the vcvarsall cross-compiler and produces the wrong architecture. +if(VCPKG_CROSSCOMPILING) + # When updating this port to a new tdlib version, verify the cross-compile + # generator invocations below still match what the upstream build does: + # + # 1. TL-schema list (the foreach over _scheme): + # Compare against the tl_generate_tlo custom target in + # td/generate/CMakeLists.txt — every .tl file passed to tl-parser + # there must be listed here. + # + # 2. MIME-type step (generate_mime_types_gperf + gperf): + # Driven by tdutils/generate/CMakeLists.txt. Check that the input + # file (mime_types.txt), the two .gperf output names, and the two + # gperf output .cpp names still match that file. + # + # 3. Generator executables (the foreach over _gen): + # Must include every add_executable() target defined inside the + # if (NOT CMAKE_CROSSCOMPILING) block in td/generate/CMakeLists.txt + # that is depended upon by the main library's custom commands + # (i.e. those that write files into td/generate/auto/). + # Currently: tl-parser, generate_mime_types_gperf (handled above), + # generate_mtproto, generate_common, generate_json. + # Also sync the install(TARGETS ...) list in fix-cross-compile.patch + # and the vcpkg_copy_tools() list below. + # + # 4. Output directories pre-created with file(MAKE_DIRECTORY): + # Must cover every directory that generator executables write into. + # Check the WORKING_DIRECTORY and output paths of the custom commands + # in td/generate/CMakeLists.txt and tdutils/generate/CMakeLists.txt. + + set(_tools "${CURRENT_HOST_INSTALLED_DIR}/tools/${PORT}") + set(_exe "${VCPKG_HOST_EXECUTABLE_SUFFIX}") + set(_gperf "${CURRENT_HOST_INSTALLED_DIR}/tools/gperf/gperf${_exe}") + + # ── MIME type sources ──────────────────────────────────────────────────── + file(MAKE_DIRECTORY "${SOURCE_PATH}/tdutils/generate/auto") + + vcpkg_execute_required_process( + COMMAND "${_tools}/generate_mime_types_gperf${_exe}" + "${SOURCE_PATH}/tdutils/generate/mime_types.txt" + "${SOURCE_PATH}/tdutils/generate/auto/mime_type_to_extension.gperf" + "${SOURCE_PATH}/tdutils/generate/auto/extension_to_mime_type.gperf" + WORKING_DIRECTORY "${SOURCE_PATH}/tdutils/generate" + LOGNAME "tdlib-gen-mime-gperf-${TARGET_TRIPLET}" + ) + vcpkg_execute_required_process( + COMMAND "${_gperf}" -m100 + "--output-file=auto/mime_type_to_extension.cpp" + "auto/mime_type_to_extension.gperf" + WORKING_DIRECTORY "${SOURCE_PATH}/tdutils/generate" + LOGNAME "tdlib-gen-mime-to-ext-${TARGET_TRIPLET}" + ) + vcpkg_execute_required_process( + COMMAND "${_gperf}" -m100 + "--output-file=auto/extension_to_mime_type.cpp" + "auto/extension_to_mime_type.gperf" + WORKING_DIRECTORY "${SOURCE_PATH}/tdutils/generate" + LOGNAME "tdlib-gen-ext-to-mime-${TARGET_TRIPLET}" + ) + + # ── TL schema → .tlo → generated C++ API sources ───────────────────────── + file(MAKE_DIRECTORY "${SOURCE_PATH}/td/generate/auto/tlo") + foreach(_scheme IN ITEMS mtproto_api secret_api e2e_api td_api telegram_api) + vcpkg_execute_required_process( + COMMAND "${_tools}/tl-parser${_exe}" + -e "auto/tlo/${_scheme}.tlo" "scheme/${_scheme}.tl" + WORKING_DIRECTORY "${SOURCE_PATH}/td/generate" + LOGNAME "tdlib-gen-tlo-${_scheme}-${TARGET_TRIPLET}" + ) + endforeach() + + file(MAKE_DIRECTORY "${SOURCE_PATH}/td/generate/auto/td/telegram") + file(MAKE_DIRECTORY "${SOURCE_PATH}/td/generate/auto/td/mtproto") + foreach(_gen IN ITEMS generate_mtproto generate_common generate_json) + vcpkg_execute_required_process( + COMMAND "${_tools}/${_gen}${_exe}" + WORKING_DIRECTORY "${SOURCE_PATH}/td/generate/auto" + LOGNAME "tdlib-${_gen}-${TARGET_TRIPLET}" + ) + endforeach() + + unset(_tools) + unset(_exe) + unset(_gperf) +endif() + +if("tools" IN_LIST FEATURES AND NOT VCPKG_CROSSCOMPILING) + set(_tdlib_install_gen ON) +else() + set(_tdlib_install_gen OFF) +endif() + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_DYNAMIC_LIBRARIES) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBRARIES) + vcpkg_cmake_configure( - SOURCE_PATH ${SOURCE_PATH} + SOURCE_PATH "${SOURCE_PATH}" OPTIONS - -DTD_INSTALL_SHARED_LIBRARIES=OFF - -DTD_INSTALL_STATIC_LIBRARIES=ON + -DTD_INSTALL_SHARED_LIBRARIES=${BUILD_DYNAMIC_LIBRARIES} + -DTD_INSTALL_STATIC_LIBRARIES=${BUILD_STATIC_LIBRARIES} -DTD_ENABLE_JNI=${VCPKG_TARGET_IS_ANDROID} -DTD_ENABLE_DOTNET=OFF -DTD_GENERATE_SOURCE_FILES=OFF -DTD_E2E_ONLY=OFF -DTD_ENABLE_LTO=${CMAKE_HOST_WIN32} -DTD_ENABLE_MULTI_PROCESSOR_COMPILATION=${VCPKG_DETECTED_MSVC} + -DTD_INSTALL_HOST_GENERATORS=${_tdlib_install_gen} -DBUILD_TESTING=OFF MAYBE_UNUSED_VARIABLES TD_ENABLE_MULTI_PROCESSOR_COMPILATION + TD_INSTALL_HOST_GENERATORS ) +vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/bin") +vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/debug/bin") + vcpkg_cmake_install() vcpkg_fixup_pkgconfig() vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/Td") vcpkg_copy_pdbs() +if("tools" IN_LIST FEATURES AND NOT VCPKG_CROSSCOMPILING) + vcpkg_copy_tools( + TOOL_NAMES + tl-parser + generate_mtproto + generate_common + generate_json + generate_mime_types_gperf + AUTO_CLEAN + ) +endif() + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE_1_0.txt") diff --git a/ports/tdlib/vcpkg.json b/ports/tdlib/vcpkg.json index ab8334991703b2..b3f75183b46538 100644 --- a/ports/tdlib/vcpkg.json +++ b/ports/tdlib/vcpkg.json @@ -1,16 +1,24 @@ { "name": "tdlib", - "version": "1.8.55", + "version": "1.8.63", + "maintainers": "luadebug ", "description": "Cross-platform library for building Telegram clients", "homepage": "https://github.com/tdlib/td", "license": "BSL-1.0", - "supports": "((windows & !uwp & !arm & !arm64 & !xbox) | linux | osx) & static", "dependencies": [ { "name": "gperf", "host": true }, "openssl", + { + "name": "tdlib", + "host": true, + "default-features": false, + "features": [ + "tools" + ] + }, { "name": "vcpkg-cmake", "host": true @@ -20,5 +28,10 @@ "host": true }, "zlib" - ] + ], + "features": { + "tools": { + "description": "Install source-generator executables (tl-parser, generate_mtproto, etc.) required for cross-compilation" + } + } } diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index f890f8ec29da37..79849123c10027 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -629,7 +629,6 @@ spscqueue:arm64-android=fail spscqueue:x64-android=fail suitesparse-graphblas:x86-windows=fail # _Interlocked* intrinsic functions are not available on x86 supernovas:arm64-linux=fail -tdlib:arm64-linux=fail tdscpp:arm64-linux=fail telnetpp:arm-neon-android=fail telnetpp:arm64-android=fail @@ -956,6 +955,19 @@ vcpkg-ci-sqlpp11:x64-windows-static-md=pass vcpkg-ci-sqlpp11:x64-windows-static=pass vcpkg-ci-sqlpp11:x64-windows=pass vcpkg-ci-sqlpp11:x86-windows=pass +vcpkg-ci-tdlib:arm-neon-android=pass +vcpkg-ci-tdlib:arm64-android=pass +vcpkg-ci-tdlib:arm64-linux=pass +vcpkg-ci-tdlib:arm64-osx=pass +vcpkg-ci-tdlib:arm64-windows-static-md=pass +vcpkg-ci-tdlib:arm64-windows=pass +vcpkg-ci-tdlib:x64-android=pass +vcpkg-ci-tdlib:x64-linux=pass +vcpkg-ci-tdlib:x64-windows-release=pass +vcpkg-ci-tdlib:x64-windows-static-md=pass +vcpkg-ci-tdlib:x64-windows-static=pass +vcpkg-ci-tdlib:x64-windows=pass +vcpkg-ci-tdlib:x86-windows=pass vcpkg-ci-vxl:arm-neon-android=pass vcpkg-ci-vxl:arm64-android=pass vcpkg-ci-vxl:arm64-linux=pass diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index 9f67b7550cac33..de9bf67c128ab0 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -1396,7 +1396,6 @@ supernovas:arm64-linux=fail supernovas[solsys-calceph]:arm64-linux=cascade symengine[llvm]:arm64-linux=cascade symengine[llvm]:arm64-windows=cascade -tdlib:arm64-linux=fail tdscpp:arm64-linux=fail telnetpp(android)=fail tensorflow-cc(windows)=fail # tensorflow does not support VS2022 diff --git a/scripts/test_ports/vcpkg-ci-tdlib/project/CMakeLists.txt b/scripts/test_ports/vcpkg-ci-tdlib/project/CMakeLists.txt index d129464213ec5c..53543f5bab95bd 100644 --- a/scripts/test_ports/vcpkg-ci-tdlib/project/CMakeLists.txt +++ b/scripts/test_ports/vcpkg-ci-tdlib/project/CMakeLists.txt @@ -1,13 +1,29 @@ cmake_minimum_required(VERSION 3.25.1) -project(tdlib-test CXX) + +project(tdlib-test LANGUAGES CXX) + set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Td CONFIG REQUIRED) + add_executable(main main.cpp) -target_link_libraries(main PRIVATE Td::TdStatic) + +if (TARGET Td::tdjson_static) + target_link_libraries(main PRIVATE Td::tdjson_static) +else() + target_link_libraries(main PRIVATE Td::tdjson) +endif() find_package(PkgConfig REQUIRED) -pkg_check_modules(tdclient REQUIRED IMPORTED_TARGET tdclient) + +pkg_check_modules(tdjson_static IMPORTED_TARGET tdjson_static) +pkg_check_modules(tdjson IMPORTED_TARGET tdjson) + add_executable(main2 main.cpp) -target_link_libraries(main2 PRIVATE PkgConfig::tdclient) + +if (TARGET PkgConfig::tdjson_static) + target_link_libraries(main2 PRIVATE PkgConfig::tdjson_static) +else() + target_link_libraries(main2 PRIVATE PkgConfig::tdjson) +endif() diff --git a/scripts/test_ports/vcpkg-ci-tdlib/project/main.cpp b/scripts/test_ports/vcpkg-ci-tdlib/project/main.cpp index 79f5bf29f6bc57..da211ea85716b6 100644 --- a/scripts/test_ports/vcpkg-ci-tdlib/project/main.cpp +++ b/scripts/test_ports/vcpkg-ci-tdlib/project/main.cpp @@ -1,8 +1,6 @@ -#include -#include +#include int main() { - std::unique_ptr client_manager_; - auto response = client_manager_->receive(10); + int client_id = td_create_client_id(); return 0; } diff --git a/versions/baseline.json b/versions/baseline.json index 835d6537b92e47..d05220a3567157 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9889,7 +9889,7 @@ "port-version": 0 }, "tdlib": { - "baseline": "1.8.55", + "baseline": "1.8.63", "port-version": 0 }, "tdscpp": { diff --git a/versions/t-/tdlib.json b/versions/t-/tdlib.json index 788c7ae5bc2682..9745511fb78de0 100644 --- a/versions/t-/tdlib.json +++ b/versions/t-/tdlib.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "03dfd6eb011175d663fae646126921debc482261", + "version": "1.8.63", + "port-version": 0 + }, { "git-tree": "5adfd395e7ebb4f0e14359aee328ca198199d05b", "version": "1.8.55",