# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=qt6
maintainer="Bart Ribbers <bribbers@disroot.org>"
pkgname=qt6-qtbase
pkgver=6.8.3
pkgrel=0
pkgdesc="A cross-platform application and UI framework"
url="https://qt.io/"
arch="all"
license="LGPL-2.1-only AND LGPL-3.0-only AND GPL-3.0-only AND Qt-GPL-exception-1.0"
_sub="
	$pkgname-mysql
	$pkgname-odbc
	$pkgname-postgresql
	$pkgname-sqlite
	$pkgname-x11
	"
depends="tzdata"
depends_dev="$_sub
	cups-dev
	dbus-dev
	double-conversion-dev
	eudev-dev
	fontconfig-dev
	freetype-dev
	glib-dev
	gtk+3.0-dev
	harfbuzz-dev
	icu-dev
	libb2-dev
	libinput-dev
	libjpeg-turbo-dev
	libpng-dev
	libpq-dev
	libproxy-dev
	libxkbcommon-dev
	mariadb-dev
	mesa-dev
	openssl-dev>3
	pcre2-dev
	sqlite-dev
	tslib-dev
	unixodbc-dev
	vulkan-headers
	vulkan-loader-dev
	wayland-dev
	xcb-util-cursor-dev
	xcb-util-dev
	xcb-util-image-dev
	xcb-util-keysyms-dev
	xcb-util-renderutil-dev
	xcb-util-wm-dev
	zlib-dev
	"
makedepends="$depends_dev
	cmake
	perl
	samurai
	xmlstarlet
	"
subpackages="
	$pkgname-dbg
	$pkgname-private-dev:private_dev
	$pkgname-dev
	$pkgname-doc
	$_sub
	"
builddir="$srcdir/qtbase-everywhere-src-${pkgver/_/-}"

case $pkgver in
	*_alpha*|*_beta*|*_rc*) _rel=development_releases;;
	*) _rel=official_releases;;
esac

source="https://download.qt.io/$_rel/qt/${pkgver%.*}/${pkgver/_/-}/submodules/qtbase-everywhere-src-${pkgver/_/-}.tar.xz
	0001-lfs64.patch
	dns-resolver.patch
	"
options="!check" # Tests don't currently run for some reason

# secfixes:
#   6.5.0-r5:
#     - CVE-2023-32762
#     - CVE-2023-32763
#   6.7.2-r1:
#     - CVE-2024-39936

build() {
	case "$CTARGET_ARCH" in
	arm*|aarch64)
		local opengl="-DQT_FEATURE_opengles2=ON"
		;;
	esac

	# -g1: significantly reduce debug symbol size
	export CFLAGS="$CFLAGS -g1 -flto=auto"
	export CXXFLAGS="$CXXFLAGS -g1 -flto=auto"
	cmake -B build -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
		-DINSTALL_BINDIR=lib/qt6/bin \
		-DINSTALL_PUBLICBINDIR=usr/bin \
		-DINSTALL_DOCDIR=share/doc/qt6 \
		-DINSTALL_ARCHDATADIR=lib/qt6 \
		-DINSTALL_DATADIR=share/qt6 \
		-DINSTALL_INCLUDEDIR=include/qt6 \
		-DINSTALL_MKSPECSDIR=lib/qt6/mkspecs \
		-DINSTALL_EXAMPLESDIR=share/doc/qt6/examples \
		-DQT_FEATURE_journald=OFF \
		-DFEATURE_libproxy=ON \
		-DQT_FEATURE_openssl_linked=ON \
		-DQT_FEATURE_reduce_relocations=OFF \
		-DQT_FEATURE_system_sqlite=ON \
		-DQT_FEATURE_system_xcb_xinput=ON \
		-DQT_FEATURE_vulkan=ON \
		-DQT_FEATURE_xcb=ON \
		$opengl
	cmake --build build
}

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

	# add symlinks for qt6 dev tools
	cd "$pkgdir"
	mkdir -p usr/bin
	while read -r _line; do
		ln -sv $_line
	done < "$builddir"/build/user_facing_tool_links.txt
}

dev() {
	default_dev

	amove usr/bin
	amove usr/lib/qt6/bin
	amove usr/lib/qt6/sbom
}

private_dev() {
	local file; find "$pkgdir"/usr/include -type d -name private | while read -r file; do
		amove "${file#"$pkgdir"}"
	done
	amove usr/lib/cmake/*Private
	amove usr/lib/qt6/metatypes/*private_*_metatypes.json
	amove usr/lib/qt6/modules/*Private.json
}

sqlite() {
	pkgdesc="SQLite driver for Qt6's SQL classes"
	amove usr/lib/qt6/plugins/sqldrivers/libqsqlite*
}

odbc() {
	pkgdesc="ODBC driver for Qt6's SQL classes"
	amove usr/lib/qt6/plugins/sqldrivers/libqsqlodbc*
}

postgresql() {
	pkgdesc="PostgreSQL driver for Qt6's SQL classes"
	amove usr/lib/qt6/plugins/sqldrivers/libqsqlpsql*
}

mysql() {
	pkgdesc="MySQL driver for Qt6's SQL classes"
	amove usr/lib/qt6/plugins/sqldrivers/libqsqlmysql*
}

x11() {
	pkgdesc="Qt6 GUI-related libraries"
	depends="hicolor-icon-theme xdg-utils"
	amove \
		usr/lib/libQt6EglFSDeviceIntegration.so.* \
		usr/lib/libQt6EglFsKms*Support.so.* \
		usr/lib/libQt6Gui.so.* \
		usr/lib/libQt6OpenGL*.so.* \
		usr/lib/libQt6XcbQpa.so.* \
		usr/lib/libQt6PrintSupport.so.* \
		usr/lib/libQt6Widgets.so.* \
		usr/lib/qt6/plugins/egldeviceintegrations \
		usr/lib/qt6/plugins/generic \
		usr/lib/qt6/plugins/image* \
		usr/lib/qt6/plugins/platform* \
		usr/lib/qt6/plugins/printsupport* \
		usr/lib/qt6/plugins/xcbglintegrations/libqxcb*
}

sha512sums="
ef364f939f23b622f67d21833c2dbf1fb74531d9a1e25b6d2e94ea5d747a40f20c6c3a24abef1e9710287366b7cb54dd090350d315601317779235c20743cc81  qtbase-everywhere-src-6.8.3.tar.xz
390e2998483696e4af6f754be6611eb01f93b5185e81f8ad21c45cd267bab58a347902230b456b4c9fae339d6b8ecb6f7cf695e90fb086d92b9c5f7561993898  0001-lfs64.patch
5f144f7a26b254210e36cf1e4962af26199c16bd965cfe40305f4bcd36d23fd623083701bb338f7d6779d18476461fbc00f9fb773a74a1ba5e4ce2a801f22a5a  dns-resolver.patch
"
