1 | # Copyright 1999-2011 Gentoo Foundation |
1 | # Copyright 1999-2011 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.114 2012/01/01 18:12:03 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. |
… | |
… | |
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 | |
… | |
… | |
392 | if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then |
395 | if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then |
393 | # Some packages tend to include <Qt/...> |
396 | # Some packages tend to include <Qt/...> |
394 | dodir "${QTHEADERDIR#${EPREFIX}}"/Qt |
397 | dodir "${QTHEADERDIR#${EPREFIX}}"/Qt |
395 | |
398 | |
396 | # Fake normal headers when frameworks are installed... eases life later on |
399 | # Fake normal headers when frameworks are installed... eases life later on |
397 | local dest f |
400 | local dest f h |
398 | for frw in "${D}${QTLIBDIR}"/*.framework; do |
401 | for frw in "${D}${QTLIBDIR}"/*.framework; do |
399 | [[ -e "${frw}"/Headers ]] || continue |
402 | [[ -e "${frw}"/Headers ]] || continue |
400 | f=$(basename ${frw}) |
403 | f=$(basename ${frw}) |
401 | dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} |
404 | dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} |
402 | dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" |
405 | dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" |
… | |
… | |
421 | install_qconfigs |
424 | install_qconfigs |
422 | fix_library_files |
425 | fix_library_files |
423 | fix_includes |
426 | fix_includes |
424 | |
427 | |
425 | # remove .la files since we are building only shared Qt libraries |
428 | # remove .la files since we are building only shared Qt libraries |
426 | find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm |
429 | find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f |
427 | } |
430 | } |
428 | |
431 | |
429 | # @FUNCTION: setqtenv |
432 | # @FUNCTION: setqtenv |
430 | # @INTERNAL |
433 | # @INTERNAL |
431 | setqtenv() { |
434 | setqtenv() { |