| 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.66 2010/03/24 14:36:28 yngwin Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.69 2010/05/24 14:27:13 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>, |
| … | |
… | |
| 65 | |
65 | |
| 66 | # @FUNCTION: qt4-build_pkg_setup |
66 | # @FUNCTION: qt4-build_pkg_setup |
| 67 | # @DESCRIPTION: |
67 | # @DESCRIPTION: |
| 68 | # Sets up S, MY_P, PATH, and LD_LIBRARY_PATH |
68 | # Sets up S, MY_P, PATH, and LD_LIBRARY_PATH |
| 69 | qt4-build_pkg_setup() { |
69 | qt4-build_pkg_setup() { |
|
|
70 | if [[ "${PN}" == "qt-webkit" ]]; then |
|
|
71 | if [[ "${CFLAGS}" =~ "-ggdb" ]] || [[ "${CXXFLAGS}" =~ "-ggdb" ]]; then |
|
|
72 | echo |
|
|
73 | ewarn "Your \$C{,XX}FLAGS contain -ggdb. You may experience really" |
|
|
74 | ewarn "long compilation times and/or increased memory usage." |
|
|
75 | ewarn "If compilation fails, please try removing -ggdb before" |
|
|
76 | ewarn "reporting a bug." |
|
|
77 | ewarn "For more info check out bug #307861" |
|
|
78 | echo |
|
|
79 | fi |
|
|
80 | fi |
|
|
81 | |
| 70 | [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= |
82 | [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= |
| 71 | |
83 | |
| 72 | # Protect users by not allowing downgrades between releases |
84 | # Protect users by not allowing downgrades between releases |
| 73 | # Downgrading revisions within the same release should be allowed |
85 | # Downgrading revisions within the same release should be allowed |
| 74 | if has_version '>'${CATEGORY}/${P}-r9999 ; then |
86 | if has_version '>'${CATEGORY}/${P}-r9999 ; then |
| … | |
… | |
| 148 | # source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf. |
160 | # source files in order to respect CFLAGS/CXXFLAGS/LDFLAGS specified on /etc/make.conf. |
| 149 | qt4-build_src_prepare() { |
161 | qt4-build_src_prepare() { |
| 150 | setqtenv |
162 | setqtenv |
| 151 | cd "${S}" |
163 | cd "${S}" |
| 152 | |
164 | |
|
|
165 | # fix qt 4.7 regression that skips -fvisibility=hidden |
|
|
166 | if [[ "${PV}" == "4.7.0_beta1" ]]; then |
|
|
167 | sed -e "s/^gcc|g++)/*gcc|*g++)/" \ |
|
|
168 | -i config.tests/unix/fvisibility.test || |
|
|
169 | die "visibility fixing sed failed" |
|
|
170 | fi |
|
|
171 | |
| 153 | if use aqua; then |
172 | if use aqua; then |
| 154 | # provide a proper macx-g++-64 |
173 | # provide a proper macx-g++-64 |
| 155 | use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) |
174 | use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) |
| 156 | |
175 | |
| 157 | sed -e '/^CONFIG/s:app_bundle::' \ |
176 | sed -e '/^CONFIG/s:app_bundle::' \ |
| … | |
… | |
| 167 | |
186 | |
| 168 | if [[ ${CHOST} == *86*-apple-darwin* ]] ; then |
187 | if [[ ${CHOST} == *86*-apple-darwin* ]] ; then |
| 169 | # qmake bus errors with -O2 but -O3 works |
188 | # qmake bus errors with -O2 but -O3 works |
| 170 | replace-flags -O2 -O3 |
189 | replace-flags -O2 -O3 |
| 171 | fi |
190 | fi |
| 172 | |
|
|
| 173 | # Bug 282984 && Bug 295530 |
|
|
| 174 | sed -e "s:\(^SYSTEM_VARIABLES\):CC=$(tc-getCC)\nCXX=$(tc-getCXX)\n\1:" \ |
|
|
| 175 | -i configure || die "sed qmake compilers failed" |
|
|
| 176 | sed -e "s:\(\$MAKE\):\1 CC=$(tc-getCC) CXX=$(tc-getCXX) LD=$(tc-getCXX):" \ |
|
|
| 177 | -i config.tests/unix/compile.test || die "sed test compilers failed" |
|
|
| 178 | |
191 | |
| 179 | # Bug 178652 |
192 | # Bug 178652 |
| 180 | if [[ $(gcc-major-version) == 3 ]] && use amd64; then |
193 | if [[ $(gcc-major-version) == 3 ]] && use amd64; then |
| 181 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
194 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
| 182 | append-flags -fno-gcse |
195 | append-flags -fno-gcse |
| … | |
… | |
| 195 | if use ppc64; then |
208 | if use ppc64; then |
| 196 | ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" |
209 | ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS" |
| 197 | append-flags -mminimal-toc |
210 | append-flags -mminimal-toc |
| 198 | fi |
211 | fi |
| 199 | |
212 | |
|
|
213 | # Bug 282984 && Bug 295530 |
|
|
214 | sed -e "s:\(^SYSTEM_VARIABLES\):CC=$(tc-getCC)\nCXX=$(tc-getCXX)\nCFLAGS=\"${CFLAGS}\"\nCXXFLAGS=\"${CXXFLAGS}\"\nLDFLAGS=\"${LDFLAGS}\"\n\1:" \ |
|
|
215 | -i configure || die "sed qmake compilers failed" |
|
|
216 | sed -e "s:\(\$MAKE\):\1 CC=$(tc-getCC) CXX=$(tc-getCXX) LD=$(tc-getCXX) LINK=$(tc-getCXX):" \ |
|
|
217 | -i config.tests/unix/compile.test || die "sed test compilers failed" |
|
|
218 | |
| 200 | # Bug 172219 |
219 | # Bug 172219 |
| 201 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
|
|
| 202 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
|
|
| 203 | -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ |
|
|
| 204 | -e "s:X11R6/::" \ |
220 | sed -e "s:X11R6/::" \ |
| 205 | -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed" |
221 | -i "${S}"/mkspecs/$(qt_mkspecs_dir)/qmake.conf || die "sed ${S}/mkspecs/$(qt_mkspecs_dir)/qmake.conf failed" |
| 206 | |
222 | |
| 207 | if [[ ${CHOST} != *-darwin* ]]; then |
223 | if [[ ${CHOST} == *-darwin* ]]; then |
| 208 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
|
|
| 209 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
|
|
| 210 | -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ |
|
|
| 211 | -i mkspecs/common/g++.conf || die "sed mkspecs/common/g++.conf failed" |
|
|
| 212 | else |
|
|
| 213 | # Set FLAGS *and* remove -arch, since our gcc-apple is multilib |
224 | # Set FLAGS *and* remove -arch, since our gcc-apple is multilib |
| 214 | # crippled (by design) :/ |
225 | # crippled (by design) :/ |
| 215 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
226 | sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ |
| 216 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
227 | -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ |
| 217 | -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \ |
228 | -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=-headerpad_max_install_names ${LDFLAGS}:" \ |
| … | |
… | |
| 462 | { |
473 | { |
| 463 | echo "${S}"/mkspecs/common/*.conf |
474 | echo "${S}"/mkspecs/common/*.conf |
| 464 | find "${S}" -name '*.pr[io]' |
475 | find "${S}" -name '*.pr[io]' |
| 465 | } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die |
476 | } | xargs sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:${EPREFIX}/usr/$(get_libdir)/qt4:g" || die |
| 466 | "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" |
477 | "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" |
| 467 | emake CC="@echo compiling \$< && $(tc-getCC)" \ |
478 | emake CC="$(tc-getCC)" \ |
| 468 | CXX="@echo compiling \$< && $(tc-getCXX)" \ |
479 | CXX="$(tc-getCXX)" \ |
| 469 | LINK="@echo linking \$@ && $(tc-getCXX)" || die "emake failed" |
480 | LINK="$(tc-getCXX)" || die "emake failed" |
| 470 | popd >/dev/null |
481 | popd >/dev/null |
| 471 | done |
482 | done |
| 472 | } |
483 | } |
| 473 | |
484 | |
| 474 | # @FUNCTION: install_directories |
485 | # @FUNCTION: install_directories |