diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index fc90429fd5..5601bb9478 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass @@ -21,7 +21,7 @@ Prefix = Binaries = ${STAGING_BINDIR_NATIVE} Headers = ${STAGING_INCDIR}/qt5 Plugins = ${STAGING_LIBDIR}/qt5/plugins/ -Libraries = ${STAGING_LIBDIR}/qt5-test +Libraries = ${STAGING_LIBDIR} Mkspecs = ${STAGING_DATADIR}/qt5/mkspecs/ HostData = ${STAGING_DATADIR_NATIVE}/qt5 HostBinaries = ${STAGING_BINDIR_NATIVE}/ diff --git a/recipes-qt/qt5/files/0001-Always-build-uic.patch b/recipes-qt/qt5/files/0001-Always-build-uic.patch new file mode 100644 index 0000000000..3f2e3fd925 --- /dev/null +++ b/recipes-qt/qt5/files/0001-Always-build-uic.patch @@ -0,0 +1,31 @@ +From 1092de02d1ac256a8c56fb5b5e590a4df8188acb Mon Sep 17 00:00:00 2001 +From: Mikko Levonmaa +Date: Tue, 27 Nov 2012 12:46:44 -0800 +Subject: [PATCH] Always build uic + +Even if we are not building gui or widgets. This tool is needed later +as a native tool when compiling the target. + +Signed-off-by: Mikko Levonmaa +--- + src/tools/tools.pro | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/tools/tools.pro b/src/tools/tools.pro +index c67d6bf..b6f3b39 100644 +--- a/src/tools/tools.pro ++++ b/src/tools/tools.pro +@@ -1,8 +1,8 @@ + TEMPLATE = subdirs + +-TOOLS_SUBDIRS = src_tools_bootstrap src_tools_moc src_tools_rcc src_tools_qdoc ++TOOLS_SUBDIRS = src_tools_bootstrap src_tools_moc src_tools_rcc src_tools_qdoc src_tools_uic + contains(QT_CONFIG, dbus): TOOLS_SUBDIRS += src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml +-!contains(QT_CONFIG, no-widgets): TOOLS_SUBDIRS += src_tools_uic ++ + # Set subdir and respective target name + src_tools_bootstrap.subdir = $$PWD/bootstrap + src_tools_bootstrap.target = sub-tools-bootstrap +-- +1.7.4.1 + diff --git a/recipes-qt/qt5/files/g++.conf b/recipes-qt/qt5/files/g++.conf index e58fb15718..14cd3e1d77 100644 --- a/recipes-qt/qt5/files/g++.conf +++ b/recipes-qt/qt5/files/g++.conf @@ -18,7 +18,7 @@ QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTP QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} QMAKE_CXX = $(OE_QMAKE_CXX) -QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS) +QMAKE_CXXFLAGS += $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS $(OE_QMAKE_CXXFLAGS) QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF diff --git a/recipes-qt/qt5/files/linux.conf b/recipes-qt/qt5/files/linux.conf index 86703813ca..08e84f2362 100644 --- a/recipes-qt/qt5/files/linux.conf +++ b/recipes-qt/qt5/files/linux.conf @@ -22,7 +22,6 @@ QMAKE_LIBDIR_EGL = QMAKE_INCDIR_OPENVG = QMAKE_LIBDIR_OPENVG = - QMAKE_LIBS = QMAKE_LIBS_DYNLOAD = -ldl QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11) @@ -35,6 +34,15 @@ QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 QMAKE_LIBS_OPENVG = -lOpenVG QMAKE_LIBS_THREAD = -lpthread +QMAKE_LIBS_LIBUDEV = -ludev + +QMAKE_CFLAGS_WAYLAND = +QMAKE_INCDIR_WAYLAND = +QMAKE_LIBS_WAYLAND_CLIENT = -lwayland-client +QMAKE_LIBS_WAYLAND_SERVER = -lwayland-server +QMAKE_LIBDIR_WAYLAND = +QMAKE_DEFINES_WAYLAND = +QMAKE_WAYLAND_SCANNER = wayland-scanner QMAKE_MOC = $(OE_QMAKE_MOC) QMAKE_UIC = $(OE_QMAKE_UIC) diff --git a/recipes-qt/qt5/qt5-native.inc b/recipes-qt/qt5/qt5-native.inc index 0585afc295..3fde774a76 100644 --- a/recipes-qt/qt5/qt5-native.inc +++ b/recipes-qt/qt5/qt5-native.inc @@ -14,6 +14,7 @@ FILESEXTRAPATHS =. "${FILE_DIRNAME}/qtbase:" SRC_URI += " \ file://0001-qlibraryinfo-Allow-the-specification-of-where-to-loa.patch \ + file://0001-Always-build-uic.patch \ " EXTRA_OECONF = " \ @@ -36,6 +37,8 @@ EXTRA_OECONF = " \ -qt-xcb \ -verbose -release \ -headerdir ${includedir}/qt5 \ + -datadir ${datadir}/qt5 \ + -docdir ${docdir}/qt5 \ -no-glib \ -no-iconv \ -no-fast \ @@ -55,11 +58,9 @@ do_configure() { do_install() { install -d ${D}${bindir}/ - for i in findtr fixqt4headers.pl moc qdoc qmake rcc qdbuscpp2xml qdbusxml2cpp syncqt; do + for i in findtr fixqt4headers.pl moc qdoc qmake rcc qdbuscpp2xml qdbusxml2cpp syncqt uic; do install -v -m 0755 bin/${i} ${D}${bindir}/${i} done install -d ${D}${datadir}/qt5/ cp -PfR mkspecs ${D}${datadir}/qt5/ - cp -f ${WORKDIR}/g++.conf ${D}${datadir}/qt5/mkspecs/common/g++-unix.conf - cp -f ${WORKDIR}/linux.conf ${D}${datadir}/qt5/mkspecs/common/ } diff --git a/recipes-qt/qt5/qt5.inc b/recipes-qt/qt5/qt5.inc index 12d5de2f63..9f29792c49 100644 --- a/recipes-qt/qt5/qt5.inc +++ b/recipes-qt/qt5/qt5.inc @@ -25,7 +25,6 @@ QT_DISTRO_FLAGS_linuxstdbase = "-sm" # but add them to QT_CONFIG_FLAGS e.g. in qtbase.inc QT_SQL_DRIVER_FLAGS ?= "-no-sql-ibase -no-sql-mysql -no-sql-psql -no-sql-odbc -plugin-sql-sqlite" QT_GLFLAGS ?= "" -QT_QT3SUPPORT ?= "-qt3support" QT_XML ?= "-xmlpatterns" QT_WEBKIT ?= "-webkit" QT_PHONON ?= "-phonon" @@ -50,6 +49,7 @@ QT_CONFIG_FLAGS += " \ -no-pch \ -no-rpath \ -no-fast \ + -pkg-config \ ${QT_SYSTEM_LIBS} \ ${QT_NIS} \ ${QT_CUPS} \ @@ -62,8 +62,13 @@ QT_CONFIG_FLAGS += " \ ${QT_DEMOS} \ " +EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake -d -after \ + INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \ + LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \ + AR="${TARGET_PREFIX}ar cqs" \ + MOC="${STAGING_BINDIR_NATIVE}/moc" UIC="${STAGING_BINDIR_NATIVE}/uic" MAKE="make -e ${PARALLEL_MAKE}"' -EXTRA_OEMAKE = "-e" +export QT_CONF_PATH="${S}/qt.conf" do_configure() { set_endian @@ -79,11 +84,18 @@ do_configure() { cp -f ${WORKDIR}/qplatformdefs.h mkspecs/${TARGET_OS}-oe-g++ bash ${WORKDIR}/qmake.conf.sh > mkspecs/${TARGET_OS}-oe-g++/qmake.conf - mkdir -p mkspecs/build-oe-g++ - cp -f ${WORKDIR}/qplatformdefs.h mkspecs/build-oe-g++ - - ## FIXME, the file nameing is dumb... - cp ${WORKDIR}/qmake-build.conf.sh mkspecs/build-oe-g++/qmake.conf + echo "[Paths]" > $QT_CONF_PATH + echo "Binaries=${bindir}" >> $QT_CONF_PATH + echo "Headers=${includedir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Documentation=${docdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Libraries=${libdir}" >> $QT_CONF_PATH + echo "Plugins=${libdir}/${QT_DIR_NAME}/plugins" >> $QT_CONF_PATH + echo "Data=${datadir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Translations=${datadir}/${QT_DIR_NAME}/translations" >> $QT_CONF_PATH + echo "Settings=${sysconfdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Examples=${bindir}/${QT_DIR_NAME}/examples" >> $QT_CONF_PATH + echo "HostBinaries=${STAGING_BINDIR_NATIVE}" >> $QT_CONF_PATH + echo "HostData=${STAGING_DATADIR_NATIVE}/${QT_DIR_NAME}" >> $QT_CONF_PATH ./configure -v \ -opensource -confirm-license \ @@ -98,24 +110,51 @@ do_configure() { -importdir ${libdir}/${QT_DIR_NAME}/imports \ -translationdir ${datadir}/${QT_DIR_NAME}/translations \ -examplesdir ${bindir}/${QT_DIR_NAME}/examples \ - -platform build-oe-g++ \ + -platform ${TARGET_OS}-oe-g++ \ -xplatform ${TARGET_OS}-oe-g++ \ ${QT_CONFIG_FLAGS} + + ### Since we are utilizing the native tree for the mkspecs, update the target mkspecs there + if [ ! -e ${STAGING_DATADIR_NATIVE}/${QT_DIR_NAME}/mkspecs/${TARGET_OS}-oe-g++ ]; then + cp -rf mkspecs/${TARGET_OS}-oe-g++ ${STAGING_DATADIR_NATIVE}/${QT_DIR_NAME}/mkspecs/${TARGET_OS}-oe-g++ + fi + ### qmodule.pri and qconfig.pri contain target specific stuff + cp -f mkspecs/qmodule.pri ${STAGING_DATADIR_NATIVE}/${QT_DIR_NAME}/mkspecs/qmodule.pri + cp -f mkspecs/qconfig.pri ${STAGING_DATADIR_NATIVE}/${QT_DIR_NAME}/mkspecs/qconfig.pri } do_compile() { unset CFLAGS CXXFLAGS AR - export QMAKESPEC="${S}/mkspecs/${TARGET_OS}-oe-g++" + oe_runmake ${EXTRA_ENV} - oe_runmake + # Build qmake for the target arch + cd ${S}/qmake + ${OE_QMAKE_QMAKE} + oe_runmake CC="${CC}" CXX="${CXX}" + cd ${S} } do_install() { oe_runmake install INSTALL_ROOT=${D} + + # Fix up the binaries to the right location + install -d ${D}${bindir}/ + mv ${D}/${STAGING_BINDIR_NATIVE}/* ${D}${bindir}/ + rm -rf ${D}/${STAGING_BINDIR_NATIVE}/ + + # Install the right arch qmake + rm ${D}/${bindir}/qmake + install -m 0755 bin/qmake2 ${D}${bindir}/qmake } FILES_${PN} = "${libdir}/*.so.*" FILES_${PN}-dbg = "${libdir}/.debug/*.so.*" +FILES_${PN}-plugins = "${libdir}/${QT_DIR_NAME}/platforms/*.so" +FILES_${PN}-plugins-dbg = "${libdir}/${QT_DIR_NAME}/platforms/.debug/*.so" + FILES_${PN}-dev = "${libdir}/cmake/* ${libdir}/pkgconfig/*.pc ${libdir}/*.la ${libdir}/*.prl ${includedir}/qt5/*" FILES_${PN}-staticdev = "${libdir}/libQt*.a" +FILES_${PN}-tools = "${bindir}/qmake" +FILES_${PN}-mkspecs = "${STAGING_DATADIR_NATIVE}/${QT_DIR_NAME}/mkspecs/*" +FILES_${PN}-doc = "${STAGING_DATADIR_NATIVE}/doc/*" diff --git a/recipes-qt/qt5/qtbase.inc b/recipes-qt/qt5/qtbase.inc index 115bb46993..e85ff6e175 100644 --- a/recipes-qt/qt5/qtbase.inc +++ b/recipes-qt/qt5/qtbase.inc @@ -6,8 +6,8 @@ SRC_URI += " \ file://0003-Allow-building-a-separate-qmake-for-the-target.patch \ " -# to provide xcb/xcb_icccm.h, xcb/xcb_image.h, xcb/xcb_keysyms.h -DEPENDS += "xcb-util-wm xcb-util-image xcb-util-keysyms" +# to provide xcb/xcb_icccm.h, xcb/xcb_image.h, xcb/xcb_keysyms.h and dbus/dbus.h +DEPENDS += "xcb-util-wm xcb-util-image xcb-util-keysyms dbus" QT_MODULE_FLAGS ?= "-system-xcb" @@ -16,8 +16,6 @@ INC_PR = "r0" QT_BASE_NAME = "qt5" QT_DIR_NAME = "qt5" -export QMAKESPEC = "${STAGING_DATADIR}/${QT_DIR_NAME}/mkspecs/${TARGET_OS}-oe-g++" - # Qt uses atomic instructions not supported in thumb mode ARM_INSTRUCTION_SET = "arm"