/[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.58 Revision 1.63
1# Copyright 1999-2009 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.58 2009/12/25 08:19:38 grobian Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.63 2010/02/10 20:34:17 yngwin 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>,
12# @DESCRIPTION: 12# @DESCRIPTION:
13# This eclass contains various functions that are used when building Qt4 13# This eclass contains various functions that are used when building Qt4
14 14
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/_/-}
18if version_is_at_least 4.5.99999999; then
19 MY_P=qt-everywhere-opensource-src-${MY_PV}
20else
21 MY_P=qt-x11-opensource-src-${MY_PV}
22fi
23
24HOMEPAGE="http://qt.nokia.com/"
25SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
26
27LICENSE="|| ( LGPL-2.1 GPL-3 )"
17IUSE="debug pch aqua" 28IUSE="debug pch aqua"
29
18RDEPEND=" 30RDEPEND="
19 !<x11-libs/qt-assistant-${PV} 31 !<x11-libs/qt-assistant-${PV}
20 !>x11-libs/qt-assistant-${PV}-r9999 32 !>x11-libs/qt-assistant-${PV}-r9999
21 !<x11-libs/qt-core-${PV} 33 !<x11-libs/qt-core-${PV}
22 !>x11-libs/qt-core-${PV}-r9999 34 !>x11-libs/qt-core-${PV}-r9999
44 !>x11-libs/qt-webkit-${PV}-r9999 56 !>x11-libs/qt-webkit-${PV}-r9999
45 !<x11-libs/qt-xmlpatterns-${PV} 57 !<x11-libs/qt-xmlpatterns-${PV}
46 !>x11-libs/qt-xmlpatterns-${PV}-r9999 58 !>x11-libs/qt-xmlpatterns-${PV}-r9999
47" 59"
48 60
49MY_PV=${PV/_/-} 61S=${WORKDIR}/${MY_P}
50
51HOMEPAGE="http://qt.nokia.com/"
52if version_is_at_least 4.5.99999999 ${PV} ; then
53 SRC_URI="http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${MY_PV}.tar.gz"
54else
55 SRC_URI="aqua? ( http://get.qt.nokia.com/qt/source/qt-mac-opensource-src-${MY_PV}.tar.gz )
56 !aqua? ( http://get.qt.nokia.com/qt/source/qt-x11-opensource-src-${MY_PV}.tar.gz )"
57fi
58
59LICENSE="|| ( LGPL-2.1 GPL-3 )"
60 62
61# @FUNCTION: qt4-build_pkg_setup 63# @FUNCTION: qt4-build_pkg_setup
62# @DESCRIPTION: 64# @DESCRIPTION:
63# Sets up S, MY_P, PATH, and LD_LIBRARY_PATH 65# Sets up S, MY_P, PATH, and LD_LIBRARY_PATH
64qt4-build_pkg_setup() { 66qt4-build_pkg_setup() {
65 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= 67 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX=
66 68
67 local MY_GE
68 if version_is_at_least 4.5.99999999 ${PV} ; then
69 MY_P=qt-everywhere-opensource-src-${MY_PV}
70 else
71 use aqua \
72 && MY_GE=mac \
73 || MY_GE=x11
74 MY_P=qt-${MY_GE}-opensource-src-${MY_PV}
75 fi
76 S=${WORKDIR}/${MY_P}
77 69
78 PATH="${S}/bin${PATH:+:}${PATH}" 70 PATH="${S}/bin${PATH:+:}${PATH}"
79 if [[ ${CHOST} != *-darwin* ]]; then 71 if [[ ${CHOST} != *-darwin* ]]; then
80 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" 72 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
81 else 73 else
82 DYLD_LIBRARY_PATH="${S}/lib${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}" 74 DYLD_LIBRARY_PATH="${S}/lib${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}"
83 # on mac we *need* src/gui/kernel/qapplication_mac.cpp for platfrom 75 # On MacOS we *need* at least src/gui/kernel/qapplication_mac.mm for
84 # detection since the x11-headers package b0rkens the header 76 # platform detection. Note: needs to come before any directories to
85 # installation, we have to extract src/ and include/ completely on mac 77 # avoid extract failure.
86 # tools is needed for qt-demo and some others 78 [[ ${CHOST} == *-apple-darwin* ]] && \
87 QT4_EXTRACT_DIRECTORIES+=" src include" 79 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm ${QT4_EXTRACT_DIRECTORIES}"
88
89 if [[ ${PN} == qt-demo || ${PN} == qt-qt3support || ${PN} == qt-webkit ]]; then
90 QT4_EXTRACT_DIRECTORIES+=" tools"
91 fi
92 fi 80 fi
93 81
94 # Make sure ebuilds use the required EAPI 82 # Make sure ebuilds use the required EAPI
95 if [[ ${EAPI} != [23] ]]; then 83 if [[ ${EAPI} != [23] ]]; then
96 eerror "The qt4-build eclass requires EAPI=2 or EAPI=3, but this ebuild is using" 84 eerror "The qt4-build eclass requires EAPI=2 or EAPI=3, but this ebuild is using"
102 if ! version_is_at_least 4.1 $(gcc-version); then 90 if ! version_is_at_least 4.1 $(gcc-version); then
103 ewarn "Using a GCC version lower than 4.1 is not supported!" 91 ewarn "Using a GCC version lower than 4.1 is not supported!"
104 echo 92 echo
105 ebeep 3 93 ebeep 3
106 fi 94 fi
107
108 if [[ ${P} == qt-core-4.6.0_rc1 ]]; then
109 ewarn
110 ewarn "Binary compatibility broke between 4.6.0_beta1 and 4.6.0_rc1."
111 ewarn "If you are upgrading from 4.6.0_beta1, you'll have to"
112 ewarn "re-emerge everything that depends on Qt."
113 ewarn "Use the following command:"
114 ewarn
115 ewarn " emerge -av1 \$(for i in \$(qlist -IC x11-libs/qt-);"
116 ewarn " do equery -q d \$i | grep -v 'x11-libs/qt-' |"
117 ewarn " sed \"s/^/=/\"; done)"
118 ewarn
119 ewarn "YOU'VE BEEN WARNED"
120 ewarn
121 ebeep 3
122 fi
123
124} 95}
125 96
126# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES 97# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
127# @DESCRIPTION: 98# @DESCRIPTION:
128# Arguments for build_target_directories. Takes the directories, in which the 99# Arguments for build_target_directories. Takes the directories, in which the
144 ${QT4_EXTRACT_DIRECTORIES}; do 115 ${QT4_EXTRACT_DIRECTORIES}; do
145 targets+=" ${MY_P}/${target}" 116 targets+=" ${MY_P}/${target}"
146 done 117 done
147 118
148 echo tar xzpf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 119 echo tar xzpf "${DISTDIR}"/${MY_P}.tar.gz ${targets}
149 tar xzpf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 120 tar xzpf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die
150} 121}
151 122
152# @ECLASS-VARIABLE: PATCHES 123# @ECLASS-VARIABLE: PATCHES
153# @DESCRIPTION: 124# @DESCRIPTION:
154# In case you have patches to apply, specify them in PATCHES variable. Make sure 125# In case you have patches to apply, specify them in PATCHES variable. Make sure
299 unset glibflags 270 unset glibflags
300 fi 271 fi
301 272
302 if use aqua ; then 273 if use aqua ; then
303 # On (snow) leopard use the new (frameworked) cocoa code. 274 # On (snow) leopard use the new (frameworked) cocoa code.
304 if [[ $(uname -r | cut -d . -f 1) -ge 9 ]] ; then 275 if [[ ${CHOST##*-darwin} -ge 9 ]] ; then
305 myconf+=" -cocoa -framework" 276 myconf+=" -cocoa -framework"
306 277
307 # We are crazy and build cocoa + qt3support :-) 278 # We are crazy and build cocoa + qt3support :-)
308 if use qt3support; then 279 if use qt3support; then
309 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \ 280 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \
338# @FUNCTION: fix_includes 309# @FUNCTION: fix_includes
339# @DESCRIPTION: 310# @DESCRIPTION:
340# For MacOSX we need to add some symlinks when frameworks are 311# For MacOSX we need to add some symlinks when frameworks are
341# being used, to avoid complications with some more or less stupid packages. 312# being used, to avoid complications with some more or less stupid packages.
342fix_includes() { 313fix_includes() {
343 if use aqua && [[ $(uname -r | cut -d . -f 1) -ge 9 ]] ; then 314 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
344 # Some packages tend to include <Qt/...> 315 # Some packages tend to include <Qt/...>
345 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt 316 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt
346 317
347 # Fake normal headers when frameworks are installed... eases life later on 318 # Fake normal headers when frameworks are installed... eases life later on
348 local dest f 319 local dest f
481# @DESCRIPTION: 452# @DESCRIPTION:
482# Compiles the code in $QT4_TARGET_DIRECTORIES 453# Compiles the code in $QT4_TARGET_DIRECTORIES
483build_directories() { 454build_directories() {
484 for x in "$@"; do 455 for x in "$@"; do
485 pushd "${S}"/${x} >/dev/null 456 pushd "${S}"/${x} >/dev/null
486 sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" $(find "${S}" -name '*.pr[io]') "${S}"/mkspecs/common/*.conf || die 457 # avoid running over the maximum argument number, bug #299810
458 {
459 echo "${S}"/mkspecs/common/*.conf
460 find "${S}" -name '*.pr[io]'
461 } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die
487 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" 462 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
488 emake CC="@echo compiling \$< && $(tc-getCC)" \ 463 emake CC="@echo compiling \$< && $(tc-getCC)" \
489 CXX="@echo compiling \$< && $(tc-getCXX)" \ 464 CXX="@echo compiling \$< && $(tc-getCXX)" \
490 LINK="@echo linking \$@ && $(tc-getCXX)" || die "emake failed" 465 LINK="@echo linking \$@ && $(tc-getCXX)" || die "emake failed"
491 popd >/dev/null 466 popd >/dev/null

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.63

  ViewVC Help
Powered by ViewVC 1.1.20