# Copyright 2021-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 QT6_HAS_STATIC_LIBS=1 inherit flag-o-matic qt6-build toolchain-funcs DESCRIPTION="Cross-platform application development framework" if [[ ${QT6_BUILD_TYPE} == release ]]; then KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~x86" fi declare -A QT6_IUSE=( [global]="+ssl +udev zstd" [core]="icu journald syslog" [modules]="+concurrent +dbus +gui +network +sql +xml" [gui]=" +X accessibility eglfs evdev gles2-only +libinput opengl renderdoc tslib vulkan wayland +widgets " [network]="brotli gssapi libproxy sctp" [sql]="mysql oci8 odbc postgres +sqlite" [widgets]="cups gtk" [optfeature]="nls" #810802 ) IUSE="${QT6_IUSE[*]}" REQUIRED_USE=" ?? ( journald syslog ) $( printf '%s? ( gui ) ' ${QT6_IUSE[gui]//+/} printf '%s? ( network ) ' ${QT6_IUSE[network]//+/} printf '%s? ( sql ) ' ${QT6_IUSE[sql]//+/} printf '%s? ( gui widgets ) ' ${QT6_IUSE[widgets]//+/} ) accessibility? ( dbus ) eglfs? ( opengl ) gles2-only? ( opengl ) gui? ( || ( X eglfs wayland ) ) libinput? ( udev ) sql? ( || ( ${QT6_IUSE[sql]//+/} ) ) test? ( icu sql? ( sqlite ) ) " # groups: # - global (configure.cmake) # - qtcore (src/corelib/configure.cmake) # - qtgui (src/gui/configure.cmake) # - qtnetwork (src/network/configure.cmake) # - qtprintsupport (src/printsupport/configure.cmake) [gui+widgets] # - qtsql (src/plugins/sqldrivers/configure.cmake) # nolink: renderdoc, systemd COMMON_DEPEND=" sys-libs/zlib:= ssl? ( dev-libs/openssl:= ) udev? ( virtual/libudev:= ) zstd? ( app-arch/zstd:= ) app-crypt/libb2 dev-libs/double-conversion:= dev-libs/glib:2 dev-libs/libpcre2:=[pcre16,unicode(+)] icu? ( dev-libs/icu:= ) journald? ( sys-apps/systemd ) dbus? ( sys-apps/dbus ) gui? ( media-libs/fontconfig >=media-libs/freetype-2.13.1:2 media-libs/harfbuzz:= media-libs/libjpeg-turbo:= media-libs/libpng:= x11-libs/libdrm x11-libs/libxkbcommon[X?] X? ( x11-libs/libICE x11-libs/libSM x11-libs/libX11 x11-libs/libxcb:= x11-libs/xcb-util-cursor x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm ) accessibility? ( app-accessibility/at-spi2-core:2 ) eglfs? ( media-libs/mesa[gbm(+)] ) evdev? ( sys-libs/mtdev ) libinput? ( dev-libs/libinput:= ) opengl? ( gles2-only? ( media-libs/libglvnd ) !gles2-only? ( media-libs/libglvnd[X?] ) ) renderdoc? ( media-gfx/renderdoc ) tslib? ( x11-libs/tslib ) widgets? ( cups? ( net-print/cups ) gtk? ( x11-libs/gdk-pixbuf:2 >=x11-libs/gtk+-3.24.41-r1:3[X?,wayland?] x11-libs/pango ) ) ) network? ( brotli? ( app-arch/brotli:= ) gssapi? ( virtual/krb5 ) libproxy? ( net-libs/libproxy ) ) sql? ( mysql? ( dev-db/mysql-connector-c:= ) oci8? ( dev-db/oracle-instantclient:=[sdk] ) odbc? ( dev-db/unixODBC ) postgres? ( dev-db/postgresql:* ) sqlite? ( dev-db/sqlite:3 ) ) " # wrt blockers: users do not always depclean regularly and outdated # dev-qt packages sometime cause runtime issues (update this when new # Qt libraries/plugins are added, and keep old for 2y+ if removed) RDEPEND=" ${COMMON_DEPEND} !=6.6.2 had related fixes, needs retesting # partially broken on llvm-musl, needs looking into but skip to have # a baseline for regressions (rest of dev-qt still passes with musl) $(usev elibc_musl ' tst_qicoimageformat tst_qimagereader tst_qimage ') # fails due to hppa's NaN handling, needs looking into (bug #914371) $(usev hppa ' tst_qcborvalue tst_qnumeric ') # note: for linux, upstream only really runs+maintains tests for amd64 # https://doc.qt.io/qt-6/supported-platforms.html ) qt6-build_src_test } src_install() { qt6-build_src_install if use test; then local delete_bins=( # need a better way to handle this apphelper clientserver copier crashingServer desktopsettingsaware_helper echo fileWriterProcess modal_helper nospace 'one space' paster qcommandlineparser_test_helper qfileopeneventexternal socketprocess syslocaleapp tst_qhashseed_helper 'two space s' write-read-write ) local delete=( # sigh "${D}${QT6_BINDIR}"/test* "${D}${QT6_LIBDIR}/objects-${CMAKE_BUILD_TYPE}"/*test* "${delete_bins[@]/#/${D}${QT6_BINDIR}/}" ) # using -f given not tracking which tests may be skipped or not rm -rf -- "${delete[@]}" || die fi }