# Contributor: Newbyte <newbie13xd@gmail.com>
# Contributor: Nulo <alpine@nulo.in>
# Maintainer: Nulo <alpine@nulo.in>
pkgname=tg_owt
pkgver=0_git20241203
pkgrel=0
_commit="be39b8c8d0db1f377118f813f0c4bd331d341d5e"
_libyuv_commit="04821d1e7d60845525e8db55c7bcd41ef5be9406"
pkgdesc="Telegram Desktop's fork of Google's WebRTC"
url="https://github.com/desktop-app/tg_owt"

# matched to telegram-desktop
arch="all !x86 !ppc64le !s390x !armhf"

license="BSD-3-Clause"

# Sorted according to
# https://github.com/telegramdesktop/tdesktop/wiki/The-Packaged-Building-Mode
# https://github.com/desktop-app/tg_owt/pull/55#discussion_r599718405
# Not specified in the wiki page (see
# https://github.com/desktop-app/tg_owt/pull/55):
# pffft bundled because there's no stable ABI and patched
# rnnoise bundled because "all remaining files are custom"
# libyuv bundled because there's no stable ABI and has many breaking updates
depends_dev="
	abseil-cpp-dev
	crc32c-dev
	libdrm-dev
	libepoxy-dev
	libsrtp-dev
	ffmpeg-dev
	mesa-dev
	glib-dev
	jpeg-dev
	openssl-dev>3
	openh264-dev
	opus-dev
	pipewire-dev
	libvpx-dev
	libx11-dev
	libxcomposite-dev
	libxdamage-dev
	libxext-dev
	libxfixes-dev
	libxrender-dev
	libxrandr-dev
	libxtst-dev
	"
makedepends="
	$depends_dev
	cmake
	yasm
	samurai
	"

subpackages="$pkgname-dev"
source="
	$pkgname-$_commit.tar.gz::https://github.com/desktop-app/tg_owt/archive/$_commit.tar.gz
	libyuv-$_libyuv_commit.tar.gz::https://github.com/klemensn/libyuv/archive/$_libyuv_commit.tar.gz
	cstdint.patch
	gcc12.patch
	gcc13.patch
	pipewire.patch
	"
builddir="$srcdir/$pkgname-$_commit"

prepare() {
	default_prepare
	mv ../libyuv-$_libyuv_commit/* src/third_party/libyuv
}

build() {
	case "$CARCH" in
	arm*)
		# our armv7 baseline has no neon
		export CXXFLAGS="$CXXFLAGS -DLIBYUV_DISABLE_NEON"
		;;
	esac
	# dynamic version has broken linking
	cmake -B build -G Ninja \
		-DTG_OWT_PACKAGED_BUILD=True \
		-DTG_OWT_ARCH_ARMV7_USE_NEON=OFF \
		-DBUILD_SHARED_LIBS=OFF \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib \
		-DCMAKE_BUILD_TYPE=MinSizeRel

	cmake --build build
}

check() {
	cd build
	ctest
}

package() {
	DESTDIR="$pkgdir" cmake --install build
}

sha512sums="
10b7d0686fabc289694c659bcd138737b33375d0aad936e0cf8dcdebeebf30e7c0e1af7a9196c4275bcbb88b5867bcefa8179564980941895a6b7d9bfae822b2  tg_owt-be39b8c8d0db1f377118f813f0c4bd331d341d5e.tar.gz
d2bdc7efff2c3bb1daaecf19d6232f1fa5cba1f2459e84d71824ff11c69b40bcc35993d0d6c96e286d2128312390d1f6ca3ca980b7240c665ebaece9140bf4cb  libyuv-04821d1e7d60845525e8db55c7bcd41ef5be9406.tar.gz
b530508390370ca1ed0728e4429920a7d3132293f3d8a2a3f3220efd2c00ceb7a40ee58184f595b1101389133570257900e4a44e7611d4064f7220b67c33b93b  cstdint.patch
2eb235583c952b07f19e455f79a0d464b77f7fce99b5434bff54f7cea2770c117261409c70d7963c78c55822b45c6da467e966df1bcadda70048673b73ed3a95  gcc12.patch
b65e0c1108a0f03bd317df77ac8c4c720cddb39bd878c86a3130aa08fce5ed083c553b552a8a3314473c2deee0f04111a2a67c97c7285c5b6f0e35dd93e2b52b  gcc13.patch
c678abcdb0a7b50e818d698aa687c04132c6cc77f2a1cec15348d33be4de932735a966499e1a3d46282e428ece7fc7d0c71e3f51ac2dae3b5b98cb90dbfb23a6  pipewire.patch
"
