summaryrefslogtreecommitdiffstats
path: root/meta/recipes-qt/qt4/qt4.inc
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-qt/qt4/qt4.inc
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-qt/qt4/qt4.inc')
-rw-r--r--meta/recipes-qt/qt4/qt4.inc300
1 files changed, 300 insertions, 0 deletions
diff --git a/meta/recipes-qt/qt4/qt4.inc b/meta/recipes-qt/qt4/qt4.inc
new file mode 100644
index 0000000000..16d5bebd36
--- /dev/null
+++ b/meta/recipes-qt/qt4/qt4.inc
@@ -0,0 +1,300 @@
1DESCRIPTION = "Qt is a comprehensive cross-platform C++ application framework"
2HOMEPAGE = "http://qt.nokia.com"
3
4DEPENDS += "qt4-tools-native freetype jpeg libpng zlib dbus openssl glib-2.0 gstreamer gst-plugins-base sqlite3"
5
6inherit qmake_base
7
8QT_CONFIG_FLAGS += "-release -no-cups -no-accessibility -reduce-relocations \
9 -shared -no-nas-sound -no-sm -no-nis \
10 -qt-gif -system-libjpeg -system-libpng -system-zlib \
11 -no-sql-ibase -no-sql-mysql -no-sql-psql -no-sql-odbc -plugin-sql-sqlite \
12 -no-pch -dbus -stl -glib -phonon -webkit"
13
14EXTRA_OEMAKE = "-e"
15
16EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after \
17 INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
18 QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
19 AR="${TARGET_PREFIX}ar cqs" \
20 MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
21
22export QT_CONF_PATH="${WORKDIR}/qt.conf"
23
24# Library packages
25QT_LIB_NAMES = "Qt3Support QtAssistantClient QtCLucene QtCore QtDBus QtDesigner QtDesignerComponents QtGui QtHelp QtNetwork QtOpenGL QtScript QtScriptTools QtSql QtSvg QtTest QtUiTools QtWebKit QtXml QtXmlPatterns phonon QtMultimedia QtOpenVG QtMediaServices"
26
27QT_EXTRA_LIBS = "pvrQWSWSEGL"
28
29python __anonymous () {
30 import bb
31
32 lib_packages = []
33 dev_packages = []
34 dbg_packages = []
35 for name in bb.data.getVar("QT_LIB_NAMES", d, 1).split():
36 pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "") + "4"
37 # NOTE: the headers for QtAssistantClient are different
38 incname = name.replace("QtAssistantClient", "QtAssistant")
39 bb.data.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s${QT_LIBINFIX}.so.*" % locals(), d)
40 bb.data.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s${QT_LIBINFIX}.prl
41 ${libdir}/lib%(name)s${QT_LIBINFIX}.a
42 ${libdir}/lib%(name)s${QT_LIBINFIX}.la
43 ${libdir}/lib%(name)s${QT_LIBINFIX}.so
44 ${includedir}/${QT_DIR_NAME}/%(incname)s
45 ${libdir}/pkgconfig/%(name)s${QT_LIBINFIX}.pc""" % locals(), d)
46 bb.data.setVar("FILES_%s-dbg" % pkg, "${libdir}/.debug/lib%(name)s${QT_LIBINFIX}.so.*" % locals(), d)
47 lib_packages.append(pkg)
48 dev_packages.append("%s-dev" % pkg)
49 dbg_packages.append("%s-dbg" % pkg)
50 for name in bb.data.getVar("OTHER_PACKAGES", d, 1).split():
51 dbg_packages.append("%s-dbg" % name)
52
53 for name in bb.data.getVar("QT_EXTRA_LIBS", d, 1).split():
54 pkg = "${QT_BASE_LIB}" + name.lower().replace("qt", "") + "4"
55 bb.data.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s.so.*" % locals(), d)
56 bb.data.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s.prl
57 ${libdir}/lib%(name)s.a
58 ${libdir}/lib%(name)s.la
59 ${libdir}/lib%(name)s.so
60 ${includedir}/${QT_DIR_NAME}/%(incname)s
61 ${libdir}/pkgconfig/%(name)s.pc""" % locals(), d)
62 bb.data.setVar("FILES_%s-dbg" % pkg, "${libdir}/.debug/lib%(name)s.so.*" % locals(), d)
63 lib_packages.append(pkg)
64 dev_packages.append("%s-dev" % pkg)
65 dbg_packages.append("%s-dbg" % pkg)
66
67 bb.data.setVar("LIB_PACKAGES", " ".join(lib_packages), d)
68 bb.data.setVar("DEV_PACKAGES", " ".join(dev_packages), d)
69 bb.data.setVar("DBG_PACKAGES", " ".join(dbg_packages), d)
70}
71
72OTHER_PACKAGES = "\
73 ${QT_BASE_NAME}-tools \
74 ${QT_BASE_NAME}-assistant \
75 ${QT_BASE_NAME}-common \
76 ${QT_BASE_NAME}-dbus \
77 ${QT_BASE_NAME}-demos \
78 ${QT_BASE_NAME}-designer \
79 ${QT_BASE_NAME}-examples \
80 ${QT_BASE_NAME}-fonts \
81 ${QT_BASE_NAME}-fonts-ttf-vera \
82 ${QT_BASE_NAME}-fonts-ttf-dejavu \
83 ${QT_BASE_NAME}-fonts-pfa \
84 ${QT_BASE_NAME}-fonts-pfb \
85 ${QT_BASE_NAME}-fonts-qpf \
86 ${QT_BASE_NAME}-linguist \
87 ${QT_BASE_NAME}-makeqpf \
88 ${QT_BASE_NAME}-mkspecs \
89 ${QT_BASE_NAME}-pixeltool \
90 ${QT_BASE_NAME}-qt3to4"
91
92PACKAGES += "${LIB_PACKAGES} ${DEV_PACKAGES} ${DBG_PACKAGES} ${OTHER_PACKAGES}"
93PACKAGES_DYNAMIC = "${QT_BASE_NAME}-plugin-* ${QT_BASE_NAME}-translation-* ${QT_BASE_NAME}-fonts-*"
94
95ALLOW_EMPTY_${PN} = "1"
96ALLOW_EMPTY_${QT_BASE_NAME}-fonts = "1"
97FILES_${PN} = ""
98FILES_${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*"
99FILES_${PN}-dbg = ""
100RRECOMMENDS_${PN} = "${LIB_PACKAGES} ${OTHER_PACKAGES}"
101RRECOMMENDS_${PN}-dev = "${DEV_PACKAGES}"
102RRECOMMENDS_${PN}-dbg = "${DBG_PACKAGES}"
103RRECOMMENDS_${QT_BASE_NAME}-fonts = " \
104 ${QT_BASE_NAME}-fonts-ttf-vera \
105 ${QT_BASE_NAME}-fonts-ttf-dejavu \
106 ${QT_BASE_NAME}-fonts-pfa \
107 ${QT_BASE_NAME}-fonts-pfb \
108 ${QT_BASE_NAME}-fonts-qpf"
109
110FILES_${QT_BASE_NAME}-tools = "${bindir}/uic* ${bindir}/moc ${bindir}/rcc ${bindir}/qttracereplay ${bindir}/qdoc*"
111FILES_${QT_BASE_NAME}-assistant = "${bindir}/*assistant* ${bindir}/qcollectiongenerator ${bindir}/qhelpconverter ${bindir}/qhelpgenerator"
112FILES_${QT_BASE_NAME}-assistant-dbg = "${bindir}/.debug/*assistant* ${bindir}/.debug/qcollectiongenerator ${bindir}/.debug/qhelpconverter ${bindir}/.debug/qhelpgenerator"
113FILES_${QT_BASE_NAME}-common = "${bindir}/qtconfig"
114FILES_${QT_BASE_NAME}-common-dbg = "${bindir}/.debug/qtconfig"
115FILES_${QT_BASE_NAME}-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer"
116FILES_${QT_BASE_NAME}-dbus-dbg = "${bindir}/.debug/qdbus ${bindir}/.debug/qdbusxml2cpp ${bindir}/.debug/qdbuscpp2xml ${bindir}/.debug/qdbusviewer"
117FILES_${QT_BASE_NAME}-demos = "${bindir}/qtdemo* ${bindir}/${QT_DIR_NAME}/demos/*"
118FILES_${QT_BASE_NAME}-demos-dbg = "${bindir}/.debug/qtdemo* ${bindir}/${QT_DIR_NAME}/demos/.debug/* ${bindir}/${QT_DIR_NAME}/demos/*/.debug ${bindir}/${QT_DIR_NAME}/demos/*/*/.debug ${bindir}/${QT_DIR_NAME}/demos/*/*/*/.debug"
119FILES_${QT_BASE_NAME}-designer = "${bindir}/*designer*"
120FILES_${QT_BASE_NAME}-designer-dbg = "${bindir}/.debug/*designer*"
121FILES_${QT_BASE_NAME}-examples = "${bindir}/${QT_DIR_NAME}/examples/*"
122FILES_${QT_BASE_NAME}-examples-dbg = "${bindir}/${QT_DIR_NAME}/examples/.debug ${bindir}/${QT_DIR_NAME}/examples/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/*/.debug"
123FILES_${QT_BASE_NAME}-fonts-ttf-vera = "${libdir}/fonts/Vera*.ttf"
124FILES_${QT_BASE_NAME}-fonts-ttf-dejavu = "${libdir}/fonts/DejaVu*.ttf"
125FILES_${QT_BASE_NAME}-fonts-pfa = "${libdir}/fonts/*.pfa"
126FILES_${QT_BASE_NAME}-fonts-pfb = "${libdir}/fonts/*.pfb"
127FILES_${QT_BASE_NAME}-fonts-qpf = "${libdir}/fonts/*.qpf"
128FILES_${QT_BASE_NAME}-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/lconvert ${bindir}/qm2ts"
129FILES_${QT_BASE_NAME}-linguist-dbg = "${bindir}/.debug/*linguist* ${bindir}/.debug/lrelease ${bindir}/.debug/lupdate ${bindir}/.debug/lconvert ${bindir}/.debug/qm2ts"
130FILES_${QT_BASE_NAME}-pixeltool = "${bindir}/pixeltool"
131FILES_${QT_BASE_NAME}-pixeltool-dbg = "${bindir}/.debug/pixeltool"
132FILES_${QT_BASE_NAME}-qt3to4 = "${bindir}/qt3to4 ${datadir}/${QT_DIR_NAME}/q3porting.xml"
133FILES_${QT_BASE_NAME}-qt3to4-dbg = "${bindir}/.debug/qt3to4"
134FILES_${QT_BASE_NAME}-makeqpf = "${bindir}/makeqpf"
135FILES_${QT_BASE_NAME}-makeqpf-dbg = "${bindir}/.debug/makeqpf"
136FILES_${QT_BASE_NAME}-mkspecs = "${datadir}/${QT_DIR_NAME}/mkspecs/*"
137
138ARM_INSTRUCTION_SET = "arm"
139
140set_arch() {
141 case ${TARGET_ARCH} in
142 arm*) QT_ARCH=arm ;;
143 i*86*) QT_ARCH=i386 ;;
144 mips*) QT_ARCH=mips ;;
145 powerpc*) QT_ARCH=powerpc ;;
146 x86_64*) QT_ARCH=x86_64 ;;
147 esac
148}
149
150do_configure() {
151 unset QMAKESPEC
152 unset QTDIR
153
154 set_arch
155
156 if [ ! -e bin/qmake ]; then
157 ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
158 fi
159
160 if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then
161 ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++
162 fi
163
164 cp -f ${WORKDIR}/g++.conf ${WORKDIR}/linux.conf mkspecs/common/
165
166 echo "[Paths]" > $QT_CONF_PATH
167 echo "Prefix=${prefix}/" >> $QT_CONF_PATH
168 echo "Documentation=${docdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
169 echo "Headers=${includedir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
170 echo "Libraries=${libdir}" >> $QT_CONF_PATH
171 echo "Binaries=${bindir}" >> $QT_CONF_PATH
172 echo "Plugins=${libdir}/${QT_DIR_NAME}/plugins" >> $QT_CONF_PATH
173 echo "Data=${datadir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
174 echo "Translations=${datadir}/${QT_DIR_NAME}/translations" >> $QT_CONF_PATH
175 echo "Settings=${sysconfdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
176 echo "Examples=${bindir}/${QT_DIR_NAME}/examples" >> $QT_CONF_PATH
177 echo "Demos=${bindir}/${QT_DIR_NAME}/demos" >> $QT_CONF_PATH
178
179 ${EXTRA_QMAKE_MUNGE}|| true
180
181 (echo o; echo yes) | ./configure -v \
182 -prefix ${prefix}/ \
183 -bindir ${bindir} \
184 -libdir ${libdir} \
185 -datadir ${datadir}/${QT_DIR_NAME} \
186 -sysconfdir ${sysconfdir}/${QT_DIR_NAME} \
187 -docdir ${docdir}/${QT_DIR_NAME} \
188 -headerdir ${includedir}/${QT_DIR_NAME} \
189 -plugindir ${libdir}/${QT_DIR_NAME}/plugins \
190 -translationdir ${datadir}/${QT_DIR_NAME}/translations \
191 -examplesdir ${bindir}/${QT_DIR_NAME}/examples \
192 -demosdir ${bindir}/${QT_DIR_NAME}/demos \
193 -platform ${TARGET_OS}-oe-g++ \
194 -xplatform ${TARGET_OS}-oe-g++ \
195 -crossarch ${QT_ARCH} \
196 ${QT_CONFIG_FLAGS} -no-fast \
197 -L${STAGING_LIBDIR} -I${STAGING_INCDIR} \
198 -I${STAGING_INCDIR}/freetype2
199}
200
201do_compile() {
202 unset CFLAGS CXXFLAGS
203 install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
204 install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
205 install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
206
207 oe_runmake ${EXTRA_ENV}
208}
209
210python populate_packages_prepend() {
211 translation_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/translations/', d)
212 translation_name = bb.data.expand('${QT_BASE_NAME}-translation-%s', d)
213 do_split_packages(d, translation_dir, '^(assistant|designer|linguist|qt|qtconfig|qvfb)_(.*)\.qm$', translation_name, '${PN} translation for %s', extra_depends='' )
214
215 phrasebook_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/phrasebooks/', d)
216 phrasebook_name = bb.data.expand('${QT_BASE_NAME}-phrasebook-%s', d)
217 do_split_packages(d, phrasebook_dir, '^(.*)\.qph$', phrasebook_name, '${PN} phrasebook for %s', extra_depends='' )
218
219 # Package all the plugins and their -dbg version and create a meta package
220 import os
221 def qtopia_split(path, name, glob):
222 """
223 Split the package into a normal and -dbg package and then add the
224 new packages to the meta package.
225 """
226 plugin_dir = bb.data.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/' % path, d)
227 if not os.path.exists("%s%s" % (bb.data.expand('${D}',d), plugin_dir)):
228 bb.note("The path does not exist:", bb.data.expand('${D}', d), plugin_dir)
229 return
230
231 plugin_name = bb.data.expand('${QT_BASE_NAME}-plugin-%s-%%s' % name, d)
232 dev_packages = []
233 dev_hook = lambda file,pkg,b,c,d:dev_packages.append((file,pkg))
234 do_split_packages(d, plugin_dir, glob, plugin_name, '${PN} %s for %%s' % name, extra_depends='', hook=dev_hook)
235 # Create a -dbg package as well
236 plugin_dir_dbg = bb.data.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/.debug' % path, d)
237 packages = bb.data.getVar('PACKAGES',d)
238 for (file,package) in dev_packages:
239 packages = "%s %s-dbg" % (packages, package)
240 file_name = os.path.join(plugin_dir_dbg, os.path.basename(file))
241 bb.data.setVar("FILES_%s-dbg" % package, file_name, d)
242 bb.data.setVar("DESCRIPTION_%s-dbg" % package, "${PN} %s for %s" % (name, package), d)
243
244 bb.data.setVar('PACKAGES', packages, d)
245
246 qtopia_split('accessible', 'accessible', '^libq(.*)\.so$')
247 qtopia_split('codecs', 'codec', '^libq(.*)\.so$')
248 qtopia_split('decorations', 'decoration', '^libqdecoration(.*)\.so$')
249 qtopia_split('designer', 'designer', '^lib(.*)\.so$')
250 qtopia_split('gfxdrivers', 'gfxdriver', '^libq(.*)\.so$')
251 qtopia_split('graphicssystems','graphicssystems', '^libq(.*)\.so$')
252 qtopia_split('mousedrivers', 'mousedriver', '^libq(.*)mousedriver\.so$')
253 qtopia_split('iconengines', 'iconengine', '^libq(.*)\.so$')
254 qtopia_split('imageformats', 'imageformat', '^libq(.*)\.so$')
255 qtopia_split('inputmethods', 'inputmethod', '^libq(.*)\.so$')
256 qtopia_split('sqldrivers', 'sqldriver', '^libq(.*)\.so$')
257 qtopia_split('script', 'script', '^libqtscript(.*)\.so$')
258 qtopia_split('styles', 'style', '^libq(.*)\.so$')
259 qtopia_split('phonon_backend','phonon-backend','^libphonon_(.*)\.so$')
260}
261
262do_install() {
263 oe_runmake install INSTALL_ROOT=${D}
264
265 # These are host binaries, we should only use them in staging
266 rm -rf ${D}/${bindir}/qmake
267
268 # fix pkgconfig, libtool and prl files
269 sed -i -e s#-L${S}/lib##g \
270 -e s#-L${STAGING_LIBDIR}##g \
271 -e 's#STAGING_LIBDIR}#libdir}'#g \
272 -e s#-L${libdir}##g \
273 -e s#'$(OE_QMAKE_LIBS_X11)'#"${OE_QMAKE_LIBS_X11}"#g \
274 -e s#" -Wl,-rpath-link,${S}/lib"##g \
275 -e s#" -Wl,-rpath-link,${libdir}"##g \
276 -e 's#I/usr/include#Iincludedir}#g' \
277 -e 's#Iin#I${in#g' \
278 ${D}${libdir}/*.la ${D}${libdir}/*.prl ${D}${libdir}/pkgconfig/*.pc
279
280 sed -i -e s#" -Wl,-rpath-link,${S}/lib"##g \
281 ${D}${datadir}/${QT_DIR_NAME}/mkspecs/common/linux.conf
282
283 # fix pkgconfig files
284 sed -i -e s#"moc_location=.*$"#"moc_location=${bindir}/moc4"# \
285 -e s#"uic_location=.*$"#"uic_location=${bindir}/uic4"# \
286 ${D}${libdir}/pkgconfig/*.pc
287 for name in ${QT_LIB_NAMES}; do
288 sed -i -e /Requires/s#"${name}"#"${name}${QT_LIBINFIX}"#g ${D}${libdir}/pkgconfig/*.pc
289 done
290
291 # QT abuses $includedir to point to its headers, which breaks pkgconfig sysroot, so manually fix it up here:
292 for pc in ${D}${libdir}/pkgconfig/*.pc ; do
293 sed -i -e "s:prefix}include/${QT_BASE_NAME}/$(basename $pc .pc):prefix}/include:" \
294 -e "s,Cflags: ,Cflags: -IP{includedir}/${QT_BASE_NAME}/$(basename $pc .pc) ," \
295 -e 's:IP{:I${:g' $pc
296 done
297
298 install -d ${D}/${libdir}/fonts
299 touch ${D}/${libdir}/fonts/fontdir
300}