Add Arch package and prebuilt TDLib support

This commit is contained in:
2026-04-24 13:49:16 +03:00
parent 4910fb5e8e
commit 89772e74b1
5 changed files with 125 additions and 3 deletions

View File

@@ -11,11 +11,64 @@ find_program(CLANG_FORMAT_BIN clang-format)
include(FetchContent)
option(TELEGRAM_TUI_USE_SYSTEM_TDLIB "Use an installed TDLib package instead of fetching it." OFF)
set(TELEGRAM_TUI_TDLIB_ROOT ""
CACHE PATH "Path to a prebuilt TDLib root containing include/ and lib/ directories.")
set(CURSES_NEED_WIDE TRUE)
find_package(Curses REQUIRED)
if(TELEGRAM_TUI_USE_SYSTEM_TDLIB)
set(TELEGRAM_TUI_APP_CONFIG_PATH "")
if(DEFINED ENV{XDG_DATA_HOME} AND NOT "$ENV{XDG_DATA_HOME}" STREQUAL "")
set(TELEGRAM_TUI_APP_CONFIG_PATH "$ENV{XDG_DATA_HOME}/telegram-tui/config.json")
elseif(DEFINED ENV{HOME} AND NOT "$ENV{HOME}" STREQUAL "")
set(TELEGRAM_TUI_APP_CONFIG_PATH "$ENV{HOME}/.local/share/telegram-tui/config.json")
endif()
set(TELEGRAM_TUI_BUILD_API_ID "")
set(TELEGRAM_TUI_BUILD_API_HASH "")
if(TELEGRAM_TUI_APP_CONFIG_PATH AND EXISTS "${TELEGRAM_TUI_APP_CONFIG_PATH}")
file(READ "${TELEGRAM_TUI_APP_CONFIG_PATH}" TELEGRAM_TUI_APP_CONFIG_JSON)
string(REGEX MATCH "\"api_id\"[ \t\r\n]*:[ \t\r\n]*\"?([0-9]+)\"?"
TELEGRAM_TUI_APP_CONFIG_API_ID_MATCH "${TELEGRAM_TUI_APP_CONFIG_JSON}")
if(CMAKE_MATCH_1)
set(TELEGRAM_TUI_BUILD_API_ID "${CMAKE_MATCH_1}")
endif()
string(REGEX MATCH "\"api_hash\"[ \t\r\n]*:[ \t\r\n]*\"([^\"]+)\""
TELEGRAM_TUI_APP_CONFIG_API_HASH_MATCH "${TELEGRAM_TUI_APP_CONFIG_JSON}")
if(CMAKE_MATCH_1)
set(TELEGRAM_TUI_BUILD_API_HASH "${CMAKE_MATCH_1}")
endif()
endif()
configure_file(
${CMAKE_SOURCE_DIR}/src/build_config.h.in
${CMAKE_CURRENT_BINARY_DIR}/build_config.h
@ONLY
)
if(TELEGRAM_TUI_TDLIB_ROOT)
find_path(TELEGRAM_TUI_TDLIB_INCLUDE_DIR
NAMES td/telegram/td_json_client.h
PATHS "${TELEGRAM_TUI_TDLIB_ROOT}/include"
NO_DEFAULT_PATH
REQUIRED
)
find_library(TELEGRAM_TUI_TDLIB_LIBRARY
NAMES tdjson libtdjson.so libtdjson.so.1.8.61
PATHS "${TELEGRAM_TUI_TDLIB_ROOT}/lib"
NO_DEFAULT_PATH
REQUIRED
)
add_library(TdJsonPrebuilt SHARED IMPORTED GLOBAL)
set_target_properties(TdJsonPrebuilt PROPERTIES
IMPORTED_LOCATION "${TELEGRAM_TUI_TDLIB_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${TELEGRAM_TUI_TDLIB_INCLUDE_DIR}"
)
add_library(Td::TdJson ALIAS TdJsonPrebuilt)
elseif(TELEGRAM_TUI_USE_SYSTEM_TDLIB)
find_package(Td REQUIRED)
else()
set(TD_ENABLE_JNI OFF CACHE BOOL "" FORCE)
@@ -65,7 +118,7 @@ if(CLANG_FORMAT_BIN)
)
endif()
target_include_directories(shinoa PRIVATE ${CURSES_INCLUDE_DIRS})
target_include_directories(shinoa PRIVATE ${CURSES_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(shinoa PRIVATE ${CURSES_LIBRARIES})
if(TELEGRAM_TUI_USE_SYSTEM_TDLIB)