| 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.47 2009/10/03 19:29:04 ayoy 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>, |
| … | |
… | |
| 44 | !>x11-libs/qt-webkit-${PV}-r9999 |
44 | !>x11-libs/qt-webkit-${PV}-r9999 |
| 45 | !<x11-libs/qt-xmlpatterns-${PV} |
45 | !<x11-libs/qt-xmlpatterns-${PV} |
| 46 | !>x11-libs/qt-xmlpatterns-${PV}-r9999 |
46 | !>x11-libs/qt-xmlpatterns-${PV}-r9999 |
| 47 | " |
47 | " |
| 48 | case "${PV}" in |
48 | case "${PV}" in |
| 49 | 4.?.?_rc*) |
49 | 4.?.?_rc* | 4.?.?_beta* ) |
| 50 | SRCTYPE="${SRCTYPE:-opensource-src}" |
50 | SRCTYPE="${SRCTYPE:-opensource-src}" |
| 51 | MY_PV="${PV/_rc/-rc}" |
51 | MY_PV="${PV/_/-}" |
| 52 | ;; |
52 | ;; |
| 53 | *) |
53 | *) |
| 54 | SRCTYPE="${SRCTYPE:-opensource-src}" |
54 | SRCTYPE="${SRCTYPE:-opensource-src}" |
| 55 | MY_PV="${PV}" |
55 | MY_PV="${PV}" |
| 56 | ;; |
56 | ;; |
| 57 | esac |
57 | esac |
|
|
58 | |
|
|
59 | if version_is_at_least 4.5.99999999 ${PV} ; then |
|
|
60 | MY_P="qt-everywhere-${SRCTYPE}-${MY_PV}" |
|
|
61 | else |
| 58 | MY_P=qt-x11-${SRCTYPE}-${MY_PV} |
62 | MY_P="qt-x11-${SRCTYPE}-${MY_PV}" |
|
|
63 | fi |
| 59 | S=${WORKDIR}/${MY_P} |
64 | S=${WORKDIR}/${MY_P} |
| 60 | |
65 | |
| 61 | HOMEPAGE="http://qt.nokia.com/" |
66 | HOMEPAGE="http://qt.nokia.com/" |
| 62 | SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.bz2" |
|
|
| 63 | if version_is_at_least 4.5.3 ${PV} ; then |
67 | if version_is_at_least 4.5.3 ${PV} ; then |
| 64 | SRC_URI="${SRC_URI/bz2/gz}" |
68 | SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz" |
|
|
69 | else |
|
|
70 | SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.bz2" |
| 65 | fi |
71 | fi |
| 66 | |
72 | |
| 67 | case "${PV}" in |
73 | case "${PV}" in |
| 68 | 4.4.?) SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2" ;; |
74 | 4.4.?) SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2" ;; |
| 69 | *) ;; |
75 | *) ;; |
| … | |
… | |
| 95 | if ! version_is_at_least 4.1 $(gcc-version) ; then |
101 | if ! version_is_at_least 4.1 $(gcc-version) ; then |
| 96 | 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!" |
| 97 | echo |
103 | echo |
| 98 | ebeep 3 |
104 | ebeep 3 |
| 99 | 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 | |
| 100 | } |
123 | } |
| 101 | |
124 | |
| 102 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
125 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
| 103 | # @DESCRIPTION: |
126 | # @DESCRIPTION: |
| 104 | # Arguments for build_target_directories. Takes the directories, in which the |
127 | # Arguments for build_target_directories. Takes the directories, in which the |
| … | |
… | |
| 170 | skip_qmake_build_patch |
193 | skip_qmake_build_patch |
| 171 | skip_project_generation_patch |
194 | skip_project_generation_patch |
| 172 | symlink_binaries_to_buildtree |
195 | symlink_binaries_to_buildtree |
| 173 | fi |
196 | fi |
| 174 | |
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 | |
| 175 | # Bug 178652 |
204 | # Bug 178652 |
| 176 | if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then |
205 | if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then |
| 177 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
206 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
| 178 | append-flags -fno-gcse |
207 | append-flags -fno-gcse |
| 179 | fi |
208 | fi |
| … | |
… | |
| 183 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
212 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
| 184 | append-cxxflags -fno-stack-protector |
213 | append-cxxflags -fno-stack-protector |
| 185 | # Bug 253127 |
214 | # Bug 253127 |
| 186 | sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ |
215 | sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ |
| 187 | -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 |
| 188 | fi |
223 | fi |
| 189 | |
224 | |
| 190 | # Bug 172219 |
225 | # Bug 172219 |
| 191 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
226 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
| 192 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
227 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
| … | |
… | |
| 295 | alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;; |
330 | alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;; |
| 296 | hppa|sh) myconf="${myconf} -arch generic" ;; |
331 | hppa|sh) myconf="${myconf} -arch generic" ;; |
| 297 | *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;; |
332 | *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;; |
| 298 | esac |
333 | esac |
| 299 | |
334 | |
|
|
335 | # 4.6: build qt-core with exceptions or qt-xmlpatterns won't build |
|
|
336 | local exceptions= |
|
|
337 | case "${PV}" in |
|
|
338 | 4.6.*) |
|
|
339 | if [[ ${PN} != "qt-core" ]] && [[ ${PN} != "qt-xmlpatterns" ]]; then |
|
|
340 | exceptions="-no-exceptions" |
|
|
341 | fi |
|
|
342 | ;; |
|
|
343 | *) |
|
|
344 | [[ ${PN} == "qt-xmlpatterns" ]] || exceptions="-no-exceptions" |
|
|
345 | ;; |
|
|
346 | esac |
|
|
347 | |
| 300 | 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 |
| 301 | -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} |
349 | -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} |
| 302 | -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} |
350 | -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} |
| 303 | -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} |
351 | -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} |
| 304 | -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} |
352 | -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} |
| 305 | -demosdir ${QTDEMOSDIR} -silent -fast |
353 | -demosdir ${QTDEMOSDIR} -silent -fast |
| 306 | $([[ ${PN} == qt-xmlpatterns ]] || echo -no-exceptions) |
354 | ${exceptions} |
| 307 | -reduce-relocations -nomake examples -nomake demos" |
355 | -reduce-relocations -nomake examples -nomake demos" |
| 308 | |
356 | |
| 309 | # Make eclass 4.5.x ready |
357 | # Make eclass >= 4.5.x ready |
| 310 | case "${MY_PV}" in |
358 | case "${MY_PV}" in |
| 311 | 4.5.?) |
359 | 4.5.* | 4.6.* ) |
| 312 | myconf="${myconf} -opensource" |
360 | myconf="${myconf} -opensource" |
| 313 | ;; |
361 | ;; |
| 314 | esac |
362 | esac |
| 315 | |
363 | |
| 316 | echo "${myconf}" |
364 | echo "${myconf}" |
| … | |
… | |
| 448 | # @FUNCTION: qt4-build_pkg_postinst |
496 | # @FUNCTION: qt4-build_pkg_postinst |
| 449 | # @DESCRIPTION: Generate configuration, plus throws a message about possible |
497 | # @DESCRIPTION: Generate configuration, plus throws a message about possible |
| 450 | # breakages and proposed solutions. |
498 | # breakages and proposed solutions. |
| 451 | qt4-build_pkg_postinst() { |
499 | qt4-build_pkg_postinst() { |
| 452 | generate_qconfigs |
500 | generate_qconfigs |
|
|
501 | |
|
|
502 | if [[ "${PN}" == "qt-core" ]]; then |
| 453 | echo |
503 | echo |
| 454 | 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" |
| 455 | 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" |
| 456 | 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" |
| 457 | 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" |
| 458 | 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)." |
| 459 | ewarn |
509 | ewarn |
| 460 | 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" |
| 461 | 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," |
| 462 | 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" |
| 463 | ewarn "configuration." |
513 | ewarn "configuration." |
| 464 | ewarn |
514 | ewarn |
| 465 | 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" |
| 466 | echo |
516 | echo |
|
|
517 | fi |
| 467 | } |
518 | } |
| 468 | |
519 | |
| 469 | # @FUNCTION: skip_qmake_build_patch |
520 | # @FUNCTION: skip_qmake_build_patch |
| 470 | # @DESCRIPTION: |
521 | # @DESCRIPTION: |
| 471 | # 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 |