diff options
Diffstat (limited to 'packages/qte')
-rw-r--r-- | packages/qte/qtopia-core_4.3.1.bb | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/packages/qte/qtopia-core_4.3.1.bb b/packages/qte/qtopia-core_4.3.1.bb new file mode 100644 index 0000000000..73cfb7f6da --- /dev/null +++ b/packages/qte/qtopia-core_4.3.1.bb @@ -0,0 +1,222 @@ +SUMMARY = "QtopiaCore" +SECTION = "libs" +LICENSE = "GPL" +PRIORITY = "optional" +HOMEPAGE = "http://www.trolltech.com" +DEPENDS = "freetype tslib" + +PR = "r1" + +SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz \ + file://linux-oe-qmake.conf" + +S = "${WORKDIR}/qtopia-core-opensource-src-${PV}" + +inherit pkgconfig + +# Qmake gets confused by environment variables, as it builds both HOST +# and TARGET objects. The correct compiler settings come from the mkspec +# and are set with the OE_QMAKE_ variables +PARALLEL_MAKE = "" +EXTRA_OEMAKE = " MAKEFLAGS= " + +# This stuff could also be done by inheriting qmake, but I didn't want to +# bother with the qmake separation from the Qtopia configure. This separation +# is probably nothing more than a patch on the configure and setting some +# environment variables to use our own qmake/moc/uic, but that's something +# to figure out later. +export OE_QMAKE_CC="${CC}" +export OE_QMAKE_CFLAGS="${CFLAGS}" +export OE_QMAKE_CXX="${CXX}" +export OE_QMAKE_CXXFLAGS="-fno-exceptions ${CXXFLAGS}" +export OE_QMAKE_LDFLAGS="${LDFLAGS}" +export OE_QMAKE_LINK="${CXX}" +export OE_QMAKE_AR="${AR}" +export OE_QMAKE_RANLIB="${RANLIB}" +export OE_QMAKE_STRIP="echo" +export OE_QMAKE_RPATH="-Wl,-rpath-link," +export OE_QMAKE_INCDIR_QT="${QTDIR}/include" +export OE_QMAKE_LIBDIR_QT="${QTDIR}/lib" +export OE_QMAKE_INCDIR_QTOPIA="${QTOPIADIR}/include" +export OE_QMAKE_LIBDIR_QTOPIA="${QTOPIADIR}/lib" + +require qte-functions.inc +QT_ARCH := "${@qte_arch(d)}" + +# FIXME use info.bbclass once it has been commited +QT_ENDIAN = "-little-endian" + +# We don't build the examples and demos atm. They're quite big and not used +# frequently, only for testing maybe. Feel free to change and to package +# them separately. +QT_CONFIG_FLAGS = "-release \ + -no-cups -no-accessibility \ + -nomake demos -nomake examples -nomake tools -reduce-relocations \ + -qt-mouse-tslib -qt-gfx-transformed -embedded ${QT_ARCH}" + +do_configure() { + # Hack to honor our compiler flags + sed -i s/-O2//g ${S}/mkspecs/*/qmake.conf + sed -i s/-O2//g ${S}/mkspecs/*/*/qmake.conf + + + # Install the OE build templates (something which might be done + # by inheriting qmake) + for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++ + do + install -d ${S}/mkspecs/$template + install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf + ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h + done + + # The Qmake Makefile generation doesn't like these environment + # variables, as they mess up the HOST tools builds + unset CC + unset CXX + unset CFLAGS + unset CXXFLAGS + unset LDFLAGS + + # For rationale behind the installation locations, see remark above + echo yes | ./configure -v \ + -prefix ${prefix} \ + -bindir ${bindir} \ + -libdir ${libdir} \ + -docdir ${docdir}/qtopia \ + -headerdir ${includedir} \ + -plugindir ${datadir}/qtopia/plugins \ + -datadir ${datadir} \ + -translationdir ${datadir}/qtopia/translations \ + -sysconfdir ${sysconfdir} \ + -examplesdir ${bindir}/qtopia/examples \ + -demosdir ${bindir}/qtopia/demos \ + -embedded ${QT_ARCH} ${QT_ENDIAN} -fast \ + -xplatform linux-oe-g++ \ + ${QT_CONFIG_FLAGS} \ + -L${STAGING_LIBDIR} -I${STAGING_INCDIR} +} + +# +# Fixup some pkgconfig files +# moc_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/moc +# uic_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/uic +# +# Libs: -L${libdir} -lQtNetwork -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib $(LIBS_EXTRA) -lQtCore -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib -lm -lrt -lpthread -ldl +# +do_compile_append() { + cd ${S}/lib/pkgconfig + sed -i s#"-L${S}/lib"##g *.pc + sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# *.pc + sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# *.pc +} + +do_stage_append() { + echo "Fixing up Qt" + cd ${STAGING_LIBDIR}/pkgconfig + sed -i s#"-L${S}/lib"##g Qt*.pc + sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# Qt*.pc + sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# Qt*.pc +} + +do_install() { + oe_runmake install INSTALL_ROOT=${D} + + # These are host binaries, we should only use them in staging + rm -rf ${D}/${bindir} + rm -rf ${D}/${datadir}/mkspecs + + touch ${D}/${libdir}/fonts/fontdir +} + +# We might want to package all the libraries separately, so you can really +# fine-tune what to install. This is e.g. done in qt4-x11-free_4.1.2.bb. +# What should these packages be called? I'm tempted to call them the same +# as in qt4 version, as the API is supposed to be compatible, e.g. +# libqtcore4 and libqtgui4. This will however conflict if you have QT and +# Qtopia, but this is something you don't want anyway, I guess. +# Another solution is making virtual/libqtfoo4, and DEPENDing on that one +# and let both the PACKAGES in QT and Qtopia PROVIDE these. The packages +# themselves could then be called libqtopiafoo4. +# I'll postpone this discussion by not making separate Qtopia packages. + +# Also, I don't package the plugins and translations atm, I don't use them +# and I don't feel like thinking about a sensible separation. + +PACKAGES =+ " libqtcore libqtcore-dev libqtcore-dbg \ + libqtxml libqtxml-dev libqtxml-dbg \ + libqtgui libqtgui-dev libqtgui-dbg \ + libqtsql libqtsql-dev libqtsql-dbg \ + libqtnetwork libqtnetwork-dev libqtnetwork-dbg \ + libqtsvg libqtsvg-dev libqtsvg-dbg \ + libqt3support libqt3support-dev libqt3support-dbg \ + qtopia-core-plugins qtopia-core-plugins-dbg \ + libqtscript libqtscript-dev libqtscript-dbg \ + " + +PACKAGES += " ${PN}-fonts " + +# The default included fonts are around 75MB and consist of a number of +# FreeType-renderable fonts as well as QPF (Qtopia Prerendered Fonts). +# As FreeType is generally slow on embedded platforms, and 75MB is +# quite huge, we downsize the fonts dir in the do_install. I've decided +# to include only the QPF (Helvetica and Fixed), amounting to 500KB. This +# also results in tremendously faster application startup time. +FILES_libqtcore += " ${libdir}/fonts/helvetic* ${libdir}/fonts/fixed* ${D}/${libdir}/fonts/fontdir" +FILES_${PN}-fonts = "${libdir}/fonts" + +FILES_qtopia-core-plugins += "${datadir}/qtopia/plugins/*/*.so" +FILES_qtopia-core-plugins-dbg += "${datadir}/qtopia/plugins/*/.debug/*.so" + +FILES_libqtcore += "${libdir}/libQtCore.so.*" +FILES_libqtxml += "${libdir}/libQtXml.so.*" +FILES_libqtgui += "${libdir}/libQtGui.so.*" +FILES_libqtsql += "${libdir}/libQtSql.so.*" +FILES_libqtnetwork += "${libdir}/libQtNetwork.so.*" +FILES_libqtsvg += "${libdir}/libQtSvg.so.*" +FILES_libqt3support += "${libdir}/libQt3Support.so.*" +FILES_libqtscript += "${libdir}/libQtScript.so.*" + +FILES_libqtcore-dev += "${libdir}/*QtCore.*" +FILES_libqtxml-dev += "${libdir}/*QtXml.*" +FILES_libqtgui-dev += "${libdir}/*QtGui.*" +FILES_libqtsql-dev += "${libdir}/*QtSql.*" +FILES_libqtnetwork-dev += "${libdir}/*QtNetwork.*" +FILES_libqtsvg-dev += "${libdir}/*QtSvg.*" +FILES_libqt3support-dev += "${libdir}/*Qt3Support.*" +FILES_libqtscript-dev += "${libdir}/*QtScript.*" + +FILES_libqtcore-dbg += "${libdir}/.debug/libQtCore*" +FILES_libqtxml-dbg += "${libdir}/.debug/libQtXml*" +FILES_libqtgui-dbg += "${libdir}/.debug/libQtGui*" +FILES_libqtsql-dbg += "${libdir}/.debug/libQtSql*" +FILES_libqtnetwork-dbg += "${libdir}/.debug/libQtNetwork*" +FILES_libqtsvg-dbg += "${libdir}/.debug/libQtSvg*" +FILES_libqt3support-dbg += "${libdir}/.debug/libQt3Support*" +FILES_libqtscript-dbg += "${libdir}/.debug/libQtScript*" + + +python populate_packages_prepend() { + translationdir = bb.data.expand('${datadir}/qtopia/translations/', d) + do_split_packages(d, translationdir, '^qt_(.*)\.qm$', 'qtopia-translation-%s', 'Qtopia translation for %s', extra_depends='' ) +} + + + +STAGE_TEMP = "${WORKDIR}/temp-staging" +do_stage() { + rm -rf ${STAGE_TEMP} + mkdir -p ${STAGE_TEMP} + oe_runmake install INSTALL_ROOT=${STAGE_TEMP} + + install -d ${STAGING_INCDIR}/qtopiacore4 + install -d ${STAGING_LIBDIR}/qtopiacore4 + cp -af ${STAGE_TEMP}/$includedir/* ${STAGING_INCDIR}/qtopiacore4/ + + for i in ${STAGE_TEMP}/${libdir}/*.la + do + oe_libinstall -C ${STAGE_TEMP}/${libdir} -so $(basename $i .la) ${STAGING_LIBDIR}/qtopiacore4 + done + + rm -rf ${STAGE_TEMP} +} + |