/[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.7 Revision 1.14
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.7 2008/03/05 23:06:26 ingmar Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.14 2008/05/26 14:30:44 ingmar 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: 8# @BLURB: Eclass for Qt4 split ebuilds.
9# Eclass for Qt4
10# @DESCRIPTION: 9# @DESCRIPTION:
11# This eclass contains various functions that are used when building Qt4 10# This eclass contains various functions that are used when building Qt4
12 11
13inherit eutils multilib toolchain-funcs flag-o-matic 12inherit eutils multilib toolchain-funcs flag-o-matic
14 13
15IUSE="${IUSE} debug" 14IUSE="${IUSE} debug pch"
16 15
17case "${PV}" in 16case "${PV}" in
18 4.4.0_beta*) 17 4.4.0_beta*)
19 SRCTYPE="${SRCTYPE:-opensource-src}" 18 SRCTYPE="${SRCTYPE:-opensource-src}"
20 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}"
21 ;; 24 ;;
22 *) 25 *)
23 SRCTYPE="${SRCTYPE:-opensource-src}" 26 SRCTYPE="${SRCTYPE:-opensource-src}"
24 MY_PV="${PV}" 27 MY_PV="${PV}"
25 ;; 28 ;;
26esac 29esac
27S=${WORKDIR}/qt-x11-${SRCTYPE}-${MY_PV} 30MY_P=qt-x11-${SRCTYPE}-${MY_PV}
31S=${WORKDIR}/${MY_P}
28 32
29SRC_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.0|4.4.0_rc*)
37 SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2"
38 ;;
39 *)
40 ;;
41esac
30 42
31qt4-build_pkg_setup() { 43qt4-build_pkg_setup() {
32 # Check USE requirements 44 # Check USE requirements
33 qt4-build_check_use 45 qt4-build_check_use
34 46
51 63
52 PATH="${S}/bin:${PATH}" 64 PATH="${S}/bin:${PATH}"
53 LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}" 65 LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}"
54} 66}
55 67
68qt4_unpack() {
69 local target targets
70 for target in configure LICENSE.{GPL2,GPL3,QPL} 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.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
56qt4-build_src_unpack() { 87qt4-build_src_unpack() {
57 # TODO: partial unpacks, cfr split KDE ebuilds. 88 qt4_unpack
58 unpack ${A}
59 cd "${S}"
60
61 if [[ ${PN} != qt-core ]]; then 89 if [[ ${PN} != qt-core ]]; then
90 cd "${S}"
62 skip_qmake_build_patch 91 skip_qmake_build_patch
63 skip_project_generation_patch 92 skip_project_generation_patch
64 symlink_binaries_to_buildtree 93 symlink_binaries_to_buildtree
65 fi 94 fi
66 95
85 if [[ $(gcc-fullversion) == "3.4.6" && gcc-specs-ssp ]] ; then 114 if [[ $(gcc-fullversion) == "3.4.6" && gcc-specs-ssp ]] ; then
86 ewarn "Appending -fno-stack-protector to CFLAGS/CXXFLAGS" 115 ewarn "Appending -fno-stack-protector to CFLAGS/CXXFLAGS"
87 append-flags -fno-stack-protector 116 append-flags -fno-stack-protector
88 fi 117 fi
89 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
90 myconf="$(standard_configure_options) ${myconf}" 125 myconf="$(standard_configure_options) ${myconf}"
91 126
92 echo ./configure ${myconf} 127 echo ./configure ${myconf}
93 ./configure ${myconf} || die "./configure failed" 128 ./configure ${myconf} || die "./configure failed"
94 129
109 # Disable visibility explicitly if gcc version isn't 4 144 # Disable visibility explicitly if gcc version isn't 4
110 if [[ "$(gcc-major-version)" -lt "4" ]]; then 145 if [[ "$(gcc-major-version)" -lt "4" ]]; then
111 myconf="${myconf} -no-reduce-exports" 146 myconf="${myconf} -no-reduce-exports"
112 fi 147 fi
113 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
114 if use debug; then 156 if use debug; then
115 myconf="${myconf} -debug -no-separate-debug-info" 157 myconf="${myconf} -debug -no-separate-debug-info"
116 else 158 else
117 myconf="${myconf} -release -no-separate-debug-info" 159 myconf="${myconf} -release -no-separate-debug-info"
118 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
119 172
120 myconf="${myconf} -stl -verbose -largefile -confirm-license -no-rpath 173 myconf="${myconf} -stl -verbose -largefile -confirm-license -no-rpath
121 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 174 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
122 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} 175 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
123 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} 176 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
164# @DESCRIPTION: 217# @DESCRIPTION:
165# 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
166QCONFIG_DEFINE="${QCONFIG_DEFINE:-}" 219QCONFIG_DEFINE="${QCONFIG_DEFINE:-}"
167 220
168install_qconfigs() { 221install_qconfigs() {
169 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} ]]; then
170 local x 222 local x
223 if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
171 for x in QCONFIG_ADD QCONFIG_REMOVE; do 224 for x in QCONFIG_ADD QCONFIG_REMOVE; do
172 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri 225 [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
173 done 226 done
174 insinto ${QTDATADIR}/mkspecs/gentoo 227 insinto ${QTDATADIR}/mkspecs/gentoo
175 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
176 230
231 if [[ -n ${QCONFIG_DEFINE} ]]; then
177 for x in ${QCONFIG_DEFINE}; do 232 for x in ${QCONFIG_DEFINE}; do
178 echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h 233 echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h
179 done 234 done
180 insinto ${QTHEADERDIR}/Gentoo 235 insinto ${QTHEADERDIR}/Gentoo
181 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"

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.20