SECTION = "x11/libs" PRIORITY = "optional" HOMEPAGE = "http://www.trolltech.com" LICENSE = "GPL QPL" DEPENDS = "pkgconfig-native uicmoc4-native qmake2-native freetype jpeg virtual/libx11 xft libxext libxrender libxrandr libxcursor dbus openssl" RDEPENDS_${PN} = "${NONDEV_PACKAGES}" PROVIDES = "qt4x11" PR = "r5" SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \ file://0001-cross-compile.patch;patch=1 \ file://0002-fix-resinit-declaration.patch;patch=1 \ file://0003-no-tools.patch;patch=1 \ file://0004-no-qmake.patch;patch=1 \ file://0005-fix-mkspecs.patch;patch=1 \ file://0006-freetype-host-includes.patch;patch=1 \ file://0007-openssl-host-includes.patch;patch=1" S = "${WORKDIR}/qt-x11-opensource-src-${PV}" PARALLEL_MAKE = "" inherit qmake-base qt4x11 export QTDIR = "${S}" STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4" EXTRA_OEMAKE = "-e" require qt4_arch.inc QT_ARCH := "${@qt_arch(d)}" # FIXME: # * add missing options QT_CONFIG_FLAGS = "-release -shared -qt-zlib -system-libjpeg -no-nas-sound -no-sm -no-libmng -qt-libpng -no-gif -no-xinerama \ -no-tablet -no-xkb -no-nis -no-cups -no-opengl \ -no-sse -no-sse2 -no-mmx -no-3dnow \ -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \ -qdbus \ -verbose -stl -no-accessibility \ -pch -no-glib" EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after DEFINES+=QT_NO_XIM INCPATH+=${STAGING_INCDIR} \ INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \ QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \ AR="${TARGET_PREFIX}ar cqs" \ MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"' do_configure() { echo "DEFINES -= QT_NO_CAST_TO_ASCII" >>src/qbase.pri echo "DEFINES += QT_NO_XIM" >>src/qbase.pri unset QMAKESPEC ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake ln -s linux-g++ mkspecs/${TARGET_OS}-oe-g++ #export QMAKESPEC="linux-oe-g++" #rm -rf ./mkspecs #ln -sf ${QMAKE_MKSPEC_PATH} ./mkspecs echo yes | ./configure -prefix / -platform ${TARGET_OS}-oe-g++ -crossarch ${QT_ARCH} ${QT_CONFIG_FLAGS} -fast \ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql } # FIXME: Might want to compile the cross tools for the -dev packages as well... do_compile() { unset CFLAGS CXXFLAGS install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic oe_runmake ${EXTRA_ENV} } PARTS = "3Support AssistantClient Core DBus Designer DesignerComponents Gui Network Script Sql Svg Test Xml" do_stage() { oe_runmake install INSTALL_ROOT=/ install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${STAGING_QT_DIR}/bin/rcc install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${STAGING_QT_DIR}/bin/moc install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${STAGING_QT_DIR}/bin/uic sed -i -e 's,^QMAKE_RPATHDIR.*,QMAKE_RPATHDIR=${STAGING_QT_DIR}/lib,g' ${STAGING_QT_DIR}/mkspecs/qconfig.pri for pcc in AssistantClient DBus Test UiTools ; do sed -i -e 's,${S}/lib,${STAGING_QT_DIR}/lib,g' ${STAGING_QT_DIR}/lib/pkgconfig/Qt${pcc}.pc done for pc in ${STAGING_QT_DIR}/lib/pkgconfig/*.pc ; do install -m 0644 $pc ${PKG_CONFIG_PATH}/ done } # FIXME: Might want to call oe_runmake install INSTALL_ROOT=${D}/${prefix} as well... # FIXME: Might want to install everything into ${libdir}/qt4/* to match the usual packing... do_install() { install -d ${D}${libdir} install -d ${D}${bindir} install -d ${D}${includedir} for part in ${PARTS} do oe_libinstall -so -C lib libQt$part ${D}${libdir} done oe_libinstall -a -C lib libQtUiTools ${D}${libdir} cp -pPR include/* ${D}${includedir} cp -pPR plugins ${D}${libdir} cp -pPR bin/* ${D}${bindir} install -d ${D}${bindir}/qt4-examples for binary in `find examples -perm 0755 -type f` do install -m 0755 $binary ${D}${bindir}/qt4-examples/ done install -d ${D}${bindir}/qt4-demos for binary in `find demos -perm 0755 -type f` do install -m 0755 $binary ${D}${bindir}/qt4-demos/ done rm ${D}${bindir}/rcc ${D}${bindir}/uic ${D}${bindir}/moc } NONDEV_PACKAGES = "libqtcore4 libqtgui4 libqtnetwork4 \ libqtsql4 libqtsvg4 libqttest4 \ libqtxml4 \ libqtdesigner4 libqtdesignercomponents4 \ libqt3support4 \ libqtassistantclient4 libqtscript4 \ libqtdbus4 \ qt4-assistant qt4-common qt4-designer qt4-demos qt4-examples qt4-linguist \ qt4-pixeltool qt4-dbus \ qt4-plugins-accessible qt4-plugins-codecs qt4-plugins-designer qt4-plugins-imageformats qt4-plugins-sqldrivers \ qt4-plugins-inputmethods qt4-plugins-iconengines" PACKAGES += "libqtcore4-dev libqtgui4-dev libqtnetwork4-dev libqtsql4-dev libqtsvg4-dev libqttest4-dev \ libqtxml4-dev libqtdesigner4-dev libqtdesignercomponents4-dev libqt3support4-dev \ libqtassistantclient4-dev libqtscript4-dev libqtdbus4-dev \ ${NONDEV_PACKAGES}" ALLOW_EMPTY = "1" FILES_${PN} = "" FILES_libqtcore4 = "${libdir}/libQtCore.so.*" FILES_libqtcore4-dev = "${libdir}/libQtCore.so" FILES_libqtgui4 = "${libdir}/libQtGui.so.*" FILES_libqtgui4-dev = "${libdir}/libQtGui.so" FILES_libqtnetwork4 = "${libdir}/libQtNetwork.so.*" FILES_libqtnetwork4-dev = "${libdir}/libQtNetwork.so" FILES_libqtsql4 = "${libdir}/libQtSql.so.*" FILES_libqtsql4-dev = "${libdir}/libQtSql.so" FILES_libqtsvg4 = "${libdir}/libQtSvg.so.*" FILES_libqtsvg4-dev = "${libdir}/libQtSvg.so" FILES_libqttest4 = "${libdir}/libQtTest.so.*" FILES_libqttest4-dev = "${libdir}/libQtTest.so" FILES_libqtxml4 = "${libdir}/libQtXml.so.*" FILES_libqtxml4-dev = "${libdir}/libQtXml.so" FILES_libqtdesigner4 = "${libdir}/libQtDesigner.so.*" FILES_libqtdesigner4-dev = "${libdir}/libQtDesigner.so" FILES_libqtdesignercomponents4 = "${libdir}/libQtDesignerComponents.so.*" FILES_libqtdesignercomponents4-dev = "${libdir}/libQtDesignerComponents.so" FILES_libqt3support4 = "${libdir}/libQt3Support.so.*" FILES_libqt3support4-dev = "${libdir}/libQt3Support.so" FILES_libqtassistantclient4 = "${libdir}/libQtAssistantClient.so.*" FILES_libqtassistantclient4-dev = "${libdir}/libQtAssistantClient.so" FILES_libqtscript4 = "${libdir}/libQtScript.so.*" FILES_libqtscript4-dev = "${libdir}/libQtScript.so" FILES_libqtdbus4 = "${libdir}/libQtDBus.so.*" FILES_libqtdbus4-dev = "${libdir}/libQtDBus.so" FILES_qt4-plugins-accessible = "${libdir}/plugins/accessible/*.so" FILES_qt4-plugins-codecs = "${libdir}/plugins/codecs/*.so" FILES_qt4-plugins-designer = "${libdir}/plugins/designer/*.so" FILES_qt4-plugins-imageformats = "${libdir}/plugins/imageformats/*.so" FILES_qt4-plugins-sqldrivers = "${libdir}/plugins/sqldrivers/*.so" FILES_qt4-plugins-inputmethods = "${libdir}/plugins/inputmethods/*.so" FILES_qt4-plugins-iconengines = "${libdir}/plugins/iconengines/*.so" FILES_qt4-assistant = "${bindir}/*assistant*" FILES_qt4-designer = "${bindir}/*designer*" FILES_qt4-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/qm2ts" FILES_qt4-pixeltool = "${bindir}/pixeltool" FILES_qt4-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer" FILES_qt4-common = "${bindir}/qtconfig" FILES_qt4-examples = "${bindir}/qt4-examples/*" FILES_qt4-demos = "${bindir}/qtdemo ${bindir}/qt4-demos/*" FILES_${PN}-dev += "${bindir}/rcc ${bindir}/uic* ${bindir}/moc ${bindir}/qmake ${bindir}/syncqt \ ${bindir}/qt3to4 ${bindir}/findtr" FILES_${PN}-dbg += "${bindir}/*/.debug ${plugindir}/.debug"