# Contributor: Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org>
# Contributor: Rasmus Thomsen <oss@cogitri.dev>
# Maintainer:
pkgname=lldb
# Note: Update together with llvm.
pkgver=19.1.4
pkgrel=0
_llvmver=${pkgver%%.*}
pkgdesc="Next generation, high-performance debugger"
arch="all"
url="https://llvm.org/"
license="Apache-2.0"
depends_dev="$pkgname=$pkgver-r$pkgrel"
makedepends="
	clang$_llvmver-dev
	clang$_llvmver-static
	cmake
	doxygen
	gtest-dev
	libedit-dev
	libffi-dev
	libxml2-dev
	linux-headers
	llvm$_llvmver-dev
	llvm$_llvmver-gtest
	llvm$_llvmver-static
	ncurses-dev
	py3-sphinx
	python3-dev
	samurai
	swig
	xz
	"
subpackages="$pkgname-dev $pkgname-doc py3-$pkgname-pyc py3-$pkgname:py3"
source="https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver//_/-}/lldb-${pkgver//_/}.src.tar.xz
	https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver//_/-}/cmake-${pkgver//_/}.src.tar.xz
	llvm_slug.py
	"
builddir="$srcdir/$pkgname-${pkgver//_/}.src"
options="!check"  # FIXME: enable tests

prepare() {
	default_prepare
	mv "$srcdir"/cmake-${pkgver//_/}.src "$srcdir"/cmake

	# llvm_slug module copied from llvm-19.1.2.src/docs/llvm_slug.py
	# needed by docs/conf.py
	install -Dm0755 -t "$srcdir"/llvm/docs/ "$srcdir"/llvm_slug.py
}

build() {
	export CC=clang
	export CXX=clang++

	case "$CARCH" in
	arm*)
		# binutils bugs
		;;
	*)
		export CFLAGS="$CFLAGS -flto"
		export CXXFLAGS="$CXXFLAGS -flto"
		;;
	esac

	cmake -B build -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_SKIP_RPATH=ON \
		-DLLDB_BUILT_STANDALONE=ON \
		-DLLDB_INCLUDE_TESTS="$(want_check && echo ON || echo OFF)" \
		-DLLVM_ENABLE_SPHINX=ON \
		-DLLVM_LINK_LLVM_DYLIB=ON \
		-DCMAKE_POSITION_INDEPENDENT_CODE=ON

	cmake --build build --target all docs-lldb-man
}

check() {
	ninja -C build check-lldb
}

package() {
	# backtracing/debugging pretty much anything is going to need libc debug symbols
	# not everything, but the common case needs this, and it's a small dep in comparison
	depends="musl-dbg"

	DESTDIR="$pkgdir" cmake --install build
	install -Dm644 build/docs/man/lldb.1 -t "$pkgdir"/usr/share/man/man1
	python3 -m compileall -fq "$pkgdir"/usr/lib/python3*
}

dev() {
	default_dev

	# move back main symlink, because py3-lldb links to it
	mv "$subpkgdir"/usr/lib/liblldb.so "$pkgdir"/usr/lib/
}

py3() {
	pkgdesc="Python3 module for LLDB"
	depends="$pkgname=$pkgver-r$pkgrel python3"
	replaces="py-lldb"

	amove usr/lib/python3.*
}

sha512sums="
0f8c3e2d408573d08e32e06070e1d919369519dd5f8ad56e418bccf8e6369840f76ee50ad9fdb41811c402115670257146931e95334b83eb29e9d8894d2f9435  lldb-19.1.4.src.tar.xz
4b2b4a3bd9e120a42e6a5f73c7d1fa7c806594d0856c51934063e585509c23897dd5c6ffb334c6773e6a5f57f7791490a620317f029566a62faa69c312ec02ce  cmake-19.1.4.src.tar.xz
5b65acf109e4b1e22411216d4b023f9975ea1fb04ec011fa71741fa7d13e3a0f1af2f9d4886782a73172f21c9debadf618fd814db04cfd98462a42b0f39e4c4a  llvm_slug.py
"
