/[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.8 Revision 1.17
1# Copyright 2007-2008 Gentoo Foundation 1# Copyright 2007-2008 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.8 2008/03/06 01:23:51 ingmar Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.17 2009/01/12 23:47:16 yngwin Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Caleb Tennis <caleb@gentoo.org> 7# Caleb Tennis <caleb@gentoo.org>
8# @BLURB: Eclass for Qt4 split ebuilds. 8# @BLURB: Eclass for Qt4 split ebuilds.
9# @DESCRIPTION: 9# @DESCRIPTION:
10# This eclass contains various functions that are used when building Qt4 10# This eclass contains various functions that are used when building Qt4
11 11
12inherit eutils multilib toolchain-funcs flag-o-matic 12inherit eutils multilib toolchain-funcs flag-o-matic
13 13
14IUSE="${IUSE} debug" 14IUSE="${IUSE} debug pch"
15 15
16case "${PV}" in 16case "${PV}" in
17 4.4.0_beta*) 17 4.4.0_beta*)
18 SRCTYPE="${SRCTYPE:-opensource-src}" 18 SRCTYPE="${SRCTYPE:-opensource-src}"
19 MY_PV="${PV/_beta/-beta}" 19 MY_PV="${PV/_beta/-beta}"
20 ;;
21 4.4.0_rc*)
22 SRCTYPE="${SRCTYPE:-opensource-src}"
23 MY_PV="${PV/_rc/-rc}"
20 ;; 24 ;;
21 *) 25 *)
22 SRCTYPE="${SRCTYPE:-opensource-src}" 26 SRCTYPE="${SRCTYPE:-opensource-src}"
23 MY_PV="${PV}" 27 MY_PV="${PV}"
24 ;; 28 ;;
25esac 29esac
26S=${WORKDIR}/qt-x11-${SRCTYPE}-${MY_PV} 30MY_P=qt-x11-${SRCTYPE}-${MY_PV}
31S=${WORKDIR}/${MY_P}
27 32
28SRC_URI="ftp://ftp.trolltech.com/qt/source/qt-x11-${SRCTYPE}-${MY_PV}.tar.bz2" 33SRC_URI="ftp://ftp.trolltech.com/qt/source/${MY_P}.tar.bz2"
34
35case "${PV}" in
36 4.4.2|4.4.1|4.4.0|4.4.0_rc*)
37 SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2"
38 ;;
39 *)
40 ;;
41esac
29 42
30qt4-build_pkg_setup() { 43qt4-build_pkg_setup() {
31 # Check USE requirements 44 # Check USE requirements
32 qt4-build_check_use 45 qt4-build_check_use
33 46
50 63
51 PATH="${S}/bin:${PATH}" 64 PATH="${S}/bin:${PATH}"
52 LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}" 65 LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}"
53} 66}
54 67
68qt4_unpack() {
69 local target targets
70 for target in configure LICENSE.{GPL2,GPL3} projects.pro \
71 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \
72 ${QT4_EXTRACT_DIRECTORIES}; do
73 targets="${targets} ${MY_P}/${target}"
74 done
75
76 echo tar xjpf "${DISTDIR}"/${MY_P}.tar.bz2 ${targets}
77 tar xjpf "${DISTDIR}"/${MY_P}.tar.bz2 ${targets}
78
79 case "${PV}" in
80 4.4.2|4.4.1|4.4.0|4.4.0_rc*)
81 echo tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2
82 tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2
83 ;;
84 esac
85}
86
55qt4-build_src_unpack() { 87qt4-build_src_unpack() {
56 # TODO: partial unpacks, cfr split KDE ebuilds. 88 qt4_unpack
57 unpack ${A}
58 cd "${S}"
59
60 if [[ ${PN} != qt-core ]]; then 89 if [[ ${PN} != qt-core ]]; then
90 cd "${S}"
61 skip_qmake_build_patch 91 skip_qmake_build_patch
62 skip_project_generation_patch 92 skip_project_generation_patch
63 symlink_binaries_to_buildtree 93 symlink_binaries_to_buildtree
64 fi 94 fi
65 95
84 if [[ $(gcc-fullversion) == "3.4.6" && gcc-specs-ssp ]] ; then 114 if [[ $(gcc-fullversion) == "3.4.6" && gcc-specs-ssp ]] ; then
85 ewarn "Appending -fno-stack-protector to CFLAGS/CXXFLAGS" 115 ewarn "Appending -fno-stack-protector to CFLAGS/CXXFLAGS"
86 append-flags -fno-stack-protector 116 append-flags -fno-stack-protector
87 fi 117 fi
88 118
119 # Bug 178652
120 if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then
121 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
122 append-flags -fno-gcse
123 fi
124
89 myconf="$(standard_configure_options) ${myconf}" 125 myconf="$(standard_configure_options) ${myconf}"
90 126
91 echo ./configure ${myconf} 127 echo ./configure ${myconf}
92 ./configure ${myconf} || die "./configure failed" 128 ./configure ${myconf} || die "./configure failed"
93 129
108 # Disable visibility explicitly if gcc version isn't 4 144 # Disable visibility explicitly if gcc version isn't 4
109 if [[ "$(gcc-major-version)" -lt "4" ]]; then 145 if [[ "$(gcc-major-version)" -lt "4" ]]; then
110 myconf="${myconf} -no-reduce-exports" 146 myconf="${myconf} -no-reduce-exports"
111 fi 147 fi
112 148
149 # precompiled headers doesn't work on hardened, where the flag is masked.
150 if use pch; then
151 myconf="${myconf} -pch"
152 else
153 myconf="${myconf} -no-pch"
154 fi
155
113 if use debug; then 156 if use debug; then
114 myconf="${myconf} -debug -no-separate-debug-info" 157 myconf="${myconf} -debug -no-separate-debug-info"
115 else 158 else
116 myconf="${myconf} -release -no-separate-debug-info" 159 myconf="${myconf} -release -no-separate-debug-info"
117 fi 160 fi
161
162 # ARCH is set on Gentoo. QT now falls back to generic on an unsupported
163 # ${ARCH}. Therefore we convert it to supported values.
164 case "${ARCH}" in
165 amd64) myconf="${myconf} -arch x86_64" ;;
166 ppc|ppc64) myconf="${myconf} -arch powerpc" ;;
167 x86|x86-*) myconf="${myconf} -arch i386" ;;
168 alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch ${ARCH}" ;;
169 hppa|sh) myconf="${myconf} -arch generic" ;;
170 *) die "${ARCH} is unsupported by this eclass. Please file a bug." ;;
171 esac
118 172
119 myconf="${myconf} -stl -verbose -largefile -confirm-license -no-rpath 173 myconf="${myconf} -stl -verbose -largefile -confirm-license -no-rpath
120 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 174 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
121 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} 175 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
122 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} 176 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
163# @DESCRIPTION: 217# @DESCRIPTION:
164# List variables that should be defined at the top of QtCore/qconfig.h 218# List variables that should be defined at the top of QtCore/qconfig.h
165QCONFIG_DEFINE="${QCONFIG_DEFINE:-}" 219QCONFIG_DEFINE="${QCONFIG_DEFINE:-}"
166 220
167install_qconfigs() { 221install_qconfigs() {
168 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} ]]; then
169 local x 222 local x
223 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
170 for x in QCONFIG_ADD QCONFIG_REMOVE; do 224 for x in QCONFIG_ADD QCONFIG_REMOVE; do
171 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri 225 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
172 done 226 done
173 insinto ${QTDATADIR}/mkspecs/gentoo 227 insinto ${QTDATADIR}/mkspecs/gentoo
174 doins "${T}"/${PN}-qconfig.pri || die "installing ${PN}-qconfig.pri failed" 228 doins "${T}"/${PN}-qconfig.pri || die "installing ${PN}-qconfig.pri failed"
229 fi
175 230
231 if [[ -n ${QCONFIG_DEFINE} ]]; then
176 for x in ${QCONFIG_DEFINE}; do 232 for x in ${QCONFIG_DEFINE}; do
177 echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h 233 echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h
178 done 234 done
179 insinto ${QTHEADERDIR}/Gentoo 235 insinto ${QTHEADERDIR}/Gentoo
180 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed" 236 doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed"
245 generate_qconfigs 301 generate_qconfigs
246} 302}
247 303
248qt4-build_pkg_postinst() { 304qt4-build_pkg_postinst() {
249 generate_qconfigs 305 generate_qconfigs
306 echo
307 ewarn "After a rebuild or upgrade of Qt, it can happen that Qt plugins (such as Qt"
308 ewarn "and KDE styles and widgets) can no longer be loaded. In this situation you"
309 ewarn "should recompile the packages providing these plugins. Also, make sure you"
310 ewarn "compile the Qt packages, and the packages that depend on it, with the same"
311 ewarn "GCC version and the same USE flag settings (especially the debug flag)."
312 ewarn
313 ewarn "Packages that typically need to be recompiled are kdelibs from KDE4, any"
314 ewarn "additional KDE4/Qt4 styles, qscintilla and PyQt4. Before filing a bug report,"
315 ewarn "make sure all your Qt4 packages are up-to-date and built with the same"
316 ewarn "configuration."
317 ewarn
318 ewarn "For more information, see http://doc.trolltech.com/4.4/plugins-howto.html"
319 echo
250} 320}
251 321
252skip_qmake_build_patch() { 322skip_qmake_build_patch() {
253 # Don't need to build qmake, as it's already installed from qt-core 323 # Don't need to build qmake, as it's already installed from qt-core
254 sed -i -e "s:if true:if false:g" "${S}"/configure || die "Sed failed" 324 sed -i -e "s:if true:if false:g" "${S}"/configure || die "Sed failed"

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.20