| 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.111 2011/12/27 16:04:27 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. |
| … | |
… | |
| 136 | # @FUNCTION: qt4-build_src_unpack |
136 | # @FUNCTION: qt4-build_src_unpack |
| 137 | # @DESCRIPTION: |
137 | # @DESCRIPTION: |
| 138 | # Unpacks the sources. |
138 | # Unpacks the sources. |
| 139 | qt4-build_src_unpack() { |
139 | qt4-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 | |
| … | |
… | |
| 386 | if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then |
395 | if use aqua && [[ ${CHOST##*-darwin} -ge 9 ]] ; then |
| 387 | # Some packages tend to include <Qt/...> |
396 | # Some packages tend to include <Qt/...> |
| 388 | dodir "${QTHEADERDIR#${EPREFIX}}"/Qt |
397 | dodir "${QTHEADERDIR#${EPREFIX}}"/Qt |
| 389 | |
398 | |
| 390 | # Fake normal headers when frameworks are installed... eases life later on |
399 | # Fake normal headers when frameworks are installed... eases life later on |
| 391 | local dest f |
400 | local dest f h |
| 392 | for frw in "${D}${QTLIBDIR}"/*.framework; do |
401 | for frw in "${D}${QTLIBDIR}"/*.framework; do |
| 393 | [[ -e "${frw}"/Headers ]] || continue |
402 | [[ -e "${frw}"/Headers ]] || continue |
| 394 | f=$(basename ${frw}) |
403 | f=$(basename ${frw}) |
| 395 | dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} |
404 | dest="${QTHEADERDIR#${EPREFIX}}"/${f%.framework} |
| 396 | dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" |
405 | dosym "${QTLIBDIR#${EPREFIX}}"/${f}/Headers "${dest}" |
| … | |
… | |
| 415 | install_qconfigs |
424 | install_qconfigs |
| 416 | fix_library_files |
425 | fix_library_files |
| 417 | fix_includes |
426 | fix_includes |
| 418 | |
427 | |
| 419 | # remove .la files since we are building only shared Qt libraries |
428 | # remove .la files since we are building only shared Qt libraries |
| 420 | find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm |
429 | find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f |
| 421 | } |
430 | } |
| 422 | |
431 | |
| 423 | # @FUNCTION: setqtenv |
432 | # @FUNCTION: setqtenv |
| 424 | # @INTERNAL |
433 | # @INTERNAL |
| 425 | setqtenv() { |
434 | setqtenv() { |