# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit cmake DESCRIPTION="Cross-platform library for building Telegram clients" HOMEPAGE="https://core.telegram.org/tdlib" SRC_URI="https://github.com/tdlib/td/archive/v${PV}.tar.gz -> ${P}.tar.gz" RESTRICT="mirror" LICENSE="Boost-1.0" SLOT="0" KEYWORDS="amd64 ~arm ~arm64 ~x86" IUSE="clang cli debug doc +gcc java low-ram lto test" REQUIRED_USE=" gcc? ( !clang ) !gcc? ( clang ) java? ( !lto ) " S="${WORKDIR}/td-${PV}" # according to TDLib build instructions, lto excludes java BDEPEND="gcc? ( >=sys-devel/gcc-4.9.2 ) >=dev-build/cmake-3.0.2 dev-util/gperf lto? ( >=dev-build/cmake-3.9.0 ) clang? ( >=sys-devel/clang-3.4:= ) low-ram? ( dev-lang/php[cli] ) doc? ( app-doc/doxygen ) java? ( virtual/jdk:= )" # todo: tdlib apparently uses sqlite but sqlite is not required in the build manual # maybe we'll have to provide system-sqlite USE flag # pg_overlay has sqlite-related stuff in its src_prepare RDEPEND="dev-libs/openssl:0= sys-libs/zlib" DOCS=( README.md ) src_prepare() { eapply "${FILESDIR}/${PN}"-1.8.0-fix-runpath.patch # from mva sed -r \ -e '/install\(TARGETS/,/ INCLUDES/{s@(LIBRARY DESTINATION).*@\1 ${CMAKE_INSTALL_LIBDIR}@;s@(ARCHIVE DESTINATION).*@\1 ${CMAKE_INSTALL_LIBDIR}@;s@(RUNTIME DESTINATION).*@\1 ${CMAKE_INSTALL_BINDIR}@}' \ -i CMakeLists.txt # from pg_overlay if use test then sed -i -e '/run_all_tests/! {/all_tests/d}' \ test/CMakeLists.txt || die else sed -i \ -e '/enable_testing/d' \ -e '/add_subdirectory.*test/d' \ CMakeLists.txt || die fi # for now, tests segfault for me on glibc and musl cmake_src_prepare } src_configure(){ local mycmakeargs=( -DCMAKE_BUILD_TYPE=$(usex debug Debug Release) -DCMAKE_INSTALL_PREFIX=/usr -DTD_ENABLE_LTO=$(usex lto ON OFF) -DTD_ENABLE_JNI=$(usex java ON OFF) # According to TDLib build instructions, DOTNET=ON is only needed # for using tdlib from C# under Windows through C++/CLI -DTD_ENABLE_DOTNET=OFF ) cmake_src_configure if use low-ram; then cmake --build "${BUILD_DIR}" --target prepare_cross_compiling php SplitSource.php # todo: we need to die on errors here but I don't know how fi } src_compile() { cmake_src_compile # from pg_overlay if use doc ; then doxygen Doxyfile || die "Could not build docs with doxygen" fi # completes without errors but I don't know if it's sensible } src_install() { # was suggested by upstream but seems redundant # use low-ram && php SplitSource.php --undo cmake_src_install use cli && dobin "${BUILD_DIR}"/tg_cli # can't we just skip it during build? # from pg_overlay use doc && local HTML_DOCS=( docs/html/. ) einstalldocs }