# Copyright 2021-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 LLVM_COMPAT=( {17..20} ) # see .cmake.conf for minimum LLVM_OPTIONAL=1 # behaves very badly when qttools is not already installed, also # other issues to handle (clang tests flaky depending on version, # and 3rdparty/ tries to FetchContent gtest) QT6_RESTRICT_TESTS=1 inherit llvm-r2 optfeature qt6-build xdg DESCRIPTION="Qt Tools Collection" if [[ ${QT6_BUILD_TYPE} == release ]]; then KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" fi IUSE=" +assistant designer distancefieldgenerator gles2-only +linguist opengl pixeltool +qdbus qdoc qml qmlls qtattributionsscanner qtdiag qtplugininfo vulkan +widgets zstd " # note that some tools do not *require* widgets but will skip a sub-tool # if not enabled (e.g. linguist gives lrelease but not the GUI linguist6) REQUIRED_USE=" assistant? ( widgets ) designer? ( qml widgets ) distancefieldgenerator? ( qml widgets ) pixeltool? ( widgets ) qdoc? ( qml ${LLVM_REQUIRED_USE} ) qmlls? ( assistant qml ) " RDEPEND=" ~dev-qt/qtbase-${PV}:6[widgets?] assistant? ( ~dev-qt/qtbase-${PV}:6[concurrent,network,sql,sqlite] ) designer? ( ~dev-qt/qtbase-${PV}:6[network,xml,zstd=] zstd? ( app-arch/zstd:= ) ) qdbus? ( ~dev-qt/qtbase-${PV}:6[dbus,xml] ) qdoc? ( $(llvm_gen_dep ' llvm-core/clang:${LLVM_SLOT}= llvm-core/llvm:${LLVM_SLOT}= ') ) qml? ( ~dev-qt/qtdeclarative-${PV}:6[widgets?] ) qmlls? ( ~dev-qt/qtdeclarative-${PV}:6[qmlls] ) qtdiag? ( ~dev-qt/qtbase-${PV}:6[network,gles2-only=,vulkan=] ) widgets? ( ~dev-qt/qtbase-${PV}:6[opengl=] ) " DEPEND=" ${RDEPEND} qtdiag? ( vulkan? ( dev-util/vulkan-headers ) ) " src_prepare() { qt6-build_src_prepare # qttools is picky about clang versions and ignores LLVM_SLOT sed -e '/find_package/s/${\(LLVM_\)*VERSION}//' \ -i cmake/FindWrapLibClang.cmake || die } src_configure() { use qdoc && llvm_chost_setup local mycmakeargs=( # prevent the clang test as it can abort due to bug #916098 $(cmake_use_find_package qdoc WrapLibClang) $(cmake_use_find_package qml Qt6Qml) $(cmake_use_find_package widgets Qt6Widgets) $(qt_feature assistant) $(qt_feature designer) $(qt_feature distancefieldgenerator) $(qt_feature linguist) $(qt_feature pixeltool) $(qt_feature qdbus) $(qt_feature qdoc) $(qt_feature qtattributionsscanner) $(qt_feature qtdiag) $(qt_feature qtplugininfo) $(usev widgets -DQT_INSTALL_XDG_DESKTOP_ENTRIES=ON) # TODO?: package litehtml, but support for latest releases seem # to lag behind and bundled may work out better for now # https://github.com/litehtml/litehtml/issues/266 #$(usev assistant -DQLITEHTML_USE_SYSTEM_LITEHTML=ON) # USE=qmlls' help plugin may be temporary, upstream has plans to split # QtHelp into another package so that qtdeclarative can depend on it # without a circular dependency with qttools $(cmake_use_find_package qmlls Qt6QmlLSPrivate) ) qt6-build_src_configure } pkg_postinst() { xdg_pkg_postinst use assistant && optfeature "Qt documentation viewable in assistant" \ 'dev-qt/qt-docs:6[qch]' #602296 }