summaryrefslogtreecommitdiff
path: root/media-libs
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs')
-rw-r--r--media-libs/Manifest.gzbin65958 -> 65964 bytes
-rw-r--r--media-libs/libtgvoip/Manifest2
-rw-r--r--media-libs/libtgvoip/libtgvoip-2.4.4_p20220503.ebuild63
-rw-r--r--media-libs/tg_owt/Manifest4
-rw-r--r--media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch117
-rw-r--r--media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch72
-rw-r--r--media-libs/tg_owt/tg_owt-0_pre20220507.ebuild118
7 files changed, 376 insertions, 0 deletions
diff --git a/media-libs/Manifest.gz b/media-libs/Manifest.gz
index 9a74361c09cc..315f77bb0526 100644
--- a/media-libs/Manifest.gz
+++ b/media-libs/Manifest.gz
Binary files differ
diff --git a/media-libs/libtgvoip/Manifest b/media-libs/libtgvoip/Manifest
index ddd8ca237a6a..55dba2c27309 100644
--- a/media-libs/libtgvoip/Manifest
+++ b/media-libs/libtgvoip/Manifest
@@ -1,3 +1,5 @@
DIST libtgvoip-2.4.4_p20220117.tar.gz 1098045 BLAKE2B 752b3b26f511316b8261d9ebb833e2b74df91377daca255fbbeefb18b3ab3811b97eaee1d9965e95ed9d215467e6ff5dc857369d381d470570cb87c3bfec33af SHA512 b9d8e354e9b8f9226d5e06397fdf3c91f71fee890db7d180dffae2e3fb6f74bca1c31b7f87049257c3edf44c2171780ed5781877cf8f2d40b2d56c1f5385ef77
+DIST libtgvoip-2.4.4_p20220503.tar.gz 1098061 BLAKE2B 5389a3783fa5179d10a18ef0282ab65d1526c829852095718384c2ba476ebfb1ee1f997f71b47424ef60a826055bc63d0d2dde7980de98c978860d72717ffefb SHA512 68f1e5b46df3b974d39333949e586ed00243044ff4bcac31937cba7eced6266fdacfd6ff3c6453f7dfa64ec82dd3aeafa251411dc85de0aae26b2cd0d8a79013
EBUILD libtgvoip-2.4.4_p20220117.ebuild 1586 BLAKE2B 8ee4658a921472e3c5aaa2cccb6059620041f71ee4c8fb24fdcf3759b4f5bbb99c481c888f71300cc82a49ec4037fec96065f89c36145b57b293a9818cba3e54 SHA512 0159bdc29c80a8c2ac03783bded57b68908d814a1113431db85b62042b1c00b433f9bce4359201ec43a79205e27463c84b33a33254cf3aa3b25a9343fe1039e2
+EBUILD libtgvoip-2.4.4_p20220503.ebuild 1587 BLAKE2B 63114d768dc02b5be4b5916c88c50cbba051444ce155820ccced9d5dd3fa35eafa8dcb508b75d8a0ea411d34bab34ae5a6b89f63c5abcff6abfc3f7e9380e249 SHA512 848122f1180dfecfb4bd67cf347a75fca9d4520ae56d865d7cd246541b9fa2bb70443511739304b8b747f2f3340b9fe24178871c1bb1fc8dcf592aba6f5cfed8
MISC metadata.xml 543 BLAKE2B 56f3e74859e09ff7ecaa4f068e1872257213a7239cd946c920c0b2e7e12cfc0bdb314ca1fb0a75b489abd5ae5c4e5b4218ced1b3ee78e60a4e82558100d68e1f SHA512 83e39833446eb97c76280a81e428bdd64b5c46a052e1b87bdc19a5db31478f1004e3ae6f323c7983992541bf9d15f155037523990964ccae4ad8653396f7534b
diff --git a/media-libs/libtgvoip/libtgvoip-2.4.4_p20220503.ebuild b/media-libs/libtgvoip/libtgvoip-2.4.4_p20220503.ebuild
new file mode 100644
index 000000000000..14fae24d7ae3
--- /dev/null
+++ b/media-libs/libtgvoip/libtgvoip-2.4.4_p20220503.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2020-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic autotools
+
+DESCRIPTION="VoIP library for Telegram clients"
+HOMEPAGE="https://github.com/telegramdesktop/libtgvoip"
+
+LIBTGVOIP_COMMIT="78a8e22bedb0d06004da8bafeba88b7474cb89a4"
+SRC_URI="https://github.com/telegramdesktop/libtgvoip/archive/${LIBTGVOIP_COMMIT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-${LIBTGVOIP_COMMIT}"
+
+LICENSE="Unlicense"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+IUSE="+dsp +alsa pulseaudio"
+
+DEPEND="
+ dev-libs/openssl:=
+ media-libs/opus
+ alsa? ( media-libs/alsa-lib )
+ dsp? ( media-libs/tg_owt:= )
+ pulseaudio? ( media-sound/pulseaudio )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+REQUIRED_USE="
+ || ( alsa pulseaudio )
+"
+
+src_prepare() {
+ # Will be controlled by us
+ sed -i -e '/^CFLAGS += -DTGVOIP_NO_DSP/d' Makefile.am || die
+ # https://bugs.gentoo.org/717210
+ echo 'libtgvoip_la_LIBTOOLFLAGS = --tag=CXX' >> Makefile.am || die
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # Not using the CMake build despite being the preferred one, because
+ # it's lacking relevant configure options.
+ local myconf=(
+ --disable-dsp # WebRTC is linked from tg_owt
+ $(use_with alsa)
+ $(use_with pulseaudio pulse)
+ )
+ if use dsp; then
+ append-cppflags "-I${ESYSROOT}/usr/include/tg_owt"
+ append-cppflags "-I${ESYSROOT}/usr/include/tg_owt/third_party/abseil-cpp"
+ append-libs '-ltg_owt'
+ else
+ append-cppflags '-DTGVOIP_NO_DSP'
+ fi
+ econf "${myconf[@]}"
+}
+
+src_install() {
+ default
+ find "${D}" -name '*.la' -delete || die
+}
diff --git a/media-libs/tg_owt/Manifest b/media-libs/tg_owt/Manifest
index f51b497fbfdb..d03a9d89c497 100644
--- a/media-libs/tg_owt/Manifest
+++ b/media-libs/tg_owt/Manifest
@@ -2,7 +2,11 @@ AUX tg_owt-0_pre20211207-fix-dcsctp-references.patch 1337 BLAKE2B cf74aefd4a350e
AUX tg_owt-0_pre20220209-allow-disabling-X11.patch 4382 BLAKE2B 26db92be5b8e75542a62618c7cda08dd7a54a95532df616cacb7d5fb2d39ab791758593e8f9a41494e23e529c0dc2a48aca2a87310fdb62acbd27a7eaf456e4e SHA512 dba0d14b14dc63f8372f50ab8cd4cb02067bcdb338d3dfb33ea2d8977eb2fa2738c93edd42b9a36ed97bcbfd2c7a123e27a7b161d318338d0ff1450780abe98a
AUX tg_owt-0_pre20220209-gcc-12-cstddef.patch 741 BLAKE2B d644e354e5f4c6dd714bc86b18a1e57e120cdb66faed50fda97f8934abc8bdcc522e83abbc424370af8107ca1f3fa8f8f3cc86568ee56c558f59576af48f62a5 SHA512 c86018bc2a3690abd9656ddb5ebccb59c8a3aa83a37004368b0e71326d1f8b473c016dd15d3fd2143d3f74fd4e270757bb50a642154a3f10a1274c1b5bcf007b
AUX tg_owt-0_pre20220209-gcc-12-cstdint.patch 1361 BLAKE2B 06587d98836d335a9edf9fa276cd660e29d2080186ddcd724ae4e82a5a69e6e57684575f6de77f3c026696f3383695a61f97ac6184b1983e99a4ba27533d8c70 SHA512 06d2cd5c6f2a360f0c46a7b91d045dcf582d0eb5efb93304d1377e78beff38dac545b406afd5a52e1a9e0725e9d6b1181984a39c1bead12870267c51afb6b884
+AUX tg_owt-0_pre20220507-allow-disabling-X11.patch 4470 BLAKE2B 65498236c2d315ec313bc89b6b5390bba9a378f4dee7bc9dccbe1b0184262aba0c308d7248c69262c900bf963d898feb47662a882e73fcdfc0c1f69b89c5601a SHA512 32cdb00633be55e573d5830d1e3b351e8cc99b209f4de5c23cf49a9dd94cedfa1227f8d44bc1ac73029391eecbb1cab59d718f2fa4939eeb0f31c62b7f649d54
+AUX tg_owt-0_pre20220507-unbundle-crc32c.patch 1933 BLAKE2B 1aaae7a32aec615f70cff3e6abea1e8398df778b92adfb20bfc4bdc211491d0da2bec81c8f1cf730a32407a07b762e3bc3fc9ead75fce7fe050d23f7ad658763 SHA512 a8fd7e0ac746b4bf8203eef14e1f6771dccd644466412f40517c2fb1af048ffe34033a910531720cfb478c9d4a8e80b571ae0084d01cf52b8046290eccc9d5da
DIST libyuv-ad890067f661dc747a975bc55ba3767fe30d4452.tar.gz 473845 BLAKE2B 664be51c166440e6b03fa98f65d907efc446800804058a5ea7fdf944e12cb1237a1487e83fbe9a2f1ce4c73521234e43632f921ad0333507737d81e1cb23ce8f SHA512 f97529b80a786e2e92443caabebd6d85a42641e10c3d2940b0f69bedf3b8a96c69c3247abddd059c4ddd6f78107ab7214222a4267a559fc2086c8edf5ea1afbc
DIST tg_owt-0_pre20220209.tar.gz 16501237 BLAKE2B fb04aca8803645cc107a7e7fbab8d6020ad91f487ece0445aba29dd1127270e8b3a33d51bb35cfc916168df78cbdc98987610b39fd2cf7b86821b4f9733783c9 SHA512 0a35ce3379887b115117188aa8dce44bf89e23ad6f9fab7320a1cd55cdd534bae4c240778a37cb9588cd6acea1e7a83c22c113d608f7bfd5272ee22bb2773af3
+DIST tg_owt-0_pre20220507.tar.gz 15799740 BLAKE2B f12f3ecdfb0c7cfdae12af4734ddf22da4d95fd991b8a8ba17515f9d5c22a2f12b81967c0af15ac150c99129701c50c9384ea0e0240bf2366e176c833b14f7db SHA512 6902c65a1be0bcf300f08c274109ed53cdf92b7aff35915045c3989899fc2584cce3fe9df0e8ac29e708fcc575453fe5a6affaea85787f9c4fcc3bcde3b85711
EBUILD tg_owt-0_pre20220209.ebuild 3499 BLAKE2B dbdfe128deb5963ec2033a79471541424aeaf7513ed06c86b325d384b25b22293de9648e394649f71783db44b806e15e9bd56e57b44629dd6853f7810ac50d17 SHA512 5a18db66356512cc10a3f2bd5772c7be62ddcbe6dd8cebb69112f4e4bfecf96e4250ffc9d3b339707f2e6a04d3937183c3a8d833ad0c3afebd5b6871c844c937
+EBUILD tg_owt-0_pre20220507.ebuild 3492 BLAKE2B 7c293e77e98dbf52fcf40193df428f39682b9f00383040bdea4dbd28519cd28f7412d466341e6a98275b424392f96c7c9203e9ab41999ae71efafa57594f0d4b SHA512 28ff966bd43341de5b6d61d919f5640bd8a78a888ebc85fca8e0b28a882bfe3db233ff99ba4058b65fab0413b7c508ebf3569d3a91bb0bfae8c2b4474e9214a4
MISC metadata.xml 410 BLAKE2B 4bb73f9210c791887bf87b9d6476c339ed077d8a9e2cca19a7c96fdd6634dd7217cd96e196dd52f112f79ae88b320651fa91ed7f3b13a7db1a5ae6fb4fa2f1ad SHA512 ee72d3f004691ec17c5c5b95e5c602757a4679d7eb92d31afb1394adf34b758829ea2d1fb049d25a7db24247331e58c22ccb322421fe956ec843c65f7ddc612e
diff --git a/media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch b/media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch
new file mode 100644
index 000000000000..71b587f471bb
--- /dev/null
+++ b/media-libs/tg_owt/files/tg_owt-0_pre20220507-allow-disabling-X11.patch
@@ -0,0 +1,117 @@
+Add -DTG_OWT_USE_X11
+
+Allows disabling X11 desktop capturing independently of pipewire support, for
+the few people that run wayland without any X11 support whatsoever.
+
+This setup is untested, but supported by the GNI build system, see:
+* src/modules/desktop_capture/BUILD.gn (option rtc_use_x11_extensions)
+
+Toggling the WEBRTC_USE_X11 define also affects some files under
+src/modules/audio_device, but that falls under "X11 support", regardless...
+
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/CMakeLists.txt
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/CMakeLists.txt
+@@ -21,11 +21,13 @@
+
+ option(BUILD_SHARED_LIBS "Builds shared libraries instead of static." OFF)
+ option(TG_OWT_USE_PROTOBUF "Use protobuf to generate additional headers. Useful for packaged build." ${BUILD_SHARED_LIBS})
++option(TG_OWT_USE_X11 "Use X11 for desktop capture on non-Apple Unix." ON)
+ option(TG_OWT_USE_PIPEWIRE "Use pipewire for desktop capture on non-Apple Unix." ON)
+ option(TG_OWT_DLOPEN_PIPEWIRE "dlopen pipewire 0.3 for desktop capture on non-Apple Unix." ${not_packaged_build})
+ option(TG_OWT_BUILD_AUDIO_BACKENDS "Build webrtc audio backends." OFF)
+
+ if (NOT UNIX OR APPLE)
++ set(TG_OWT_USE_X11 OFF)
+ set(TG_OWT_USE_PIPEWIRE OFF)
+ endif()
+
+@@ -97,6 +99,10 @@
+ add_library(tg_owt)
+ init_target(tg_owt)
+
++if (TG_OWT_USE_X11)
++ link_x11(tg_owt)
++endif()
++
+ if (TG_OWT_USE_PIPEWIRE)
+ if (TG_OWT_DLOPEN_PIPEWIRE)
+ include(cmake/generate_stubs.cmake)
+@@ -189,10 +195,6 @@
+ include(cmake/libwebrtcbuild.cmake)
+ target_link_libraries(tg_owt PUBLIC tg_owt::libwebrtcbuild)
+
+-if (UNIX AND NOT APPLE)
+- link_x11(tg_owt)
+-endif()
+-
+ function(add_sublibrary postfix)
+ add_library(tg_owt_${postfix} OBJECT)
+ init_feature_target(tg_owt_${postfix} ${postfix})
+@@ -2370,6 +2372,39 @@
+ )
+ endif()
+
++if (NOT TG_OWT_USE_X11)
++ remove_target_sources(tg_owt ${webrtc_loc}
++ # src/modules/desktop_capture/BUILD.gn (rtc_use_x11_extensions)
++ modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.cc
++ modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.h
++ modules/desktop_capture/linux/x11/screen_capturer_x11.cc
++ modules/desktop_capture/linux/x11/screen_capturer_x11.h
++ modules/desktop_capture/linux/x11/shared_x_display.cc
++ modules/desktop_capture/linux/x11/shared_x_display.h
++ modules/desktop_capture/linux/x11/window_capturer_x11.cc
++ modules/desktop_capture/linux/x11/window_capturer_x11.h
++ modules/desktop_capture/linux/x11/window_finder_x11.cc
++ modules/desktop_capture/linux/x11/window_finder_x11.h
++ modules/desktop_capture/linux/x11/window_list_utils.cc
++ modules/desktop_capture/linux/x11/window_list_utils.h
++ modules/desktop_capture/linux/x11/x_atom_cache.cc
++ modules/desktop_capture/linux/x11/x_atom_cache.h
++ modules/desktop_capture/linux/x11/x_error_trap.cc
++ modules/desktop_capture/linux/x11/x_error_trap.h
++ modules/desktop_capture/linux/x11/x_server_pixel_buffer.cc
++ modules/desktop_capture/linux/x11/x_server_pixel_buffer.h
++ modules/desktop_capture/linux/x11/x_window_property.cc
++ modules/desktop_capture/linux/x11/x_window_property.h
++
++ # screen_drawer_linux.cc depends on x11, rest are revdeps
++ modules/desktop_capture/screen_drawer.cc
++ modules/desktop_capture/screen_drawer.h
++ modules/desktop_capture/screen_drawer_linux.cc
++ modules/desktop_capture/screen_drawer_lock_posix.cc
++ modules/desktop_capture/screen_drawer_lock_posix.h
++ )
++endif()
++
+ if (NOT TG_OWT_USE_PIPEWIRE)
+ remove_target_sources(tg_owt ${webrtc_loc}
+ modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/cmake/libwebrtcbuild.cmake
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/cmake/libwebrtcbuild.cmake
+@@ -29,6 +29,13 @@
+ BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0
+ )
+
++if (TG_OWT_USE_X11)
++ target_compile_definitions(libwebrtcbuild
++ INTERFACE
++ WEBRTC_USE_X11
++ )
++endif()
++
+ if (TG_OWT_USE_PIPEWIRE)
+ target_compile_definitions(libwebrtcbuild
+ INTERFACE
+@@ -65,11 +72,6 @@
+ INTERFACE
+ WEBRTC_MAC
+ )
+- else()
+- target_compile_definitions(libwebrtcbuild
+- INTERFACE
+- WEBRTC_USE_X11
+- )
+ endif()
+
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
diff --git a/media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch b/media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch
new file mode 100644
index 000000000000..44283c24384c
--- /dev/null
+++ b/media-libs/tg_owt/files/tg_owt-0_pre20220507-unbundle-crc32c.patch
@@ -0,0 +1,72 @@
+Use system's crc32c if found
+
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/CMakeLists.txt
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/CMakeLists.txt
+@@ -147,7 +147,6 @@
+
+ target_link_libraries(tg_owt
+ PRIVATE
+- tg_owt::libcrc32c
+ tg_owt::libpffft
+ tg_owt::librnnoise
+ tg_owt::libsrtp
+@@ -185,6 +184,7 @@
+ link_libabsl(tg_owt)
+ link_libopenh264(tg_owt)
+ link_libvpx(tg_owt)
++link_crc32c(tg_owt)
+
+ if (TG_OWT_BUILD_AUDIO_BACKENDS AND (UNIX AND NOT APPLE))
+ link_libalsa(tg_owt)
+@@ -2599,7 +2599,6 @@
+
+ set(export_targets
+ ${tg_owt_export}
+- libcrc32c
+ libpffft
+ librnnoise
+ libsrtp
+@@ -2617,6 +2616,9 @@
+ if (NOT LIBOPENH264_FOUND)
+ list(APPEND export_targets libopenh264)
+ endif()
++if (NOT Crc32c_FOUND)
++ list(APPEND export_targets libcrc32c)
++endif()
+
+ export(
+ TARGETS ${export_targets}
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/cmake/external.cmake
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/cmake/external.cmake
+@@ -166,6 +166,20 @@
+ endif()
+ endfunction()
+
++# crc32c
++function(link_crc32c target_name)
++ if (TG_OWT_PACKAGED_BUILD)
++ find_package(Crc32c)
++ set(Crc32c_FOUND ${Crc32c_FOUND} PARENT_SCOPE)
++ if (Crc32c_FOUND)
++ target_link_libraries(${target_name} PRIVATE Crc32c::crc32c)
++ endif()
++ endif()
++ if (NOT Crc32c_FOUND)
++ target_link_libraries(${target_name} PRIVATE tg_owt::libcrc32c)
++ endif()
++endfunction()
++
+ function(link_glib target_name)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(GLIB2 REQUIRED glib-2.0)
+--- tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41.orig/src/net/dcsctp/packet/crc32c.cc
++++ tg_owt-10d5f4bf77333ef6b43516f90d2ce13273255f41/src/net/dcsctp/packet/crc32c.cc
+@@ -11,7 +11,7 @@
+
+ #include <cstdint>
+
+-#include "third_party/crc32c/src/include/crc32c/crc32c.h"
++#include "crc32c/crc32c.h"
+
+ namespace dcsctp {
+
diff --git a/media-libs/tg_owt/tg_owt-0_pre20220507.ebuild b/media-libs/tg_owt/tg_owt-0_pre20220507.ebuild
new file mode 100644
index 000000000000..384b3d7cafce
--- /dev/null
+++ b/media-libs/tg_owt/tg_owt-0_pre20220507.ebuild
@@ -0,0 +1,118 @@
+# Copyright 2020-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake flag-o-matic
+
+DESCRIPTION="WebRTC build for Telegram"
+HOMEPAGE="https://github.com/desktop-app/tg_owt"
+
+TG_OWT_COMMIT="10d5f4bf77333ef6b43516f90d2ce13273255f41"
+LIBYUV_COMMIT="ad890067f661dc747a975bc55ba3767fe30d4452"
+SRC_URI="https://github.com/desktop-app/tg_owt/archive/${TG_OWT_COMMIT}.tar.gz -> ${P}.tar.gz
+ https://archive.org/download/libyuv-${LIBYUV_COMMIT}.tar/libyuv-${LIBYUV_COMMIT}.tar.gz"
+S="${WORKDIR}/${PN}-${TG_OWT_COMMIT}"
+# Fetch libyuv archive from: https://chromium.googlesource.com/libyuv/libyuv/+archive/${LIBYUV_COMMIT}.tar.gz
+
+LICENSE="BSD"
+SLOT="0/${PV##*pre}"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+IUSE="screencast +X"
+
+# This package's USE flags may change the ABI and require a rebuild of
+# dependent pacakges. As such, one should make sure to depend on
+# media-libs/tg_owt[x=,y=,z=] for any package that uses this.
+
+# Bundled libs:
+# - libyuv (no stable versioning, www-client/chromium and media-libs/libvpx bundle it)
+# - libsrtp (project uses private APIs)
+# - pffft (no stable versioning, patched)
+DEPEND="
+ >=dev-cpp/abseil-cpp-20211102.0:=[cxx17(+)]
+ dev-libs/openssl:=
+ dev-libs/protobuf:=
+ media-libs/libjpeg-turbo:=
+ >=media-libs/libvpx-1.10.0:=
+ media-libs/openh264:=
+ media-libs/opus
+ media-video/ffmpeg:=
+ dev-libs/crc32c
+ screencast? (
+ dev-libs/glib:2
+ media-video/pipewire:=
+ )
+ X? (
+ x11-libs/libX11
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXrender
+ x11-libs/libXrandr
+ x11-libs/libXtst
+ )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/tg_owt-0_pre20220507-allow-disabling-X11.patch"
+ "${FILESDIR}/tg_owt-0_pre20220507-unbundle-crc32c.patch"
+)
+
+src_unpack() {
+ unpack "${P}.tar.gz"
+ cd "${S}/src/third_party/libyuv" || die
+ unpack "libyuv-${LIBYUV_COMMIT}.tar.gz"
+}
+
+src_prepare() {
+ # libopenh264 has GENERATED files with yasm that aren't excluded by
+ # EXCLUDE_FROM_ALL, and I have no clue how to avoid this.
+ # These source files aren't used with system-openh264, anyway.
+ sed -i '/include(cmake\/libopenh264.cmake)/d' CMakeLists.txt || die
+
+ # The sources for libcrc32c aren't available, avoid needing them
+ sed -i '/include(cmake\/libcrc32c.cmake)/d' CMakeLists.txt || die
+
+ # "lol" said the scorpion, "lmao"
+ sed -i '/if (BUILD_SHARED_LIBS)/{n;n;s/WARNING/DEBUG/}' CMakeLists.txt || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # Defined by -DCMAKE_BUILD_TYPE=Release, avoids crashes
+ # see https://bugs.gentoo.org/754012
+ # EAPI 8 still wipes this flag.
+ append-cppflags '-DNDEBUG'
+
+ local mycmakeargs=(
+ -DTG_OWT_USE_X11=$(usex X)
+ -DTG_OWT_USE_PIPEWIRE=$(usex screencast)
+ )
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # Save about 15MB of useless headers
+ rm -r "${ED}/usr/include/tg_owt/rtc_base/third_party" || die
+ rm -r "${ED}/usr/include/tg_owt/common_audio/third_party" || die
+ rm -r "${ED}/usr/include/tg_owt/modules/third_party" || die
+ rm -r "${ED}/usr/include/tg_owt/third_party" || die
+
+ # Install a few headers anyway, as required by net-im/telegram-desktop...
+ local headers=(
+ third_party/libyuv/include
+ rtc_base/third_party/sigslot
+ rtc_base/third_party/base64
+ )
+ for dir in "${headers[@]}"; do
+ pushd "${S}/src/${dir}" > /dev/null || die
+ find -type f -name "*.h" -exec install -Dm644 '{}' "${ED}/usr/include/tg_owt/${dir}/{}" \; || die
+ popd > /dev/null || die
+ done
+}