/[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.111 Revision 1.118
1# Copyright 1999-2011 Gentoo Foundation 1# Copyright 1999-2012 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.111 2011/12/27 16:04:27 pesa Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.118 2012/02/09 22:58:36 pesa Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Qt herd <qt@gentoo.org> 7# Qt herd <qt@gentoo.org>
8# @BLURB: Eclass for Qt4 split ebuilds. 8# @BLURB: Eclass for Qt4 split ebuilds.
109 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm 109 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm
110 ${QT4_EXTRACT_DIRECTORIES}" 110 ${QT4_EXTRACT_DIRECTORIES}"
111 fi 111 fi
112 112
113 # Make sure ebuilds use the required EAPI 113 # Make sure ebuilds use the required EAPI
114 if [[ ${EAPI} != [23] ]]; then 114 if [[ ${EAPI} != [234] ]]; then
115 eerror "The qt4-build eclass requires EAPI=2 or EAPI=3, but this ebuild is using" 115 eerror "The qt4-build eclass requires EAPI 2,3 or 4 but this ebuild is using"
116 eerror "EAPI=${EAPI:-0}. The ebuild author or editor failed. This ebuild needs to be" 116 eerror "EAPI=${EAPI:-0}. The ebuild author or editor failed. This ebuild needs to be"
117 eerror "fixed. Using qt4-build eclass without EAPI=2 or EAPI=3 will fail." 117 eerror "fixed. Using qt4-build eclass without EAPI 2,3 or 4 will fail."
118 die "qt4-build eclass requires EAPI=2 or EAPI=3" 118 die "qt4-build eclass requires EAPI 2,3 or 4"
119 fi 119 fi
120 120
121 if ! version_is_at_least 4.1 $(gcc-version); then 121 if ! version_is_at_least 4.1 $(gcc-version); then
122 ewarn "Using a GCC version lower than 4.1 is not supported!" 122 ewarn "Using a GCC version lower than 4.1 is not supported!"
123 fi 123 fi
136# @FUNCTION: qt4-build_src_unpack 136# @FUNCTION: qt4-build_src_unpack
137# @DESCRIPTION: 137# @DESCRIPTION:
138# Unpacks the sources. 138# Unpacks the sources.
139qt4-build_src_unpack() { 139qt4-build_src_unpack() {
140 setqtenv 140 setqtenv
141 local target targets= 141
142 local tarball="${MY_P}.tar.gz" target= targets=
142 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \ 143 for target in configure LICENSE.GPL3 LICENSE.LGPL projects.pro \
143 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \ 144 src/{qbase,qt_targets,qt_install}.pri bin config.tests \
144 ${QT4_EXTRACT_DIRECTORIES}; do 145 mkspecs qmake ${QT4_EXTRACT_DIRECTORIES}
146 do
145 targets+=" ${MY_P}/${target}" 147 targets+="${MY_P}/${target} "
146 done 148 done
147 149
150 ebegin "Unpacking parts of ${tarball}:" ${targets//${MY_P}\/}
148 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 151 tar -xzf "${DISTDIR}/${tarball}" ${targets}
149 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die 152 eend $? || die "failed to unpack"
150} 153}
151 154
152# @ECLASS-VARIABLE: PATCHES 155# @ECLASS-VARIABLE: PATCHES
153# @DEFAULT_UNSET 156# @DEFAULT_UNSET
154# @DESCRIPTION: 157# @DESCRIPTION:
233 CC='$(tc-getCC)'\n\ 236 CC='$(tc-getCC)'\n\
234 CXX='$(tc-getCXX)'\n\ 237 CXX='$(tc-getCXX)'\n\
235 CFLAGS='${CFLAGS}'\n\ 238 CFLAGS='${CFLAGS}'\n\
236 CXXFLAGS='${CXXFLAGS}'\n\ 239 CXXFLAGS='${CXXFLAGS}'\n\
237 LDFLAGS='${LDFLAGS}'\n" \ 240 LDFLAGS='${LDFLAGS}'\n" \
241 -i configure \
238 -i configure || die "sed SYSTEM_VARIABLES failed" 242 || die "sed SYSTEM_VARIABLES failed"
239 243
240 # Bug 321335 244 # Respect CC, CXX, LINK and *FLAGS in config.tests
241 find config.tests/unix -name '*.test' -type f -exec grep -lZ \$MAKE '{}' \; | xargs -0 \ 245 find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \
242 sed -e "s:\(\$MAKE\):\1 CC='$(tc-getCC)' CXX='$(tc-getCXX)' LINK='$(tc-getCXX)':g" \ 246 sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \
243 -i || die "sed test compilers failed" 247 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \
248 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \
249 || die "sed config.tests failed"
250
251 # Strip predefined CFLAGS from mkspecs (bug 312689)
252 sed -i -e '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf || die
244 253
245 # Bug 172219 254 # Bug 172219
246 sed -e "s:X11R6/::" -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 255 sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
247 256
248 if [[ ${CHOST} == *-darwin* ]]; then 257 if [[ ${CHOST} == *-darwin* ]]; then
249 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib 258 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib
250 # crippled (by design) :/ 259 # crippled (by design) :/
260 sed \
251 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 261 -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
252 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 262 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
253 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \ 263 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \
254 -e "s:-arch\s\w*::g" \ 264 -e "s:-arch\s\w*::g" \
255 -i mkspecs/common/mac-g++.conf || die "sed mkspecs/common/mac-g++.conf failed" 265 -i mkspecs/common/mac-g++.conf \
266 || die "sed mkspecs/common/mac-g++.conf failed"
256 267
257 # Fix configure's -arch settings that appear in qmake/Makefile and also 268 # Fix configure's -arch settings that appear in qmake/Makefile and also
258 # fix arch handling (automagically duplicates our -arch arg and breaks 269 # fix arch handling (automagically duplicates our -arch arg and breaks
259 # pch). Additionally disable Xarch support. 270 # pch). Additionally disable Xarch support.
260 sed \ 271 sed \
265 -e "s:-arch \$i::" \ 276 -e "s:-arch \$i::" \
266 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \ 277 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \
267 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \ 278 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \
268 -e "s:-Xarch_x86_64::g" \ 279 -e "s:-Xarch_x86_64::g" \
269 -e "s:-Xarch_ppc64::g" \ 280 -e "s:-Xarch_ppc64::g" \
270 -i configure mkspecs/common/mac-g++.conf || die "sed -arch/-Xarch failed" 281 -i configure mkspecs/common/mac-g++.conf \
282 || die "sed -arch/-Xarch failed"
271 283
272 # On Snow Leopard don't fall back to 10.5 deployment target. 284 # On Snow Leopard don't fall back to 10.5 deployment target.
273 if [[ ${CHOST} == *-apple-darwin10 ]] ; then 285 if [[ ${CHOST} == *-apple-darwin10 ]] ; then
274 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \ 286 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \
275 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \ 287 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \
276 -i configure mkspecs/common/mac-g++.conf || die "sed deployment target failed" 288 -i configure mkspecs/common/mac-g++.conf \
289 || die "sed deployment target failed"
277 fi 290 fi
278 fi 291 fi
279 292
280 # this one is needed for all systems with a separate -liconv, apart from 293 # this one is needed for all systems with a separate -liconv, apart from
281 # Darwin, for which the sources already cater for -liconv 294 # Darwin, for which the sources already cater for -liconv
282 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then 295 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then
283 sed \ 296 sed -e 's|mac:\(LIBS += -liconv\)|\1|g' \
284 -e "s|mac:LIBS += -liconv|LIBS += -liconv|g" \
285 -i config.tests/unix/iconv/iconv.pro \ 297 -i config.tests/unix/iconv/iconv.pro \
286 || die "sed on iconv.pro failed" 298 || die "sed iconv.pro failed"
287 fi 299 fi
288 300
289 # we need some patches for Solaris 301 # we need some patches for Solaris
290 sed -i \
291 -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \ 302 sed -i -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \
292 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 303 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
293 # use GCC over SunStudio 304 # use GCC over SunStudio
294 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die 305 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
295 # don't flirt with non-Prefix stuff, we're quite possessive 306 # do not flirt with non-Prefix stuff, we're quite possessive
296 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ 307 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
297 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 308 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
298 # strip predefined CFLAGS from qmake ( bug #312689 )
299 sed -i '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf
300 309
301 base_src_prepare 310 base_src_prepare
302} 311}
303 312
304# @FUNCTION: qt4-build_src_configure 313# @FUNCTION: qt4-build_src_configure
336 myconf+=" -cocoa -framework" 345 myconf+=" -cocoa -framework"
337 346
338 # We are crazy and build cocoa + qt3support :-) 347 # We are crazy and build cocoa + qt3support :-)
339 if use qt3support; then 348 if use qt3support; then
340 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \ 349 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \
341 -i configure 350 -i configure || die
342 fi 351 fi
343 352
344 # We need the source's headers, not the installed ones. 353 # We need the source's headers, not the installed ones.
345 myconf+=" -I${S}/include" 354 myconf+=" -I${S}/include"
346 355
371 380
372# @FUNCTION: qt4-build_src_test 381# @FUNCTION: qt4-build_src_test
373# @DESCRIPTION: 382# @DESCRIPTION:
374# Runs tests only in target directories. 383# Runs tests only in target directories.
375qt4-build_src_test() { 384qt4-build_src_test() {
385 # QtMultimedia does not have any test suite (bug #332299)
386 [[ ${PN} == "qt-multimedia" ]] && return
387
376 for dir in ${QT4_TARGET_DIRECTORIES}; do 388 for dir in ${QT4_TARGET_DIRECTORIES}; do
377 emake -j1 check -C ${dir} 389 emake -j1 check -C ${dir}
378 done 390 done
379} 391}
380 392
386 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then 398 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
387 # Some packages tend to include <Qt/...> 399 # Some packages tend to include <Qt/...>
388 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt 400 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt
389 401
390 # Fake normal headers when frameworks are installed... eases life later on 402 # Fake normal headers when frameworks are installed... eases life later on
391 local dest f 403 local dest f h
392 for frw in "${D}${QTLIBDIR}"/*.framework; do 404 for frw in "${D}${QTLIBDIR}"/*.framework; do
393 [[ -e "${frw}"/Headers ]] || continue 405 [[ -e "${frw}"/Headers ]] || continue
394 f=$(basename ${frw}) 406 f=$(basename ${frw})
395 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} 407 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework}
396 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" 408 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}"
415 install_qconfigs 427 install_qconfigs
416 fix_library_files 428 fix_library_files
417 fix_includes 429 fix_includes
418 430
419 # remove .la files since we are building only shared Qt libraries 431 # remove .la files since we are building only shared Qt libraries
420 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm 432 find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f
421} 433}
422 434
423# @FUNCTION: setqtenv 435# @FUNCTION: setqtenv
424# @INTERNAL 436# @INTERNAL
425setqtenv() { 437setqtenv() {
451# Sets up some standard configure options, like libdir (if necessary), whether 463# Sets up some standard configure options, like libdir (if necessary), whether
452# debug info is wanted or not. 464# debug info is wanted or not.
453standard_configure_options() { 465standard_configure_options() {
454 local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 466 local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
455 -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR} 467 -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR}
456 -importdir ${QTIMPORTDIR} -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} 468 $(version_is_at_least 4.7 && echo -importdir ${QTIMPORTDIR})
469 -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} -sysconfdir ${QTSYSCONFDIR}
457 -sysconfdir ${QTSYSCONFDIR} -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR} 470 -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR}
458 -opensource -confirm-license -shared -fast -largefile -stl -verbose 471 -opensource -confirm-license -shared -fast -largefile -stl -verbose
459 -platform $(qt_mkspecs_dir) -nomake examples -nomake demos" 472 -platform $(qt_mkspecs_dir) -nomake examples -nomake demos"
460 473
461 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)" 474 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)"
462 475
770 elif [[ ${CXX} == *icpc* ]]; then 783 elif [[ ${CXX} == *icpc* ]]; then
771 spec+=-icc 784 spec+=-icc
772 else 785 else
773 die "Unknown compiler '${CXX}'" 786 die "Unknown compiler '${CXX}'"
774 fi 787 fi
775 if [[ -n ${LIBDIR/lib} ]]; then
776 spec+=-${LIBDIR/lib}
777 fi
778 788
779 # Add -64 for 64bit profiles 789 # Add -64 for 64bit profiles
780 if use x64-freebsd || 790 if use x64-freebsd ||
781 use amd64-linux || 791 use amd64-linux ||
782 use x64-macos || 792 use x64-macos ||

Legend:
Removed from v.1.111  
changed lines
  Added in v.1.118

  ViewVC Help
Powered by ViewVC 1.1.20