/[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.86 Revision 1.95
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2011 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.86 2010/11/13 20:30:26 wired Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.95 2011/10/16 09:59:39 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>,
15inherit base eutils multilib toolchain-funcs flag-o-matic versionator 15inherit base eutils multilib toolchain-funcs flag-o-matic versionator
16 16
17MY_PV=${PV/_/-} 17MY_PV=${PV/_/-}
18if version_is_at_least 4.5.99999999; then 18if version_is_at_least 4.5.99999999; then
19 MY_P=qt-everywhere-opensource-src-${MY_PV} 19 MY_P=qt-everywhere-opensource-src-${MY_PV}
20 [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] && 20 [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] &&
21 [[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] && 21 [[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] &&
22 IUSE="+exceptions" 22 IUSE="+exceptions"
23else 23else
24 MY_P=qt-x11-opensource-src-${MY_PV} 24 MY_P=qt-x11-opensource-src-${MY_PV}
25fi 25fi
26 26
27HOMEPAGE="http://qt.nokia.com/" 27HOMEPAGE="http://qt.nokia.com/"
28SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz" 28SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
29 29
30LICENSE="|| ( LGPL-2.1 GPL-3 )" 30LICENSE="|| ( LGPL-2.1 GPL-3 )"
31IUSE+=" debug"
32[[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] &&
33 IUSE+=" pch aqua" 31IUSE+=" debug pch aqua"
34 32
35RDEPEND=" 33RDEPEND="
36 !<x11-libs/qt-assistant-${PV} 34 !<x11-libs/qt-assistant-${PV}
37 !>x11-libs/qt-assistant-${PV}-r9999 35 !>x11-libs/qt-assistant-${PV}-r9999
38 !<x11-libs/qt-core-${PV} 36 !<x11-libs/qt-core-${PV}
137# @FUNCTION: qt4-build_src_unpack 135# @FUNCTION: qt4-build_src_unpack
138# @DESCRIPTION: 136# @DESCRIPTION:
139# Unpacks the sources 137# Unpacks the sources
140qt4-build_src_unpack() { 138qt4-build_src_unpack() {
141 setqtenv 139 setqtenv
140 local unpack_p="${MY_P}"
141 case "${PV}" in
142 4.8.0_*)
143 unpack_p="qt-everywhere-opensource-src-${PV/_*}"
144 ;;
145 esac
142 local target targets= 146 local target targets=
143 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \ 147 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \
144 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \ 148 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \
145 ${QT4_EXTRACT_DIRECTORIES}; do 149 ${QT4_EXTRACT_DIRECTORIES}; do
146 targets+=" ${MY_P}/${target}" 150 targets+=" ${unpack_p}/${target}"
147 done 151 done
148 152
149 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 153 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets}
150 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die 154 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die
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
151} 161}
152 162
153# @ECLASS-VARIABLE: PATCHES 163# @ECLASS-VARIABLE: PATCHES
154# @DESCRIPTION: 164# @DESCRIPTION:
155# In case you have patches to apply, specify them in PATCHES variable. Make sure 165# In case you have patches to apply, specify them in PATCHES variable. Make sure
164# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix 174# 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. 175# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf.
166qt4-build_src_prepare() { 176qt4-build_src_prepare() {
167 setqtenv 177 setqtenv
168 cd "${S}" 178 cd "${S}"
169 179
170 # fix qt 4.7 regression that skips -fvisibility=hidden 180 # fix qt 4.7 regression that skips -fvisibility=hidden
171 if version_is_at_least "4.7.0_beta1"; then 181 if version_is_at_least "4.7.0_beta1"; then
172 sed -e "s/^gcc|g++)/*gcc|*g++)/" \ 182 sed -e "s/^gcc|g++)/*gcc|*g++)/" \
173 -i config.tests/unix/fvisibility.test || 183 -i config.tests/unix/fvisibility.test ||
174 die "visibility fixing sed failed" 184 die "visibility fixing sed failed"
175 fi 185 fi
176 # fix libx11 dependency on non X packages 186 # fix libx11 dependency on non X packages
177 if version_is_at_least "4.7.0_beta2"; then 187 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" 188 local NOLIBX11PKG="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns"
179 hasq ${PN} ${NOLIBX11PKG} && qt_nolibx11 189 has ${PN} ${NOLIBX11PKG} && qt_nolibx11
180 [[ ${PN} == "qt-assistant" ]] && qt_assistant_cleanup 190 [[ ${PN} == "qt-assistant" ]] && qt_assistant_cleanup
181 fi 191 fi
182 192
183 if use aqua; then 193 if use aqua; then
184 # provide a proper macx-g++-64 194 # provide a proper macx-g++-64
220 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" 230 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
221 append-flags -mminimal-toc 231 append-flags -mminimal-toc
222 fi 232 fi
223 233
224 # Bug 282984 && Bug 295530 234 # Bug 282984 && Bug 295530
225 sed -e "s:\(^SYSTEM_VARIABLES\):CC="$(tc-getCC)"\nCXX="$(tc-getCXX)"\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \ 235 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" 236 -i configure || die "sed qmake compilers failed"
227 # bug 321335 237 # bug 321335
228 if version_is_at_least 4.6; then 238 if version_is_at_least 4.6; then
229 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \ 239 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \
230 xargs -0 \ 240 xargs -0 \
231 sed -e "s:\(\$MAKE\):\1 CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getCXX)" LINK="$(tc-getCXX)":g" \ 241 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" 242 -i || die "sed test compilers failed"
233 fi 243 fi
234 244
235 # Bug 172219 245 # Bug 172219
236 sed -e "s:X11R6/::" \ 246 sed -e "s:X11R6/::" \
335 myconf+=" $(pkg-config --cflags freetype2)" 345 myconf+=" $(pkg-config --cflags freetype2)"
336 fi 346 fi
337 347
338 # Disable SSE4.x, since auto-detection is currently broken 348 # Disable SSE4.x, since auto-detection is currently broken
339 # Upstream bug http://bugreports.qt.nokia.com/browse/QTBUG-13623 349 # Upstream bug http://bugreports.qt.nokia.com/browse/QTBUG-13623
340 if version_is_at_least 4.7.1; then 350 [[ ${PV} == "4.7.1" ]] && myconf+=" -no-sse4.1 -no-sse4.2"
341 myconf+=" -no-sse4.1 -no-sse4.2"
342 fi
343 351
344 echo ./configure ${myconf} 352 echo ./configure ${myconf}
345 ./configure ${myconf} || die "./configure failed" 353 ./configure ${myconf} || die "./configure failed"
346 myconf="" 354 myconf=""
355
356 prepare_directories ${QT4_TARGET_DIRECTORIES}
347} 357}
348 358
349# @FUNCTION: qt4-build_src_compile 359# @FUNCTION: qt4-build_src_compile
360# @DESCRIPTION:
350# @DESCRIPTION: Actual compile phase 361# Actual compile phase
351qt4-build_src_compile() { 362qt4-build_src_compile() {
352 setqtenv 363 setqtenv
353 364
354 build_directories ${QT4_TARGET_DIRECTORIES} 365 build_directories ${QT4_TARGET_DIRECTORIES}
355} 366}
398 install_directories ${QT4_TARGET_DIRECTORIES} 409 install_directories ${QT4_TARGET_DIRECTORIES}
399 install_qconfigs 410 install_qconfigs
400 fix_library_files 411 fix_library_files
401 fix_includes 412 fix_includes
402 # remove .la files since we are building only shared Qt libraries 413 # remove .la files since we are building only shared Qt libraries
403 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm 414 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm
404} 415}
405 416
406# @FUNCTION: setqtenv 417# @FUNCTION: setqtenv
407setqtenv() { 418setqtenv() {
408 # Set up installation directories 419 # Set up installation directories
495 -nomake examples -nomake demos" 506 -nomake examples -nomake demos"
496 507
497 echo "${myconf}" 508 echo "${myconf}"
498} 509}
499 510
500# @FUNCTION: build_directories 511# @FUNCTION: prepare_directories
501# @USAGE: < directories > 512# @USAGE: < directories >
502# @DESCRIPTION: 513# @DESCRIPTION:
503# Compiles the code in $QT4_TARGET_DIRECTORIES 514# Generates makefiles for the directories set in $QT4_TARGET_DIRECTORIES
504build_directories() { 515prepare_directories() {
505 for x in "$@"; do 516 for x in "$@"; do
506 pushd "${S}"/${x} >/dev/null 517 pushd "${S}"/${x} >/dev/null
518 einfo "running qmake in: $x"
507 # avoid running over the maximum argument number, bug #299810 519 # avoid running over the maximum argument number, bug #299810
508 { 520 {
509 echo "${S}"/mkspecs/common/*.conf 521 echo "${S}"/mkspecs/common/*.conf
510 find "${S}" -name '*.pr[io]' 522 find "${S}" -name '*.pr[io]'
511 } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die 523 } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die
512 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" 524 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
525 popd >/dev/null
526 done
527}
528
529
530# @FUNCTION: build_directories
531# @USAGE: < directories >
532# @DESCRIPTION:
533# Compiles the code in $QT4_TARGET_DIRECTORIES
534build_directories() {
535 for x in "$@"; do
536 pushd "${S}"/${x} >/dev/null
513 emake CC="$(tc-getCC)" \ 537 emake CC="$(tc-getCC)" \
514 CXX="$(tc-getCXX)" \ 538 CXX="$(tc-getCXX)" \
515 LINK="$(tc-getCXX)" || die "emake failed" 539 LINK="$(tc-getCXX)" || die "emake failed"
516 popd >/dev/null 540 popd >/dev/null
517 done 541 done
543# @DESCRIPTION: 567# @DESCRIPTION:
544# List variables that should be defined at the top of QtCore/qconfig.h 568# List variables that should be defined at the top of QtCore/qconfig.h
545: ${QCONFIG_DEFINE:=} 569: ${QCONFIG_DEFINE:=}
546 570
547# @FUNCTION: install_qconfigs 571# @FUNCTION: install_qconfigs
572# @DESCRIPTION:
548# @DESCRIPTION: Install gentoo-specific mkspecs configurations 573# Install gentoo-specific mkspecs configurations
549install_qconfigs() { 574install_qconfigs() {
550 local x 575 local x
551 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then 576 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
552 for x in QCONFIG_ADD QCONFIG_REMOVE; do 577 for x in QCONFIG_ADD QCONFIG_REMOVE; do
553 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri 578 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
564 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed" 589 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed"
565 fi 590 fi
566} 591}
567 592
568# @FUNCTION: generate_qconfigs 593# @FUNCTION: generate_qconfigs
594# @DESCRIPTION:
569# @DESCRIPTION: Generates gentoo-specific configurations 595# Generates gentoo-specific configurations
570generate_qconfigs() { 596generate_qconfigs() {
571 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then 597 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then
572 local x qconfig_add qconfig_remove qconfig_new 598 local x qconfig_add qconfig_remove qconfig_new
573 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do 599 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do
574 [[ -f ${x} ]] || continue 600 [[ -f ${x} ]] || continue
588 614
589 # generate list of QT_CONFIG entries from the existing list 615 # generate list of QT_CONFIG entries from the existing list
590 # including qconfig_add and excluding qconfig_remove 616 # including qconfig_add and excluding qconfig_remove
591 for x in $(sed -n 's/^QT_CONFIG +=//p' \ 617 for x in $(sed -n 's/^QT_CONFIG +=//p' \
592 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri) ${qconfig_add}; do 618 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri) ${qconfig_add}; do
593 hasq ${x} ${qconfig_remove} || qconfig_new+=" ${x}" 619 has ${x} ${qconfig_remove} || qconfig_new+=" ${x}"
594 done 620 done
595 621
596 # replace the existing QT_CONFIG list with qconfig_new 622 # replace the existing QT_CONFIG list with qconfig_new
597 if ! sed -i -e "s/QT_CONFIG +=.*/QT_CONFIG += ${qconfig_new}/" \ 623 if ! sed -i -e "s/QT_CONFIG +=.*/QT_CONFIG += ${qconfig_new}/" \
598 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then 624 "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then
622 fi 648 fi
623 fi 649 fi
624} 650}
625 651
626# @FUNCTION: qt4-build_pkg_postrm 652# @FUNCTION: qt4-build_pkg_postrm
653# @DESCRIPTION:
627# @DESCRIPTION: Generate configurations when the package is completely removed 654# Generate configurations when the package is completely removed
628qt4-build_pkg_postrm() { 655qt4-build_pkg_postrm() {
629 generate_qconfigs 656 generate_qconfigs
630} 657}
631 658
632# @FUNCTION: qt4-build_pkg_postinst 659# @FUNCTION: qt4-build_pkg_postinst
660# @DESCRIPTION:
633# @DESCRIPTION: Generate configuration, plus throws a message about possible 661# Generate configuration, plus throws a message about possible
634# breakages and proposed solutions. 662# breakages and proposed solutions.
635qt4-build_pkg_postinst() { 663qt4-build_pkg_postinst() {
636 generate_qconfigs 664 generate_qconfigs
637} 665}
638 666

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

  ViewVC Help
Powered by ViewVC 1.1.20