| 1 | # Copyright 1999-2012 Gentoo Foundation |
1 | # Copyright 1999-2012 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.129 2012/05/20 17:12:34 pesa Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.141 2012/12/31 06:29:42 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. |
| 9 | # @DESCRIPTION: |
9 | # @DESCRIPTION: |
| 10 | # This eclass contains various functions that are used when building Qt4. |
10 | # This eclass contains various functions that are used when building Qt4. |
| 11 | |
11 | |
| 12 | case ${EAPI} in |
12 | case ${EAPI} in |
| 13 | 2|3|4) : ;; |
13 | 3|4|5) : ;; |
| 14 | *) die "qt4-build.eclass requires EAPI 2, 3 or 4." ;; |
14 | *) die "qt4-build.eclass: unsupported EAPI=${EAPI:-0}" ;; |
| 15 | esac |
15 | esac |
| 16 | |
16 | |
| 17 | inherit base eutils flag-o-matic multilib toolchain-funcs versionator |
17 | inherit eutils flag-o-matic multilib toolchain-funcs versionator |
| 18 | |
18 | |
| 19 | if [[ ${PV} == *9999* ]]; then |
19 | if [[ ${PV} == *9999* ]]; then |
| 20 | QT4_BUILD_TYPE="live" |
20 | QT4_BUILD_TYPE="live" |
| 21 | inherit git-2 |
21 | inherit git-2 |
| 22 | else |
22 | else |
| 23 | QT4_BUILD_TYPE="release" |
23 | QT4_BUILD_TYPE="release" |
| 24 | fi |
24 | fi |
| 25 | |
25 | |
| 26 | HOMEPAGE="http://qt-project.org/ http://qt.nokia.com/" |
26 | HOMEPAGE="http://qt-project.org/ http://qt.digia.com/" |
| 27 | LICENSE="|| ( LGPL-2.1 GPL-3 )" |
27 | LICENSE="|| ( LGPL-2.1 GPL-3 )" |
| 28 | |
28 | |
| 29 | MY_PV=${PV/_/-} |
29 | MY_PV=${PV/_/-} |
| 30 | MY_P=qt-everywhere-opensource-src-${MY_PV} |
30 | MY_P=qt-everywhere-opensource-src-${MY_PV} |
| 31 | |
31 | |
| 32 | case ${QT4_BUILD_TYPE} in |
32 | case ${QT4_BUILD_TYPE} in |
| 33 | live) |
33 | live) |
| 34 | EGIT_REPO_URI="git://gitorious.org/qt/qt.git |
34 | EGIT_REPO_URI="git://gitorious.org/qt/qt.git |
| 35 | https://git.gitorious.org/qt/qt.git" |
35 | https://git.gitorious.org/qt/qt.git" |
| 36 | EGIT_BRANCH="${PV%.9999}" |
36 | EGIT_BRANCH=${PV%.9999} |
| 37 | ;; |
37 | ;; |
| 38 | release) |
38 | release) |
| 39 | SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz" |
39 | SRC_URI="http://releases.qt-project.org/qt4/source/${MY_P}.tar.gz" |
| 40 | ;; |
40 | ;; |
| 41 | esac |
41 | esac |
| 42 | |
42 | |
| 43 | IUSE="aqua debug pch" |
43 | IUSE="aqua debug pch" |
| 44 | if [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]]; then |
44 | [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] && IUSE+=" +exceptions" |
| 45 | IUSE+=" +exceptions" |
45 | [[ ${CATEGORY}/${PN} != x11-libs/qt-webkit ]] && IUSE+=" c++0x" |
| 46 | fi |
|
|
| 47 | if version_is_at_least 4.8; then |
|
|
| 48 | IUSE+=" c++0x qpa" |
|
|
| 49 | fi |
|
|
| 50 | |
46 | |
| 51 | DEPEND="virtual/pkgconfig" |
47 | DEPEND="virtual/pkgconfig" |
| 52 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
48 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
| 53 | DEPEND+=" dev-lang/perl" |
49 | DEPEND+=" dev-lang/perl" |
| 54 | fi |
50 | fi |
| 55 | |
51 | |
| 56 | RDEPEND=" |
52 | RDEPEND=" |
| 57 | !<x11-libs/qt-assistant-${PV} |
53 | !<x11-libs/qt-assistant-${PV}:4 |
| 58 | !>x11-libs/qt-assistant-${PV}-r9999 |
54 | !>x11-libs/qt-assistant-${PV}-r9999:4 |
| 59 | !<x11-libs/qt-bearer-${PV} |
55 | !<x11-libs/qt-bearer-${PV}:4 |
| 60 | !>x11-libs/qt-bearer-${PV}-r9999 |
56 | !>x11-libs/qt-bearer-${PV}-r9999:4 |
| 61 | !<x11-libs/qt-core-${PV} |
57 | !<x11-libs/qt-core-${PV}:4 |
| 62 | !>x11-libs/qt-core-${PV}-r9999 |
58 | !>x11-libs/qt-core-${PV}-r9999:4 |
| 63 | !<x11-libs/qt-dbus-${PV} |
59 | !<x11-libs/qt-dbus-${PV}:4 |
| 64 | !>x11-libs/qt-dbus-${PV}-r9999 |
60 | !>x11-libs/qt-dbus-${PV}-r9999:4 |
| 65 | !<x11-libs/qt-declarative-${PV} |
61 | !<x11-libs/qt-declarative-${PV}:4 |
| 66 | !>x11-libs/qt-declarative-${PV}-r9999 |
62 | !>x11-libs/qt-declarative-${PV}-r9999:4 |
| 67 | !<x11-libs/qt-demo-${PV} |
63 | !<x11-libs/qt-demo-${PV}:4 |
| 68 | !>x11-libs/qt-demo-${PV}-r9999 |
64 | !>x11-libs/qt-demo-${PV}-r9999:4 |
| 69 | !<x11-libs/qt-gui-${PV} |
65 | !<x11-libs/qt-gui-${PV}:4 |
| 70 | !>x11-libs/qt-gui-${PV}-r9999 |
66 | !>x11-libs/qt-gui-${PV}-r9999:4 |
| 71 | !<x11-libs/qt-multimedia-${PV} |
67 | !<x11-libs/qt-multimedia-${PV}:4 |
| 72 | !>x11-libs/qt-multimedia-${PV}-r9999 |
68 | !>x11-libs/qt-multimedia-${PV}-r9999:4 |
| 73 | !<x11-libs/qt-opengl-${PV} |
69 | !<x11-libs/qt-opengl-${PV}:4 |
| 74 | !>x11-libs/qt-opengl-${PV}-r9999 |
70 | !>x11-libs/qt-opengl-${PV}-r9999:4 |
| 75 | !<x11-libs/qt-openvg-${PV} |
71 | !<x11-libs/qt-openvg-${PV}:4 |
| 76 | !>x11-libs/qt-openvg-${PV}-r9999 |
72 | !>x11-libs/qt-openvg-${PV}-r9999:4 |
| 77 | !<x11-libs/qt-phonon-${PV} |
73 | !<x11-libs/qt-phonon-${PV}:4 |
| 78 | !>x11-libs/qt-phonon-${PV}-r9999 |
74 | !>x11-libs/qt-phonon-${PV}-r9999:4 |
| 79 | !<x11-libs/qt-qt3support-${PV} |
75 | !<x11-libs/qt-qt3support-${PV}:4 |
| 80 | !>x11-libs/qt-qt3support-${PV}-r9999 |
76 | !>x11-libs/qt-qt3support-${PV}-r9999:4 |
| 81 | !<x11-libs/qt-script-${PV} |
77 | !<x11-libs/qt-script-${PV}:4 |
| 82 | !>x11-libs/qt-script-${PV}-r9999 |
78 | !>x11-libs/qt-script-${PV}-r9999:4 |
| 83 | !<x11-libs/qt-sql-${PV} |
79 | !<x11-libs/qt-sql-${PV}:4 |
| 84 | !>x11-libs/qt-sql-${PV}-r9999 |
80 | !>x11-libs/qt-sql-${PV}-r9999:4 |
| 85 | !<x11-libs/qt-svg-${PV} |
81 | !<x11-libs/qt-svg-${PV}:4 |
| 86 | !>x11-libs/qt-svg-${PV}-r9999 |
82 | !>x11-libs/qt-svg-${PV}-r9999:4 |
| 87 | !<x11-libs/qt-test-${PV} |
83 | !<x11-libs/qt-test-${PV}:4 |
| 88 | !>x11-libs/qt-test-${PV}-r9999 |
84 | !>x11-libs/qt-test-${PV}-r9999:4 |
| 89 | !<x11-libs/qt-webkit-${PV} |
85 | !<x11-libs/qt-webkit-${PV}:4 |
| 90 | !>x11-libs/qt-webkit-${PV}-r9999 |
86 | !>x11-libs/qt-webkit-${PV}-r9999:4 |
| 91 | !<x11-libs/qt-xmlpatterns-${PV} |
87 | !<x11-libs/qt-xmlpatterns-${PV}:4 |
| 92 | !>x11-libs/qt-xmlpatterns-${PV}-r9999 |
88 | !>x11-libs/qt-xmlpatterns-${PV}-r9999:4 |
| 93 | " |
89 | " |
| 94 | |
90 | |
| 95 | S=${WORKDIR}/${MY_P} |
91 | S=${WORKDIR}/${MY_P} |
| 96 | |
92 | |
| 97 | # @FUNCTION: qt4-build_pkg_setup |
93 | # @FUNCTION: qt4-build_pkg_setup |
| 98 | # @DESCRIPTION: |
94 | # @DESCRIPTION: |
| 99 | # Sets up PATH and LD_LIBRARY_PATH. |
95 | # Sets up PATH and LD_LIBRARY_PATH. |
| 100 | qt4-build_pkg_setup() { |
96 | qt4-build_pkg_setup() { |
| 101 | [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= |
|
|
| 102 | |
|
|
| 103 | # Protect users by not allowing downgrades between releases |
97 | # Protect users by not allowing downgrades between releases. |
| 104 | # Downgrading revisions within the same release should be allowed |
98 | # Downgrading revisions within the same release should be allowed. |
| 105 | if has_version '>'${CATEGORY}/${P}-r9999; then |
99 | if has_version ">${CATEGORY}/${P}-r9999:4"; then |
| 106 | if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then |
100 | if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then |
| 107 | eerror |
|
|
| 108 | eerror "Sanity check to keep you from breaking your system:" |
101 | eerror " *** Sanity check to keep you from breaking your system ***" |
| 109 | eerror " Downgrading Qt is completely unsupported and will break your system!" |
102 | eerror "Downgrading Qt is completely unsupported and will break your system!" |
| 110 | eerror |
|
|
| 111 | die "aborting to save your system" |
103 | die "aborting to save your system" |
| 112 | else |
104 | else |
| 113 | ewarn "Downgrading Qt is completely unsupported and will break your system!" |
105 | ewarn "Downgrading Qt is completely unsupported and will break your system!" |
| 114 | fi |
106 | fi |
| 115 | fi |
|
|
| 116 | |
|
|
| 117 | if [[ ${PN} == qt-webkit ]]; then |
|
|
| 118 | eshopts_push -s extglob |
|
|
| 119 | if is-flagq '-g?(gdb)?([1-9])'; then |
|
|
| 120 | echo |
|
|
| 121 | ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." |
|
|
| 122 | ewarn "You may experience really long compilation times and/or increased memory usage." |
|
|
| 123 | ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." |
|
|
| 124 | ewarn "For more info check out bug #307861" |
|
|
| 125 | echo |
|
|
| 126 | fi |
|
|
| 127 | eshopts_pop |
|
|
| 128 | fi |
107 | fi |
| 129 | |
108 | |
| 130 | PATH="${S}/bin${PATH:+:}${PATH}" |
109 | PATH="${S}/bin${PATH:+:}${PATH}" |
| 131 | if [[ ${CHOST} != *-darwin* ]]; then |
110 | if [[ ${CHOST} != *-darwin* ]]; then |
| 132 | LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" |
111 | LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" |
| … | |
… | |
| 137 | # avoid extract failure. |
116 | # avoid extract failure. |
| 138 | [[ ${CHOST} == *-apple-darwin* ]] && \ |
117 | [[ ${CHOST} == *-apple-darwin* ]] && \ |
| 139 | QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm |
118 | QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm |
| 140 | ${QT4_EXTRACT_DIRECTORIES}" |
119 | ${QT4_EXTRACT_DIRECTORIES}" |
| 141 | fi |
120 | fi |
| 142 | |
|
|
| 143 | if ! version_is_at_least 4.1 $(gcc-version); then |
|
|
| 144 | ewarn "Using a GCC version lower than 4.1 is not supported." |
|
|
| 145 | fi |
|
|
| 146 | } |
121 | } |
|
|
122 | |
|
|
123 | # @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES |
|
|
124 | # @DEFAULT_UNSET |
|
|
125 | # @DESCRIPTION: |
|
|
126 | # Space-separated list including the directories that will be extracted from |
|
|
127 | # Qt tarball. |
| 147 | |
128 | |
| 148 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
129 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
|
|
130 | # @DEFAULT_UNSET |
| 149 | # @DESCRIPTION: |
131 | # @DESCRIPTION: |
| 150 | # Arguments for build_target_directories. Takes the directories in which the |
132 | # Arguments for build_target_directories. Takes the directories in which the |
| 151 | # code should be compiled. This is a space-separated list. |
133 | # code should be compiled. This is a space-separated list. |
| 152 | |
|
|
| 153 | # @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES |
|
|
| 154 | # @DESCRIPTION: |
|
|
| 155 | # Space-separated list including the directories that will be extracted from |
|
|
| 156 | # Qt tarball. |
|
|
| 157 | |
134 | |
| 158 | # @FUNCTION: qt4-build_src_unpack |
135 | # @FUNCTION: qt4-build_src_unpack |
| 159 | # @DESCRIPTION: |
136 | # @DESCRIPTION: |
| 160 | # Unpacks the sources. |
137 | # Unpacks the sources. |
| 161 | qt4-build_src_unpack() { |
138 | qt4-build_src_unpack() { |
| 162 | setqtenv |
139 | setqtenv |
|
|
140 | |
|
|
141 | if ! version_is_at_least 4.1 $(gcc-version); then |
|
|
142 | ewarn "Using a GCC version lower than 4.1 is not supported." |
|
|
143 | fi |
|
|
144 | |
|
|
145 | if [[ ${PN} == qt-webkit ]]; then |
|
|
146 | eshopts_push -s extglob |
|
|
147 | if is-flagq '-g?(gdb)?([1-9])'; then |
|
|
148 | echo |
|
|
149 | ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." |
|
|
150 | ewarn "You may experience really long compilation times and/or increased memory usage." |
|
|
151 | ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." |
|
|
152 | ewarn "For more info check out https://bugs.gentoo.org/307861" |
|
|
153 | echo |
|
|
154 | fi |
|
|
155 | eshopts_pop |
|
|
156 | fi |
| 163 | |
157 | |
| 164 | case ${QT4_BUILD_TYPE} in |
158 | case ${QT4_BUILD_TYPE} in |
| 165 | live) |
159 | live) |
| 166 | git-2_src_unpack |
160 | git-2_src_unpack |
| 167 | ;; |
161 | ;; |
| … | |
… | |
| 185 | # @DEFAULT_UNSET |
179 | # @DEFAULT_UNSET |
| 186 | # @DESCRIPTION: |
180 | # @DESCRIPTION: |
| 187 | # PATCHES array variable containing all various patches to be applied. |
181 | # PATCHES array variable containing all various patches to be applied. |
| 188 | # This variable is expected to be defined in global scope of ebuild. |
182 | # This variable is expected to be defined in global scope of ebuild. |
| 189 | # Make sure to specify the full path. This variable is utilised in |
183 | # Make sure to specify the full path. This variable is utilised in |
| 190 | # src_unpack/src_prepare phase, based on EAPI. |
184 | # src_prepare() phase. |
| 191 | # |
185 | # |
| 192 | # @CODE |
186 | # @CODE |
| 193 | # PATCHES=( "${FILESDIR}/mypatch.patch" |
187 | # PATCHES=( "${FILESDIR}/mypatch.patch" |
| 194 | # "${FILESDIR}/patches_folder/" ) |
188 | # "${FILESDIR}/patches_folder/" ) |
| 195 | # @CODE |
189 | # @CODE |
| … | |
… | |
| 203 | |
197 | |
| 204 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
198 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
| 205 | QTDIR="." ./bin/syncqt || die "syncqt failed" |
199 | QTDIR="." ./bin/syncqt || die "syncqt failed" |
| 206 | fi |
200 | fi |
| 207 | |
201 | |
| 208 | if version_is_at_least 4.7; then |
|
|
| 209 | # fix libX11 dependency on non X packages |
202 | # avoid X11 dependency in non-gui packages |
| 210 | local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns" |
203 | local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns" |
| 211 | has ${PN} ${nolibx11_pkgs} && qt_nolibx11 |
204 | has ${PN} ${nolibx11_pkgs} && qt_nolibx11 |
| 212 | |
|
|
| 213 | qt_assistant_cleanup |
|
|
| 214 | fi |
|
|
| 215 | |
205 | |
| 216 | if use aqua; then |
206 | if use aqua; then |
| 217 | # provide a proper macx-g++-64 |
207 | # provide a proper macx-g++-64 |
| 218 | use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) |
208 | use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) |
| 219 | |
209 | |
| … | |
… | |
| 239 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
229 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
| 240 | append-flags -fno-gcse |
230 | append-flags -fno-gcse |
| 241 | fi |
231 | fi |
| 242 | |
232 | |
| 243 | if use_if_iuse c++0x; then |
233 | if use_if_iuse c++0x; then |
| 244 | echo |
|
|
| 245 | ewarn "You are about to build Qt4 using the C++11 standard. Even though" |
|
|
| 246 | ewarn "this is an official standard, some of the reverse dependencies" |
|
|
| 247 | ewarn "may fail to compile or link againt the Qt4 libraries. Before" |
|
|
| 248 | ewarn "reporting a bug, make sure your bug is reproducible with c++0x" |
|
|
| 249 | ewarn "disabled." |
|
|
| 250 | echo |
|
|
| 251 | append-flags -std=c++0x |
234 | append-cxxflags -std=c++0x |
| 252 | fi |
235 | fi |
| 253 | |
236 | |
| 254 | # Unsupported old gcc versions - hardened needs this :( |
237 | # Unsupported old gcc versions - hardened needs this :( |
| 255 | if [[ $(gcc-major-version) -lt 4 ]]; then |
238 | if [[ $(gcc-major-version) -lt 4 ]]; then |
| 256 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
239 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
| … | |
… | |
| 270 | sed -e "/^SYSTEM_VARIABLES=/i \ |
253 | sed -e "/^SYSTEM_VARIABLES=/i \ |
| 271 | CC='$(tc-getCC)'\n\ |
254 | CC='$(tc-getCC)'\n\ |
| 272 | CXX='$(tc-getCXX)'\n\ |
255 | CXX='$(tc-getCXX)'\n\ |
| 273 | CFLAGS='${CFLAGS}'\n\ |
256 | CFLAGS='${CFLAGS}'\n\ |
| 274 | CXXFLAGS='${CXXFLAGS}'\n\ |
257 | CXXFLAGS='${CXXFLAGS}'\n\ |
| 275 | LDFLAGS='${LDFLAGS}'\n" \ |
258 | LDFLAGS='${LDFLAGS}'\n\ |
|
|
259 | QMakeVar set QMAKE_CFLAGS_RELEASE\n\ |
|
|
260 | QMakeVar set QMAKE_CFLAGS_DEBUG\n\ |
|
|
261 | QMakeVar set QMAKE_CXXFLAGS_RELEASE\n\ |
|
|
262 | QMakeVar set QMAKE_CXXFLAGS_DEBUG\n\ |
|
|
263 | QMakeVar set QMAKE_LFLAGS_RELEASE\n\ |
|
|
264 | QMakeVar set QMAKE_LFLAGS_DEBUG\n"\ |
| 276 | -i configure \ |
265 | -i configure \ |
| 277 | || die "sed SYSTEM_VARIABLES failed" |
266 | || die "sed SYSTEM_VARIABLES failed" |
| 278 | |
267 | |
| 279 | # Respect CC, CXX, LINK and *FLAGS in config.tests |
268 | # Respect CC, CXX, LINK and *FLAGS in config.tests |
| 280 | find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \ |
269 | find config.tests/unix -name '*.test' -type f -print0 | xargs -0 \ |
| 281 | sed -i -e "/bin\/qmake/ s: \"QT_BUILD_TREE=: \ |
270 | sed -i -e "/bin\/qmake/ s: \"\$SRCDIR/: \ |
| 282 | 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \ |
271 | 'QMAKE_CC=$(tc-getCC)' 'QMAKE_CXX=$(tc-getCXX)' 'QMAKE_LINK=$(tc-getCXX)' \ |
| 283 | 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \ |
272 | 'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \ |
| 284 | || die "sed config.tests failed" |
273 | || die "sed config.tests failed" |
| 285 | |
|
|
| 286 | if ! version_is_at_least 4.8; then |
|
|
| 287 | # Strip predefined CFLAGS from mkspecs (bugs 312689 and 352778) |
|
|
| 288 | sed -i -e '/^QMAKE_CFLAGS_RELEASE/s:+=.*:+=:' mkspecs/common/g++.conf || die |
|
|
| 289 | fi |
|
|
| 290 | |
274 | |
| 291 | # Bug 172219 |
275 | # Bug 172219 |
| 292 | sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
276 | sed -e 's:/X11R6/:/:' -i mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
| 293 | |
277 | |
| 294 | if [[ ${CHOST} == *-darwin* ]]; then |
278 | if [[ ${CHOST} == *-darwin* ]]; then |
| … | |
… | |
| 356 | sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die |
340 | sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die |
| 357 | # do not flirt with non-Prefix stuff, we're quite possessive |
341 | # do not flirt with non-Prefix stuff, we're quite possessive |
| 358 | sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ |
342 | sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ |
| 359 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
343 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
| 360 | |
344 | |
| 361 | base_src_prepare |
345 | # apply patches |
|
|
346 | [[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}" |
|
|
347 | epatch_user |
| 362 | } |
348 | } |
| 363 | |
349 | |
| 364 | # @FUNCTION: qt4-build_src_configure |
350 | # @FUNCTION: qt4-build_src_configure |
| 365 | # @DESCRIPTION: |
351 | # @DESCRIPTION: |
| 366 | # Default configure phase |
352 | # Default configure phase |
| … | |
… | |
| 372 | -bindir ${QTBINDIR} |
358 | -bindir ${QTBINDIR} |
| 373 | -libdir ${QTLIBDIR} |
359 | -libdir ${QTLIBDIR} |
| 374 | -docdir ${QTDOCDIR} |
360 | -docdir ${QTDOCDIR} |
| 375 | -headerdir ${QTHEADERDIR} |
361 | -headerdir ${QTHEADERDIR} |
| 376 | -plugindir ${QTPLUGINDIR} |
362 | -plugindir ${QTPLUGINDIR} |
| 377 | $(version_is_at_least 4.7 && echo -importdir ${QTIMPORTDIR}) |
363 | -importdir ${QTIMPORTDIR} |
| 378 | -datadir ${QTDATADIR} |
364 | -datadir ${QTDATADIR} |
| 379 | -translationdir ${QTTRANSDIR} |
365 | -translationdir ${QTTRANSDIR} |
| 380 | -sysconfdir ${QTSYSCONFDIR} |
366 | -sysconfdir ${QTSYSCONFDIR} |
| 381 | -examplesdir ${QTEXAMPLESDIR} |
367 | -examplesdir ${QTEXAMPLESDIR} |
| 382 | -demosdir ${QTDEMOSDIR} |
368 | -demosdir ${QTDEMOSDIR} |
| … | |
… | |
| 411 | conf+=" -no-separate-debug-info" |
397 | conf+=" -no-separate-debug-info" |
| 412 | |
398 | |
| 413 | # exceptions USE flag |
399 | # exceptions USE flag |
| 414 | conf+=" $(in_iuse exceptions && qt_use exceptions || echo -exceptions)" |
400 | conf+=" $(in_iuse exceptions && qt_use exceptions || echo -exceptions)" |
| 415 | |
401 | |
| 416 | # disable RPATH on Qt >= 4.8 (bug 380415) |
402 | # disable rpath (bug 380415), except on prefix (bug 417169) |
| 417 | version_is_at_least 4.8 && conf+=" -no-rpath" |
403 | use prefix || conf+=" -no-rpath" |
| 418 | |
404 | |
| 419 | # precompiled headers don't work on hardened, where the flag is masked |
405 | # precompiled headers don't work on hardened, where the flag is masked |
| 420 | conf+=" $(qt_use pch)" |
406 | conf+=" $(qt_use pch)" |
| 421 | |
407 | |
| 422 | # -reduce-relocations |
408 | # -reduce-relocations |
| … | |
… | |
| 545 | |
531 | |
| 546 | # @FUNCTION: qt4-build_src_install |
532 | # @FUNCTION: qt4-build_src_install |
| 547 | # @DESCRIPTION: |
533 | # @DESCRIPTION: |
| 548 | # Perform the actual installation including some library fixes. |
534 | # Perform the actual installation including some library fixes. |
| 549 | qt4-build_src_install() { |
535 | qt4-build_src_install() { |
| 550 | [[ ${EAPI} == 2 ]] && use !prefix && ED=${D} |
|
|
| 551 | setqtenv |
536 | setqtenv |
| 552 | |
537 | |
| 553 | install_directories ${QT4_TARGET_DIRECTORIES} |
538 | install_directories ${QT4_TARGET_DIRECTORIES} |
| 554 | install_qconfigs |
539 | install_qconfigs |
| 555 | fix_library_files |
540 | fix_library_files |
| 556 | fix_includes |
541 | fix_includes |
| 557 | |
542 | |
| 558 | # remove .la files since we are building only shared Qt libraries |
543 | # remove .la files since we are building only shared libraries |
| 559 | find "${D}"${QTLIBDIR} -type f -name '*.la' -print0 | xargs -0 rm -f |
544 | prune_libtool_files |
| 560 | } |
545 | } |
| 561 | |
546 | |
| 562 | # @FUNCTION: setqtenv |
547 | # @FUNCTION: setqtenv |
| 563 | # @INTERNAL |
548 | # @INTERNAL |
| 564 | setqtenv() { |
549 | setqtenv() { |
| 565 | # Set up installation directories |
550 | # Set up installation directories |
| 566 | QTPREFIXDIR=${EPREFIX}/usr |
551 | QTPREFIXDIR=${EPREFIX}/usr |
| 567 | QTBINDIR=${EPREFIX}/usr/bin |
552 | QTBINDIR=${QTPREFIXDIR}/bin |
| 568 | QTLIBDIR=${EPREFIX}/usr/$(get_libdir)/qt4 |
553 | QTLIBDIR=${QTPREFIXDIR}/$(get_libdir)/qt4 |
| 569 | QTPCDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig |
554 | QTPCDIR=${QTPREFIXDIR}/$(get_libdir)/pkgconfig |
| 570 | QTDOCDIR=${EPREFIX}/usr/share/doc/qt-${PV} |
555 | QTDOCDIR=${QTPREFIXDIR}/share/doc/qt-${PV} |
| 571 | QTHEADERDIR=${EPREFIX}/usr/include/qt4 |
556 | QTHEADERDIR=${QTPREFIXDIR}/include/qt4 |
| 572 | QTPLUGINDIR=${QTLIBDIR}/plugins |
557 | QTPLUGINDIR=${QTLIBDIR}/plugins |
| 573 | QTIMPORTDIR=${QTLIBDIR}/imports |
558 | QTIMPORTDIR=${QTLIBDIR}/imports |
| 574 | QTDATADIR=${EPREFIX}/usr/share/qt4 |
559 | QTDATADIR=${QTPREFIXDIR}/share/qt4 |
| 575 | QTTRANSDIR=${QTDATADIR}/translations |
560 | QTTRANSDIR=${QTDATADIR}/translations |
| 576 | QTSYSCONFDIR=${EPREFIX}/etc/qt4 |
561 | QTSYSCONFDIR=${EPREFIX}/etc/qt4 |
| 577 | QTEXAMPLESDIR=${QTDATADIR}/examples |
562 | QTEXAMPLESDIR=${QTDATADIR}/examples |
| 578 | QTDEMOSDIR=${QTDATADIR}/demos |
563 | QTDEMOSDIR=${QTDATADIR}/demos |
| 579 | QMAKE_LIBDIR_QT=${QTLIBDIR} |
564 | QMAKE_LIBDIR_QT=${QTLIBDIR} |
| 580 | QT_INSTALL_PREFIX=${EPREFIX}/usr/$(get_libdir)/qt4 |
|
|
| 581 | |
565 | |
| 582 | PLATFORM=$(qt_mkspecs_dir) |
566 | PLATFORM=$(qt_mkspecs_dir) |
| 583 | unset QMAKESPEC |
567 | unset QMAKESPEC |
| 584 | |
568 | |
| 585 | export XDG_CONFIG_HOME="${T}" |
569 | export XDG_CONFIG_HOME="${T}" |
| … | |
… | |
| 589 | # @USAGE: < directories > |
573 | # @USAGE: < directories > |
| 590 | # @INTERNAL |
574 | # @INTERNAL |
| 591 | # @DESCRIPTION: |
575 | # @DESCRIPTION: |
| 592 | # Generates Makefiles for the given list of directories. |
576 | # Generates Makefiles for the given list of directories. |
| 593 | prepare_directories() { |
577 | prepare_directories() { |
|
|
578 | # avoid running over the maximum argument number, bug #299810 |
|
|
579 | { |
|
|
580 | echo "${S}"/mkspecs/common/*.conf |
|
|
581 | find "${S}" -name '*.pr[io]' |
|
|
582 | } | xargs sed -i \ |
|
|
583 | -e "s:\$\$\[QT_INSTALL_LIBS\]:${QTLIBDIR}:g" \ |
|
|
584 | -e "s:\$\$\[QT_INSTALL_PLUGINS\]:${QTPLUGINDIR}:g" \ |
|
|
585 | || die |
|
|
586 | |
| 594 | for x in "$@"; do |
587 | for x in "$@"; do |
| 595 | pushd "${S}"/${x} >/dev/null || die |
588 | pushd "${S}"/${x} >/dev/null || die |
| 596 | einfo "Running qmake in: ${x}" |
589 | einfo "Running qmake in: ${x}" |
| 597 | # avoid running over the maximum argument number, bug #299810 |
590 | "${S}"/bin/qmake \ |
| 598 | { |
591 | "LIBS+=-L${QTLIBDIR}" \ |
| 599 | echo "${S}"/mkspecs/common/*.conf |
592 | "CONFIG+=nostrip" \ |
| 600 | find "${S}" -name '*.pr[io]' |
593 | || die "qmake failed" |
| 601 | } | xargs sed -i \ |
|
|
| 602 | -e "s:\$\$\[QT_INSTALL_LIBS\]:${QTLIBDIR}:g" \ |
|
|
| 603 | -e "s:\$\$\[QT_INSTALL_PLUGINS\]:${QTPLUGINDIR}:g" \ |
|
|
| 604 | || die |
|
|
| 605 | "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" |
|
|
| 606 | popd >/dev/null || die |
594 | popd >/dev/null || die |
| 607 | done |
595 | done |
| 608 | } |
596 | } |
| 609 | |
|
|
| 610 | |
597 | |
| 611 | # @FUNCTION: build_directories |
598 | # @FUNCTION: build_directories |
| 612 | # @USAGE: < directories > |
599 | # @USAGE: < directories > |
| 613 | # @INTERNAL |
600 | # @INTERNAL |
| 614 | # @DESCRIPTION: |
601 | # @DESCRIPTION: |
| 615 | # Compiles the code in the given list of directories. |
602 | # Compiles the code in the given list of directories. |
| 616 | build_directories() { |
603 | build_directories() { |
| 617 | for x in "$@"; do |
604 | for x in "$@"; do |
| 618 | pushd "${S}"/${x} >/dev/null || die |
605 | pushd "${S}"/${x} >/dev/null || die |
|
|
606 | emake \ |
|
|
607 | AR="$(tc-getAR) cqs" \ |
| 619 | emake CC="$(tc-getCC)" \ |
608 | CC="$(tc-getCC)" \ |
| 620 | CXX="$(tc-getCXX)" \ |
609 | CXX="$(tc-getCXX)" \ |
| 621 | LINK="$(tc-getCXX)" || die "emake failed" |
610 | LINK="$(tc-getCXX)" \ |
|
|
611 | RANLIB=":" \ |
|
|
612 | STRIP=":" \ |
|
|
613 | || die "emake failed" |
| 622 | popd >/dev/null || die |
614 | popd >/dev/null || die |
| 623 | done |
615 | done |
| 624 | } |
616 | } |
| 625 | |
617 | |
| 626 | # @FUNCTION: install_directories |
618 | # @FUNCTION: install_directories |
| … | |
… | |
| 865 | fi |
857 | fi |
| 866 | |
858 | |
| 867 | echo "${spec}" |
859 | echo "${spec}" |
| 868 | } |
860 | } |
| 869 | |
861 | |
| 870 | # @FUNCTION: qt_assistant_cleanup |
|
|
| 871 | # @INTERNAL |
|
|
| 872 | # @DESCRIPTION: |
|
|
| 873 | # Tries to clean up tools.pro for qt-assistant ebuilds. |
|
|
| 874 | # Meant to be called in src_prepare(). |
|
|
| 875 | # Since Qt 4.7.4 this function is a no-op. |
|
|
| 876 | qt_assistant_cleanup() { |
|
|
| 877 | # apply patching to qt-assistant ebuilds only |
|
|
| 878 | [[ ${PN} != qt-assistant ]] && return |
|
|
| 879 | |
|
|
| 880 | # no longer needed for 4.7.4 and later |
|
|
| 881 | version_is_at_least 4.7.4 && return |
|
|
| 882 | |
|
|
| 883 | # different versions (and branches...) may need different handling, |
|
|
| 884 | # add a case if you need special handling |
|
|
| 885 | case "${MY_PV_EXTRA}" in |
|
|
| 886 | *kde-qt*) |
|
|
| 887 | sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \ |
|
|
| 888 | -e "/mac/,/^embedded.*makeqpf$/d" \ |
|
|
| 889 | -i tools/tools.pro || die "patching tools.pro failed" |
|
|
| 890 | ;; |
|
|
| 891 | *) |
|
|
| 892 | sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \ |
|
|
| 893 | -e "/mac/,/^embedded.*makeqpf$/d" \ |
|
|
| 894 | -e "s/^\([ \t]*pixeltool\) /\1 qdoc3 /" \ |
|
|
| 895 | -i tools/tools.pro || die "patching tools.pro failed" |
|
|
| 896 | ;; |
|
|
| 897 | esac |
|
|
| 898 | } |
|
|
| 899 | |
|
|
| 900 | # @FUNCTION: qt_nolibx11 |
862 | # @FUNCTION: qt_nolibx11 |
| 901 | # @INTERNAL |
863 | # @INTERNAL |
| 902 | # @DESCRIPTION: |
864 | # @DESCRIPTION: |
| 903 | # Ignore X11 tests for packages that don't need X libraries installed. |
865 | # Ignore X11 tests for packages that don't need X libraries installed. |
| 904 | qt_nolibx11() { |
866 | qt_nolibx11() { |