/[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.113 Revision 1.119
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.113 2011/12/31 00:46:04 pesa Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.119 2012/02/28 18:19:29 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.
44 !>x11-libs/qt-gui-${PV}-r9999 44 !>x11-libs/qt-gui-${PV}-r9999
45 !<x11-libs/qt-multimedia-${PV} 45 !<x11-libs/qt-multimedia-${PV}
46 !>x11-libs/qt-multimedia-${PV}-r9999 46 !>x11-libs/qt-multimedia-${PV}-r9999
47 !<x11-libs/qt-opengl-${PV} 47 !<x11-libs/qt-opengl-${PV}
48 !>x11-libs/qt-opengl-${PV}-r9999 48 !>x11-libs/qt-opengl-${PV}-r9999
49 !<x11-libs/qt-openvg-${PV}
50 !>x11-libs/qt-openvg-${PV}-r9999
49 !<x11-libs/qt-phonon-${PV} 51 !<x11-libs/qt-phonon-${PV}
50 !>x11-libs/qt-phonon-${PV}-r9999 52 !>x11-libs/qt-phonon-${PV}-r9999
51 !<x11-libs/qt-qt3support-${PV} 53 !<x11-libs/qt-qt3support-${PV}
52 !>x11-libs/qt-qt3support-${PV}-r9999 54 !>x11-libs/qt-qt3support-${PV}-r9999
53 !<x11-libs/qt-script-${PV} 55 !<x11-libs/qt-script-${PV}
109 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm 111 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm
110 ${QT4_EXTRACT_DIRECTORIES}" 112 ${QT4_EXTRACT_DIRECTORIES}"
111 fi 113 fi
112 114
113 # Make sure ebuilds use the required EAPI 115 # Make sure ebuilds use the required EAPI
114 if [[ ${EAPI} != [23] ]]; then 116 if [[ ${EAPI} != [234] ]]; then
115 eerror "The qt4-build eclass requires EAPI=2 or EAPI=3, but this ebuild is using" 117 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" 118 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." 119 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" 120 die "qt4-build eclass requires EAPI 2,3 or 4"
119 fi 121 fi
120 122
121 if ! version_is_at_least 4.1 $(gcc-version); then 123 if ! version_is_at_least 4.1 $(gcc-version); then
122 ewarn "Using a GCC version lower than 4.1 is not supported!" 124 ewarn "Using a GCC version lower than 4.1 is not supported!"
123 fi 125 fi
236 CC='$(tc-getCC)'\n\ 238 CC='$(tc-getCC)'\n\
237 CXX='$(tc-getCXX)'\n\ 239 CXX='$(tc-getCXX)'\n\
238 CFLAGS='${CFLAGS}'\n\ 240 CFLAGS='${CFLAGS}'\n\
239 CXXFLAGS='${CXXFLAGS}'\n\ 241 CXXFLAGS='${CXXFLAGS}'\n\
240 LDFLAGS='${LDFLAGS}'\n" \ 242 LDFLAGS='${LDFLAGS}'\n" \
243 -i configure \
241 -i configure || die "sed SYSTEM_VARIABLES failed" 244 || die "sed SYSTEM_VARIABLES failed"
242 245
243 # Respect CC, CXX, LINK and *FLAGS in config.tests 246 # Respect CC, CXX, LINK and *FLAGS in config.tests
244 find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \ 247 find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \
245 sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \ 248 sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \
246 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \ 249 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \
247 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \ 250 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \
248 || die "sed config.tests failed" 251 || die "sed config.tests failed"
249 252
253 # Strip predefined CFLAGS from mkspecs (bug 312689)
254 sed -i -e '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf || die
255
250 # Bug 172219 256 # Bug 172219
251 sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 257 sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
252 258
253 if [[ ${CHOST} == *-darwin* ]]; then 259 if [[ ${CHOST} == *-darwin* ]]; then
254 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib 260 # Set FLAGS *and* remove -arch, since our gcc-apple is multilib
255 # crippled (by design) :/ 261 # crippled (by design) :/
262 sed \
256 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 263 -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
257 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 264 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
258 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \ 265 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \
259 -e "s:-arch\s\w*::g" \ 266 -e "s:-arch\s\w*::g" \
260 -i mkspecs/common/mac-g++.conf || die "sed mkspecs/common/mac-g++.conf failed" 267 -i mkspecs/common/mac-g++.conf \
268 || die "sed mkspecs/common/mac-g++.conf failed"
261 269
262 # Fix configure's -arch settings that appear in qmake/Makefile and also 270 # Fix configure's -arch settings that appear in qmake/Makefile and also
263 # fix arch handling (automagically duplicates our -arch arg and breaks 271 # fix arch handling (automagically duplicates our -arch arg and breaks
264 # pch). Additionally disable Xarch support. 272 # pch). Additionally disable Xarch support.
265 sed \ 273 sed \
270 -e "s:-arch \$i::" \ 278 -e "s:-arch \$i::" \
271 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \ 279 -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \
272 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \ 280 -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \
273 -e "s:-Xarch_x86_64::g" \ 281 -e "s:-Xarch_x86_64::g" \
274 -e "s:-Xarch_ppc64::g" \ 282 -e "s:-Xarch_ppc64::g" \
275 -i configure mkspecs/common/mac-g++.conf || die "sed -arch/-Xarch failed" 283 -i configure mkspecs/common/mac-g++.conf \
284 || die "sed -arch/-Xarch failed"
276 285
277 # On Snow Leopard don't fall back to 10.5 deployment target. 286 # On Snow Leopard don't fall back to 10.5 deployment target.
278 if [[ ${CHOST} == *-apple-darwin10 ]] ; then 287 if [[ ${CHOST} == *-apple-darwin10 ]] ; then
279 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \ 288 sed -e "s:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET.*:QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.6:g" \
280 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \ 289 -e "s:-mmacosx-version-min=10.[0-9]:-mmacosx-version-min=10.6:g" \
281 -i configure mkspecs/common/mac-g++.conf || die "sed deployment target failed" 290 -i configure mkspecs/common/mac-g++.conf \
291 || die "sed deployment target failed"
282 fi 292 fi
283 fi 293 fi
284 294
285 # this one is needed for all systems with a separate -liconv, apart from 295 # this one is needed for all systems with a separate -liconv, apart from
286 # Darwin, for which the sources already cater for -liconv 296 # Darwin, for which the sources already cater for -liconv
287 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then 297 if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then
288 sed \ 298 sed -e 's|mac:\(LIBS += -liconv\)|\1|g' \
289 -e "s|mac:LIBS += -liconv|LIBS += -liconv|g" \
290 -i config.tests/unix/iconv/iconv.pro \ 299 -i config.tests/unix/iconv/iconv.pro \
291 || die "sed on iconv.pro failed" 300 || die "sed iconv.pro failed"
292 fi 301 fi
293 302
294 # we need some patches for Solaris 303 # we need some patches for Solaris
295 sed -i \
296 -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \ 304 sed -i -e '/^QMAKE_LFLAGS_THREAD/a\QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,' \
297 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 305 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
298 # use GCC over SunStudio 306 # use GCC over SunStudio
299 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die 307 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
300 # don't flirt with non-Prefix stuff, we're quite possessive 308 # do not flirt with non-Prefix stuff, we're quite possessive
301 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ 309 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
302 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 310 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
303
304 # strip predefined CFLAGS from mkspecs (bug 312689)
305 sed -i -e '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf
306 311
307 base_src_prepare 312 base_src_prepare
308} 313}
309 314
310# @FUNCTION: qt4-build_src_configure 315# @FUNCTION: qt4-build_src_configure
342 myconf+=" -cocoa -framework" 347 myconf+=" -cocoa -framework"
343 348
344 # We are crazy and build cocoa + qt3support :-) 349 # We are crazy and build cocoa + qt3support :-)
345 if use qt3support; then 350 if use qt3support; then
346 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \ 351 sed -e "/case \"\$PLATFORM,\$CFG_MAC_COCOA\" in/,/;;/ s|CFG_QT3SUPPORT=\"no\"|CFG_QT3SUPPORT=\"yes\"|" \
347 -i configure 352 -i configure || die
348 fi 353 fi
349 354
350 # We need the source's headers, not the installed ones. 355 # We need the source's headers, not the installed ones.
351 myconf+=" -I${S}/include" 356 myconf+=" -I${S}/include"
352 357
377 382
378# @FUNCTION: qt4-build_src_test 383# @FUNCTION: qt4-build_src_test
379# @DESCRIPTION: 384# @DESCRIPTION:
380# Runs tests only in target directories. 385# Runs tests only in target directories.
381qt4-build_src_test() { 386qt4-build_src_test() {
387 # QtMultimedia does not have any test suite (bug #332299)
388 [[ ${PN} == "qt-multimedia" ]] && return
389
382 for dir in ${QT4_TARGET_DIRECTORIES}; do 390 for dir in ${QT4_TARGET_DIRECTORIES}; do
383 emake -j1 check -C ${dir} 391 emake -j1 check -C ${dir}
384 done 392 done
385} 393}
386 394
392 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then 400 if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then
393 # Some packages tend to include <Qt/...> 401 # Some packages tend to include <Qt/...>
394 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt 402 dodir "${QTHEADERDIR#${EPREFIX}}"/Qt
395 403
396 # Fake normal headers when frameworks are installed... eases life later on 404 # Fake normal headers when frameworks are installed... eases life later on
397 local dest f 405 local dest f h
398 for frw in "${D}${QTLIBDIR}"/*.framework; do 406 for frw in "${D}${QTLIBDIR}"/*.framework; do
399 [[ -e "${frw}"/Headers ]] || continue 407 [[ -e "${frw}"/Headers ]] || continue
400 f=$(basename ${frw}) 408 f=$(basename ${frw})
401 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} 409 dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework}
402 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" 410 dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}"
421 install_qconfigs 429 install_qconfigs
422 fix_library_files 430 fix_library_files
423 fix_includes 431 fix_includes
424 432
425 # remove .la files since we are building only shared Qt libraries 433 # remove .la files since we are building only shared Qt libraries
426 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm 434 find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f
427} 435}
428 436
429# @FUNCTION: setqtenv 437# @FUNCTION: setqtenv
430# @INTERNAL 438# @INTERNAL
431setqtenv() { 439setqtenv() {
457# Sets up some standard configure options, like libdir (if necessary), whether 465# Sets up some standard configure options, like libdir (if necessary), whether
458# debug info is wanted or not. 466# debug info is wanted or not.
459standard_configure_options() { 467standard_configure_options() {
460 local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 468 local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
461 -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR} 469 -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR}
462 -importdir ${QTIMPORTDIR} -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} 470 $(version_is_at_least 4.7 && echo -importdir ${QTIMPORTDIR})
471 -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} -sysconfdir ${QTSYSCONFDIR}
463 -sysconfdir ${QTSYSCONFDIR} -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR} 472 -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR}
464 -opensource -confirm-license -shared -fast -largefile -stl -verbose 473 -opensource -confirm-license -shared -fast -largefile -stl -verbose
465 -platform $(qt_mkspecs_dir) -nomake examples -nomake demos" 474 -platform $(qt_mkspecs_dir) -nomake examples -nomake demos"
466 475
467 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)" 476 [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)"
468 477
776 elif [[ ${CXX} == *icpc* ]]; then 785 elif [[ ${CXX} == *icpc* ]]; then
777 spec+=-icc 786 spec+=-icc
778 else 787 else
779 die "Unknown compiler '${CXX}'" 788 die "Unknown compiler '${CXX}'"
780 fi 789 fi
781 if [[ -n ${LIBDIR/lib} ]]; then
782 spec+=-${LIBDIR/lib}
783 fi
784 790
785 # Add -64 for 64bit profiles 791 # Add -64 for 64bit profiles
786 if use x64-freebsd || 792 if use x64-freebsd ||
787 use amd64-linux || 793 use amd64-linux ||
788 use x64-macos || 794 use x64-macos ||

Legend:
Removed from v.1.113  
changed lines
  Added in v.1.119

  ViewVC Help
Powered by ViewVC 1.1.20