| 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() { |