| 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.131 2012/05/25 12:06:05 pesa Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.134 2012/07/10 21:43:19 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. |
| … | |
… | |
| 12 | case ${EAPI} in |
12 | case ${EAPI} in |
| 13 | 2|3|4) : ;; |
13 | 2|3|4) : ;; |
| 14 | *) die "qt4-build.eclass requires EAPI 2, 3 or 4." ;; |
14 | *) die "qt4-build.eclass requires EAPI 2, 3 or 4." ;; |
| 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 |
| … | |
… | |
| 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 | if version_is_at_least 4.8.1; then |
39 | if version_is_at_least 4.8.1; then |
| 40 | SRC_URI="http://releases.qt-project.org/qt4/source/${MY_P}.tar.gz" |
40 | SRC_URI="http://releases.qt-project.org/qt4/source/${MY_P}.tar.gz" |
| 41 | else |
41 | else |
| … | |
… | |
| 43 | fi |
43 | fi |
| 44 | ;; |
44 | ;; |
| 45 | esac |
45 | esac |
| 46 | |
46 | |
| 47 | IUSE="aqua debug pch" |
47 | IUSE="aqua debug pch" |
| 48 | if [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]]; then |
48 | [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] && IUSE+=" +exceptions" |
| 49 | IUSE+=" +exceptions" |
|
|
| 50 | fi |
|
|
| 51 | if version_is_at_least 4.8; then |
49 | if version_is_at_least 4.8; then |
| 52 | IUSE+=" c++0x qpa" |
50 | [[ ${CATEGORY}/${PN} != x11-libs/qt-webkit ]] && IUSE+=" c++0x" |
|
|
51 | version_is_at_least 4.8.3 || IUSE+=" qpa" |
| 53 | fi |
52 | fi |
| 54 | |
53 | |
| 55 | DEPEND="virtual/pkgconfig" |
54 | DEPEND="virtual/pkgconfig" |
| 56 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
55 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
| 57 | DEPEND+=" dev-lang/perl" |
56 | DEPEND+=" dev-lang/perl" |
| 58 | fi |
57 | fi |
| 59 | |
58 | |
| 60 | RDEPEND=" |
59 | RDEPEND=" |
| 61 | !<x11-libs/qt-assistant-${PV} |
60 | !<x11-libs/qt-assistant-${PV}:4 |
| 62 | !>x11-libs/qt-assistant-${PV}-r9999 |
61 | !>x11-libs/qt-assistant-${PV}-r9999:4 |
| 63 | !<x11-libs/qt-bearer-${PV} |
62 | !<x11-libs/qt-bearer-${PV}:4 |
| 64 | !>x11-libs/qt-bearer-${PV}-r9999 |
63 | !>x11-libs/qt-bearer-${PV}-r9999:4 |
| 65 | !<x11-libs/qt-core-${PV} |
64 | !<x11-libs/qt-core-${PV}:4 |
| 66 | !>x11-libs/qt-core-${PV}-r9999 |
65 | !>x11-libs/qt-core-${PV}-r9999:4 |
| 67 | !<x11-libs/qt-dbus-${PV} |
66 | !<x11-libs/qt-dbus-${PV}:4 |
| 68 | !>x11-libs/qt-dbus-${PV}-r9999 |
67 | !>x11-libs/qt-dbus-${PV}-r9999:4 |
| 69 | !<x11-libs/qt-declarative-${PV} |
68 | !<x11-libs/qt-declarative-${PV}:4 |
| 70 | !>x11-libs/qt-declarative-${PV}-r9999 |
69 | !>x11-libs/qt-declarative-${PV}-r9999:4 |
| 71 | !<x11-libs/qt-demo-${PV} |
70 | !<x11-libs/qt-demo-${PV}:4 |
| 72 | !>x11-libs/qt-demo-${PV}-r9999 |
71 | !>x11-libs/qt-demo-${PV}-r9999:4 |
| 73 | !<x11-libs/qt-gui-${PV} |
72 | !<x11-libs/qt-gui-${PV}:4 |
| 74 | !>x11-libs/qt-gui-${PV}-r9999 |
73 | !>x11-libs/qt-gui-${PV}-r9999:4 |
| 75 | !<x11-libs/qt-multimedia-${PV} |
74 | !<x11-libs/qt-multimedia-${PV}:4 |
| 76 | !>x11-libs/qt-multimedia-${PV}-r9999 |
75 | !>x11-libs/qt-multimedia-${PV}-r9999:4 |
| 77 | !<x11-libs/qt-opengl-${PV} |
76 | !<x11-libs/qt-opengl-${PV}:4 |
| 78 | !>x11-libs/qt-opengl-${PV}-r9999 |
77 | !>x11-libs/qt-opengl-${PV}-r9999:4 |
| 79 | !<x11-libs/qt-openvg-${PV} |
78 | !<x11-libs/qt-openvg-${PV}:4 |
| 80 | !>x11-libs/qt-openvg-${PV}-r9999 |
79 | !>x11-libs/qt-openvg-${PV}-r9999:4 |
| 81 | !<x11-libs/qt-phonon-${PV} |
80 | !<x11-libs/qt-phonon-${PV}:4 |
| 82 | !>x11-libs/qt-phonon-${PV}-r9999 |
81 | !>x11-libs/qt-phonon-${PV}-r9999:4 |
| 83 | !<x11-libs/qt-qt3support-${PV} |
82 | !<x11-libs/qt-qt3support-${PV}:4 |
| 84 | !>x11-libs/qt-qt3support-${PV}-r9999 |
83 | !>x11-libs/qt-qt3support-${PV}-r9999:4 |
| 85 | !<x11-libs/qt-script-${PV} |
84 | !<x11-libs/qt-script-${PV}:4 |
| 86 | !>x11-libs/qt-script-${PV}-r9999 |
85 | !>x11-libs/qt-script-${PV}-r9999:4 |
| 87 | !<x11-libs/qt-sql-${PV} |
86 | !<x11-libs/qt-sql-${PV}:4 |
| 88 | !>x11-libs/qt-sql-${PV}-r9999 |
87 | !>x11-libs/qt-sql-${PV}-r9999:4 |
| 89 | !<x11-libs/qt-svg-${PV} |
88 | !<x11-libs/qt-svg-${PV}:4 |
| 90 | !>x11-libs/qt-svg-${PV}-r9999 |
89 | !>x11-libs/qt-svg-${PV}-r9999:4 |
| 91 | !<x11-libs/qt-test-${PV} |
90 | !<x11-libs/qt-test-${PV}:4 |
| 92 | !>x11-libs/qt-test-${PV}-r9999 |
91 | !>x11-libs/qt-test-${PV}-r9999:4 |
| 93 | !<x11-libs/qt-webkit-${PV} |
92 | !<x11-libs/qt-webkit-${PV}:4 |
| 94 | !>x11-libs/qt-webkit-${PV}-r9999 |
93 | !>x11-libs/qt-webkit-${PV}-r9999:4 |
| 95 | !<x11-libs/qt-xmlpatterns-${PV} |
94 | !<x11-libs/qt-xmlpatterns-${PV}:4 |
| 96 | !>x11-libs/qt-xmlpatterns-${PV}-r9999 |
95 | !>x11-libs/qt-xmlpatterns-${PV}-r9999:4 |
| 97 | " |
96 | " |
| 98 | |
97 | |
| 99 | S=${WORKDIR}/${MY_P} |
98 | S=${WORKDIR}/${MY_P} |
| 100 | |
99 | |
| 101 | # @FUNCTION: qt4-build_pkg_setup |
100 | # @FUNCTION: qt4-build_pkg_setup |
| 102 | # @DESCRIPTION: |
101 | # @DESCRIPTION: |
| 103 | # Sets up PATH and LD_LIBRARY_PATH. |
102 | # Sets up PATH and LD_LIBRARY_PATH. |
| 104 | qt4-build_pkg_setup() { |
103 | qt4-build_pkg_setup() { |
| 105 | [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= |
104 | [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= |
| 106 | |
105 | |
| 107 | # Protect users by not allowing downgrades between releases |
106 | # Protect users by not allowing downgrades between releases. |
| 108 | # Downgrading revisions within the same release should be allowed |
107 | # Downgrading revisions within the same release should be allowed. |
| 109 | if has_version '>'${CATEGORY}/${P}-r9999; then |
108 | if has_version ">${CATEGORY}/${P}-r9999:4"; then |
| 110 | if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then |
109 | if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then |
| 111 | eerror |
|
|
| 112 | eerror "Sanity check to keep you from breaking your system:" |
110 | eerror " *** Sanity check to keep you from breaking your system ***" |
| 113 | eerror " Downgrading Qt is completely unsupported and will break your system!" |
111 | eerror "Downgrading Qt is completely unsupported and will break your system!" |
| 114 | eerror |
|
|
| 115 | die "aborting to save your system" |
112 | die "aborting to save your system" |
| 116 | else |
113 | else |
| 117 | ewarn "Downgrading Qt is completely unsupported and will break your system!" |
114 | ewarn "Downgrading Qt is completely unsupported and will break your system!" |
| 118 | fi |
115 | fi |
| 119 | fi |
|
|
| 120 | |
|
|
| 121 | if [[ ${PN} == qt-webkit ]]; then |
|
|
| 122 | eshopts_push -s extglob |
|
|
| 123 | if is-flagq '-g?(gdb)?([1-9])'; then |
|
|
| 124 | echo |
|
|
| 125 | ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." |
|
|
| 126 | ewarn "You may experience really long compilation times and/or increased memory usage." |
|
|
| 127 | ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." |
|
|
| 128 | ewarn "For more info check out bug #307861" |
|
|
| 129 | echo |
|
|
| 130 | fi |
|
|
| 131 | eshopts_pop |
|
|
| 132 | fi |
116 | fi |
| 133 | |
117 | |
| 134 | PATH="${S}/bin${PATH:+:}${PATH}" |
118 | PATH="${S}/bin${PATH:+:}${PATH}" |
| 135 | if [[ ${CHOST} != *-darwin* ]]; then |
119 | if [[ ${CHOST} != *-darwin* ]]; then |
| 136 | LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" |
120 | LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" |
| … | |
… | |
| 141 | # avoid extract failure. |
125 | # avoid extract failure. |
| 142 | [[ ${CHOST} == *-apple-darwin* ]] && \ |
126 | [[ ${CHOST} == *-apple-darwin* ]] && \ |
| 143 | QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm |
127 | QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm |
| 144 | ${QT4_EXTRACT_DIRECTORIES}" |
128 | ${QT4_EXTRACT_DIRECTORIES}" |
| 145 | fi |
129 | fi |
| 146 | |
|
|
| 147 | if ! version_is_at_least 4.1 $(gcc-version); then |
|
|
| 148 | ewarn "Using a GCC version lower than 4.1 is not supported." |
|
|
| 149 | fi |
|
|
| 150 | } |
130 | } |
|
|
131 | |
|
|
132 | # @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES |
|
|
133 | # @DEFAULT_UNSET |
|
|
134 | # @DESCRIPTION: |
|
|
135 | # Space-separated list including the directories that will be extracted from |
|
|
136 | # Qt tarball. |
| 151 | |
137 | |
| 152 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
138 | # @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES |
|
|
139 | # @DEFAULT_UNSET |
| 153 | # @DESCRIPTION: |
140 | # @DESCRIPTION: |
| 154 | # Arguments for build_target_directories. Takes the directories in which the |
141 | # Arguments for build_target_directories. Takes the directories in which the |
| 155 | # code should be compiled. This is a space-separated list. |
142 | # code should be compiled. This is a space-separated list. |
| 156 | |
|
|
| 157 | # @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES |
|
|
| 158 | # @DESCRIPTION: |
|
|
| 159 | # Space-separated list including the directories that will be extracted from |
|
|
| 160 | # Qt tarball. |
|
|
| 161 | |
143 | |
| 162 | # @FUNCTION: qt4-build_src_unpack |
144 | # @FUNCTION: qt4-build_src_unpack |
| 163 | # @DESCRIPTION: |
145 | # @DESCRIPTION: |
| 164 | # Unpacks the sources. |
146 | # Unpacks the sources. |
| 165 | qt4-build_src_unpack() { |
147 | qt4-build_src_unpack() { |
| 166 | setqtenv |
148 | setqtenv |
|
|
149 | |
|
|
150 | if ! version_is_at_least 4.1 $(gcc-version); then |
|
|
151 | ewarn "Using a GCC version lower than 4.1 is not supported." |
|
|
152 | fi |
|
|
153 | |
|
|
154 | if [[ ${PN} == qt-webkit ]]; then |
|
|
155 | eshopts_push -s extglob |
|
|
156 | if is-flagq '-g?(gdb)?([1-9])'; then |
|
|
157 | echo |
|
|
158 | ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." |
|
|
159 | ewarn "You may experience really long compilation times and/or increased memory usage." |
|
|
160 | ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." |
|
|
161 | ewarn "For more info check out https://bugs.gentoo.org/307861" |
|
|
162 | echo |
|
|
163 | fi |
|
|
164 | eshopts_pop |
|
|
165 | fi |
| 167 | |
166 | |
| 168 | case ${QT4_BUILD_TYPE} in |
167 | case ${QT4_BUILD_TYPE} in |
| 169 | live) |
168 | live) |
| 170 | git-2_src_unpack |
169 | git-2_src_unpack |
| 171 | ;; |
170 | ;; |
| … | |
… | |
| 208 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
207 | if [[ ${QT4_BUILD_TYPE} == live ]]; then |
| 209 | QTDIR="." ./bin/syncqt || die "syncqt failed" |
208 | QTDIR="." ./bin/syncqt || die "syncqt failed" |
| 210 | fi |
209 | fi |
| 211 | |
210 | |
| 212 | if version_is_at_least 4.7; then |
211 | if version_is_at_least 4.7; then |
| 213 | # fix libX11 dependency on non X packages |
212 | # avoid X11 dependency in non-gui packages |
| 214 | local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns" |
213 | local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns" |
| 215 | has ${PN} ${nolibx11_pkgs} && qt_nolibx11 |
214 | has ${PN} ${nolibx11_pkgs} && qt_nolibx11 |
| 216 | |
|
|
| 217 | qt_assistant_cleanup |
|
|
| 218 | fi |
215 | fi |
| 219 | |
216 | |
| 220 | if use aqua; then |
217 | if use aqua; then |
| 221 | # provide a proper macx-g++-64 |
218 | # provide a proper macx-g++-64 |
| 222 | use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) |
219 | use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) |
| … | |
… | |
| 243 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
240 | ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" |
| 244 | append-flags -fno-gcse |
241 | append-flags -fno-gcse |
| 245 | fi |
242 | fi |
| 246 | |
243 | |
| 247 | if use_if_iuse c++0x; then |
244 | if use_if_iuse c++0x; then |
| 248 | echo |
|
|
| 249 | ewarn "You are about to build Qt4 using the C++11 standard. Even though" |
|
|
| 250 | ewarn "this is an official standard, some of the reverse dependencies" |
|
|
| 251 | ewarn "may fail to compile or link againt the Qt4 libraries. Before" |
|
|
| 252 | ewarn "reporting a bug, make sure your bug is reproducible with c++0x" |
|
|
| 253 | ewarn "disabled." |
|
|
| 254 | echo |
|
|
| 255 | append-flags -std=c++0x |
245 | append-cxxflags -std=c++0x |
| 256 | fi |
246 | fi |
| 257 | |
247 | |
| 258 | # Unsupported old gcc versions - hardened needs this :( |
248 | # Unsupported old gcc versions - hardened needs this :( |
| 259 | if [[ $(gcc-major-version) -lt 4 ]]; then |
249 | if [[ $(gcc-major-version) -lt 4 ]]; then |
| 260 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
250 | ewarn "Appending -fno-stack-protector to CXXFLAGS" |
| … | |
… | |
| 360 | sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die |
350 | sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die |
| 361 | # do not flirt with non-Prefix stuff, we're quite possessive |
351 | # do not flirt with non-Prefix stuff, we're quite possessive |
| 362 | sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ |
352 | sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ |
| 363 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
353 | mkspecs/$(qt_mkspecs_dir)/qmake.conf || die |
| 364 | |
354 | |
| 365 | base_src_prepare |
355 | # apply patches |
|
|
356 | [[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}" |
|
|
357 | epatch_user |
| 366 | } |
358 | } |
| 367 | |
359 | |
| 368 | # @FUNCTION: qt4-build_src_configure |
360 | # @FUNCTION: qt4-build_src_configure |
| 369 | # @DESCRIPTION: |
361 | # @DESCRIPTION: |
| 370 | # Default configure phase |
362 | # Default configure phase |
| … | |
… | |
| 870 | fi |
862 | fi |
| 871 | |
863 | |
| 872 | echo "${spec}" |
864 | echo "${spec}" |
| 873 | } |
865 | } |
| 874 | |
866 | |
| 875 | # @FUNCTION: qt_assistant_cleanup |
|
|
| 876 | # @INTERNAL |
|
|
| 877 | # @DESCRIPTION: |
|
|
| 878 | # Tries to clean up tools.pro for qt-assistant ebuilds. |
|
|
| 879 | # Meant to be called in src_prepare(). |
|
|
| 880 | # Since Qt 4.7.4 this function is a no-op. |
|
|
| 881 | qt_assistant_cleanup() { |
|
|
| 882 | # apply patching to qt-assistant ebuilds only |
|
|
| 883 | [[ ${PN} != qt-assistant ]] && return |
|
|
| 884 | |
|
|
| 885 | # no longer needed for 4.7.4 and later |
|
|
| 886 | version_is_at_least 4.7.4 && return |
|
|
| 887 | |
|
|
| 888 | # different versions (and branches...) may need different handling, |
|
|
| 889 | # add a case if you need special handling |
|
|
| 890 | case "${MY_PV_EXTRA}" in |
|
|
| 891 | *kde-qt*) |
|
|
| 892 | sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \ |
|
|
| 893 | -e "/mac/,/^embedded.*makeqpf$/d" \ |
|
|
| 894 | -i tools/tools.pro || die "patching tools.pro failed" |
|
|
| 895 | ;; |
|
|
| 896 | *) |
|
|
| 897 | sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \ |
|
|
| 898 | -e "/mac/,/^embedded.*makeqpf$/d" \ |
|
|
| 899 | -e "s/^\([ \t]*pixeltool\) /\1 qdoc3 /" \ |
|
|
| 900 | -i tools/tools.pro || die "patching tools.pro failed" |
|
|
| 901 | ;; |
|
|
| 902 | esac |
|
|
| 903 | } |
|
|
| 904 | |
|
|
| 905 | # @FUNCTION: qt_nolibx11 |
867 | # @FUNCTION: qt_nolibx11 |
| 906 | # @INTERNAL |
868 | # @INTERNAL |
| 907 | # @DESCRIPTION: |
869 | # @DESCRIPTION: |
| 908 | # Ignore X11 tests for packages that don't need X libraries installed. |
870 | # Ignore X11 tests for packages that don't need X libraries installed. |
| 909 | qt_nolibx11() { |
871 | qt_nolibx11() { |