| 1 | # Copyright 2007-2009 Gentoo Foundation |
1 | # Copyright 2007-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.48 2009/10/16 15:02:15 wired Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.54 2009/12/06 09:34:36 hwoarang Exp $ |
| 4 | |
4 | |
| 5 | # @ECLASS: qt4-build.eclass |
5 | # @ECLASS: qt4-build.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Ben de Groot <yngwin@gentoo.org>, |
7 | # Ben de Groot <yngwin@gentoo.org>, |
| 8 | # Markos Chandras <hwoarang@gentoo.org>, |
8 | # Markos Chandras <hwoarang@gentoo.org>, |
| … | |
… | |
| 101 | if ! version_is_at_least 4.1 $(gcc-version) ; then |
101 | if ! version_is_at_least 4.1 $(gcc-version) ; then |
| 102 | ewarn "Using a GCC version lower than 4.1 is not supported!" |
102 | ewarn "Using a GCC version lower than 4.1 is not supported!" |
| 103 | echo |
103 | echo |
| 104 | ebeep 3 |
104 | ebeep 3 |
| 105 | fi |
105 | fi |
|
|
106 | |
|
|
107 | if [[ "${P}" == "qt-core-4.6.0_rc1" ]]; then |
|
|
108 | ewarn |
|
|
109 | ewarn "Binary compatibility broke between 4.6.0_beta1 and 4.6.0_rc1." |
|
|
110 | ewarn "If you are upgrading from 4.6.0_beta1, you'll have to" |
|
|
111 | ewarn "re-emerge everything that depends on Qt." |
|
|
112 | ewarn "Use the following command:" |
|
|
113 | ewarn |
|
|
114 | ewarn " emerge -av1 \$(for i in \$(qlist -IC x11-libs/qt-);" |
|
|
115 | ewarn " do equery -q d \$i | grep -v 'x11-libs/qt-' |" |
|
|
116 | ewarn " sed \"s/^/=/\"; done)" |
|
|
117 | ewarn |
|
|
118 | ewarn "YOU'VE BEEN WARNED" |
|
|
119 | ewarn |
|
|
120 | ebeep 3 |
|
|
121 | fi |
|
|
122 | |
| 106 | } |
123 | } |
| 107 | |
124 | |
| 108 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
125 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
| 109 | # @DESCRIPTION: |
126 | # @DESCRIPTION: |
| 110 | # Arguments for build_target_directories. Takes the directories, in which the |
127 | # Arguments for build_target_directories. Takes the directories, in which the |
| … | |
… | |
| 176 | skip_qmake_build_patch |
193 | skip_qmake_build_patch |
| 177 | skip_project_generation_patch |
194 | skip_project_generation_patch |
| 178 | symlink_binaries_to_buildtree |
195 | symlink_binaries_to_buildtree |
| 179 | fi |
196 | fi |
| 180 | |
197 | |
|
|
198 | # Bug 282984 && Bug 295530 |
|
|
199 | sed -e "s:\(^SYSTEM_VARIABLES\):CC=$(tc-getCC)\nCXX=$(tc-getCXX)\n\1:" \ |
|
|
200 | -i configure || die "sed qmake compilers failed" |
|
|
201 | sed -e "s:\(\$MAKE\):\1 CC=$(tc-getCC) CXX=$(tc-getCXX) LD=$(tc-getCXX):" \ |
|
|
202 | -i config.tests/unix/compile.test || die "sed test compilers failed" |
|
|
203 | |
| 181 | # Bug 178652 |
204 | # Bug 178652 |
| 182 | if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then |
205 | if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then |
| 183 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
206 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
| 184 | append-flags -fno-gcse |
207 | append-flags -fno-gcse |
| 185 | fi |
208 | fi |
| … | |
… | |
| 189 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
212 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
| 190 | append-cxxflags -fno-stack-protector |
213 | append-cxxflags -fno-stack-protector |
| 191 | # Bug 253127 |
214 | # Bug 253127 |
| 192 | sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ |
215 | sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ |
| 193 | -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed" |
216 | -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed" |
|
|
217 | fi |
|
|
218 | |
|
|
219 | # Bug 261632 |
|
|
220 | if use ppc64; then |
|
|
221 | ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" |
|
|
222 | append-flags -mminimal-toc |
| 194 | fi |
223 | fi |
| 195 | |
224 | |
| 196 | # Bug 172219 |
225 | # Bug 172219 |
| 197 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
226 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
| 198 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
227 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
| … | |
… | |
| 314 | *) |
343 | *) |
| 315 | [[ ${PN} == "qt-xmlpatterns" ]] || exceptions="-no-exceptions" |
344 | [[ ${PN} == "qt-xmlpatterns" ]] || exceptions="-no-exceptions" |
| 316 | ;; |
345 | ;; |
| 317 | esac |
346 | esac |
| 318 | |
347 | |
| 319 | myconf="${myconf} -platform $(qt_mkspecs_dir) -stl -verbose -largefile -confirm-license -no-rpath |
348 | myconf="${myconf} -platform $(qt_mkspecs_dir) -stl -verbose -largefile -confirm-license |
| 320 | -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} |
349 | -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} |
| 321 | -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} |
350 | -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} |
| 322 | -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} |
351 | -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} |
| 323 | -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} |
352 | -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} |
| 324 | -demosdir ${QTDEMOSDIR} -silent -fast |
353 | -demosdir ${QTDEMOSDIR} -silent -fast |
| … | |
… | |
| 467 | # @FUNCTION: qt4-build_pkg_postinst |
496 | # @FUNCTION: qt4-build_pkg_postinst |
| 468 | # @DESCRIPTION: Generate configuration, plus throws a message about possible |
497 | # @DESCRIPTION: Generate configuration, plus throws a message about possible |
| 469 | # breakages and proposed solutions. |
498 | # breakages and proposed solutions. |
| 470 | qt4-build_pkg_postinst() { |
499 | qt4-build_pkg_postinst() { |
| 471 | generate_qconfigs |
500 | generate_qconfigs |
|
|
501 | |
|
|
502 | if [[ "${PN}" == "qt-core" ]]; then |
| 472 | echo |
503 | echo |
| 473 | ewarn "After a rebuild or upgrade of Qt, it can happen that Qt plugins (such as Qt" |
504 | ewarn "After a rebuild or upgrade of Qt, it can happen that Qt plugins (such as Qt" |
| 474 | ewarn "and KDE styles and widgets) can no longer be loaded. In this situation you" |
505 | ewarn "and KDE styles and widgets) can no longer be loaded. In this situation you" |
| 475 | ewarn "should recompile the packages providing these plugins. Also, make sure you" |
506 | ewarn "should recompile the packages providing these plugins. Also, make sure you" |
| 476 | ewarn "compile the Qt packages, and the packages that depend on it, with the same" |
507 | ewarn "compile the Qt packages, and the packages that depend on it, with the same" |
| 477 | ewarn "GCC version and the same USE flag settings (especially the debug flag)." |
508 | ewarn "GCC version and the same USE flag settings (especially the debug flag)." |
| 478 | ewarn |
509 | ewarn |
| 479 | ewarn "Packages that typically need to be recompiled are kdelibs from KDE4, any" |
510 | ewarn "Packages that typically need to be recompiled are kdelibs from KDE4, any" |
| 480 | ewarn "additional KDE4/Qt4 styles, qscintilla and PyQt4. Before filing a bug report," |
511 | ewarn "additional KDE4/Qt4 styles, qscintilla and PyQt4. Before filing a bug report," |
| 481 | ewarn "make sure all your Qt4 packages are up-to-date and built with the same" |
512 | ewarn "make sure all your Qt4 packages are up-to-date and built with the same" |
| 482 | ewarn "configuration." |
513 | ewarn "configuration." |
| 483 | ewarn |
514 | ewarn |
| 484 | ewarn "For more information, see http://doc.trolltech.com/${PV%.*}/plugins-howto.html" |
515 | ewarn "For more information, see http://doc.trolltech.com/${PV%.*}/plugins-howto.html" |
| 485 | echo |
516 | echo |
|
|
517 | fi |
| 486 | } |
518 | } |
| 487 | |
519 | |
| 488 | # @FUNCTION: skip_qmake_build_patch |
520 | # @FUNCTION: skip_qmake_build_patch |
| 489 | # @DESCRIPTION: |
521 | # @DESCRIPTION: |
| 490 | # Don't need to build qmake, as it's already installed from qt-core |
522 | # Don't need to build qmake, as it's already installed from qt-core |