/[gentoo-x86]/eclass/qt4-build.eclass
Gentoo

Diff of /eclass/qt4-build.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.101 Revision 1.118
1# Copyright 1999-2011 Gentoo Foundation 1# Copyright 1999-2012 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.101 2011/11/19 20:52:50 pesa Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.118 2012/02/09 22:58:36 pesa Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Qt herd <qt@gentoo.org> 7# Qt herd <qt@gentoo.org>
8# @BLURB: Eclass for Qt4 split ebuilds. 8# @BLURB: Eclass for Qt4 split ebuilds.
12inherit base eutils multilib toolchain-funcs flag-o-matic versionator 12inherit base eutils multilib toolchain-funcs flag-o-matic versionator
13 13
14MY_PV=${PV/_/-} 14MY_PV=${PV/_/-}
15MY_P=qt-everywhere-opensource-src-${MY_PV} 15MY_P=qt-everywhere-opensource-src-${MY_PV}
16 16
17HOMEPAGE="http://qt.nokia.com/" 17HOMEPAGE="http://qt.nokia.com/ http://qt-project.org/"
18SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz" 18SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
19LICENSE="|| ( LGPL-2.1 GPL-3 )" 19LICENSE="|| ( LGPL-2.1 GPL-3 )"
20 20
21IUSE="aqua debug pch" 21IUSE="aqua debug pch"
22 22
66 66
67S=${WORKDIR}/${MY_P} 67S=${WORKDIR}/${MY_P}
68 68
69# @FUNCTION: qt4-build_pkg_setup 69# @FUNCTION: qt4-build_pkg_setup
70# @DESCRIPTION: 70# @DESCRIPTION:
71# Sets up S, MY_P, PATH, and LD_LIBRARY_PATH 71# Sets up PATH and LD_LIBRARY_PATH.
72qt4-build_pkg_setup() { 72qt4-build_pkg_setup() {
73 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= 73 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX=
74 74
75 # Protect users by not allowing downgrades between releases 75 # Protect users by not allowing downgrades between releases
76 # Downgrading revisions within the same release should be allowed 76 # Downgrading revisions within the same release should be allowed
109 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm 109 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm
110 ${QT4_EXTRACT_DIRECTORIES}" 110 ${QT4_EXTRACT_DIRECTORIES}"
111 fi 111 fi
112 112
113 # Make sure ebuilds use the required EAPI 113 # Make sure ebuilds use the required EAPI
114 if [[ ${EAPI} != [23] ]]; then 114 if [[ ${EAPI} != [234] ]]; then
115 eerror "The qt4-build eclass requires EAPI=2 or EAPI=3, but this ebuild is using" 115 eerror "The qt4-build eclass requires EAPI 2,3 or 4 but this ebuild is using"
116 eerror "EAPI=${EAPI:-0}. The ebuild author or editor failed. This ebuild needs to be" 116 eerror "EAPI=${EAPI:-0}. The ebuild author or editor failed. This ebuild needs to be"
117 eerror "fixed. Using qt4-build eclass without EAPI=2 or EAPI=3 will fail." 117 eerror "fixed. Using qt4-build eclass without EAPI 2,3 or 4 will fail."
118 die "qt4-build eclass requires EAPI=2 or EAPI=3" 118 die "qt4-build eclass requires EAPI 2,3 or 4"
119 fi 119 fi
120 120
121 if ! version_is_at_least 4.1 $(gcc-version); then 121 if ! version_is_at_least 4.1 $(gcc-version); then
122 ewarn "Using a GCC version lower than 4.1 is not supported!" 122 ewarn "Using a GCC version lower than 4.1 is not supported!"
123 fi 123 fi
124} 124}
125 125
126# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES 126# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
127# @DESCRIPTION: 127# @DESCRIPTION:
128# Arguments for build_target_directories. Takes the directories, in which the 128# Arguments for build_target_directories. Takes the directories in which the
129# code should be compiled. This is a space-separated list 129# code should be compiled. This is a space-separated list.
130 130
131# @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES 131# @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES
132# @DESCRIPTION: 132# @DESCRIPTION:
133# Space separated list including the directories that will be extracted from Qt 133# Space-separated list including the directories that will be extracted from
134# tarball 134# Qt tarball.
135 135
136# @FUNCTION: qt4-build_src_unpack 136# @FUNCTION: qt4-build_src_unpack
137# @DESCRIPTION: 137# @DESCRIPTION:
138# Unpacks the sources 138# Unpacks the sources.
139qt4-build_src_unpack() { 139qt4-build_src_unpack() {
140 setqtenv 140 setqtenv
141 local unpack_p="${MY_P}" 141
142 case "${PV}" in 142 local tarball="${MY_P}.tar.gz" target= targets=
143 4.8.0_*)
144 unpack_p="qt-everywhere-opensource-src-${PV/_*}"
145 ;;
146 esac
147 local target targets=
148 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \ 143 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \
149 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \ 144 src/{qbase,qt_targets,qt_install}.pri bin config.tests \
150 ${QT4_EXTRACT_DIRECTORIES}; do 145 mkspecs qmake ${QT4_EXTRACT_DIRECTORIES}
146 do
151 targets+=" ${unpack_p}/${target}" 147 targets+="${MY_P}/${target} "
152 done 148 done
153 149
150 ebegin "Unpacking parts of ${tarball}:" ${targets//${MY_P}\/}
154 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 151 tar -xzf "${DISTDIR}/${tarball}" ${targets}
155 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die 152 eend $? || die "failed to unpack"
156 case "${PV}" in
157 4.8.0_*)
158 mv ${WORKDIR}/qt-everywhere-opensource-src-${PV/_*} \
159 ${WORKDIR}/qt-everywhere-opensource-src-${MY_PV}
160 ;;
161 esac
162} 153}
163 154
164# @ECLASS-VARIABLE: PATCHES 155# @ECLASS-VARIABLE: PATCHES
156# @DEFAULT_UNSET
165# @DESCRIPTION: 157# @DESCRIPTION:
166# In case you have patches to apply, specify them in PATCHES variable. Make sure 158# PATCHES array variable containing all various patches to be applied.
167# to specify the full path. This variable is necessary for src_prepare phase. 159# This variable is expected to be defined in global scope of ebuild.
168# example: 160# Make sure to specify the full path. This variable is utilised in
169# PATCHES="${FILESDIR}"/mypatch.patch 161# src_unpack/src_prepare phase, based on EAPI.
170# ${FILESDIR}"/mypatch2.patch"
171# 162#
163# @CODE
164# PATCHES=( "${FILESDIR}/mypatch.patch"
165# "${FILESDIR}/patches_folder/" )
166# @CODE
172 167
173# @FUNCTION: qt4-build_src_prepare 168# @FUNCTION: qt4-build_src_prepare
174# @DESCRIPTION: 169# @DESCRIPTION:
175# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix 170# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix
176# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf. 171# the build system in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified in /etc/make.conf.
177qt4-build_src_prepare() { 172qt4-build_src_prepare() {
178 setqtenv 173 setqtenv
179 cd "${S}" 174 cd "${S}"
180
181 # fix qt 4.7 regression that skips -fvisibility=hidden
182 if version_is_at_least "4.7.0_beta1"; then
183 sed -e "s/^gcc|g++)/*gcc|*g++)/" \
184 -i config.tests/unix/fvisibility.test ||
185 die "visibility fixing sed failed"
186 fi
187 175
188 if version_is_at_least "4.7"; then 176 if version_is_at_least "4.7"; then
189 # fix libX11 dependency on non X packages 177 # fix libX11 dependency on non X packages
190 local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns" 178 local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns"
191 has ${PN} ${nolibx11_pkgs} && qt_nolibx11 179 has ${PN} ${nolibx11_pkgs} && qt_nolibx11
197 # provide a proper macx-g++-64 185 # provide a proper macx-g++-64
198 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) 186 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir)
199 187
200 sed -e '/^CONFIG/s:app_bundle::' \ 188 sed -e '/^CONFIG/s:app_bundle::' \
201 -e '/^CONFIG/s:plugin_no_soname:plugin_with_soname absolute_library_soname:' \ 189 -e '/^CONFIG/s:plugin_no_soname:plugin_with_soname absolute_library_soname:' \
202 -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed failed" 190 -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
203 fi 191 fi
204 192
205 if [[ ${PN} != qt-core ]]; then 193 if [[ ${PN} != qt-core ]]; then
206 skip_qmake_build 194 skip_qmake_build
207 skip_project_generation 195 skip_project_generation
232 if [[ $(gcc-major-version) -lt 4 ]] ; then 220 if [[ $(gcc-major-version) -lt 4 ]] ; then
233 ewarn "Appending -fno-stack-protector to CXXFLAGS" 221 ewarn "Appending -fno-stack-protector to CXXFLAGS"
234 append-cxxflags -fno-stack-protector 222 append-cxxflags -fno-stack-protector
235 # Bug 253127 223 # Bug 253127
236 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ 224 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \
237 -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed" 225 -i mkspecs/common/g++.conf || die
238 fi 226 fi
239 227
240 # Bug 261632 228 # Bug 261632
241 if use ppc64; then 229 if use ppc64; then
242 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" 230 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
243 append-flags -mminimal-toc 231 append-flags -mminimal-toc
244 fi 232 fi
245 233
246 # Bug 282984 && Bug 295530 234 # Respect CC, CXX, {C,CXX,LD}FLAGS in .qmake.cache
247 sed -e "s:\(^SYSTEM_VARIABLES\):CC=\"$(tc-getCC)\"\nCXX=\"$(tc-getCXX)\"\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \ 235 sed -e "/^SYSTEM_VARIABLES=/i \
248 -i configure || die "sed qmake compilers failed" 236 CC='$(tc-getCC)'\n\
237 CXX='$(tc-getCXX)'\n\
238 CFLAGS='${CFLAGS}'\n\
239 CXXFLAGS='${CXXFLAGS}'\n\
240 LDFLAGS='${LDFLAGS}'\n" \
241 -i configure \
242 || die "sed SYSTEM_VARIABLES failed"
249 243
250 # Bug 321335 244 # Respect CC, CXX, LINK and *FLAGS in config.tests
251 if version_is_at_least 4.6; then 245 find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \
252 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \ 246 sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \
253 xargs -0 \ 247 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \
254 sed -e "s:\(\$MAKE\):\1 CC=\"$(tc-getCC)\" CXX=\"$(tc-getCXX)\" LD=\"$(tc-getCXX)\" LINK=\"$(tc-getCXX)\":g" \ 248 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \
255 -i || die "sed test compilers failed" 249 || die "sed config.tests failed"
256 fi 250
251 # Strip predefined CFLAGS from mkspecs (bug 312689)
252 sed -i -e '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf || die
257 253
258 # Bug 172219 254 # Bug 172219
259 sed -e "s:X11R6/::" \ 255 sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
260 -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed"
261 256
262 if [[ ${CHOST} == *-darwin* ]]; then 257 if [[ ${CHOST} == *-darwin* ]]; then
263 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib 258 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib
264 # crippled (by design) :/ 259 # crippled (by design) :/
260 sed \
265 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 261 -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
266 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 262 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
267 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \ 263 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \
268 -e "s:-arch\s\w*::g" \ 264 -e "s:-arch\s\w*::g" \
269 -i mkspecs/common/mac-g++.conf || die "sed mkspecs/common/mac-g++.conf failed" 265 -i mkspecs/common/mac-g++.conf \
266 || die "sed mkspecs/common/mac-g++.conf failed"
270 267
271 # Fix configure's -arch settings that appear in qmake/Makefile and also 268 # Fix configure's -arch settings that appear in qmake/Makefile and also
272 # fix arch handling (automagically duplicates our -arch arg and breaks 269 # fix arch handling (automagically duplicates our -arch arg and breaks
273 # pch). Additionally disable Xarch support. 270 # pch). Additionally disable Xarch support.
274 sed \ 271 sed \
279 -e "s:-arch \$i::" \ 276 -e "s:-arch \$i::" \
280 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \ 277 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \
281 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \ 278 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \
282 -e "s:-Xarch_x86_64::g" \ 279 -e "s:-Xarch_x86_64::g" \
283 -e "s:-Xarch_ppc64::g" \ 280 -e "s:-Xarch_ppc64::g" \
284 -i configure mkspecs/common/mac-g++.conf || die "sed configure failed" 281 -i configure mkspecs/common/mac-g++.conf \
282 || die "sed -arch/-Xarch failed"
285 283
286 # On Snow Leopard don't fall back to 10.5 deployment target. 284 # On Snow Leopard don't fall back to 10.5 deployment target.
287 if [[ ${CHOST} == *-apple-darwin10 ]] ; then 285 if [[ ${CHOST} == *-apple-darwin10 ]] ; then
288 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \ 286 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \
289 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \ 287 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \
290 -i configure mkspecs/common/mac-g++.conf || die "sed configure failed" 288 -i configure mkspecs/common/mac-g++.conf \
289 || die "sed deployment target failed"
291 fi 290 fi
292 fi 291 fi
293 292
294 # this one is needed for all systems with a separate -liconv, apart from 293 # this one is needed for all systems with a separate -liconv, apart from
295 # Darwin, for which the sources already cater for -liconv 294 # Darwin, for which the sources already cater for -liconv
296 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then 295 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then
297 sed \ 296 sed -e 's|mac:\(LIBS += -liconv\)|\1|g' \
298 -e "s|mac:LIBS += -liconv|LIBS += -liconv|g" \
299 -i config.tests/unix/iconv/iconv.pro \ 297 -i config.tests/unix/iconv/iconv.pro \
300 || die "sed on iconv.pro failed" 298 || die "sed iconv.pro failed"
301 fi 299 fi
302 300
303 # we need some patches for Solaris 301 # we need some patches for Solaris
304 sed -i \
305 -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \ 302 sed -i -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \
306 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 303 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
307 # use GCC over SunStudio 304 # use GCC over SunStudio
308 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die 305 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
309 # don't flirt with non-Prefix stuff, we're quite possessive 306 # do not flirt with non-Prefix stuff, we're quite possessive
310 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ 307 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
311 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 308 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
312 # strip predefined CFLAGS from qmake ( bug #312689 )
313 sed -i '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf
314 309
315 base_src_prepare 310 base_src_prepare
316} 311}
317 312
318# @FUNCTION: qt4-build_src_configure 313# @FUNCTION: qt4-build_src_configure
350 myconf+=" -cocoa -framework" 345 myconf+=" -cocoa -framework"
351 346
352 # We are crazy and build cocoa + qt3support :-) 347 # We are crazy and build cocoa + qt3support :-)
353 if use qt3support; then 348 if use qt3support; then
354 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \ 349 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \
355 -i configure 350 -i configure || die
356 fi 351 fi
357 352
358 # We need the source's headers, not the installed ones. 353 # We need the source's headers, not the installed ones.
359 myconf+=" -I${S}/include" 354 myconf+=" -I${S}/include"
360 355
365 # freetype2 include dir is non-standard, thus include it on configure 360 # freetype2 include dir is non-standard, thus include it on configure
366 # use -I from configure 361 # use -I from configure
367 myconf+=" $(pkg-config --cflags freetype2)" 362 myconf+=" $(pkg-config --cflags freetype2)"
368 fi 363 fi
369 364
370 # Disable SSE4.x, since auto-detection is currently broken
371 # Upstream bug http://bugreports.qt.nokia.com/browse/QTBUG-13623
372 [[ ${PV} == "4.7.1" ]] && myconf+=" -no-sse4.1 -no-sse4.2"
373
374 echo ./configure ${myconf} 365 echo ./configure ${myconf}
375 ./configure ${myconf} || die "./configure failed" 366 ./configure ${myconf} || die "./configure failed"
376 myconf="" 367 myconf=""
377 368
378 prepare_directories ${QT4_TARGET_DIRECTORIES} 369 prepare_directories ${QT4_TARGET_DIRECTORIES}
389 380
390# @FUNCTION: qt4-build_src_test 381# @FUNCTION: qt4-build_src_test
391# @DESCRIPTION: 382# @DESCRIPTION:
392# Runs tests only in target directories. 383# Runs tests only in target directories.
393qt4-build_src_test() { 384qt4-build_src_test() {
385 # QtMultimedia does not have any test suite (bug #332299)
386 [[ ${PN} == "qt-multimedia" ]] && return
387
394 for dir in ${QT4_TARGET_DIRECTORIES}; do 388 for dir in ${QT4_TARGET_DIRECTORIES}; do
395 emake -j1 check -C ${dir} 389 emake -j1 check -C ${dir}
396 done 390 done
397} 391}
398 392
399# @FUNCTION: fix_includes 393# @FUNCTION: fix_includes
400# @DESCRIPTION: 394# @DESCRIPTION:
401# For MacOSX we need to add some symlinks when frameworks are 395# For MacOS X we need to add some symlinks when frameworks are
402# being used, to avoid complications with some more or less stupid packages. 396# being used, to avoid complications with some more or less stupid packages.
403fix_includes() { 397fix_includes() {
404 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then 398 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
405 # Some packages tend to include <Qt/...> 399 # Some packages tend to include <Qt/...>
406 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt 400 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt
407 401
408 # Fake normal headers when frameworks are installed... eases life later on 402 # Fake normal headers when frameworks are installed... eases life later on
409 local dest f 403 local dest f h
410 for frw in "${D}${QTLIBDIR}"/*.framework; do 404 for frw in "${D}${QTLIBDIR}"/*.framework; do
411 [[ -e "${frw}"/Headers ]] || continue 405 [[ -e "${frw}"/Headers ]] || continue
412 f=$(basename ${frw}) 406 f=$(basename ${frw})
413 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} 407 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework}
414 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" 408 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}"
433 install_qconfigs 427 install_qconfigs
434 fix_library_files 428 fix_library_files
435 fix_includes 429 fix_includes
436 430
437 # remove .la files since we are building only shared Qt libraries 431 # remove .la files since we are building only shared Qt libraries
438 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm 432 find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f
439} 433}
440 434
441# @FUNCTION: setqtenv 435# @FUNCTION: setqtenv
436# @INTERNAL
442setqtenv() { 437setqtenv() {
443 # Set up installation directories 438 # Set up installation directories
444 QTBASEDIR=${EPREFIX}/usr/$(get_libdir)/qt4
445 QTPREFIXDIR=${EPREFIX}/usr 439 QTPREFIXDIR=${EPREFIX}/usr
446 QTBINDIR=${EPREFIX}/usr/bin 440 QTBINDIR=${EPREFIX}/usr/bin
447 QTLIBDIR=${EPREFIX}/usr/$(get_libdir)/qt4 441 QTLIBDIR=${EPREFIX}/usr/$(get_libdir)/qt4
448 QMAKE_LIBDIR_QT=${QTLIBDIR}
449 QTPCDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig 442 QTPCDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig
450 QTDATADIR=${EPREFIX}/usr/share/qt4
451 QTDOCDIR=${EPREFIX}/usr/share/doc/qt-${PV} 443 QTDOCDIR=${EPREFIX}/usr/share/doc/qt-${PV}
452 QTHEADERDIR=${EPREFIX}/usr/include/qt4 444 QTHEADERDIR=${EPREFIX}/usr/include/qt4
453 QTPLUGINDIR=${QTLIBDIR}/plugins 445 QTPLUGINDIR=${QTLIBDIR}/plugins
446 QTIMPORTDIR=${QTLIBDIR}/imports
447 QTDATADIR=${EPREFIX}/usr/share/qt4
448 QTTRANSDIR=${QTDATADIR}/translations
454 QTSYSCONFDIR=${EPREFIX}/etc/qt4 449 QTSYSCONFDIR=${EPREFIX}/etc/qt4
455 QTTRANSDIR=${QTDATADIR}/translations
456 QTEXAMPLESDIR=${QTDATADIR}/examples 450 QTEXAMPLESDIR=${QTDATADIR}/examples
457 QTDEMOSDIR=${QTDATADIR}/demos 451 QTDEMOSDIR=${QTDATADIR}/demos
452 QMAKE_LIBDIR_QT=${QTLIBDIR}
458 QT_INSTALL_PREFIX=${EPREFIX}/usr/$(get_libdir)/qt4 453 QT_INSTALL_PREFIX=${EPREFIX}/usr/$(get_libdir)/qt4
454
459 PLATFORM=$(qt_mkspecs_dir) 455 PLATFORM=$(qt_mkspecs_dir)
460 456
461 unset QMAKESPEC 457 unset QMAKESPEC
462} 458}
463 459
464# @FUNCTION: standard_configure_options 460# @FUNCTION: standard_configure_options
461# @INTERNAL
465# @DESCRIPTION: 462# @DESCRIPTION:
466# Sets up some standard configure options, like libdir (if necessary), whether 463# Sets up some standard configure options, like libdir (if necessary), whether
467# debug info is wanted or not. 464# debug info is wanted or not.
468standard_configure_options() { 465standard_configure_options() {
469 local myconf= 466 local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
467 -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR}
468 $(version_is_at_least 4.7 && echo -importdir ${QTIMPORTDIR})
469 -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} -sysconfdir ${QTSYSCONFDIR}
470 -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR}
471 -opensource -confirm-license -shared -fast -largefile -stl -verbose
472 -platform $(qt_mkspecs_dir) -nomake examples -nomake demos"
470 473
471 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)" 474 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)"
472 475
473 # Disable visibility explicitly if gcc version isn't 4 476 # debug/release
474 if [[ $(gcc-major-version) -lt 4 ]]; then
475 myconf+=" -no-reduce-exports"
476 fi
477
478 # precompiled headers doesn't work on hardened, where the flag is masked.
479 myconf+=" $(qt_use pch)"
480
481 if use debug; then 477 if use debug; then
482 myconf+=" -debug" 478 myconf+=" -debug"
483 else 479 else
484 myconf+=" -release" 480 myconf+=" -release"
485 fi 481 fi
486 myconf+=" -no-separate-debug-info" 482 myconf+=" -no-separate-debug-info"
487 483
484 # exceptions USE flag
485 local exceptions="-exceptions"
486 in_iuse exceptions && exceptions="$(qt_use exceptions)"
487 myconf+=" ${exceptions}"
488
489 # disable RPATH on Qt >= 4.8 (bug 380415)
490 version_is_at_least 4.8 && myconf+=" -no-rpath"
491
492 # precompiled headers don't work on hardened, where the flag is masked
493 myconf+=" $(qt_use pch)"
494
495 # -reduce-relocations
496 # This flag seems to introduce major breakage to applications,
497 # mostly to be seen as a core dump with the message "QPixmap: Must
498 # construct a QApplication before a QPaintDevice" on Solaris.
499 # -- Daniel Vergien
500 [[ ${CHOST} != *-solaris* ]] && myconf+=" -reduce-relocations"
501
488 use aqua && myconf+=" -no-framework" 502 use aqua && myconf+=" -no-framework"
489 503
490 # ARCH is set on Gentoo. Qt now falls back to generic on an unsupported 504 # ARCH is set on Gentoo. Qt now falls back to generic on an unsupported
491 # $(tc-arch). Therefore we convert it to supported values. 505 # $(tc-arch). Therefore we convert it to supported values.
492 case "$(tc-arch)" in 506 case "$(tc-arch)" in
493 amd64|x64-*) myconf+=" -arch x86_64" ;; 507 amd64|x64-*) myconf+=" -arch x86_64" ;;
494 ppc-macos) myconf+=" -arch ppc" ;; 508 ppc-macos) myconf+=" -arch ppc" ;;
495 ppc|ppc64|ppc-*) myconf+=" -arch powerpc" ;; 509 ppc|ppc64|ppc-*) myconf+=" -arch powerpc" ;;
496 sparc|sparc-*) myconf+=" -arch sparc" ;; 510 sparc|sparc-*|sparc64-*) myconf+=" -arch sparc" ;;
497 x86-macos) myconf+=" -arch x86" ;; 511 x86-macos) myconf+=" -arch x86" ;;
498 x86|x86-*) myconf+=" -arch i386" ;; 512 x86|x86-*) myconf+=" -arch i386" ;;
499 alpha|arm|ia64|mips|s390|sparc) myconf+=" -arch $(tc-arch)" ;; 513 alpha|arm|ia64|mips|s390) myconf+=" -arch $(tc-arch)" ;;
500 hppa|sh) myconf+=" -arch generic" ;; 514 hppa|sh) myconf+=" -arch generic" ;;
501 *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;; 515 *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;;
502 esac 516 esac
503 517
504 # exceptions USE flag
505 local exceptions="-exceptions"
506 in_iuse exceptions && exceptions="$(qt_use exceptions)"
507
508 # note about -reduce-relocations:
509 # That flag seems to introduce major breakage to applications,
510 # mostly to be seen as a core dump with the message "QPixmap: Must
511 # construct a QApplication before a QPaintDevice" on Solaris
512 # -- Daniel Vergien
513 [[ ${CHOST} != *-solaris* ]] && myconf+=" -reduce-relocations"
514
515 myconf+=" -platform $(qt_mkspecs_dir) -stl -verbose -largefile -confirm-license
516 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
517 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
518 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
519 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR}
520 -demosdir ${QTDEMOSDIR} -silent -fast -opensource
521 ${exceptions}
522 -nomake examples -nomake demos"
523
524 echo "${myconf}" 518 echo "${myconf}"
525} 519}
526 520
527# @FUNCTION: prepare_directories 521# @FUNCTION: prepare_directories
528# @USAGE: < directories > 522# @USAGE: < directories >
523# @INTERNAL
529# @DESCRIPTION: 524# @DESCRIPTION:
530# Generates makefiles for the directories set in $QT4_TARGET_DIRECTORIES 525# Generates Makefiles for the given list of directories.
531prepare_directories() { 526prepare_directories() {
532 for x in "$@"; do 527 for x in "$@"; do
533 pushd "${S}"/${x} >/dev/null 528 pushd "${S}"/${x} >/dev/null || die
534 einfo "Running qmake in: ${x}" 529 einfo "Running qmake in: ${x}"
535 # avoid running over the maximum argument number, bug #299810 530 # avoid running over the maximum argument number, bug #299810
536 { 531 {
537 echo "${S}"/mkspecs/common/*.conf 532 echo "${S}"/mkspecs/common/*.conf
538 find "${S}" -name '*.pr[io]' 533 find "${S}" -name '*.pr[io]'
539 } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die 534 } | xargs sed -i \
535 -e "s:\$\$\[QT_INSTALL_LIBS\]:${QTLIBDIR}:g" \
536 -e "s:\$\$\[QT_INSTALL_PLUGINS\]:${QTPLUGINDIR}:g" \
537 || die
540 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" 538 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
541 popd >/dev/null 539 popd >/dev/null || die
542 done 540 done
543} 541}
544 542
545 543
546# @FUNCTION: build_directories 544# @FUNCTION: build_directories
547# @USAGE: < directories > 545# @USAGE: < directories >
546# @INTERNAL
548# @DESCRIPTION: 547# @DESCRIPTION:
549# Compiles the code in $QT4_TARGET_DIRECTORIES 548# Compiles the code in the given list of directories.
550build_directories() { 549build_directories() {
551 for x in "$@"; do 550 for x in "$@"; do
552 pushd "${S}"/${x} >/dev/null 551 pushd "${S}"/${x} >/dev/null || die
553 emake CC="$(tc-getCC)" \ 552 emake CC="$(tc-getCC)" \
554 CXX="$(tc-getCXX)" \ 553 CXX="$(tc-getCXX)" \
555 LINK="$(tc-getCXX)" || die "emake failed" 554 LINK="$(tc-getCXX)" || die "emake failed"
556 popd >/dev/null 555 popd >/dev/null || die
557 done 556 done
558} 557}
559 558
560# @FUNCTION: install_directories 559# @FUNCTION: install_directories
561# @USAGE: < directories > 560# @USAGE: < directories >
561# @INTERNAL
562# @DESCRIPTION: 562# @DESCRIPTION:
563# run emake install in the given directories, which are separated by spaces 563# Runs emake install in the given directories, which are separated by spaces.
564install_directories() { 564install_directories() {
565 for x in "$@"; do 565 for x in "$@"; do
566 pushd "${S}"/${x} >/dev/null || die "Can't pushd ${S}/${x}" 566 pushd "${S}"/${x} >/dev/null || die
567 emake INSTALL_ROOT="${D}" install || die "emake install failed" 567 emake INSTALL_ROOT="${D}" install || die "emake install failed"
568 popd >/dev/null || die "Can't popd from ${S}/${x}" 568 popd >/dev/null || die
569 done 569 done
570} 570}
571 571
572# @ECLASS-VARIABLE: QCONFIG_ADD 572# @ECLASS-VARIABLE: QCONFIG_ADD
573# @DESCRIPTION: 573# @DESCRIPTION:
583# @DESCRIPTION: 583# @DESCRIPTION:
584# List variables that should be defined at the top of QtCore/qconfig.h 584# List variables that should be defined at the top of QtCore/qconfig.h
585: ${QCONFIG_DEFINE:=} 585: ${QCONFIG_DEFINE:=}
586 586
587# @FUNCTION: install_qconfigs 587# @FUNCTION: install_qconfigs
588# @INTERNAL
588# @DESCRIPTION: 589# @DESCRIPTION:
589# Install gentoo-specific mkspecs configurations 590# Install gentoo-specific mkspecs configurations.
590install_qconfigs() { 591install_qconfigs() {
591 local x 592 local x
592 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then 593 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
593 for x in QCONFIG_ADD QCONFIG_REMOVE; do 594 for x in QCONFIG_ADD QCONFIG_REMOVE; do
594 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri 595 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
605 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed" 606 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed"
606 fi 607 fi
607} 608}
608 609
609# @FUNCTION: generate_qconfigs 610# @FUNCTION: generate_qconfigs
611# @INTERNAL
610# @DESCRIPTION: 612# @DESCRIPTION:
611# Generates gentoo-specific configurations 613# Generates gentoo-specific qconfig.{h,pri}.
612generate_qconfigs() { 614generate_qconfigs() {
613 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then 615 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then
614 local x qconfig_add qconfig_remove qconfig_new 616 local x qconfig_add qconfig_remove qconfig_new
615 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do 617 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do
616 [[ -f ${x} ]] || continue 618 [[ -f ${x} ]] || continue
665 fi 667 fi
666} 668}
667 669
668# @FUNCTION: qt4-build_pkg_postrm 670# @FUNCTION: qt4-build_pkg_postrm
669# @DESCRIPTION: 671# @DESCRIPTION:
670# Generate configurations when the package is completely removed 672# Regenerate configuration when the package is completely removed.
671qt4-build_pkg_postrm() { 673qt4-build_pkg_postrm() {
672 generate_qconfigs 674 generate_qconfigs
673} 675}
674 676
675# @FUNCTION: qt4-build_pkg_postinst 677# @FUNCTION: qt4-build_pkg_postinst
676# @DESCRIPTION: 678# @DESCRIPTION:
677# Generate configuration, plus throws a message about possible 679# Regenerate configuration, plus throw a message about possible
678# breakages and proposed solutions. 680# breakages and proposed solutions.
679qt4-build_pkg_postinst() { 681qt4-build_pkg_postinst() {
680 generate_qconfigs 682 generate_qconfigs
681} 683}
682 684
683# @FUNCTION: skip_qmake_build 685# @FUNCTION: skip_qmake_build
686# @INTERNAL
684# @DESCRIPTION: 687# @DESCRIPTION:
685# Don't need to build qmake, as it's already installed from qt-core 688# Patches configure to skip qmake compilation, as it's already installed by qt-core.
686skip_qmake_build() { 689skip_qmake_build() {
687 # Don't need to build qmake, as it's already installed from qt-core
688 sed -i -e "s:if true:if false:g" "${S}"/configure || die "sed failed" 690 sed -i -e "s:if true:if false:g" "${S}"/configure || die
689} 691}
690 692
691# @FUNCTION: skip_project_generation 693# @FUNCTION: skip_project_generation
694# @INTERNAL
692# @DESCRIPTION: 695# @DESCRIPTION:
693# Exit the script early by throwing in an exit before all of the .pro files are scanned 696# Exit the script early by throwing in an exit before all of the .pro files are scanned.
694skip_project_generation() { 697skip_project_generation() {
695 # Exit the script early by throwing in an exit before all of the .pro files are scanned
696 sed -e "s:echo \"Finding:exit 0\n\necho \"Finding:g" \ 698 sed -i -e "s:echo \"Finding:exit 0\n\necho \"Finding:g" "${S}"/configure || die
697 -i "${S}"/configure || die "sed failed"
698} 699}
699 700
700# @FUNCTION: symlink_binaries_to_buildtree 701# @FUNCTION: symlink_binaries_to_buildtree
702# @INTERNAL
701# @DESCRIPTION: 703# @DESCRIPTION:
702# Symlink generated binaries to buildtree so they can be used during compilation 704# Symlinks generated binaries to buildtree, so they can be used during compilation time.
703# time
704symlink_binaries_to_buildtree() { 705symlink_binaries_to_buildtree() {
705 for bin in qmake moc uic rcc; do 706 for bin in qmake moc uic rcc; do
706 ln -s "${QTBINDIR}"/${bin} "${S}"/bin/ || die "symlinking ${bin} to ${S}/bin failed" 707 ln -s "${QTBINDIR}"/${bin} "${S}"/bin/ || die "symlinking ${bin} to ${S}/bin failed"
707 done 708 done
708} 709}
709 710
710# @FUNCTION: fix_library_files 711# @FUNCTION: fix_library_files
712# @INTERNAL
711# @DESCRIPTION: 713# @DESCRIPTION:
712# Fixes the pathes in *.la, *.prl, *.pc, as they are wrong due to sandbox and 714# Fixes the paths in *.la, *.prl, *.pc, as they are wrong due to sandbox and
713# moves the *.pc-files into the pkgconfig directory 715# moves the *.pc files into the pkgconfig directory.
714fix_library_files() { 716fix_library_files() {
717 local libfile
715 for libfile in "${D}"/${QTLIBDIR}/{*.la,*.prl,pkgconfig/*.pc}; do 718 for libfile in "${D}"/${QTLIBDIR}/{*.la,*.prl,pkgconfig/*.pc}; do
716 if [[ -e ${libfile} ]]; then 719 if [[ -e ${libfile} ]]; then
717 sed -i -e "s:${S}/lib:${QTLIBDIR}:g" ${libfile} || die "sed on ${libfile} failed" 720 sed -i -e "s:${S}/lib:${QTLIBDIR}:g" ${libfile} || die "sed on ${libfile} failed"
718 fi 721 fi
719 done 722 done
720 723
721 # pkgconfig files refer to WORKDIR/bin as the moc and uic locations. Fix: 724 # pkgconfig files refer to WORKDIR/bin as the moc and uic locations
722 for libfile in "${D}"/${QTLIBDIR}/pkgconfig/*.pc; do 725 for libfile in "${D}"/${QTLIBDIR}/pkgconfig/*.pc; do
723 if [[ -e ${libfile} ]]; then 726 if [[ -e ${libfile} ]]; then
724 sed -i -e "s:${S}/bin:${QTBINDIR}:g" ${libfile} || die "sed failed" 727 sed -i -e "s:${S}/bin:${QTBINDIR}:g" ${libfile} || die "sed on ${libfile} failed"
725 728
726 # Move .pc files into the pkgconfig directory 729 # Move .pc files into the pkgconfig directory
727 dodir ${QTPCDIR#${EPREFIX}} 730 dodir ${QTPCDIR#${EPREFIX}}
728 mv ${libfile} "${D}"/${QTPCDIR}/ \ 731 mv ${libfile} "${D}"/${QTPCDIR}/ || die "moving ${libfile} to ${D}/${QTPCDIR}/ failed"
729 || die "moving ${libfile} to ${D}/${QTPCDIR}/ failed"
730 fi 732 fi
731 done 733 done
732 734
733 # Don't install an empty directory 735 # Don't install an empty directory
734 rmdir "${D}"/${QTLIBDIR}/pkgconfig 736 rmdir "${D}"/${QTLIBDIR}/pkgconfig
735} 737}
736 738
737# @FUNCTION: qt_use 739# @FUNCTION: qt_use
738# @USAGE: < flag > [ feature ] [ enableval ] 740# @USAGE: < flag > [ feature ] [ enableval ]
739# @DESCRIPTION: 741# @DESCRIPTION:
740# This will echo "${enableval}-${feature}" if <flag> is enabled, or 742# This will echo "-${enableval}-${feature}" if <flag> is enabled, or
741# "-no-${feature} if the flag is disabled. If [feature] is not specified <flag> 743# "-no-${feature}" if it's disabled. If [feature] is not specified, <flag>
742# will be used for that. If [enableval] is not specified, it omits the 744# will be used for that. If [enableval] is not specified, it omits the
743# assignment-part 745# "-${enableval}" part.
744qt_use() { 746qt_use() {
745 local flag=$1 747 use "$1" && echo "${3:+-$3}-${2:-$1}" || echo "-no-${2:-$1}"
746 local feature=$1
747 local enableval=
748
749 [[ -n $2 ]] && feature=$2
750 [[ -n $3 ]] && enableval=-$3
751
752 if use ${flag}; then
753 echo "${enableval}-${feature}"
754 else
755 echo "-no-${feature}"
756 fi
757} 748}
758 749
759# @FUNCTION: qt_mkspecs_dir 750# @FUNCTION: qt_mkspecs_dir
760# @RETURN: the specs-directory w/o path 751# @RETURN: the specs-directory w/o path
761# @DESCRIPTION: 752# @DESCRIPTION:
762# Allows us to define which mkspecs dir we want to use. 753# Allows us to define which mkspecs dir we want to use.
763qt_mkspecs_dir() { 754qt_mkspecs_dir() {
764 # Allows us to define which mkspecs dir we want to use.
765 local spec 755 local spec=
766
767 case ${CHOST} in 756 case ${CHOST} in
768 *-freebsd*|*-dragonfly*) 757 *-freebsd*|*-dragonfly*)
769 spec=freebsd ;; 758 spec=freebsd ;;
770 *-openbsd*) 759 *-openbsd*)
771 spec=openbsd ;; 760 spec=openbsd ;;
794 elif [[ ${CXX} == *icpc* ]]; then 783 elif [[ ${CXX} == *icpc* ]]; then
795 spec+=-icc 784 spec+=-icc
796 else 785 else
797 die "Unknown compiler '${CXX}'" 786 die "Unknown compiler '${CXX}'"
798 fi 787 fi
799 if [[ -n ${LIBDIR/lib} ]]; then
800 spec+=-${LIBDIR/lib}
801 fi
802 788
803 # Add -64 for 64bit profiles 789 # Add -64 for 64bit profiles
804 if use x64-freebsd || 790 if use x64-freebsd ||
805 use amd64-linux || 791 use amd64-linux ||
806 use x64-macos || 792 use x64-macos ||
812 798
813 echo "${spec}" 799 echo "${spec}"
814} 800}
815 801
816# @FUNCTION: qt_assistant_cleanup 802# @FUNCTION: qt_assistant_cleanup
817# @RETURN: nothing 803# @INTERNAL
818# @DESCRIPTION: 804# @DESCRIPTION:
819# Tries to clean up tools.pro for qt-assistant ebuilds. 805# Tries to clean up tools.pro for qt-assistant ebuilds.
820# Meant to be called in src_prepare(). 806# Meant to be called in src_prepare().
821# Since Qt 4.7.4 this function is a no-op. 807# Since Qt 4.7.4 this function is a no-op.
822qt_assistant_cleanup() { 808qt_assistant_cleanup() {
842 ;; 828 ;;
843 esac 829 esac
844} 830}
845 831
846# @FUNCTION: qt_nolibx11 832# @FUNCTION: qt_nolibx11
847# @RETURN: nothing 833# @INTERNAL
848# @DESCRIPTION: 834# @DESCRIPTION:
849# Ignore X11 tests for packages that don't need X libraries installed 835# Ignore X11 tests for packages that don't need X libraries installed.
850qt_nolibx11() { 836qt_nolibx11() {
851 einfo "Removing X11 check to allow X-less compilation"
852 sed -i "/unixtests\/compile.test.*config.tests\/x11\/xlib/,/fi$/d" "${S}"/configure || 837 sed -i "/unixtests\/compile.test.*config.tests\/x11\/xlib/,/fi$/d" "${S}"/configure ||
853 die "x11 check sed failed" 838 die "x11 check sed failed"
854} 839}
855 840
856EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test pkg_postrm pkg_postinst 841EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test pkg_postrm pkg_postinst

Legend:
Removed from v.1.101  
changed lines
  Added in v.1.118

  ViewVC Help
Powered by ViewVC 1.1.20