| 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.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 |
| … | |
… | |
| 236 | CC='$(tc-getCC)'\n\ |
236 | CC='$(tc-getCC)'\n\ |
| 237 | CXX='$(tc-getCXX)'\n\ |
237 | CXX='$(tc-getCXX)'\n\ |
| 238 | CFLAGS='${CFLAGS}'\n\ |
238 | CFLAGS='${CFLAGS}'\n\ |
| 239 | CXXFLAGS='${CXXFLAGS}'\n\ |
239 | CXXFLAGS='${CXXFLAGS}'\n\ |
| 240 | LDFLAGS='${LDFLAGS}'\n" \ |
240 | LDFLAGS='${LDFLAGS}'\n" \ |
|
|
241 | -i configure \ |
| 241 | -i configure || die "sed SYSTEM_VARIABLES failed" |
242 | || die "sed SYSTEM_VARIABLES failed" |
| 242 | |
243 | |
| 243 | # Respect CC, CXX, LINK and *FLAGS in config.tests |
244 | # Respect CC, CXX, LINK and *FLAGS in config.tests |
| 244 | find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \ |
245 | find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \ |
| 245 | sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \ |
246 | sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \ |
| 246 | 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \ |
247 | 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \ |
| 247 | 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \ |
248 | 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \ |
| 248 | || die "sed config.tests failed" |
249 | || die "sed config.tests failed" |
| 249 | |
250 | |
|
|
251 | # Strip predefined CFLAGS from mkspecs (bug 312689) |
|
|
252 | sed -i -e '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf || die |
|
|
253 | |
| 250 | # Bug 172219 |
254 | # Bug 172219 |
| 251 | 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 |
| 252 | |
256 | |
| 253 | if [[ ${CHOST} == *-darwin* ]]; then |
257 | if [[ ${CHOST} == *-darwin* ]]; then |
| 254 | # Set FLAGS *and* remove -arch, since our gcc-apple is multilib |
258 | # Set FLAGS *and* remove -arch, since our gcc-apple is multilib |
| 255 | # crippled (by design) :/ |
259 | # crippled (by design) :/ |
|
|
260 | sed \ |
| 256 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
261 | -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
| 257 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
262 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
| 258 | -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}:" \ |
| 259 | -e "s:-arch\s\w*::g" \ |
264 | -e "s:-arch\s\w*::g" \ |
| 260 | -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" |
| 261 | |
267 | |
| 262 | # 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 |
| 263 | # fix arch handling (automagically duplicates our -arch arg and breaks |
269 | # fix arch handling (automagically duplicates our -arch arg and breaks |
| 264 | # pch). Additionally disable Xarch support. |
270 | # pch). Additionally disable Xarch support. |
| 265 | sed \ |
271 | sed \ |
| … | |
… | |
| 270 | -e "s:-arch \$i::" \ |
276 | -e "s:-arch \$i::" \ |
| 271 | -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \ |
277 | -e "/if \[ ! -z \"\$NATIVE_64_ARCH\" \]; then/,/fi/ d" \ |
| 272 | -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \ |
278 | -e "s:CFG_MAC_XARCH=yes:CFG_MAC_XARCH=no:g" \ |
| 273 | -e "s:-Xarch_x86_64::g" \ |
279 | -e "s:-Xarch_x86_64::g" \ |
| 274 | -e "s:-Xarch_ppc64::g" \ |
280 | -e "s:-Xarch_ppc64::g" \ |
| 275 | -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" |
| 276 | |
283 | |
| 277 | # 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. |
| 278 | if [[ ${CHOST} == *-apple-darwin10 ]] ; then |
285 | if [[ ${CHOST} == *-apple-darwin10 ]] ; then |
| 279 | 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" \ |
| 280 | -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" \ |
| 281 | -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" |
| 282 | fi |
290 | fi |
| 283 | fi |
291 | fi |
| 284 | |
292 | |
| 285 | # 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 |
| 286 | # Darwin, for which the sources already cater for -liconv |
294 | # Darwin, for which the sources already cater for -liconv |
| 287 | if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then |
295 | if use !elibc_glibc && [[ ${CHOST} != *-darwin* ]] ; then |
| 288 | sed \ |
296 | 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 \ |
297 | -i config.tests/unix/iconv/iconv.pro \ |
| 291 | || die "sed on iconv.pro failed" |
298 | || die "sed iconv.pro failed" |
| 292 | fi |
299 | fi |
| 293 | |
300 | |
| 294 | # we need some patches for Solaris |
301 | # we need some patches for Solaris |
| 295 | sed -i \ |
|
|
| 296 | -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,' \ |
| 297 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
303 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
| 298 | # use GCC over SunStudio |
304 | # use GCC over SunStudio |
| 299 | sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die |
305 | sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die |
| 300 | # don't flirt with non-Prefix stuff, we're quite possessive |
306 | # do not flirt with non-Prefix stuff, we're quite possessive |
| 301 | sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ |
307 | sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ |
| 302 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
308 | 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 | |
309 | |
| 307 | base_src_prepare |
310 | base_src_prepare |
| 308 | } |
311 | } |
| 309 | |
312 | |
| 310 | # @FUNCTION: qt4-build_src_configure |
313 | # @FUNCTION: qt4-build_src_configure |
| … | |
… | |
| 342 | myconf+=" -cocoa -framework" |
345 | myconf+=" -cocoa -framework" |
| 343 | |
346 | |
| 344 | # We are crazy and build cocoa + qt3support :-) |
347 | # We are crazy and build cocoa + qt3support :-) |
| 345 | if use qt3support; then |
348 | if use qt3support; then |
| 346 | 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\"|" \ |
| 347 | -i configure |
350 | -i configure || die |
| 348 | fi |
351 | fi |
| 349 | |
352 | |
| 350 | # We need the source's headers, not the installed ones. |
353 | # We need the source's headers, not the installed ones. |
| 351 | myconf+=" -I${S}/include" |
354 | myconf+=" -I${S}/include" |
| 352 | |
355 | |
| … | |
… | |
| 377 | |
380 | |
| 378 | # @FUNCTION: qt4-build_src_test |
381 | # @FUNCTION: qt4-build_src_test |
| 379 | # @DESCRIPTION: |
382 | # @DESCRIPTION: |
| 380 | # Runs tests only in target directories. |
383 | # Runs tests only in target directories. |
| 381 | qt4-build_src_test() { |
384 | qt4-build_src_test() { |
|
|
385 | # QtMultimedia does not have any test suite (bug #332299) |
|
|
386 | [[ ${PN} == "qt-multimedia" ]] && return |
|
|
387 | |
| 382 | for dir in ${QT4_TARGET_DIRECTORIES}; do |
388 | for dir in ${QT4_TARGET_DIRECTORIES}; do |
| 383 | emake -j1 check -C ${dir} |
389 | emake -j1 check -C ${dir} |
| 384 | done |
390 | done |
| 385 | } |
391 | } |
| 386 | |
392 | |
| … | |
… | |
| 392 | if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then |
398 | if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then |
| 393 | # Some packages tend to include <Qt/...> |
399 | # Some packages tend to include <Qt/...> |
| 394 | dodir "${QTHEADERDIR#${EPREFIX}}"/Qt |
400 | dodir "${QTHEADERDIR#${EPREFIX}}"/Qt |
| 395 | |
401 | |
| 396 | # Fake normal headers when frameworks are installed... eases life later on |
402 | # Fake normal headers when frameworks are installed... eases life later on |
| 397 | local dest f |
403 | local dest f h |
| 398 | for frw in "${D}${QTLIBDIR}"/*.framework; do |
404 | for frw in "${D}${QTLIBDIR}"/*.framework; do |
| 399 | [[ -e "${frw}"/Headers ]] || continue |
405 | [[ -e "${frw}"/Headers ]] || continue |
| 400 | f=$(basename ${frw}) |
406 | f=$(basename ${frw}) |
| 401 | dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} |
407 | dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} |
| 402 | dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" |
408 | dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" |
| … | |
… | |
| 421 | install_qconfigs |
427 | install_qconfigs |
| 422 | fix_library_files |
428 | fix_library_files |
| 423 | fix_includes |
429 | fix_includes |
| 424 | |
430 | |
| 425 | # remove .la files since we are building only shared Qt libraries |
431 | # remove .la files since we are building only shared Qt libraries |
| 426 | find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm |
432 | find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f |
| 427 | } |
433 | } |
| 428 | |
434 | |
| 429 | # @FUNCTION: setqtenv |
435 | # @FUNCTION: setqtenv |
| 430 | # @INTERNAL |
436 | # @INTERNAL |
| 431 | setqtenv() { |
437 | setqtenv() { |
| … | |
… | |
| 457 | # Sets up some standard configure options, like libdir (if necessary), whether |
463 | # Sets up some standard configure options, like libdir (if necessary), whether |
| 458 | # debug info is wanted or not. |
464 | # debug info is wanted or not. |
| 459 | standard_configure_options() { |
465 | standard_configure_options() { |
| 460 | local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} |
466 | local myconf="-prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} |
| 461 | -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR} |
467 | -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} -plugindir ${QTPLUGINDIR} |
| 462 | -importdir ${QTIMPORTDIR} -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} |
468 | $(version_is_at_least 4.7 && echo -importdir ${QTIMPORTDIR}) |
|
|
469 | -datadir ${QTDATADIR} -translationdir ${QTTRANSDIR} -sysconfdir ${QTSYSCONFDIR} |
| 463 | -sysconfdir ${QTSYSCONFDIR} -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR} |
470 | -examplesdir ${QTEXAMPLESDIR} -demosdir ${QTDEMOSDIR} |
| 464 | -opensource -confirm-license -shared -fast -largefile -stl -verbose |
471 | -opensource -confirm-license -shared -fast -largefile -stl -verbose |
| 465 | -platform $(qt_mkspecs_dir) -nomake examples -nomake demos" |
472 | -platform $(qt_mkspecs_dir) -nomake examples -nomake demos" |
| 466 | |
473 | |
| 467 | [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)" |
474 | [[ $(get_libdir) != lib ]] && myconf+=" -L${EPREFIX}/usr/$(get_libdir)" |
| 468 | |
475 | |
| … | |
… | |
| 776 | elif [[ ${CXX} == *icpc* ]]; then |
783 | elif [[ ${CXX} == *icpc* ]]; then |
| 777 | spec+=-icc |
784 | spec+=-icc |
| 778 | else |
785 | else |
| 779 | die "Unknown compiler '${CXX}'" |
786 | die "Unknown compiler '${CXX}'" |
| 780 | fi |
787 | fi |
| 781 | if [[ -n ${LIBDIR/lib} ]]; then |
|
|
| 782 | spec+=-${LIBDIR/lib} |
|
|
| 783 | fi |
|
|
| 784 | |
788 | |
| 785 | # Add -64 for 64bit profiles |
789 | # Add -64 for 64bit profiles |
| 786 | if use x64-freebsd || |
790 | if use x64-freebsd || |
| 787 | use amd64-linux || |
791 | use amd64-linux || |
| 788 | use x64-macos || |
792 | use x64-macos || |