/[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.92 Revision 1.97
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.92 2011/08/13 11:31:03 hwoarang Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.97 2011/11/02 18:01:00 jer 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
26
27if version_is_at_least 4.7.99999999; then
28 IUSE+=" c++0x qpa"
25fi 29fi
26 30
27HOMEPAGE="http://qt.nokia.com/" 31HOMEPAGE="http://qt.nokia.com/"
28SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz" 32SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
29 33
137# Unpacks the sources 141# Unpacks the sources
138qt4-build_src_unpack() { 142qt4-build_src_unpack() {
139 setqtenv 143 setqtenv
140 local unpack_p="${MY_P}" 144 local unpack_p="${MY_P}"
141 case "${PV}" in 145 case "${PV}" in
142 4.8.0_beta*) 146 4.8.0_*)
143 unpack_p="qt-everywhere-opensource-src-${PV/_*}" 147 unpack_p="qt-everywhere-opensource-src-${PV/_*}"
144 ;; 148 ;;
145 esac 149 esac
146 local target targets= 150 local target targets=
147 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \ 151 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \
151 done 155 done
152 156
153 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 157 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets}
154 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die 158 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die
155 case "${PV}" in 159 case "${PV}" in
156 4.8.0_beta*) 160 4.8.0_*)
157 mv ${WORKDIR}/qt-everywhere-opensource-src-${PV/_*} \ 161 mv ${WORKDIR}/qt-everywhere-opensource-src-${PV/_*} \
158 ${WORKDIR}/qt-everywhere-opensource-src-${MY_PV} 162 ${WORKDIR}/qt-everywhere-opensource-src-${MY_PV}
159 ;; 163 ;;
160 esac 164 esac
161} 165}
174# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix 178# 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. 179# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf.
176qt4-build_src_prepare() { 180qt4-build_src_prepare() {
177 setqtenv 181 setqtenv
178 cd "${S}" 182 cd "${S}"
179 183
180 # fix qt 4.7 regression that skips -fvisibility=hidden 184 # fix qt 4.7 regression that skips -fvisibility=hidden
181 if version_is_at_least "4.7.0_beta1"; then 185 if version_is_at_least "4.7.0_beta1"; then
182 sed -e "s/^gcc|g++)/*gcc|*g++)/" \ 186 sed -e "s/^gcc|g++)/*gcc|*g++)/" \
183 -i config.tests/unix/fvisibility.test || 187 -i config.tests/unix/fvisibility.test ||
184 die "visibility fixing sed failed" 188 die "visibility fixing sed failed"
214 if [[ $(gcc-major-version) == 3 ]] && use amd64; then 218 if [[ $(gcc-major-version) == 3 ]] && use amd64; then
215 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" 219 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
216 append-flags -fno-gcse 220 append-flags -fno-gcse
217 fi 221 fi
218 222
223 if has c++0x ${IUSE//+} && use c++0x; then
224 ewarn "You are about to build Qt4 using the C++11 standard. Even though"
225 ewarn "this is an official standard, some of the reverse dependencies"
226 ewarn "may fail to compile or link againt the Qt4 libraries. Before"
227 ewarn "reporting a bug, make sure your bug is reproducible with c++0x"
228 ewarn "disabled."
229 append-flags -std=c++0x
230 fi
219 # Unsupported old gcc versions - hardened needs this :( 231 # Unsupported old gcc versions - hardened needs this :(
220 if [[ $(gcc-major-version) -lt 4 ]] ; then 232 if [[ $(gcc-major-version) -lt 4 ]] ; then
221 ewarn "Appending -fno-stack-protector to CXXFLAGS" 233 ewarn "Appending -fno-stack-protector to CXXFLAGS"
222 append-cxxflags -fno-stack-protector 234 append-cxxflags -fno-stack-protector
223 # Bug 253127 235 # Bug 253127
320 # avoid the -pthread argument 332 # avoid the -pthread argument
321 myconf+=" ${glibflags//-pthread}" 333 myconf+=" ${glibflags//-pthread}"
322 unset glibflags 334 unset glibflags
323 fi 335 fi
324 336
337 if has qpa ${IUSE//+} && use qpa; then
338 ewarn
339 ewarn "The qpa useflag enables the Qt Platform Abstraction, formely"
340 ewarn "known as Qt Lighthouse. If you are not sure what that is, then"
341 ewarn "disable it before reporting any bugs related to this useflag."
342 ewarn
343 myconf+=" -qpa"
344 fi
345
325 if use aqua ; then 346 if use aqua ; then
326 # On (snow) leopard use the new (frameworked) cocoa code. 347 # On (snow) leopard use the new (frameworked) cocoa code.
327 if [[ ${CHOST##*-darwin} -ge 9 ]] ; then 348 if [[ ${CHOST##*-darwin} -ge 9 ]] ; then
328 myconf+=" -cocoa -framework" 349 myconf+=" -cocoa -framework"
329 350
355 376
356 prepare_directories ${QT4_TARGET_DIRECTORIES} 377 prepare_directories ${QT4_TARGET_DIRECTORIES}
357} 378}
358 379
359# @FUNCTION: qt4-build_src_compile 380# @FUNCTION: qt4-build_src_compile
381# @DESCRIPTION:
360# @DESCRIPTION: Actual compile phase 382# Actual compile phase
361qt4-build_src_compile() { 383qt4-build_src_compile() {
362 setqtenv 384 setqtenv
363 385
364 build_directories ${QT4_TARGET_DIRECTORIES} 386 build_directories ${QT4_TARGET_DIRECTORIES}
365} 387}
408 install_directories ${QT4_TARGET_DIRECTORIES} 430 install_directories ${QT4_TARGET_DIRECTORIES}
409 install_qconfigs 431 install_qconfigs
410 fix_library_files 432 fix_library_files
411 fix_includes 433 fix_includes
412 # remove .la files since we are building only shared Qt libraries 434 # remove .la files since we are building only shared Qt libraries
413 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm 435 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm
414} 436}
415 437
416# @FUNCTION: setqtenv 438# @FUNCTION: setqtenv
417setqtenv() { 439setqtenv() {
418 # Set up installation directories 440 # Set up installation directories
566# @DESCRIPTION: 588# @DESCRIPTION:
567# List variables that should be defined at the top of QtCore/qconfig.h 589# List variables that should be defined at the top of QtCore/qconfig.h
568: ${QCONFIG_DEFINE:=} 590: ${QCONFIG_DEFINE:=}
569 591
570# @FUNCTION: install_qconfigs 592# @FUNCTION: install_qconfigs
593# @DESCRIPTION:
571# @DESCRIPTION: Install gentoo-specific mkspecs configurations 594# Install gentoo-specific mkspecs configurations
572install_qconfigs() { 595install_qconfigs() {
573 local x 596 local x
574 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then 597 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
575 for x in QCONFIG_ADD QCONFIG_REMOVE; do 598 for x in QCONFIG_ADD QCONFIG_REMOVE; do
576 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri 599 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
587 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed" 610 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed"
588 fi 611 fi
589} 612}
590 613
591# @FUNCTION: generate_qconfigs 614# @FUNCTION: generate_qconfigs
615# @DESCRIPTION:
592# @DESCRIPTION: Generates gentoo-specific configurations 616# Generates gentoo-specific configurations
593generate_qconfigs() { 617generate_qconfigs() {
594 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then 618 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then
595 local x qconfig_add qconfig_remove qconfig_new 619 local x qconfig_add qconfig_remove qconfig_new
596 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do 620 for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do
597 [[ -f ${x} ]] || continue 621 [[ -f ${x} ]] || continue
645 fi 669 fi
646 fi 670 fi
647} 671}
648 672
649# @FUNCTION: qt4-build_pkg_postrm 673# @FUNCTION: qt4-build_pkg_postrm
674# @DESCRIPTION:
650# @DESCRIPTION: Generate configurations when the package is completely removed 675# Generate configurations when the package is completely removed
651qt4-build_pkg_postrm() { 676qt4-build_pkg_postrm() {
652 generate_qconfigs 677 generate_qconfigs
653} 678}
654 679
655# @FUNCTION: qt4-build_pkg_postinst 680# @FUNCTION: qt4-build_pkg_postinst
681# @DESCRIPTION:
656# @DESCRIPTION: Generate configuration, plus throws a message about possible 682# Generate configuration, plus throws a message about possible
657# breakages and proposed solutions. 683# breakages and proposed solutions.
658qt4-build_pkg_postinst() { 684qt4-build_pkg_postinst() {
659 generate_qconfigs 685 generate_qconfigs
660} 686}
661 687

Legend:
Removed from v.1.92  
changed lines
  Added in v.1.97

  ViewVC Help
Powered by ViewVC 1.1.20