/[gentoo-x86]/eclass/qt4-build.eclass
Gentoo

Contents of /eclass/qt4-build.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.33 - (hide annotations) (download)
Tue May 12 14:21:22 2009 UTC (5 years, 3 months ago) by hwoarang
Branch: MAIN
Changes since 1.32: +6 -1 lines
Might fix bug 261412

1 yngwin 1.20 # Copyright 2007-2009 Gentoo Foundation
2 caleb 1.1 # Distributed under the terms of the GNU General Public License v2
3 hwoarang 1.33 # $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.32 2009/04/23 11:45:38 hwoarang Exp $
4 caleb 1.1
5     # @ECLASS: qt4-build.eclass
6     # @MAINTAINER:
7 yngwin 1.25 # Ben de Groot <yngwin@gentoo.org>,
8     # Markos Chandras <hwoarang@gentoo.org>,
9 caleb 1.1 # Caleb Tennis <caleb@gentoo.org>
10 ingmar 1.8 # @BLURB: Eclass for Qt4 split ebuilds.
11 caleb 1.1 # @DESCRIPTION:
12     # This eclass contains various functions that are used when building Qt4
13    
14 yngwin 1.20 inherit eutils multilib toolchain-funcs flag-o-matic versionator
15 caleb 1.1
16 yngwin 1.20 IUSE="${IUSE} custom-cxxflags debug pch"
17 caleb 1.1
18 ingmar 1.7 case "${PV}" in
19 yngwin 1.20 4.?.?_rc*)
20 ingmar 1.11 SRCTYPE="${SRCTYPE:-opensource-src}"
21     MY_PV="${PV/_rc/-rc}"
22     ;;
23 ingmar 1.7 *)
24     SRCTYPE="${SRCTYPE:-opensource-src}"
25     MY_PV="${PV}"
26     ;;
27     esac
28 ingmar 1.11 MY_P=qt-x11-${SRCTYPE}-${MY_PV}
29     S=${WORKDIR}/${MY_P}
30 ingmar 1.7
31 yngwin 1.20 HOMEPAGE="http://www.qtsoftware.com/"
32 yngwin 1.25 SRC_URI="http://download.qtsoftware.com/qt/source/${MY_P}.tar.bz2"
33 ingmar 1.11
34     case "${PV}" in
35 yngwin 1.20 4.4.?) SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2" ;;
36     *) ;;
37 ingmar 1.11 esac
38 ingmar 1.7
39 yngwin 1.25 if version_is_at_least 4.5 ${PV} ; then
40     LICENSE="|| ( LGPL-2.1 GPL-3 )"
41     fi
42    
43 caleb 1.1 qt4-build_pkg_setup() {
44 yngwin 1.20 # EAPI=2 ebuilds set use-deps, others need this:
45     if [[ $EAPI != 2 ]]; then
46     # Make sure debug setting corresponds with qt-core (bug 258512)
47     if [[ $PN != "qt-core" ]]; then
48     use debug && QT4_BUILT_WITH_USE_CHECK="${QT4_BUILT_WITH_USE_CHECK}
49     ~x11-libs/qt-core-${PV} debug"
50     fi
51    
52     # Check USE requirements
53     qt4-build_check_use
54     fi
55 caleb 1.1 # Set up installation directories
56 caleb 1.5 QTBASEDIR=/usr/$(get_libdir)/qt4
57     QTPREFIXDIR=/usr
58     QTBINDIR=/usr/bin
59     QTLIBDIR=/usr/$(get_libdir)/qt4
60     QTPCDIR=/usr/$(get_libdir)/pkgconfig
61     QTDATADIR=/usr/share/qt4
62 caleb 1.6 QTDOCDIR=/usr/share/doc/qt-${PV}
63 caleb 1.5 QTHEADERDIR=/usr/include/qt4
64     QTPLUGINDIR=${QTLIBDIR}/plugins
65     QTSYSCONFDIR=/etc/qt4
66     QTTRANSDIR=${QTDATADIR}/translations
67     QTEXAMPLESDIR=${QTDATADIR}/examples
68     QTDEMOSDIR=${QTDATADIR}/demos
69 caleb 1.1
70 caleb 1.5 PLATFORM=$(qt_mkspecs_dir)
71 caleb 1.1
72     PATH="${S}/bin:${PATH}"
73     LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}"
74 yngwin 1.20
75     if ! version_is_at_least 4.1 $(gcc-version) ; then
76     ewarn "Using a GCC version lower than 4.1 is not supported!"
77     echo
78 gengor 1.31 ebeep 3
79 yngwin 1.20 fi
80 hwoarang 1.21
81     if use custom-cxxflags; then
82     echo
83     ewarn "You have set USE=custom-cxxflags, which means Qt will be built with the"
84     ewarn "CXXFLAGS you have set in /etc/make.conf. This is not supported, and we"
85     ewarn "recommend to unset this useflag. But you are free to experiment with it."
86     ewarn "Just do not start crying if it breaks your system, or eats your kitten"
87     ewarn "for breakfast. ;-) "
88     echo
89     fi
90    
91 caleb 1.1 }
92    
93 yngwin 1.20 qt4-build_src_unpack() {
94 hwoarang 1.26 local target targets licenses
95     if version_is_at_least 4.5 ${PV} ; then
96     licenses="LICENSE.GPL3 LICENSE.LGPL"
97     else
98     licenses="LICENSE.GPL2 LICENSE.GPL3"
99     fi
100     for target in configure ${licenses} projects.pro \
101 ingmar 1.11 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \
102 ingmar 1.13 ${QT4_EXTRACT_DIRECTORIES}; do
103 ingmar 1.11 targets="${targets} ${MY_P}/${target}"
104     done
105    
106     echo tar xjpf "${DISTDIR}"/${MY_P}.tar.bz2 ${targets}
107     tar xjpf "${DISTDIR}"/${MY_P}.tar.bz2 ${targets}
108    
109     case "${PV}" in
110 yngwin 1.20 4.4.?)
111 ingmar 1.11 echo tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2
112     tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2
113     ;;
114     esac
115 yngwin 1.20
116     # Be backwards compatible for now
117     if [[ $EAPI != 2 ]]; then
118     qt4-build_src_prepare
119     fi
120 ingmar 1.11 }
121    
122 yngwin 1.20 qt4-build_src_prepare() {
123     cd "${S}"
124    
125 ingmar 1.7 if [[ ${PN} != qt-core ]]; then
126     skip_qmake_build_patch
127     skip_project_generation_patch
128     symlink_binaries_to_buildtree
129     fi
130 hwoarang 1.24
131 hwoarang 1.22 if ! use custom-cxxflags;then
132 hwoarang 1.21 # Don't let the user go too overboard with flags.
133     strip-flags
134     replace-flags -O3 -O2
135     fi
136 ingmar 1.7
137 hwoarang 1.21 # Bug 178652
138     if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then
139     ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
140     append-flags -fno-gcse
141 gengor 1.18 fi
142    
143 gengor 1.30 # Unsupported old gcc versions - hardened needs this :(
144 gengor 1.29 if [[ $(gcc-major-version) -lt "4" ]] ; then
145 gengor 1.30 ewarn "Appending -fno-stack-protector to CXXFLAGS"
146     append-cxxflags -fno-stack-protector
147     # Bug 253127
148 gengor 1.29 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \
149     -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed"
150     fi
151    
152 hwoarang 1.24 # Bug 172219
153 ingmar 1.7 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
154     -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
155     -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \
156     -e "s:X11R6/::" \
157     -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed"
158    
159     sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
160     -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
161     -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \
162     -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed"
163 hwoarang 1.21
164 ingmar 1.7 }
165    
166 yngwin 1.20 qt4-build_src_configure() {
167 ingmar 1.10
168 ingmar 1.7 myconf="$(standard_configure_options) ${myconf}"
169    
170     echo ./configure ${myconf}
171     ./configure ${myconf} || die "./configure failed"
172 yngwin 1.20 }
173 ingmar 1.7
174 yngwin 1.20 qt4-build_src_compile() {
175     # Be backwards compatible for now
176     if [[ $EAPI != 2 ]]; then
177     qt4-build_src_configure
178     fi
179    
180     build_directories "${QT4_TARGET_DIRECTORIES}"
181 caleb 1.1 }
182    
183 caleb 1.4 qt4-build_src_install() {
184     install_directories "${QT4_TARGET_DIRECTORIES}"
185 ingmar 1.7 install_qconfigs
186 caleb 1.4 fix_library_files
187     }
188    
189 caleb 1.1 standard_configure_options() {
190     local myconf=""
191    
192 ingmar 1.7 [[ $(get_libdir) != "lib" ]] && myconf="${myconf} -L/usr/$(get_libdir)"
193 caleb 1.1
194     # Disable visibility explicitly if gcc version isn't 4
195 ingmar 1.7 if [[ "$(gcc-major-version)" -lt "4" ]]; then
196 caleb 1.1 myconf="${myconf} -no-reduce-exports"
197     fi
198    
199 ingmar 1.12 # precompiled headers doesn't work on hardened, where the flag is masked.
200     if use pch; then
201     myconf="${myconf} -pch"
202     else
203     myconf="${myconf} -no-pch"
204     fi
205    
206 ingmar 1.7 if use debug; then
207     myconf="${myconf} -debug -no-separate-debug-info"
208     else
209     myconf="${myconf} -release -no-separate-debug-info"
210     fi
211 caleb 1.1
212 yngwin 1.20 # ARCH is set on Gentoo. Qt now falls back to generic on an unsupported
213 flameeyes 1.27 # $(tc-arch). Therefore we convert it to supported values.
214     case "$(tc-arch)" in
215 ingmar 1.11 amd64) myconf="${myconf} -arch x86_64" ;;
216     ppc|ppc64) myconf="${myconf} -arch powerpc" ;;
217 ingmar 1.14 x86|x86-*) myconf="${myconf} -arch i386" ;;
218 flameeyes 1.27 alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;;
219 ingmar 1.11 hppa|sh) myconf="${myconf} -arch generic" ;;
220 flameeyes 1.27 *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;;
221 ingmar 1.11 esac
222    
223 hwoarang 1.33 # Bug 261412 Qt configure detects archs by uname
224     case "$(tc-arch)" in
225     ppc) myconf="${myconf} -platform linux-g++-32";;
226     esac
227    
228 ingmar 1.7 myconf="${myconf} -stl -verbose -largefile -confirm-license -no-rpath
229     -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
230     -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
231     -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
232     -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR}
233 yngwin 1.20 -demosdir ${QTDEMOSDIR} -silent -fast
234     $([[ ${PN} == qt-xmlpatterns ]] || echo -no-exceptions)
235 aballier 1.28 -reduce-relocations -nomake examples -nomake demos"
236 hwoarang 1.32
237     # Make eclass 4.5.{1,2} ready
238     case "${MY_PV}" in
239     4.5.1 | 4.5.2)
240     myconf="${myconf} -opensource"
241     ;;
242     esac
243 caleb 1.1
244     echo "${myconf}"
245     }
246    
247     build_directories() {
248     local dirs="$@"
249     for x in ${dirs}; do
250     cd "${S}"/${x}
251 ingmar 1.7 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
252     emake || die "emake failed"
253 caleb 1.1 done
254     }
255    
256     install_directories() {
257     local dirs="$@"
258     for x in ${dirs}; do
259 ingmar 1.7 pushd "${S}"/${x} >/dev/null || die "Can't pushd ${S}/${x}"
260     emake INSTALL_ROOT="${D}" install || die "emake install failed"
261     popd >/dev/null || die "Can't popd from ${S}/${x}"
262 caleb 1.1 done
263     }
264    
265 ingmar 1.7 # @ECLASS-VARIABLE: QCONFIG_ADD
266     # @DESCRIPTION:
267     # List options that need to be added to QT_CONFIG in qconfig.pri
268     QCONFIG_ADD="${QCONFIG_ADD:-}"
269    
270     # @ECLASS-VARIABLE: QCONFIG_REMOVE
271     # @DESCRIPTION:
272     # List options that need to be removed from QT_CONFIG in qconfig.pri
273     QCONFIG_REMOVE="${QCONFIG_REMOVE:-}"
274    
275     # @ECLASS-VARIABLE: QCONFIG_DEFINE
276     # @DESCRIPTION:
277     # List variables that should be defined at the top of QtCore/qconfig.h
278     QCONFIG_DEFINE="${QCONFIG_DEFINE:-}"
279    
280     install_qconfigs() {
281 zlin 1.9 local x
282     if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} ]]; then
283 ingmar 1.7 for x in QCONFIG_ADD QCONFIG_REMOVE; do
284     [[ -n ${!x} ]] && echo ${x}=${!x} >> "${T}"/${PN}-qconfig.pri
285     done
286     insinto ${QTDATADIR}/mkspecs/gentoo
287     doins "${T}"/${PN}-qconfig.pri || die "installing ${PN}-qconfig.pri failed"
288 zlin 1.9 fi
289 ingmar 1.7
290 zlin 1.9 if [[ -n ${QCONFIG_DEFINE} ]]; then
291 ingmar 1.7 for x in ${QCONFIG_DEFINE}; do
292     echo "#define ${x}" >> "${T}"/gentoo-${PN}-qconfig.h
293     done
294     insinto ${QTHEADERDIR}/Gentoo
295     doins "${T}"/gentoo-${PN}-qconfig.h || die "installing ${PN}-qconfig.h failed"
296     fi
297     }
298    
299     generate_qconfigs() {
300     if [[ -n ${QCONFIG_ADD} || -n ${QCONFIG_REMOVE} || -n ${QCONFIG_DEFINE} || ${CATEGORY}/${PN} == x11-libs/qt-core ]]; then
301     local x qconfig_add qconfig_remove qconfig_new
302     for x in "${ROOT}${QTDATADIR}"/mkspecs/gentoo/*-qconfig.pri; do
303     [[ -f ${x} ]] || continue
304     qconfig_add="${qconfig_add} $(sed -n 's/^QCONFIG_ADD=//p' "${x}")"
305     qconfig_remove="${qconfig_remove} $(sed -n 's/^QCONFIG_REMOVE=//p' "${x}")"
306     done
307    
308     # these error checks do not use die because dying in pkg_post{inst,rm}
309     # just makes things worse.
310     if [[ -e "${ROOT}${QTDATADIR}"/mkspecs/gentoo/qconfig.pri ]]; then
311     # start with the qconfig.pri that qt-core installed
312     if ! cp "${ROOT}${QTDATADIR}"/mkspecs/gentoo/qconfig.pri \
313     "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then
314     eerror "cp qconfig failed."
315     return 1
316     fi
317    
318     # generate list of QT_CONFIG entries from the existing list
319     # including qconfig_add and excluding qconfig_remove
320     for x in $(sed -n 's/^QT_CONFIG +=//p' \
321     "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri) ${qconfig_add}; do
322     hasq ${x} ${qconfig_remove} || qconfig_new="${qconfig_new} ${x}"
323     done
324    
325     # replace the existing QT_CONFIG list with qconfig_new
326     if ! sed -i -e "s/QT_CONFIG +=.*/QT_CONFIG += ${qconfig_new}/" \
327     "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri; then
328     eerror "Sed for QT_CONFIG failed"
329     return 1
330     fi
331    
332     # create Gentoo/qconfig.h
333     if [[ ! -e ${ROOT}${QTHEADERDIR}/Gentoo ]]; then
334     if ! mkdir -p "${ROOT}${QTHEADERDIR}"/Gentoo; then
335     eerror "mkdir ${QTHEADERDIR}/Gentoo failed"
336     return 1
337     fi
338     fi
339     : > "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-qconfig.h
340     for x in "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-*-qconfig.h; do
341     [[ -f ${x} ]] || continue
342     cat "${x}" >> "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-qconfig.h
343     done
344     else
345     rm -f "${ROOT}${QTDATADIR}"/mkspecs/qconfig.pri
346     rm -f "${ROOT}${QTHEADERDIR}"/Gentoo/gentoo-qconfig.h
347     rmdir "${ROOT}${QTDATADIR}"/mkspecs \
348     "${ROOT}${QTDATADIR}" \
349     "${ROOT}${QTHEADERDIR}"/Gentoo \
350     "${ROOT}${QTHEADERDIR}" 2>/dev/null
351     fi
352     fi
353     }
354    
355     qt4-build_pkg_postrm() {
356     generate_qconfigs
357 caleb 1.1 }
358    
359 ingmar 1.7 qt4-build_pkg_postinst() {
360     generate_qconfigs
361 yngwin 1.17 echo
362     ewarn "After a rebuild or upgrade of Qt, it can happen that Qt plugins (such as Qt"
363     ewarn "and KDE styles and widgets) can no longer be loaded. In this situation you"
364     ewarn "should recompile the packages providing these plugins. Also, make sure you"
365     ewarn "compile the Qt packages, and the packages that depend on it, with the same"
366     ewarn "GCC version and the same USE flag settings (especially the debug flag)."
367     ewarn
368     ewarn "Packages that typically need to be recompiled are kdelibs from KDE4, any"
369     ewarn "additional KDE4/Qt4 styles, qscintilla and PyQt4. Before filing a bug report,"
370     ewarn "make sure all your Qt4 packages are up-to-date and built with the same"
371     ewarn "configuration."
372     ewarn
373     ewarn "For more information, see http://doc.trolltech.com/4.4/plugins-howto.html"
374     echo
375 caleb 1.1 }
376    
377     skip_qmake_build_patch() {
378 ingmar 1.7 # Don't need to build qmake, as it's already installed from qt-core
379     sed -i -e "s:if true:if false:g" "${S}"/configure || die "Sed failed"
380 caleb 1.1 }
381    
382     skip_project_generation_patch() {
383     # Exit the script early by throwing in an exit before all of the .pro files are scanned
384 ingmar 1.7 sed -e "s:echo \"Finding:exit 0\n\necho \"Finding:g" \
385     -i "${S}"/configure || die "Sed failed"
386 caleb 1.1 }
387    
388 ingmar 1.7 symlink_binaries_to_buildtree() {
389     for bin in qmake moc uic rcc; do
390     ln -s ${QTBINDIR}/${bin} "${S}"/bin/ || die "Symlinking ${bin} to ${S}/bin failed."
391     done
392 caleb 1.1 }
393    
394     fix_library_files() {
395 ingmar 1.7 for libfile in "${D}"/${QTLIBDIR}/{*.la,*.prl,pkgconfig/*.pc}; do
396     if [[ -e ${libfile} ]]; then
397     sed -i -e "s:${S}/lib:${QTLIBDIR}:g" ${libfile} || die "Sed on ${libfile} failed."
398     fi
399     done
400 caleb 1.1
401     # pkgconfig files refer to WORKDIR/bin as the moc and uic locations. Fix:
402 ingmar 1.7 for libfile in "${D}"/${QTLIBDIR}/pkgconfig/*.pc; do
403     if [[ -e ${libfile} ]]; then
404     sed -i -e "s:${S}/bin:${QTBINDIR}:g" ${libfile} || die "Sed failed"
405 caleb 1.1
406     # Move .pc files into the pkgconfig directory
407 ingmar 1.7
408     dodir ${QTPCDIR}
409     mv ${libfile} "${D}"/${QTPCDIR}/ \
410     || die "Moving ${libfile} to ${D}/${QTPCDIR}/ failed."
411     fi
412     done
413    
414     # Don't install an empty directory
415     rmdir "${D}"/${QTLIBDIR}/pkgconfig
416 caleb 1.1 }
417    
418     qt_use() {
419 ingmar 1.7 local flag="${1}"
420     local feature="${1}"
421 caleb 1.5 local enableval=
422 caleb 1.1
423 ingmar 1.7 [[ -n ${2} ]] && feature=${2}
424     [[ -n ${3} ]] && enableval="-${3}"
425    
426     if use ${flag}; then
427     echo "${enableval}-${feature}"
428     else
429     echo "-no-${feature}"
430     fi
431     }
432    
433     # @ECLASS-VARIABLE: QT4_BUILT_WITH_USE_CHECK
434     # @DESCRIPTION:
435     # The contents of $QT4_BUILT_WITH_USE_CHECK gets fed to built_with_use
436     # (eutils.eclass), line per line.
437     #
438     # Example:
439     # @CODE
440     # pkg_setup() {
441     # use qt3support && QT4_BUILT_WITH_USE_CHECK="${QT4_BUILT_WITH_USE_CHECK}
442     # ~x11-libs/qt-gui-${PV} qt3support"
443     # qt4-build_check_use
444     # }
445     # @CODE
446    
447     # Run built_with_use on each flag and print appropriate error messages if any
448     # flags are missing
449     _qt_built_with_use() {
450     local missing opt pkg flag flags
451 caleb 1.1
452 ingmar 1.7 if [[ ${1} = "--missing" ]]; then
453     missing="${1} ${2}" && shift 2
454     fi
455     if [[ ${1:0:1} = "-" ]]; then
456     opt=${1} && shift
457     fi
458    
459     pkg=${1} && shift
460    
461     for flag in "${@}"; do
462     flags="${flags} ${flag}"
463     if ! built_with_use ${missing} ${opt} ${pkg} ${flag}; then
464     flags="${flags}*"
465     else
466     [[ ${opt} = "-o" ]] && return 0
467     fi
468     done
469     if [[ "${flags# }" = "${@}" ]]; then
470     return 0
471     fi
472     if [[ ${opt} = "-o" ]]; then
473     eerror "This package requires '${pkg}' to be built with any of the following USE flags: '$*'."
474     else
475     eerror "This package requires '${pkg}' to be built with the following USE flags: '${flags# }'."
476     fi
477     return 1
478     }
479    
480     # @FUNCTION: qt4-build_check_use
481     # @DESCRIPTION:
482     # Check if the listed packages in $QT4_BUILT_WITH_USE_CHECK are built with the
483     # USE flags listed.
484     #
485     # If any of the required USE flags are missing, an eerror will be printed for
486     # each package with missing USE flags.
487     qt4-build_check_use() {
488     local line missing
489     while read line; do
490     [[ -z ${line} ]] && continue
491     if ! _qt_built_with_use ${line}; then
492     missing=true
493     fi
494     done <<< "${QT4_BUILT_WITH_USE_CHECK}"
495     if [[ -n ${missing} ]]; then
496     echo
497     eerror "Flags marked with an * are missing."
498     die "Missing USE flags found"
499     fi
500 caleb 1.1 }
501    
502     qt_mkspecs_dir() {
503 caleb 1.5 # Allows us to define which mkspecs dir we want to use.
504     local spec
505 caleb 1.1
506 caleb 1.5 case ${CHOST} in
507     *-freebsd*|*-dragonfly*)
508     spec="freebsd" ;;
509     *-openbsd*)
510     spec="openbsd" ;;
511     *-netbsd*)
512     spec="netbsd" ;;
513 ingmar 1.7 *-darwin*)
514 caleb 1.5 spec="darwin" ;;
515     *-linux-*|*-linux)
516     spec="linux" ;;
517     *)
518 ingmar 1.7 die "Unknown CHOST, no platform choosen."
519 caleb 1.5 esac
520    
521     CXX=$(tc-getCXX)
522     if [[ ${CXX/g++/} != ${CXX} ]]; then
523     spec="${spec}-g++"
524     elif [[ ${CXX/icpc/} != ${CXX} ]]; then
525     spec="${spec}-icc"
526     else
527     die "Unknown compiler ${CXX}."
528     fi
529 caleb 1.1
530 caleb 1.5 echo "${spec}"
531 caleb 1.1 }
532    
533 yngwin 1.20 case ${EAPI:-0} in
534     0|1) EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postrm pkg_postinst ;;
535     2) EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_postrm pkg_postinst ;;
536     esac

  ViewVC Help
Powered by ViewVC 1.1.20