summaryrefslogtreecommitdiff
blob: 36931e0ea9333bc9e41af63e8b4755f10c807390 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# Copyright 2021-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit qt6-build

DESCRIPTION="Cross-platform application development framework"

if [[ ${QT6_BUILD_TYPE} == release ]]; then
	KEYWORDS="~amd64"
fi

# Qt Modules
# TODO: Restore/patch xml flag support (seems fixed in 6.9999).
IUSE="+concurrent +dbus +gui +network +sql opengl +widgets zstd"
REQUIRED_USE="
	opengl? ( gui )
	widgets? ( gui )
	X? ( || ( evdev libinput ) )
"

QTGUI_IUSE="accessibility egl eglfs evdev gles2-only +jpeg +libinput tslib tuio vulkan +X"
QTNETWORK_IUSE="brotli gssapi libproxy sctp +ssl vnc"
QTSQL_IUSE="freetds mysql oci8 odbc postgres +sqlite"
IUSE+=" ${QTGUI_IUSE} ${QTNETWORK_IUSE} ${QTSQL_IUSE} cups gtk icu systemd +udev"
# QtPrintSupport = QtGui + QtWidgets enabled.
# ibus = xkbcommon + dbus, and xkbcommon needs either libinput or X
REQUIRED_USE+="
	$(printf '%s? ( gui ) ' ${QTGUI_IUSE//+/})
	$(printf '%s? ( network ) ' ${QTNETWORK_IUSE//+/})
	$(printf '%s? ( sql ) ' ${QTSQL_IUSE//+/})
	accessibility? ( dbus X )
	cups? ( gui widgets )
	eglfs? ( egl )
	gtk? ( widgets )
	gui? ( || ( eglfs X ) || ( libinput X ) )
	libinput? ( udev )
	sql? ( || ( freetds mysql oci8 odbc postgres sqlite ) )
	vnc? ( gui )
	X? ( gles2-only? ( egl ) )
"

# TODO:
# qtimageformats: mng not done yet, qtimageformats.git upstream commit 9443239c
# qtnetwork: connman, networkmanager
DEPEND="
	app-crypt/libb2
	dev-libs/double-conversion:=
	dev-libs/glib:2
	dev-libs/libpcre2:=[pcre16,unicode]
	dev-util/gtk-update-icon-cache
	media-libs/fontconfig
	>=media-libs/freetype-2.6.1:2
	>=media-libs/harfbuzz-1.6.0:=
	media-libs/tiff:0
	>=sys-apps/dbus-1.4.20
	sys-libs/zlib:=
	brotli? ( app-arch/brotli:= )
	evdev? ( sys-libs/mtdev )
	freetds? ( dev-db/freetds )
	gles2-only? ( media-libs/libglvnd )
	!gles2-only? ( media-libs/libglvnd[X] )
	gssapi? ( virtual/krb5 )
	gtk? (
		x11-libs/gtk+:3
		x11-libs/libX11
		x11-libs/pango
	)
	gui? ( media-libs/libpng:0= )
	icu? ( dev-libs/icu:= )
	!icu? ( virtual/libiconv )
	jpeg? ( media-libs/libjpeg-turbo:= )
	libinput? (
		dev-libs/libinput:=
		>=x11-libs/libxkbcommon-0.5.0
	)
	libproxy? ( net-libs/libproxy )
	mysql? ( dev-db/mysql-connector-c:= )
	oci8? ( dev-db/oracle-instantclient:=[sdk] )
	odbc? ( dev-db/unixODBC )
	postgres? ( dev-db/postgresql:* )
	sctp? ( kernel_linux? ( net-misc/lksctp-tools ) )
	sqlite? ( dev-db/sqlite:3 )
	ssl? ( dev-libs/openssl:= )
	systemd? ( sys-apps/systemd:= )
	tslib? ( >=x11-libs/tslib-1.21 )
	udev? ( virtual/libudev:= )
	vulkan? ( dev-util/vulkan-headers )
	X? (
		x11-libs/libdrm
		x11-libs/libICE
		x11-libs/libSM
		x11-libs/libX11
		>=x11-libs/libxcb-1.12:=[xkb]
		>=x11-libs/libxkbcommon-0.5.0[X]
		x11-libs/xcb-util-image
		x11-libs/xcb-util-keysyms
		x11-libs/xcb-util-renderutil
		x11-libs/xcb-util-wm
	)
	zstd? ( app-arch/zstd:= )
"
RDEPEND="${DEPEND}"

src_configure() {
	local mycmakeargs=(
		-DINSTALL_BINDIR=${QT6_BINDIR}
		-DINSTALL_INCLUDEDIR=${QT6_HEADERDIR}
		-DINSTALL_LIBDIR=${QT6_LIBDIR}
		-DINSTALL_ARCHDATADIR=${QT6_ARCHDATADIR}
		-DINSTALL_PLUGINSDIR=${QT6_PLUGINDIR}
		-DINSTALL_LIBEXECDIR=${QT6_LIBEXECDIR}
		-DINSTALL_QMLDIR=${QT6_QMLDIR}
		-DINSTALL_DATADIR=${QT6_DATADIR}
		-DINSTALL_DOCDIR=${QT6_DOCDIR}
		-DINSTALL_TRANSLATIONSDIR=${QT6_TRANSLATIONDIR}
		-DINSTALL_SYSCONFDIR=${QT6_SYSCONFDIR}
		-DINSTALL_MKSPECSDIR=${QT6_ARCHDATADIR}/mkspecs
		-DINSTALL_EXAMPLESDIR=${QT6_EXAMPLESDIR}
		-DQT_FEATURE_androiddeployqt=OFF
		$(qt_feature concurrent)
		$(qt_feature dbus)
		$(qt_feature gui)
		$(qt_feature gui testlib)
		$(qt_feature icu)
		$(qt_feature network)
		$(qt_feature sql)
		$(qt_feature systemd journald)
		$(qt_feature udev libudev)
		$(qt_feature zstd)
	)
	use gui && mycmakeargs+=(
		$(qt_feature accessibility accessibility_atspi_bridge)
		$(qt_feature egl)
		$(qt_feature eglfs eglfs_egldevice)
		$(qt_feature eglfs eglfs_gbm)
		$(qt_feature evdev)
		$(qt_feature evdev mtdev)
		-DQT_FEATURE_gif=ON
		$(qt_feature jpeg)
		$(qt_feature opengl)
		$(qt_feature gles2-only opengles2)
		$(qt_feature libinput)
		$(qt_feature tslib)
		$(qt_feature tuio tuiotouch)
		$(qt_feature vulkan)
		$(qt_feature widgets)
		$(qt_feature X xcb)
		$(qt_feature X xcb_xlib)
	)
	use widgets && mycmakeargs+=(
		$(qt_feature cups)
		$(qt_feature gtk gtk3)
	)
	if use libinput || use X; then
		mycmakeargs+=( -DQT_FEATURE_xkbcommon=ON )
	fi
	use network && mycmakeargs+=(
		$(qt_feature brotli)
		$(qt_feature gssapi)
		$(qt_feature libproxy)
		$(qt_feature sctp)
		$(qt_feature ssl openssl)
		$(qt_feature vnc)
	)
	use sql && mycmakeargs+=(
		$(qt_feature freetds sql_tds)
		$(qt_feature mysql sql_mysql)
		$(qt_feature oci8 sql_oci)
		$(qt_feature odbc sql_odbc)
		$(qt_feature postgres sql_psql)
		$(qt_feature sqlite sql_sqlite)
		$(qt_feature sqlite system_sqlite)
	)

	qt6-build_src_configure
}