# Contributor: Newbyte <newbie13xd@gmail.com>
# Contributor: Nulo <alpine@nulo.in>
# Maintainer: Nulo <alpine@nulo.in>
pkgname=tg_owt
pkgver=0_git20240728
pkgrel=1
_commit="4a60ce1ab9fdb962004c6a959f682ace3db50cbd"
_libsrtp_commit="a566a9cfcd619e8327784aa7cff4a1276dc1e895"
_libyuv_commit="04821d1e7d60845525e8db55c7bcd41ef5be9406"
_crc32c_commit="21fc8ef30415a635e7351ffa0e5d5367943d4a94"
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 !riscv64"

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"
# libsrtp bundled because tg_owt uses private APIs
# libyuv bundled because there's no stable ABI and has many breaking updates
# crc32c bundled because it isn't packaged and it is unclear if it will work
# packaged
depends_dev="
	abseil-cpp-dev
	libdrm-dev
	libepoxy-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
	crc32c-$_crc32c_commit.tar.gz::https://github.com/google/crc32c/archive/$_crc32c_commit.tar.gz
	libsrtp-$_libsrtp_commit.tar.gz::https://github.com/cisco/libsrtp/archive/$_libsrtp_commit.tar.gz
	abseil.patch
	cstdint.patch
	gcc12.patch
	gcc13.patch
	"
builddir="$srcdir/$pkgname-$_commit"

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

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_OUTPUT_ON_FAILURE=TRUE ctest
}

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

sha512sums="
fd1994ade4ce2ad7aeb5cee7fe2d8599914b489a33eccc38737d4e76fc2d02eec4651ad4eee1cf0b1e08668784063e381a47c3be4be16d02d1c9e85372b7b175  tg_owt-4a60ce1ab9fdb962004c6a959f682ace3db50cbd.tar.gz
d2bdc7efff2c3bb1daaecf19d6232f1fa5cba1f2459e84d71824ff11c69b40bcc35993d0d6c96e286d2128312390d1f6ca3ca980b7240c665ebaece9140bf4cb  libyuv-04821d1e7d60845525e8db55c7bcd41ef5be9406.tar.gz
80dc12463c95d87a25eac49249ea303d6e4734bcf9a849dbcc564c70df1b1b5f70e7f7e4db96f4c1c66bb3d4eeca87aeef9f2312a8162ade885f09b049fd7417  crc32c-21fc8ef30415a635e7351ffa0e5d5367943d4a94.tar.gz
930e665434e80e8a26d81b785563c915619b546a9a0af0455a14278816997074add852fae107027f4899415cb0ab47ffbf9492bea76b94b10f558b52098bbf92  libsrtp-a566a9cfcd619e8327784aa7cff4a1276dc1e895.tar.gz
b1d609500ad24bb015b3ab7ad3775f2667d674155abb12dd35d8e10b83c5e91c69fd8e415fd6543a45608b3dfd7fa72eb4ce9ec960e5742fb04cafaa20f6f206  abseil.patch
b530508390370ca1ed0728e4429920a7d3132293f3d8a2a3f3220efd2c00ceb7a40ee58184f595b1101389133570257900e4a44e7611d4064f7220b67c33b93b  cstdint.patch
2eb235583c952b07f19e455f79a0d464b77f7fce99b5434bff54f7cea2770c117261409c70d7963c78c55822b45c6da467e966df1bcadda70048673b73ed3a95  gcc12.patch
b65e0c1108a0f03bd317df77ac8c4c720cddb39bd878c86a3130aa08fce5ed083c553b552a8a3314473c2deee0f04111a2a67c97c7285c5b6f0e35dd93e2b52b  gcc13.patch
"
