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

Legend:
Removed from v.1.100  
changed lines
  Added in v.1.117

  ViewVC Help
Powered by ViewVC 1.1.20