diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index 9aeafd7086..0bfacec3b0 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass @@ -124,6 +124,33 @@ EOF # TargetSpec The location where to install target mkspec # HostSpec The location where to install host mkspec +# qmake works fine with separate B, use it by default +SEPB = "${WORKDIR}/build" +B = "${SEPB}" + +CONFIGURESTAMPFILE = "${WORKDIR}/qmake5_base_configure.sstate" + +qmake5_base_preconfigure() { + if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ]; then + if [ "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" -a "${S}" != "${B}" ]; then + echo "Previously configured separate build directory detected, cleaning ${B}" + rm -rf ${B} + mkdir ${B} + fi + fi +} + +qmake5_base_postconfigure(){ + if [ -n "${CONFIGURESTAMPFILE}" ]; then + echo ${BB_TASKHASH} > ${CONFIGURESTAMPFILE} + fi +} + +EXTRAQCONFFUNCS ??= "" + +do_configure[prefuncs] += "qmake5_base_preconfigure ${EXTRAQCONFFUNCS}" +do_configure[postfuncs] += "qmake5_base_postconfigure" + addtask generate_qt_config_file after do_patch before do_configure qmake5_base_do_configure () { diff --git a/recipes-qt/qt5/qt5.inc b/recipes-qt/qt5/qt5.inc index e752ed6e21..b29bc891f1 100644 --- a/recipes-qt/qt5/qt5.inc +++ b/recipes-qt/qt5/qt5.inc @@ -11,19 +11,10 @@ require qt5_arch.inc QT_MODULE ?= "${BPN}" -SEPB = "${WORKDIR}/build" -B = "${SEPB}" - do_configure() { set_arch set_endian - # Similar logic is in autotools.bbclass - if [ -d ${B} -a "${S}" != "${B}" ] ; then - # Existing separate build directory, exists, remove - rm -rf "${B}/*" - fi - qmake5_base_do_configure } diff --git a/recipes-qt/qt5/qtbase-native.inc b/recipes-qt/qt5/qtbase-native.inc index cd54990d46..1216695115 100644 --- a/recipes-qt/qt5/qtbase-native.inc +++ b/recipes-qt/qt5/qtbase-native.inc @@ -26,9 +26,6 @@ SRC_URI += " \ # specific for native version SRC_URI += "file://0001-Always-build-uic.patch" -SEPB = "${WORKDIR}/build" -B = "${SEPB}" - QT_CONF_PATH = "${B}/qt.conf" do_generate_qt_config_file() { @@ -86,12 +83,6 @@ export OE_QMAKE_AR export OE_QMAKE_STRIP do_configure_prepend() { - # Similar logic is in autotools.bbclass - if [ -d ${B} -a "${S}" != "${B}" ] ; then - # Existing separate build directory, exists, remove - rm -rf "${B}/*" - fi - (echo o; echo yes) | ${S}/configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}" bin/qmake ${OE_QMAKE_DEBUG_OUTPUT} ${S} -o Makefile || die "Configuring qt with qmake failed. EXTRA_OECONF was ${EXTRA_OECONF}" } diff --git a/recipes-qt/qt5/qtbase.inc b/recipes-qt/qt5/qtbase.inc index 9348fc66df..139811f6d3 100644 --- a/recipes-qt/qt5/qtbase.inc +++ b/recipes-qt/qt5/qtbase.inc @@ -105,12 +105,6 @@ do_configure() { set_arch set_endian - # Similar logic is in autotools.bbclass - if [ -d ${B} -a "${S}" != "${B}" ] ; then - # Existing separate build directory, exists, remove - rm -rf "${B}/*" - fi - # we need symlink in path relative to source, because # EffectivePaths:Prefix is relative to qmake location if [ ! -e ${B}/bin/qmake ]; then diff --git a/recipes-qt/qt5/qtjsbackend-native.inc b/recipes-qt/qt5/qtjsbackend-native.inc index 3db013501e..2cf113d833 100644 --- a/recipes-qt/qt5/qtjsbackend-native.inc +++ b/recipes-qt/qt5/qtjsbackend-native.inc @@ -17,16 +17,7 @@ SRC_URI += "\ file://0001-Install-the-mkv8snapshot-tool-to-the-native-side.patch \ " -SEPB = "${WORKDIR}/build" -B = "${SEPB}" - do_configure() { - # Similar logic is in autotools.bbclass - if [ -d ${B} -a "${S}" != "${B}" ] ; then - # Existing separate build directory, exists, remove - rm -rf "${B}/*" - fi - ${OE_QMAKE_QMAKE} ${OE_QMAKE_DEBUG_OUTPUT} -r ${S} } diff --git a/recipes-qt/qt5/qtwebkit.inc b/recipes-qt/qt5/qtwebkit.inc index 66f3af4962..a25820be60 100644 --- a/recipes-qt/qt5/qtwebkit.inc +++ b/recipes-qt/qt5/qtwebkit.inc @@ -11,5 +11,5 @@ INC_PR = "r0" do_configure_append() { # Fix rpaths for QtWebProcess - find -name "Makefile*" | xargs sed -i "s|-Wl,-rpath,${SEPB}/lib||g" + find -name "Makefile*" | xargs sed -i "s|-Wl,-rpath,${B}/lib||g" }