/[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.75 Revision 1.86
1# Copyright 1999-2009 Gentoo Foundation 1# Copyright 1999-2009 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.75 2010/07/03 09:10:55 hwoarang Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.86 2010/11/13 20:30:26 wired Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Ben de Groot <yngwin@gentoo.org>, 7# Ben de Groot <yngwin@gentoo.org>,
8# Markos Chandras <hwoarang@gentoo.org>, 8# Markos Chandras <hwoarang@gentoo.org>,
15inherit base eutils multilib toolchain-funcs flag-o-matic versionator 15inherit base eutils multilib toolchain-funcs flag-o-matic versionator
16 16
17MY_PV=${PV/_/-} 17MY_PV=${PV/_/-}
18if version_is_at_least 4.5.99999999; then 18if version_is_at_least 4.5.99999999; then
19 MY_P=qt-everywhere-opensource-src-${MY_PV} 19 MY_P=qt-everywhere-opensource-src-${MY_PV}
20 [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] && IUSE="+exceptions" 20 [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] &&
21 [[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] &&
22 IUSE="+exceptions"
21else 23else
22 MY_P=qt-x11-opensource-src-${MY_PV} 24 MY_P=qt-x11-opensource-src-${MY_PV}
23fi 25fi
24 26
25HOMEPAGE="http://qt.nokia.com/" 27HOMEPAGE="http://qt.nokia.com/"
26SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz" 28SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
27 29
28LICENSE="|| ( LGPL-2.1 GPL-3 )" 30LICENSE="|| ( LGPL-2.1 GPL-3 )"
31IUSE+=" debug"
32[[ ${CATEGORY}/${PN} != x11-themes/qgtkstyle ]] &&
29IUSE+=" debug pch aqua" 33 IUSE+=" pch aqua"
30 34
31RDEPEND=" 35RDEPEND="
32 !<x11-libs/qt-assistant-${PV} 36 !<x11-libs/qt-assistant-${PV}
33 !>x11-libs/qt-assistant-${PV}-r9999 37 !>x11-libs/qt-assistant-${PV}-r9999
34 !<x11-libs/qt-core-${PV} 38 !<x11-libs/qt-core-${PV}
81 fi 85 fi
82 fi 86 fi
83 87
84 if [[ "${PN}" == "qt-webkit" ]]; then 88 if [[ "${PN}" == "qt-webkit" ]]; then
85 eshopts_push -s extglob 89 eshopts_push -s extglob
86 if is-flagq '-g?(gdb)?([0-9])'; then 90 if is-flagq '-g?(gdb)?([1-9])'; then
87 echo 91 echo
88 ewarn "You have enabled debug info (probably have -g or -ggdb in your \$C{,XX}FLAGS)." 92 ewarn "You have enabled debug info (probably have -g or -ggdb in your \$C{,XX}FLAGS)."
89 ewarn "You may experience really long compilation times and/or increased memory usage." 93 ewarn "You may experience really long compilation times and/or increased memory usage."
90 ewarn "If compilation fails, please try removing -g{,gdb} before reporting a bug." 94 ewarn "If compilation fails, please try removing -g{,gdb} before reporting a bug."
91 ewarn "For more info check out bug #307861" 95 ewarn "For more info check out bug #307861"
160# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix 164# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix
161# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf. 165# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf.
162qt4-build_src_prepare() { 166qt4-build_src_prepare() {
163 setqtenv 167 setqtenv
164 cd "${S}" 168 cd "${S}"
165 169
166 # fix qt 4.7 regression that skips -fvisibility=hidden 170 # fix qt 4.7 regression that skips -fvisibility=hidden
167 if version_is_at_least "4.7.0_beta1"; then 171 if version_is_at_least "4.7.0_beta1"; then
168 sed -e "s/^gcc|g++)/*gcc|*g++)/" \ 172 sed -e "s/^gcc|g++)/*gcc|*g++)/" \
169 -i config.tests/unix/fvisibility.test || 173 -i config.tests/unix/fvisibility.test ||
170 die "visibility fixing sed failed" 174 die "visibility fixing sed failed"
175 fi
176 # fix libx11 dependency on non X packages
177 if version_is_at_least "4.7.0_beta2"; then
178 local NOLIBX11PKG="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns"
179 hasq ${PN} ${NOLIBX11PKG} && qt_nolibx11
180 [[ ${PN} == "qt-assistant" ]] && qt_assistant_cleanup
171 fi 181 fi
172 182
173 if use aqua; then 183 if use aqua; then
174 # provide a proper macx-g++-64 184 # provide a proper macx-g++-64
175 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) 185 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir)
210 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" 220 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
211 append-flags -mminimal-toc 221 append-flags -mminimal-toc
212 fi 222 fi
213 223
214 # Bug 282984 && Bug 295530 224 # Bug 282984 && Bug 295530
215 sed -e "s:\(^SYSTEM_VARIABLES\):CC=$(tc-getCC)\nCXX=$(tc-getCXX)\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \ 225 sed -e "s:\(^SYSTEM_VARIABLES\):CC="$(tc-getCC)"\nCXX="$(tc-getCXX)"\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \
216 -i configure || die "sed qmake compilers failed" 226 -i configure || die "sed qmake compilers failed"
217 # bug 321335 227 # bug 321335
218 if version_is_at_least 4.6; then 228 if version_is_at_least 4.6; then
219 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \ 229 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \
220 xargs -0 \ 230 xargs -0 \
221 sed -e "s:\(\$MAKE\):\1 CC=$(tc-getCC) CXX=$(tc-getCXX) LD=$(tc-getCXX) LINK=$(tc-getCXX):g" \ 231 sed -e "s:\(\$MAKE\):\1 CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getCXX)" LINK="$(tc-getCXX)":g" \
222 -i || die "sed test compilers failed" 232 -i || die "sed test compilers failed"
223 fi 233 fi
224 234
225 # Bug 172219 235 # Bug 172219
226 sed -e "s:X11R6/::" \ 236 sed -e "s:X11R6/::" \
275 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die 285 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
276 # don't flirt with non-Prefix stuff, we're quite possessive 286 # don't flirt with non-Prefix stuff, we're quite possessive
277 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ 287 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
278 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 288 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
279 # strip predefined CFLAGS from qmake ( bug #312689 ) 289 # strip predefined CFLAGS from qmake ( bug #312689 )
280 sed -i '/^QMAKE_CFLAGS_\(RELEASE\|DEBUG\)/s:+=.*:+=:' mkspecs/common/g++.conf 290 sed -i '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf
281 291
282 base_src_prepare 292 base_src_prepare
283} 293}
284 294
285# @FUNCTION: qt4-build_src_configure 295# @FUNCTION: qt4-build_src_configure
323 # freetype2 include dir is non-standard, thus include it on configure 333 # freetype2 include dir is non-standard, thus include it on configure
324 # use -I from configure 334 # use -I from configure
325 myconf+=" $(pkg-config --cflags freetype2)" 335 myconf+=" $(pkg-config --cflags freetype2)"
326 fi 336 fi
327 337
338 # Disable SSE4.x, since auto-detection is currently broken
339 # Upstream bug http://bugreports.qt.nokia.com/browse/QTBUG-13623
340 if version_is_at_least 4.7.1; then
341 myconf+=" -no-sse4.1 -no-sse4.2"
342 fi
343
328 echo ./configure ${myconf} 344 echo ./configure ${myconf}
329 ./configure ${myconf} || die "./configure failed" 345 ./configure ${myconf} || die "./configure failed"
330 myconf="" 346 myconf=""
331} 347}
332 348
334# @DESCRIPTION: Actual compile phase 350# @DESCRIPTION: Actual compile phase
335qt4-build_src_compile() { 351qt4-build_src_compile() {
336 setqtenv 352 setqtenv
337 353
338 build_directories ${QT4_TARGET_DIRECTORIES} 354 build_directories ${QT4_TARGET_DIRECTORIES}
355}
356
357# @FUNCTION: qt4-build_src_test
358# @DESCRIPTION:
359# Runs tests only in target directories.
360qt4-build_src_test() {
361 for dir in ${QT4_TARGET_DIRECTORIES}; do
362 emake -j1 check -C ${dir}
363 done
339} 364}
340 365
341# @FUNCTION: fix_includes 366# @FUNCTION: fix_includes
342# @DESCRIPTION: 367# @DESCRIPTION:
343# For MacOSX we need to add some symlinks when frameworks are 368# For MacOSX we need to add some symlinks when frameworks are
372 setqtenv 397 setqtenv
373 install_directories ${QT4_TARGET_DIRECTORIES} 398 install_directories ${QT4_TARGET_DIRECTORIES}
374 install_qconfigs 399 install_qconfigs
375 fix_library_files 400 fix_library_files
376 fix_includes 401 fix_includes
402 # remove .la files since we are building only shared Qt libraries
403 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm
377} 404}
378 405
379# @FUNCTION: setqtenv 406# @FUNCTION: setqtenv
380setqtenv() { 407setqtenv() {
381 # Set up installation directories 408 # Set up installation directories
740 fi 767 fi
741 768
742 echo "${spec}" 769 echo "${spec}"
743} 770}
744 771
772# @FUNCTION: qt_assistant_cleanup
773# @RETURN: nothing
774# @DESCRIPTION:
775# Tries to clean up tools.pro for qt-assistant ebuilds
776# Meant to be called in src_prepare
777qt_assistant_cleanup() {
778 # different versions (and branches...) may need different handling,
779 # add a case if you need special handling
780 case "${MY_PV_EXTRA}" in
781 *kde-qt*)
782 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
783 -e "/mac/,/^embedded.*makeqpf$/d" \
784 -i tools/tools.pro || die "patching tools.pro failed"
785 ;;
786 *)
787 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
788 -e "/mac/,/^embedded.*makeqpf$/d" \
789 -e "s/^\([ \t]*pixeltool\) /\1 qdoc3 /" \
790 -i tools/tools.pro || die "patching tools.pro failed"
791 ;;
792 esac
793}
794
795# @FUNCTION: qt_nolibx11
796# @RETURN: nothing
797# @DESCRIPTION:
798# Ignore X11 tests for packages that don't need X libraries installed
799qt_nolibx11() {
800 einfo "removing X11 check to allow X-less compilation"
801 sed -i "/unixtests\/compile.test.*config.tests\/x11\/xlib/,/fi$/d" "${S}"/configure ||
802 die "x11 check sed failed"
803}
804
745EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_postrm pkg_postinst 805EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test pkg_postrm pkg_postinst

Legend:
Removed from v.1.75  
changed lines
  Added in v.1.86

  ViewVC Help
Powered by ViewVC 1.1.20