an>{sysconfdir}/${QT_DIR_NAME} \ -docdir ${docdir}/${QT_DIR_NAME} \ -headerdir ${includedir}/${QT_DIR_NAME} \ -plugindir ${libdir}/${QT_DIR_NAME}/plugins \ -translationdir ${datadir}/${QT_DIR_NAME}/translations \ -examplesdir ${bindir}/${QT_DIR_NAME}/examples \ -demosdir ${bindir}/${QT_DIR_NAME}/demos \ -platform ${TARGET_OS}-oe-g++ \ -xplatform ${TARGET_OS}-oe-g++ \ ${QT_ENDIAN} \ -crossarch ${QT_ARCH} \ ${QT_CONFIG_FLAGS} -no-fast \ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} \ -I${STAGING_INCDIR}/freetype2 } python populate_packages_prepend() { translation_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/translations/', d) translation_name = bb.data.expand('${QT_BASE_NAME}-translation-%s', d) do_split_packages(d, translation_dir, '^(assistant|designer|linguist|qt|qtconfig|qvfb)_(.*)\.qm$', translation_name, '${PN} translation for %s', extra_depends='' ) phrasebook_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/phrasebooks/', d) phrasebook_name = bb.data.expand('${QT_BASE_NAME}-phrasebook-%s', d) do_split_packages(d, phrasebook_dir, '^(.*)\.qph$', phrasebook_name, '${PN} phrasebook for %s', extra_depends='' ) # Package all the plugins and their -dbg version and create a meta package import os def qtopia_split(path, name, glob): """ Split the package into a normal and -dbg package and then add the new packages to the meta package. """ plugin_dir = bb.data.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/' % path, d) if not os.path.exists("%s%s" % (bb.data.expand('${D}',d), plugin_dir)): bb.note("The path does not exist:", bb.data.expand('${D}', d), plugin_dir) return plugin_name = bb.data.expand('${QT_BASE_NAME}-plugin-%s-%%s' % name, d) dev_packages = [] dev_hook = lambda file,pkg,b,c,d:dev_packages.append((file,pkg)) do_split_packages(d, plugin_dir, glob, plugin_name, '${PN} %s for %%s' % name, extra_depends='', hook=dev_hook) # Create a -dbg package as well plugin_dir_dbg = bb.data.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/.debug' % path, d) packages = bb.data.getVar('PACKAGES',d) for (file,package) in dev_packages: packages = "%s %s-dbg" % (packages, package) file_name = os.path.join(plugin_dir_dbg, os.path.basename(file)) bb.data.setVar("FILES_%s-dbg" % package, file_name, d) bb.data.setVar("DESCRIPTION_%s-dbg" % package, "${PN} %s for %s" % (name, package), d) bb.data.setVar('PACKAGES', packages, d) qtopia_split('accessible', 'accessible', '^libq(.*)\.so$') qtopia_split('codecs', 'codec', '^libq(.*)\.so$') qtopia_split('decorations', 'decoration', '^libqdecoration(.*)\.so$') qtopia_split('designer', 'designer', '^lib(.*)\.so$') qtopia_split('gfxdrivers', 'gfxdriver', '^libq(.*)\.so$') qtopia_split('graphicssystems','graphicssystems', '^libq(.*)\.so$') qtopia_split('mousedrivers', 'mousedriver', '^libq(.*)mousedriver\.so$') qtopia_split('iconengines', 'iconengine', '^libq(.*)\.so$') qtopia_split('imageformats', 'imageformat', '^libq(.*)\.so$') qtopia_split('inputmethods', 'inputmethod', '^libq(.*)\.so$') qtopia_split('sqldrivers', 'sqldriver', '^libq(.*)\.so$') qtopia_split('script', 'script', '^libqtscript(.*)\.so$') qtopia_split('styles', 'style', '^libq(.*)\.so$') qtopia_split('phonon_backend','phonon-backend','^libphonon_(.*)\.so$') qtopia_split('bearer', 'bearer', '^libq(.*)bearer\.so$') } do_install() { oe_runmake install INSTALL_ROOT=${D} # These are host binaries, we should only use them in staging rm ${D}/${bindir}/qmake rm ${D}/${bindir}/uic rm ${D}/${bindir}/moc rm ${D}/${bindir}/rcc rm ${D}/${bindir}/lrelease # fix pkgconfig, libtool and prl files sed -i -e s#-L${S}/lib##g \ -e s#-L${STAGING_LIBDIR}##g \ -e 's#STAGING_LIBDIR}#libdir}'#g \ -e s#-L${libdir}##g \ -e s#'$(OE_QMAKE_LIBS_X11)'#"${OE_QMAKE_LIBS_X11}"#g \ -e s#" -Wl,-rpath-link,${S}/lib"##g \ -e s#" -Wl,-rpath-link,${libdir}"##g \ -e 's#I/usr/include#Iincludedir}#g' \ -e 's#Iin#I${in#g' \ ${D}${libdir}/*.la ${D}${libdir}/*.prl ${D}${libdir}/pkgconfig/*.pc sed -i -e s#" -Wl,-rpath-link,${S}/lib"##g \ ${D}${datadir}/${QT_DIR_NAME}/mkspecs/common/linux.conf # fix pkgconfig files sed -i -e s#"moc_location=.*$"#"moc_location=${bindir}/moc4"# \ -e s#"uic_location=.*$"#"uic_location=${bindir}/uic4"# \ ${D}${libdir}/pkgconfig/*.pc for name in ${QT_LIB_NAMES}; do sed -i -e /Requires/s#"${name}"#"${name}${QT_LIBINFIX}"#g ${D}${libdir}/pkgconfig/*.pc done # QT abuses $includedir to point to its headers, which breaks pkgconfig sysroot, so manually fix it up here: for pc in ${D}${libdir}/pkgconfig/*.pc ; do sed -i -e "s:prefix}include/${QT_BASE_NAME}/$(basename $pc .pc):prefix}/include:" \ -e "s,Cflags: ,Cflags: -IP{includedir}/${QT_BASE_NAME}/$(basename $pc .pc) ," \ -e 's:IP{:I${:g' $pc done install -d ${D}/${libdir}/fonts touch ${D}/${libdir}/fonts/fontdir #Append an E to the qtdemo file if [ -n "${QT_LIBINFIX}" ] ; then mv ${D}${bindir}/qtdemo ${D}${bindir}/qtdemo${QT_LIBINFIX} fi }