/[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.67 Revision 1.85
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.67 2010/05/22 15:22:46 wired Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.85 2010/11/10 13:45:38 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>,
79 else 79 else
80 ewarn "Downgrading Qt is completely unsupported and will break your system!" 80 ewarn "Downgrading Qt is completely unsupported and will break your system!"
81 fi 81 fi
82 fi 82 fi
83 83
84 if [[ "${PN}" == "qt-webkit" ]]; then
85 eshopts_push -s extglob
86 if is-flagq '-g?(gdb)?([1-9])'; then
87 echo
88 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."
90 ewarn "If compilation fails, please try removing -g{,gdb} before reporting a bug."
91 ewarn "For more info check out bug #307861"
92 echo
93 fi
94 eshopts_pop
95 fi
96
84 PATH="${S}/bin${PATH:+:}${PATH}" 97 PATH="${S}/bin${PATH:+:}${PATH}"
85 if [[ ${CHOST} != *-darwin* ]]; then 98 if [[ ${CHOST} != *-darwin* ]]; then
86 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" 99 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
87 else 100 else
88 DYLD_LIBRARY_PATH="${S}/lib${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}" 101 DYLD_LIBRARY_PATH="${S}/lib${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}"
127 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \ 140 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \
128 ${QT4_EXTRACT_DIRECTORIES}; do 141 ${QT4_EXTRACT_DIRECTORIES}; do
129 targets+=" ${MY_P}/${target}" 142 targets+=" ${MY_P}/${target}"
130 done 143 done
131 144
132 echo tar xzpf "${DISTDIR}"/${MY_P}.tar.gz ${targets} 145 echo tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets}
133 tar xzpf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die 146 tar xzf "${DISTDIR}"/${MY_P}.tar.gz ${targets} || die
134} 147}
135 148
136# @ECLASS-VARIABLE: PATCHES 149# @ECLASS-VARIABLE: PATCHES
137# @DESCRIPTION: 150# @DESCRIPTION:
138# In case you have patches to apply, specify them in PATCHES variable. Make sure 151# In case you have patches to apply, specify them in PATCHES variable. Make sure
147# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix 160# Prepare the sources before the configure phase. Strip CFLAGS if necessary, and fix
148# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf. 161# source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf.
149qt4-build_src_prepare() { 162qt4-build_src_prepare() {
150 setqtenv 163 setqtenv
151 cd "${S}" 164 cd "${S}"
165
166 # fix qt 4.7 regression that skips -fvisibility=hidden
167 if version_is_at_least "4.7.0_beta1"; then
168 sed -e "s/^gcc|g++)/*gcc|*g++)/" \
169 -i config.tests/unix/fvisibility.test ||
170 die "visibility fixing sed failed"
171 fi
172 # fix libx11 dependency on non X packages
173 if version_is_at_least "4.7.0_beta2"; then
174 local NOLIBX11PKG="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns"
175 hasq ${PN} ${NOLIBX11PKG} && qt_nolibx11
176 [[ ${PN} == "qt-assistant" ]] && qt_assistant_cleanup
177 fi
152 178
153 if use aqua; then 179 if use aqua; then
154 # provide a proper macx-g++-64 180 # provide a proper macx-g++-64
155 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) 181 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir)
156 182
190 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" 216 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
191 append-flags -mminimal-toc 217 append-flags -mminimal-toc
192 fi 218 fi
193 219
194 # Bug 282984 && Bug 295530 220 # Bug 282984 && Bug 295530
195 sed -e "s:\(^SYSTEM_VARIABLES\):CC=$(tc-getCC)\nCXX=$(tc-getCXX)\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \ 221 sed -e "s:\(^SYSTEM_VARIABLES\):CC="$(tc-getCC)"\nCXX="$(tc-getCXX)"\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \
196 -i configure || die "sed qmake compilers failed" 222 -i configure || die "sed qmake compilers failed"
223 # bug 321335
224 if version_is_at_least 4.6; then
225 find ./config.tests/unix -name "*.test" -type f -exec grep -lZ \$MAKE '{}' \; | \
226 xargs -0 \
197 sed -e "s:\(\$MAKE\):\1 CC=$(tc-getCC) CXX=$(tc-getCXX) LD=$(tc-getCXX) LINK=$(tc-getCXX):" \ 227 sed -e "s:\(\$MAKE\):\1 CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getCXX)" LINK="$(tc-getCXX)":g" \
198 -i config.tests/unix/compile.test || die "sed test compilers failed" 228 -i || die "sed test compilers failed"
229 fi
199 230
200 # Bug 172219 231 # Bug 172219
201 sed -e "s:X11R6/::" \ 232 sed -e "s:X11R6/::" \
202 -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed" 233 -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed"
203 234
249 # use GCC over SunStudio 280 # use GCC over SunStudio
250 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die 281 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
251 # don't flirt with non-Prefix stuff, we're quite possessive 282 # don't flirt with non-Prefix stuff, we're quite possessive
252 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ 283 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
253 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 284 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
285 # strip predefined CFLAGS from qmake ( bug #312689 )
286 sed -i '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf
254 287
255 base_src_prepare 288 base_src_prepare
256} 289}
257 290
258# @FUNCTION: qt4-build_src_configure 291# @FUNCTION: qt4-build_src_configure
296 # freetype2 include dir is non-standard, thus include it on configure 329 # freetype2 include dir is non-standard, thus include it on configure
297 # use -I from configure 330 # use -I from configure
298 myconf+=" $(pkg-config --cflags freetype2)" 331 myconf+=" $(pkg-config --cflags freetype2)"
299 fi 332 fi
300 333
334 # Disable SSE4.x, since auto-detection is currently broken
335 # Upstream bug http://bugreports.qt.nokia.com/browse/QTBUG-13623
336 if version_is_at_least 4.7.1; then
337 myconf+=" -no-sse4.1 -no-sse4.2"
338 fi
339
301 echo ./configure ${myconf} 340 echo ./configure ${myconf}
302 ./configure ${myconf} || die "./configure failed" 341 ./configure ${myconf} || die "./configure failed"
303 myconf="" 342 myconf=""
304} 343}
305 344
307# @DESCRIPTION: Actual compile phase 346# @DESCRIPTION: Actual compile phase
308qt4-build_src_compile() { 347qt4-build_src_compile() {
309 setqtenv 348 setqtenv
310 349
311 build_directories ${QT4_TARGET_DIRECTORIES} 350 build_directories ${QT4_TARGET_DIRECTORIES}
351}
352
353# @FUNCTION: qt4-build_src_test
354# @DESCRIPTION:
355# Runs tests only in target directories.
356qt4-build_src_test() {
357 for dir in ${QT4_TARGET_DIRECTORIES}; do
358 emake -j1 check -C ${dir}
359 done
312} 360}
313 361
314# @FUNCTION: fix_includes 362# @FUNCTION: fix_includes
315# @DESCRIPTION: 363# @DESCRIPTION:
316# For MacOSX we need to add some symlinks when frameworks are 364# For MacOSX we need to add some symlinks when frameworks are
345 setqtenv 393 setqtenv
346 install_directories ${QT4_TARGET_DIRECTORIES} 394 install_directories ${QT4_TARGET_DIRECTORIES}
347 install_qconfigs 395 install_qconfigs
348 fix_library_files 396 fix_library_files
349 fix_includes 397 fix_includes
398 # remove .la files since we are building only shared Qt libraries
399 find "${D}"${QTLIBDIR} -name "*.la" -print0 | xargs -0 rm
350} 400}
351 401
352# @FUNCTION: setqtenv 402# @FUNCTION: setqtenv
353setqtenv() { 403setqtenv() {
354 # Set up installation directories 404 # Set up installation directories
713 fi 763 fi
714 764
715 echo "${spec}" 765 echo "${spec}"
716} 766}
717 767
768# @FUNCTION: qt_assistant_cleanup
769# @RETURN: nothing
770# @DESCRIPTION:
771# Tries to clean up tools.pro for qt-assistant ebuilds
772# Meant to be called in src_prepare
773qt_assistant_cleanup() {
774 # different versions (and branches...) may need different handling,
775 # add a case if you need special handling
776 case "${MY_PV_EXTRA}" in
777 *kde-qt*)
778 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
779 -e "/mac/,/^embedded.*makeqpf$/d" \
780 -i tools/tools.pro || die "patching tools.pro failed"
781 ;;
782 *)
783 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
784 -e "/mac/,/^embedded.*makeqpf$/d" \
785 -e "s/^\([ \t]*pixeltool\) /\1 qdoc3 /" \
786 -i tools/tools.pro || die "patching tools.pro failed"
787 ;;
788 esac
789}
790
791# @FUNCTION: qt_nolibx11
792# @RETURN: nothing
793# @DESCRIPTION:
794# Ignore X11 tests for packages that don't need X libraries installed
795qt_nolibx11() {
796 einfo "removing X11 check to allow X-less compilation"
797 sed -i "/unixtests\/compile.test.*config.tests\/x11\/xlib/,/fi$/d" "${S}"/configure ||
798 die "x11 check sed failed"
799}
800
718EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install pkg_postrm pkg_postinst 801EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_install src_test pkg_postrm pkg_postinst

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.85

  ViewVC Help
Powered by ViewVC 1.1.20