/[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.9 Revision 1.86
1# Copyright 2007-2008 Gentoo Foundation 1# Copyright 1999-2009 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.9 2008/03/06 14:44:13 zlin Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.86 2010/11/13 20:30:26 wired Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Ben de Groot <yngwin@gentoo.org>,
8# Markos Chandras <hwoarang@gentoo.org>,
7# Caleb Tennis <caleb@gentoo.org> 9# Caleb Tennis <caleb@gentoo.org>
10# Alex Alexander <wired@gentoo.org>
8# @BLURB: Eclass for Qt4 split ebuilds. 11# @BLURB: Eclass for Qt4 split ebuilds.
9# @DESCRIPTION: 12# @DESCRIPTION:
10# This eclass contains various functions that are used when building Qt4 13# This eclass contains various functions that are used when building Qt4
11 14
12inherit eutils multilib toolchain-funcs flag-o-matic 15inherit base eutils multilib toolchain-funcs flag-o-matic versionator
13 16
17MY_PV=${PV/_/-}
18if version_is_at_least 4.5.99999999; then
19 MY_P=qt-everywhere-opensource-src-${MY_PV}
20 [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] &&
21 [[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] &&
22 IUSE="+exceptions"
23else
24 MY_P=qt-x11-opensource-src-${MY_PV}
25fi
26
27HOMEPAGE="http://qt.nokia.com/"
28SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
29
30LICENSE="|| ( LGPL-2.1 GPL-3 )"
14IUSE="${IUSE} debug" 31IUSE+=" debug"
32[[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] &&
33 IUSE+=" pch aqua"
15 34
16case "${PV}" in 35RDEPEND="
17 4.4.0_beta*) 36 !<x11-libs/qt-assistant-${PV}
18 SRCTYPE="${SRCTYPE:-opensource-src}" 37 !>x11-libs/qt-assistant-${PV}-r9999
19 MY_PV="${PV/_beta/-beta}" 38 !<x11-libs/qt-core-${PV}
20 ;; 39 !>x11-libs/qt-core-${PV}-r9999
21 *) 40 !<x11-libs/qt-dbus-${PV}
22 SRCTYPE="${SRCTYPE:-opensource-src}" 41 !>x11-libs/qt-dbus-${PV}-r9999
23 MY_PV="${PV}" 42 !<x11-libs/qt-demo-${PV}
24 ;; 43 !>x11-libs/qt-demo-${PV}-r9999
25esac 44 !<x11-libs/qt-gui-${PV}
26S=${WORKDIR}/qt-x11-${SRCTYPE}-${MY_PV} 45 !>x11-libs/qt-gui-${PV}-r9999
46 !<x11-libs/qt-multimedia-${PV}
47 !>x11-libs/qt-multimedia-${PV}-r9999
48 !<x11-libs/qt-opengl-${PV}
49 !>x11-libs/qt-opengl-${PV}-r9999
50 !<x11-libs/qt-phonon-${PV}
51 !>x11-libs/qt-phonon-${PV}-r9999
52 !<x11-libs/qt-qt3support-${PV}
53 !>x11-libs/qt-qt3support-${PV}-r9999
54 !<x11-libs/qt-script-${PV}
55 !>x11-libs/qt-script-${PV}-r9999
56 !<x11-libs/qt-sql-${PV}
57 !>x11-libs/qt-sql-${PV}-r9999
58 !<x11-libs/qt-svg-${PV}
59 !>x11-libs/qt-svg-${PV}-r9999
60 !<x11-libs/qt-test-${PV}
61 !>x11-libs/qt-test-${PV}-r9999
62 !<x11-libs/qt-webkit-${PV}
63 !>x11-libs/qt-webkit-${PV}-r9999
64 !<x11-libs/qt-xmlpatterns-${PV}
65 !>x11-libs/qt-xmlpatterns-${PV}-r9999
66"
27 67
28SRC_URI="ftp://ftp.trolltech.com/qt/source/qt-x11-${SRCTYPE}-${MY_PV}.tar.bz2" 68S=${WORKDIR}/${MY_P}
29 69
70# @FUNCTION: qt4-build_pkg_setup
71# @DESCRIPTION:
72# Sets up S, MY_P, PATH, and LD_LIBRARY_PATH
30qt4-build_pkg_setup() { 73qt4-build_pkg_setup() {
31 # Check USE requirements 74 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX=
32 qt4-build_check_use
33 75
34 # Set up installation directories 76 # Protect users by not allowing downgrades between releases
35 QTBASEDIR=/usr/$(get_libdir)/qt4 77 # Downgrading revisions within the same release should be allowed
36 QTPREFIXDIR=/usr 78 if has_version '>'${CATEGORY}/${P}-r9999 ; then
37 QTBINDIR=/usr/bin 79 if [[ -z $I_KNOW_WHAT_I_AM_DOING ]] ; then
38 QTLIBDIR=/usr/$(get_libdir)/qt4 80 eerror "Sanity check to keep you from breaking your system:"
39 QTPCDIR=/usr/$(get_libdir)/pkgconfig 81 eerror " Downgrading Qt is completely unsupported and will break your system!"
40 QTDATADIR=/usr/share/qt4 82 die "aborting to save your system"
41 QTDOCDIR=/usr/share/doc/qt-${PV} 83 else
42 QTHEADERDIR=/usr/include/qt4 84 ewarn "Downgrading Qt is completely unsupported and will break your system!"
43 QTPLUGINDIR=${QTLIBDIR}/plugins 85 fi
44 QTSYSCONFDIR=/etc/qt4 86 fi
45 QTTRANSDIR=${QTDATADIR}/translations
46 QTEXAMPLESDIR=${QTDATADIR}/examples
47 QTDEMOSDIR=${QTDATADIR}/demos
48 87
49 PLATFORM=$(qt_mkspecs_dir) 88 if [[ "${PN}" == "qt-webkit" ]]; then
89 eshopts_push -s extglob
90 if is-flagq '-g?(gdb)?([1-9])'; then
91 echo
92 ewarn "You have enabled debug info (probably have -g or -ggdb in your \$C{,XX}FLAGS)."
93 ewarn "You may experience really long compilation times and/or increased memory usage."
94 ewarn "If compilation fails, please try removing -g{,gdb} before reporting a bug."
95 ewarn "For more info check out bug #307861"
96 echo
97 fi
98 eshopts_pop
99 fi
50 100
51 PATH="${S}/bin:${PATH}" 101 PATH="${S}/bin${PATH:+:}${PATH}"
102 if [[ ${CHOST} != *-darwin* ]]; then
52 LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}" 103 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
53} 104 else
105 DYLD_LIBRARY_PATH="${S}/lib${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}"
106 # On MacOS we *need* at least src/gui/kernel/qapplication_mac.mm for
107 # platform detection. Note: needs to come before any directories to
108 # avoid extract failure.
109 [[ ${CHOST} == *-apple-darwin* ]] && \
110 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm
111 ${QT4_EXTRACT_DIRECTORIES}"
112 fi
54 113
114 # Make sure ebuilds use the required EAPI
115 if [[ ${EAPI} != [23] ]]; then
116 eerror "The qt4-build eclass requires EAPI=2 or EAPI=3, but this ebuild is using"
117 eerror "EAPI=${EAPI:-0}. The ebuild author or editor failed. This ebuild needs to be"
118 eerror "fixed. Using qt4-build eclass without EAPI=2 or EAPI=3 will fail."
119 die "qt4-build eclass requires EAPI=2 or EAPI=3"
120 fi
121
122 if ! version_is_at_least 4.1 $(gcc-version); then
123 ewarn "Using a GCC version lower than 4.1 is not supported!"
124 fi
125}
126
127# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
128# @DESCRIPTION:
129# Arguments for build_target_directories. Takes the directories, in which the
130# code should be compiled. This is a space-separated list
131
132# @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES
133# @DESCRIPTION:
134# Space separated list including the directories that will be extracted from Qt
135# tarball
136
137# @FUNCTION: qt4-build_src_unpack
138# @DESCRIPTION:
139# Unpacks the sources
55qt4-build_src_unpack() { 140qt4-build_src_unpack() {
56 # TODO: partial unpacks, cfr split KDE ebuilds. 141 setqtenv
57 unpack ${A} 142 local target targets=
143 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \
144 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \
145 ${QT4_EXTRACT_DIRECTORIES}; do
146 targets+=" ${MY_P}/${target}"
147 done
148
149 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets}
150 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die
151}
152
153# @ECLASS-VARIABLE: PATCHES
154# @DESCRIPTION:
155# In case you have patches to apply, specify them in PATCHES variable. Make sure
156# to specify the full path. This variable is necessary for src_prepare phase.
157# example:
158# PATCHES="${FILESDIR}"/mypatch.patch
159# ${FILESDIR}"/mypatch2.patch"
160#
161
162# @FUNCTION: qt4-build_src_prepare
163# @DESCRIPTION:
164# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix
165# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf.
166qt4-build_src_prepare() {
167 setqtenv
58 cd "${S}" 168 cd "${S}"
169
170 # fix qt 4.7 regression that skips -fvisibility=hidden
171 if version_is_at_least "4.7.0_beta1"; then
172 sed -e "s/^gcc|g++)/*gcc|*g++)/" \
173 -i config.tests/unix/fvisibility.test ||
174 die "visibility fixing sed failed"
175 fi
176 # fix libx11 dependency on non X packages
177 if version_is_at_least "4.7.0_beta2"; then
178 local NOLIBX11PKG="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns"
179 hasq ${PN} ${NOLIBX11PKG} && qt_nolibx11
180 [[ ${PN} == "qt-assistant" ]] && qt_assistant_cleanup
181 fi
182
183 if use aqua; then
184 # provide a proper macx-g++-64
185 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir)
186
187 sed -e '/^CONFIG/s:app_bundle::' \
188 -e '/^CONFIG/s:plugin_no_soname:plugin_with_soname absolute_library_soname:' \
189 -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed failed"
190 fi
59 191
60 if [[ ${PN} != qt-core ]]; then 192 if [[ ${PN} != qt-core ]]; then
61 skip_qmake_build_patch 193 skip_qmake_build_patch
62 skip_project_generation_patch 194 skip_project_generation_patch
63 symlink_binaries_to_buildtree 195 symlink_binaries_to_buildtree
64 fi 196 fi
65 197
66 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 198 if [[ ${CHOST} == *86*-apple-darwin* ]] ; then
67 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 199 # qmake bus errors with -O2 but -O3 works
68 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ 200 replace-flags -O2 -O3
201 fi
202
203 # Bug 178652
204 if [[ $(gcc-major-version) == 3 ]] && use amd64; then
205 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
206 append-flags -fno-gcse
207 fi
208
209 # Unsupported old gcc versions - hardened needs this :(
210 if [[ $(gcc-major-version) -lt 4 ]] ; then
211 ewarn "Appending -fno-stack-protector to CXXFLAGS"
212 append-cxxflags -fno-stack-protector
213 # Bug 253127
214 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \
215 -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed"
216 fi
217
218 # Bug 261632
219 if use ppc64; then
220 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
221 append-flags -mminimal-toc
222 fi
223
224 # Bug 282984 && Bug 295530
225 sed -e "s:\(^SYSTEM_VARIABLES\):CC="$(tc-getCC)"\nCXX="$(tc-getCXX)"\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \
226 -i configure || die "sed qmake compilers failed"
227 # bug 321335
228 if version_is_at_least 4.6; then
229 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \
230 xargs -0 \
231 sed -e "s:\(\$MAKE\):\1 CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getCXX)" LINK="$(tc-getCXX)":g" \
232 -i || die "sed test compilers failed"
233 fi
234
235 # Bug 172219
69 -e "s:X11R6/::" \ 236 sed -e "s:X11R6/::" \
70 -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed" 237 -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed"
71 238
239 if [[ ${CHOST} == *-darwin* ]]; then
240 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib
241 # crippled (by design) :/
72 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 242 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
73 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 243 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
74 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ 244 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \
245 -e "s:-arch\s\w*::g" \
75 -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed" 246 -i mkspecs/common/mac-g++.conf || die "sed mkspecs/common/mac-g++.conf failed"
76}
77 247
78qt4-build_src_compile() { 248 # Fix configure's -arch settings that appear in qmake/Makefile and also
79 # Don't let the user go too overboard with flags. If you really want to, uncomment 249 # fix arch handling (automagically duplicates our -arch arg and breaks
80 # out the line below and give 'er a whirl. 250 # pch). Additionally disable Xarch support.
81 strip-flags 251 sed \
82 replace-flags -O3 -O2 252 -e "s:-arch i386::" \
253 -e "s:-arch ppc::" \
254 -e "s:-arch x86_64::" \
255 -e "s:-arch ppc64::" \
256 -e "s:-arch \$i::" \
257 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \
258 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \
259 -e "s:-Xarch_x86_64::g" \
260 -e "s:-Xarch_ppc64::g" \
261 -i configure mkspecs/common/mac-g++.conf || die "sed configure failed"
83 262
84 if [[ $(gcc-fullversion) == "3.4.6" && gcc-specs-ssp ]] ; then 263 # On Snow Leopard don't fall back to 10.5 deployment target.
85 ewarn "Appending -fno-stack-protector to CFLAGS/CXXFLAGS" 264 if [[ ${CHOST} == *-apple-darwin10 ]] ; then
86 append-flags -fno-stack-protector 265 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \
266 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \
267 -i configure mkspecs/common/mac-g++.conf || die "sed configure failed"
87 fi 268 fi
269 fi
88 270
271 # this one is needed for all systems with a separate -liconv, apart from
272 # Darwin, for which the sources already cater for -liconv
273 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then
274 sed \
275 -e "s|mac:LIBS += -liconv|LIBS += -liconv|g" \
276 -i config.tests/unix/iconv/iconv.pro \
277 || die "sed on iconv.pro failed"
278 fi
279
280 # we need some patches for Solaris
281 sed -i \
282 -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \
283 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
284 # use GCC over SunStudio
285 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
286 # don't flirt with non-Prefix stuff, we're quite possessive
287 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
288 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
289 # strip predefined CFLAGS from qmake ( bug #312689 )
290 sed -i '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf
291
292 base_src_prepare
293}
294
295# @FUNCTION: qt4-build_src_configure
296# @DESCRIPTION:
297# Default configure phase
298qt4-build_src_configure() {
299 setqtenv
89 myconf="$(standard_configure_options) ${myconf}" 300 myconf="$(standard_configure_options) ${myconf}"
301
302 # this one is needed for all systems with a separate -liconv, apart from
303 # Darwin, for which the sources already cater for -liconv
304 use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] && \
305 myconf+=" -liconv"
306
307 if has glib ${IUSE//+} && use glib; then
308 # use -I, -L and -l from configure
309 local glibflags="$(pkg-config --cflags --libs glib-2.0 gthread-2.0)"
310 # avoid the -pthread argument
311 myconf+=" ${glibflags//-pthread}"
312 unset glibflags
313 fi
314
315 if use aqua ; then
316 # On (snow) leopard use the new (frameworked) cocoa code.
317 if [[ ${CHOST##*-darwin} -ge 9 ]] ; then
318 myconf+=" -cocoa -framework"
319
320 # We are crazy and build cocoa + qt3support :-)
321 if use qt3support; then
322 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \
323 -i configure
324 fi
325
326 # We need the source's headers, not the installed ones.
327 myconf+=" -I${S}/include"
328
329 # Add hint for the framework location.
330 myconf+=" -F${QTLIBDIR}"
331 fi
332 else
333 # freetype2 include dir is non-standard, thus include it on configure
334 # use -I from configure
335 myconf+=" $(pkg-config --cflags freetype2)"
336 fi
337
338 # Disable SSE4.x, since auto-detection is currently broken
339 # Upstream bug http://bugreports.qt.nokia.com/browse/QTBUG-13623
340 if version_is_at_least 4.7.1; then
341 myconf+=" -no-sse4.1 -no-sse4.2"
342 fi
90 343
91 echo ./configure ${myconf} 344 echo ./configure ${myconf}
92 ./configure ${myconf} || die "./configure failed" 345 ./configure ${myconf} || die "./configure failed"
93 346 myconf=""
94 build_target_directories
95} 347}
96 348
349# @FUNCTION: qt4-build_src_compile
350# @DESCRIPTION: Actual compile phase
351qt4-build_src_compile() {
352 setqtenv
353
354 build_directories ${QT4_TARGET_DIRECTORIES}
355}
356
357# @FUNCTION: qt4-build_src_test
358# @DESCRIPTION:
359# Runs tests only in target directories.
360qt4-build_src_test() {
361 for dir in ${QT4_TARGET_DIRECTORIES}; do
362 emake -j1 check -C ${dir}
363 done
364}
365
366# @FUNCTION: fix_includes
367# @DESCRIPTION:
368# For MacOSX we need to add some symlinks when frameworks are
369# being used, to avoid complications with some more or less stupid packages.
370fix_includes() {
371 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
372 # Some packages tend to include <Qt/...>
373 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt
374
375 # Fake normal headers when frameworks are installed... eases life later on
376 local dest f
377 for frw in "${D}${QTLIBDIR}"/*.framework; do
378 [[ -e "${frw}"/Headers ]] || continue
379 f=$(basename ${frw})
380 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework}
381 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}"
382
383 # Link normal headers as well.
384 for hdr in "${D}/${QTLIBDIR}/${f}"/Headers/*; do
385 h=$(basename ${hdr})
386 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers/${h} "${QTHEADERDIR#${EPREFIX}}"/Qt/${h}
387 done
388 done
389 fi
390}
391
392# @FUNCTION: qt4-build_src_install
393# @DESCRIPTION:
394# Perform the actual installation including some library fixes.
97qt4-build_src_install() { 395qt4-build_src_install() {
396 [[ ${EAPI} == 2 ]] && use !prefix && ED=${D}
397 setqtenv
98 install_directories "${QT4_TARGET_DIRECTORIES}" 398 install_directories ${QT4_TARGET_DIRECTORIES}
99 install_qconfigs 399 install_qconfigs
100 fix_library_files 400 fix_library_files
401 fix_includes
402 # remove .la files since we are building only shared Qt libraries
403 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm
101} 404}
102 405
406# @FUNCTION: setqtenv
407setqtenv() {
408 # Set up installation directories
409 QTBASEDIR=${EPREFIX}/usr/$(get_libdir)/qt4
410 QTPREFIXDIR=${EPREFIX}/usr
411 QTBINDIR=${EPREFIX}/usr/bin
412 QTLIBDIR=${EPREFIX}/usr/$(get_libdir)/qt4
413 QMAKE_LIBDIR_QT=${QTLIBDIR}
414 QTPCDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig
415 QTDATADIR=${EPREFIX}/usr/share/qt4
416 QTDOCDIR=${EPREFIX}/usr/share/doc/qt-${PV}
417 QTHEADERDIR=${EPREFIX}/usr/include/qt4
418 QTPLUGINDIR=${QTLIBDIR}/plugins
419 QTSYSCONFDIR=${EPREFIX}/etc/qt4
420 QTTRANSDIR=${QTDATADIR}/translations
421 QTEXAMPLESDIR=${QTDATADIR}/examples
422 QTDEMOSDIR=${QTDATADIR}/demos
423 QT_INSTALL_PREFIX=${EPREFIX}/usr/$(get_libdir)/qt4
424 PLATFORM=$(qt_mkspecs_dir)
425
426 unset QMAKESPEC
427}
428
429# @FUNCTION: standard_configure_options
430# @DESCRIPTION:
431# Sets up some standard configure options, like libdir (if necessary), whether
432# debug info is wanted or not.
103standard_configure_options() { 433standard_configure_options() {
104 local myconf="" 434 local myconf=
105 435
106 [[ $(get_libdir) != "lib" ]] && myconf="${myconf} -L/usr/$(get_libdir)" 436 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)"
107 437
108 # Disable visibility explicitly if gcc version isn't 4 438 # Disable visibility explicitly if gcc version isn't 4
109 if [[ "$(gcc-major-version)" -lt "4" ]]; then 439 if [[ $(gcc-major-version) -lt 4 ]]; then
110 myconf="${myconf} -no-reduce-exports" 440 myconf+=" -no-reduce-exports"
111 fi 441 fi
442
443 # precompiled headers doesn't work on hardened, where the flag is masked.
444 myconf+=" $(qt_use pch)"
112 445
113 if use debug; then 446 if use debug; then
114 myconf="${myconf} -debug -no-separate-debug-info" 447 myconf+=" -debug"
115 else 448 else
449 myconf+=" -release"
450 fi
116 myconf="${myconf} -release -no-separate-debug-info" 451 myconf+=" -no-separate-debug-info"
117 fi
118 452
119 myconf="${myconf} -stl -verbose -largefile -confirm-license -no-rpath 453 use aqua && myconf+=" -no-framework"
454
455 # ARCH is set on Gentoo. Qt now falls back to generic on an unsupported
456 # $(tc-arch). Therefore we convert it to supported values.
457 case "$(tc-arch)" in
458 amd64|x64-*) myconf+=" -arch x86_64" ;;
459 ppc-macos) myconf+=" -arch ppc" ;;
460 ppc|ppc64|ppc-*) myconf+=" -arch powerpc" ;;
461 sparc|sparc-*) myconf+=" -arch sparc" ;;
462 x86-macos) myconf+=" -arch x86" ;;
463 x86|x86-*) myconf+=" -arch i386" ;;
464 alpha|arm|ia64|mips|s390|sparc) myconf+=" -arch $(tc-arch)" ;;
465 hppa|sh) myconf+=" -arch generic" ;;
466 *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;;
467 esac
468
469 # 4.5: build everything but qt-xmlpatterns w/o exceptions
470 # 4.6: exceptions USE flag
471 local exceptions="-exceptions"
472 case "${PV}" in
473 4.5.*)
474 [[ ${PN} == "qt-xmlpatterns" ]] || exceptions="-no-exceptions"
475 ;;
476 *)
477 has exceptions "${IUSE//+}" && exceptions="$(qt_use exceptions)"
478 ;;
479 esac
480
481 # note about -reduce-relocations:
482 # That flag seems to introduce major breakage to applications,
483 # mostly to be seen as a core dump with the message "QPixmap: Must
484 # construct a QApplication before a QPaintDevice" on Solaris
485 # -- Daniel Vergien
486 [[ ${CHOST} != *-solaris* ]] && myconf+=" -reduce-relocations"
487
488 myconf+=" -platform $(qt_mkspecs_dir) -stl -verbose -largefile -confirm-license
120 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 489 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
121 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} 490 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
122 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} 491 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
123 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} 492 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR}
124 -demosdir ${QTDEMOSDIR} -silent -fast -reduce-relocations 493 -demosdir ${QTDEMOSDIR} -silent -fast -opensource
494 ${exceptions}
125 -nomake examples -nomake demos" 495 -nomake examples -nomake demos"
126 496
127 echo "${myconf}" 497 echo "${myconf}"
128} 498}
129 499
130build_target_directories() { 500# @FUNCTION: build_directories
131 build_directories "${QT4_TARGET_DIRECTORIES}" 501# @USAGE: < directories >
132} 502# @DESCRIPTION:
133 503# Compiles the code in $QT4_TARGET_DIRECTORIES
134build_directories() { 504build_directories() {
135 local dirs="$@"
136 for x in ${dirs}; do 505 for x in "$@"; do
137 cd "${S}"/${x} 506 pushd "${S}"/${x} >/dev/null
507 # avoid running over the maximum argument number, bug #299810
508 {
509 echo "${S}"/mkspecs/common/*.conf
510 find "${S}" -name '*.pr[io]'
511 } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die
138 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" 512 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
139 emake || die "emake failed" 513 emake CC="$(tc-getCC)" \
514 CXX="$(tc-getCXX)" \
515 LINK="$(tc-getCXX)" || die "emake failed"
516 popd >/dev/null
140 done 517 done
141} 518}
142 519
520# @FUNCTION: install_directories
521# @USAGE: < directories >
522# @DESCRIPTION:
523# run emake install in the given directories, which are separated by spaces
143install_directories() { 524install_directories() {
144 local dirs="$@"
145 for x in ${dirs}; do 525 for x in "$@"; do
146 pushd "${S}"/${x} >/dev/null || die "Can't pushd ${S}/${x}" 526 pushd "${S}"/${x} >/dev/null || die "Can't pushd ${S}/${x}"
147 emake INSTALL_ROOT="${D}" install || die "emake install failed" 527 emake INSTALL_ROOT="${D}" install || die "emake install failed"
148 popd >/dev/null || die "Can't popd from ${S}/${x}" 528 popd >/dev/null || die "Can't popd from ${S}/${x}"
149 done 529 done
150} 530}
151 531
152# @ECLASS-VARIABLE: QCONFIG_ADD 532# @ECLASS-VARIABLE: QCONFIG_ADD
153# @DESCRIPTION: 533# @DESCRIPTION:
154# List options that need to be added to QT_CONFIG in qconfig.pri 534# List options that need to be added to QT_CONFIG in qconfig.pri
155QCONFIG_ADD="${QCONFIG_ADD:-}" 535: ${QCONFIG_ADD:=}
156 536
157# @ECLASS-VARIABLE: QCONFIG_REMOVE 537# @ECLASS-VARIABLE: QCONFIG_REMOVE
158# @DESCRIPTION: 538# @DESCRIPTION:
159# List options that need to be removed from QT_CONFIG in qconfig.pri 539# List options that need to be removed from QT_CONFIG in qconfig.pri
160QCONFIG_REMOVE="${QCONFIG_REMOVE:-}" 540: ${QCONFIG_REMOVE:=}
161 541
162# @ECLASS-VARIABLE: QCONFIG_DEFINE 542# @ECLASS-VARIABLE: QCONFIG_DEFINE
163# @DESCRIPTION: 543# @DESCRIPTION:
164# List variables that should be defined at the top of QtCore/qconfig.h 544# List variables that should be defined at the top of QtCore/qconfig.h
165QCONFIG_DEFINE="${QCONFIG_DEFINE:-}" 545: ${QCONFIG_DEFINE:=}
166 546
547# @FUNCTION: install_qconfigs
548# @DESCRIPTION: Install gentoo-specific mkspecs configurations
167install_qconfigs() { 549install_qconfigs() {
168 local x 550 local x
169 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then 551 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
170 for x in QCONFIG_ADD QCONFIG_REMOVE; do 552 for x in QCONFIG_ADD QCONFIG_REMOVE; do
171 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri 553 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
172 done 554 done
173 insinto ${QTDATADIR}/mkspecs/gentoo 555 insinto ${QTDATADIR#${EPREFIX}}/mkspecs/gentoo
174 doins "${T}"/${PN}-qconfig.pri || die "installing ${PN}-qconfig.pri failed" 556 doins "${T}"/${PN}-qconfig.pri || die "installing ${PN}-qconfig.pri failed"
175 fi 557 fi
176 558
177 if [[ -n ${QCONFIG_DEFINE} ]]; then 559 if [[ -n ${QCONFIG_DEFINE} ]]; then
178 for x in ${QCONFIG_DEFINE}; do 560 for x in ${QCONFIG_DEFINE}; do
179 echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h 561 echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h
180 done 562 done
181 insinto ${QTHEADERDIR}/Gentoo 563 insinto ${QTHEADERDIR#${EPREFIX}}/Gentoo
182 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed" 564 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed"
183 fi 565 fi
184} 566}
185 567
186# Stubs for functions used by the Qt 4.4.0_technical_preview_1. 568# @FUNCTION: generate_qconfigs
187qconfig_add_option() { : ; } 569# @DESCRIPTION: Generates gentoo-specific configurations
188qconfig_remove_option() { : ; }
189
190generate_qconfigs() { 570generate_qconfigs() {
191 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then 571 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then
192 local x qconfig_add qconfig_remove qconfig_new 572 local x qconfig_add qconfig_remove qconfig_new
193 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do 573 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do
194 [[ -f ${x} ]] || continue 574 [[ -f ${x} ]] || continue
195 qconfig_add="${qconfig_add} $(sed -n 's/^QCONFIG_ADD=//p' "${x}")" 575 qconfig_add+=" $(sed -n 's/^QCONFIG_ADD=//p' "${x}")"
196 qconfig_remove="${qconfig_remove} $(sed -n 's/^QCONFIG_REMOVE=//p' "${x}")" 576 qconfig_remove+=" $(sed -n 's/^QCONFIG_REMOVE=//p' "${x}")"
197 done 577 done
198 578
199 # these error checks do not use die because dying in pkg_post{inst,rm} 579 # these error checks do not use die because dying in pkg_post{inst,rm}
200 # just makes things worse. 580 # just makes things worse.
201 if [[ -e "${ROOT}${QTDATADIR}"/mkspecs/gentoo/qconfig.pri ]]; then 581 if [[ -e "${ROOT}${QTDATADIR}"/mkspecs/gentoo/qconfig.pri ]]; then
208 588
209 # generate list of QT_CONFIG entries from the existing list 589 # generate list of QT_CONFIG entries from the existing list
210 # including qconfig_add and excluding qconfig_remove 590 # including qconfig_add and excluding qconfig_remove
211 for x in $(sed -n 's/^QT_CONFIG +=//p' \ 591 for x in $(sed -n 's/^QT_CONFIG +=//p' \
212 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri) ${qconfig_add}; do 592 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri) ${qconfig_add}; do
213 hasq ${x} ${qconfig_remove} || qconfig_new="${qconfig_new} ${x}" 593 hasq ${x} ${qconfig_remove} || qconfig_new+=" ${x}"
214 done 594 done
215 595
216 # replace the existing QT_CONFIG list with qconfig_new 596 # replace the existing QT_CONFIG list with qconfig_new
217 if ! sed -i -e "s/QT_CONFIG +=.*/QT_CONFIG += ${qconfig_new}/" \ 597 if ! sed -i -e "s/QT_CONFIG +=.*/QT_CONFIG += ${qconfig_new}/" \
218 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then 598 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then
241 "${ROOT}${QTHEADERDIR}" 2>/dev/null 621 "${ROOT}${QTHEADERDIR}" 2>/dev/null
242 fi 622 fi
243 fi 623 fi
244} 624}
245 625
626# @FUNCTION: qt4-build_pkg_postrm
627# @DESCRIPTION: Generate configurations when the package is completely removed
246qt4-build_pkg_postrm() { 628qt4-build_pkg_postrm() {
247 generate_qconfigs 629 generate_qconfigs
248} 630}
249 631
632# @FUNCTION: qt4-build_pkg_postinst
633# @DESCRIPTION: Generate configuration, plus throws a message about possible
634# breakages and proposed solutions.
250qt4-build_pkg_postinst() { 635qt4-build_pkg_postinst() {
251 generate_qconfigs 636 generate_qconfigs
252} 637}
253 638
639# @FUNCTION: skip_qmake_build_patch
640# @DESCRIPTION:
641# Don't need to build qmake, as it's already installed from qt-core
254skip_qmake_build_patch() { 642skip_qmake_build_patch() {
255 # Don't need to build qmake, as it's already installed from qt-core 643 # Don't need to build qmake, as it's already installed from qt-core
256 sed -i -e "s:if true:if false:g" "${S}"/configure || die "Sed failed" 644 sed -i -e "s:if true:if false:g" "${S}"/configure || die "Sed failed"
257} 645}
258 646
647# @FUNCTION: skip_project_generation_patch
648# @DESCRIPTION:
649# Exit the script early by throwing in an exit before all of the .pro files are scanned
259skip_project_generation_patch() { 650skip_project_generation_patch() {
260 # Exit the script early by throwing in an exit before all of the .pro files are scanned 651 # Exit the script early by throwing in an exit before all of the .pro files are scanned
261 sed -e "s:echo \"Finding:exit 0\n\necho \"Finding:g" \ 652 sed -e "s:echo \"Finding:exit 0\n\necho \"Finding:g" \
262 -i "${S}"/configure || die "Sed failed" 653 -i "${S}"/configure || die "Sed failed"
263} 654}
264 655
656# @FUNCTION: symlink_binaries_to_buildtree
657# @DESCRIPTION:
658# Symlink generated binaries to buildtree so they can be used during compilation
659# time
265symlink_binaries_to_buildtree() { 660symlink_binaries_to_buildtree() {
266 for bin in qmake moc uic rcc; do 661 for bin in qmake moc uic rcc; do
267 ln -s ${QTBINDIR}/${bin} "${S}"/bin/ || die "Symlinking ${bin} to ${S}/bin failed." 662 ln -s ${QTBINDIR}/${bin} "${S}"/bin/ || die "Symlinking ${bin} to ${S}/bin failed."
268 done 663 done
269} 664}
270 665
666# @FUNCTION: fix_library_files
667# @DESCRIPTION:
668# Fixes the pathes in *.la, *.prl, *.pc, as they are wrong due to sandbox and
669# moves the *.pc-files into the pkgconfig directory
271fix_library_files() { 670fix_library_files() {
272 for libfile in "${D}"/${QTLIBDIR}/{*.la,*.prl,pkgconfig/*.pc}; do 671 for libfile in "${D}"/${QTLIBDIR}/{*.la,*.prl,pkgconfig/*.pc}; do
273 if [[ -e ${libfile} ]]; then 672 if [[ -e ${libfile} ]]; then
274 sed -i -e "s:${S}/lib:${QTLIBDIR}:g" ${libfile} || die "Sed on ${libfile} failed." 673 sed -i -e "s:${S}/lib:${QTLIBDIR}:g" ${libfile} || die "Sed on ${libfile} failed."
275 fi 674 fi
278 # pkgconfig files refer to WORKDIR/bin as the moc and uic locations. Fix: 677 # pkgconfig files refer to WORKDIR/bin as the moc and uic locations. Fix:
279 for libfile in "${D}"/${QTLIBDIR}/pkgconfig/*.pc; do 678 for libfile in "${D}"/${QTLIBDIR}/pkgconfig/*.pc; do
280 if [[ -e ${libfile} ]]; then 679 if [[ -e ${libfile} ]]; then
281 sed -i -e "s:${S}/bin:${QTBINDIR}:g" ${libfile} || die "Sed failed" 680 sed -i -e "s:${S}/bin:${QTBINDIR}:g" ${libfile} || die "Sed failed"
282 681
283 # Move .pc files into the pkgconfig directory 682 # Move .pc files into the pkgconfig directory
284
285 dodir ${QTPCDIR} 683 dodir ${QTPCDIR#${EPREFIX}}
286 mv ${libfile} "${D}"/${QTPCDIR}/ \ 684 mv ${libfile} "${D}"/${QTPCDIR}/ \
287 || die "Moving ${libfile} to ${D}/${QTPCDIR}/ failed." 685 || die "Moving ${libfile} to ${D}/${QTPCDIR}/ failed."
288 fi 686 fi
289 done 687 done
290 688
291 # Don't install an empty directory 689 # Don't install an empty directory
292 rmdir "${D}"/${QTLIBDIR}/pkgconfig 690 rmdir "${D}"/${QTLIBDIR}/pkgconfig
293} 691}
294 692
693# @FUNCTION: qt_use
694# @USAGE: < flag > [ feature ] [ enableval ]
695# @DESCRIPTION:
696# This will echo "${enableval}-${feature}" if <flag> is enabled, or
697# "-no-${feature} if the flag is disabled. If [feature] is not specified <flag>
698# will be used for that. If [enableval] is not specified, it omits the
699# assignment-part
295qt_use() { 700qt_use() {
296 local flag="${1}" 701 local flag=$1
297 local feature="${1}" 702 local feature=$1
298 local enableval= 703 local enableval=
299 704
300 [[ -n ${2} ]] && feature=${2} 705 [[ -n $2 ]] && feature=$2
301 [[ -n ${3} ]] && enableval="-${3}" 706 [[ -n $3 ]] && enableval=-$3
302 707
303 if use ${flag}; then 708 if use ${flag}; then
304 echo "${enableval}-${feature}" 709 echo "${enableval}-${feature}"
305 else 710 else
306 echo "-no-${feature}" 711 echo "-no-${feature}"
307 fi 712 fi
308} 713}
309 714
310# @ECLASS-VARIABLE: QT4_BUILT_WITH_USE_CHECK 715# @FUNCTION: qt_mkspecs_dir
716# @RETURN: the specs-directory w/o path
311# @DESCRIPTION: 717# @DESCRIPTION:
312# The contents of $QT4_BUILT_WITH_USE_CHECK gets fed to built_with_use 718# Allows us to define which mkspecs dir we want to use.
313# (eutils.eclass), line per line.
314#
315# Example:
316# @CODE
317# pkg_setup() {
318# use qt3support && QT4_BUILT_WITH_USE_CHECK="${QT4_BUILT_WITH_USE_CHECK}
319# ~x11-libs/qt-gui-${PV} qt3support"
320# qt4-build_check_use
321# }
322# @CODE
323
324# Run built_with_use on each flag and print appropriate error messages if any
325# flags are missing
326_qt_built_with_use() {
327 local missing opt pkg flag flags
328
329 if [[ ${1} = "--missing" ]]; then
330 missing="${1} ${2}" && shift 2
331 fi
332 if [[ ${1:0:1} = "-" ]]; then
333 opt=${1} && shift
334 fi
335
336 pkg=${1} && shift
337
338 for flag in "${@}"; do
339 flags="${flags} ${flag}"
340 if ! built_with_use ${missing} ${opt} ${pkg} ${flag}; then
341 flags="${flags}*"
342 else
343 [[ ${opt} = "-o" ]] && return 0
344 fi
345 done
346 if [[ "${flags# }" = "${@}" ]]; then
347 return 0
348 fi
349 if [[ ${opt} = "-o" ]]; then
350 eerror "This package requires '${pkg}' to be built with any of the following USE flags: '$*'."
351 else
352 eerror "This package requires '${pkg}' to be built with the following USE flags: '${flags# }'."
353 fi
354 return 1
355}
356
357# @FUNCTION: qt4-build_check_use
358# @DESCRIPTION:
359# Check if the listed packages in $QT4_BUILT_WITH_USE_CHECK are built with the
360# USE flags listed.
361#
362# If any of the required USE flags are missing, an eerror will be printed for
363# each package with missing USE flags.
364qt4-build_check_use() {
365 local line missing
366 while read line; do
367 [[ -z ${line} ]] && continue
368 if ! _qt_built_with_use ${line}; then
369 missing=true
370 fi
371 done <<< "${QT4_BUILT_WITH_USE_CHECK}"
372 if [[ -n ${missing} ]]; then
373 echo
374 eerror "Flags marked with an * are missing."
375 die "Missing USE flags found"
376 fi
377}
378
379qt_mkspecs_dir() { 719qt_mkspecs_dir() {
380 # Allows us to define which mkspecs dir we want to use. 720 # Allows us to define which mkspecs dir we want to use.
381 local spec 721 local spec
382 722
383 case ${CHOST} in 723 case ${CHOST} in
384 *-freebsd*|*-dragonfly*) 724 *-freebsd*|*-dragonfly*)
385 spec="freebsd" ;; 725 spec=freebsd ;;
386 *-openbsd*) 726 *-openbsd*)
387 spec="openbsd" ;; 727 spec=openbsd ;;
388 *-netbsd*) 728 *-netbsd*)
389 spec="netbsd" ;; 729 spec=netbsd ;;
390 *-darwin*) 730 *-darwin*)
731 if use aqua; then
732 # mac with carbon/cocoa
733 spec=macx
734 else
735 # darwin/mac with x11
391 spec="darwin" ;; 736 spec=darwin
737 fi
738 ;;
739 *-solaris*)
740 spec=solaris ;;
392 *-linux-*|*-linux) 741 *-linux-*|*-linux)
393 spec="linux" ;; 742 spec=linux ;;
394 *) 743 *)
395 die "Unknown CHOST, no platform choosen." 744 die "Unknown CHOST, no platform choosen."
396 esac 745 esac
397 746
398 CXX=$(tc-getCXX) 747 CXX=$(tc-getCXX)
399 if [[ ${CXX/g++/} != ${CXX} ]]; then 748 if [[ ${CXX} == *g++* ]]; then
400 spec="${spec}-g++" 749 spec+=-g++
401 elif [[ ${CXX/icpc/} != ${CXX} ]]; then 750 elif [[ ${CXX} == *icpc* ]]; then
402 spec="${spec}-icc" 751 spec+=-icc
403 else 752 else
404 die "Unknown compiler ${CXX}." 753 die "Unknown compiler ${CXX}."
405 fi 754 fi
755 if [[ -n ${LIBDIR/lib} ]]; then
756 spec+=-${LIBDIR/lib}
757 fi
758
759 # Add -64 for 64bit profiles
760 if use x64-freebsd ||
761 use amd64-linux ||
762 use x64-macos ||
763 use x64-solaris ||
764 use sparc64-solaris
765 then
766 spec+=-64
767 fi
406 768
407 echo "${spec}" 769 echo "${spec}"
408} 770}
409 771
772# @FUNCTION: qt_assistant_cleanup
773# @RETURN: nothing
774# @DESCRIPTION:
775# Tries to clean up tools.pro for qt-assistant ebuilds
776# Meant to be called in src_prepare
777qt_assistant_cleanup() {
778 # different versions (and branches...) may need different handling,
779 # add a case if you need special handling
780 case "${MY_PV_EXTRA}" in
781 *kde-qt*)
782 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
783 -e "/mac/,/^embedded.*makeqpf$/d" \
784 -i tools/tools.pro || die "patching tools.pro failed"
785 ;;
786 *)
787 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
788 -e "/mac/,/^embedded.*makeqpf$/d" \
789 -e "s/^\([ \t]*pixeltool\) /\1 qdoc3 /" \
790 -i tools/tools.pro || die "patching tools.pro failed"
791 ;;
792 esac
793}
794
795# @FUNCTION: qt_nolibx11
796# @RETURN: nothing
797# @DESCRIPTION:
798# Ignore X11 tests for packages that don't need X libraries installed
799qt_nolibx11() {
800 einfo "removing X11 check to allow X-less compilation"
801 sed -i "/unixtests\/compile.test.*config.tests\/x11\/xlib/,/fi$/d" "${S}"/configure ||
802 die "x11 check sed failed"
803}
804
410EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postrm pkg_postinst 805EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test pkg_postrm pkg_postinst

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.86

  ViewVC Help
Powered by ViewVC 1.1.20