diff options
author | Samuli Piippo <samuli.piippo@theqtcompany.com> | 2016-03-15 13:07:11 +0200 |
---|---|---|
committer | Samuli Piippo <samuli.piippo@theqtcompany.com> | 2016-04-13 08:18:45 +0000 |
commit | fc91b16ed2a877412cd3a67023a6217e8671c3e4 (patch) | |
tree | 79e0af3098fc82423d36bfc25176f2b85f2607b3 /classes | |
parent | e088f366191f9a4cadc815c3d72d85086619a184 (diff) |
qt5: Add mingw support
Change-Id: Ibd6449396be71761e10c84bdb9a9b1888affc618
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Diffstat (limited to 'classes')
-rw-r--r-- | classes/qmake5.bbclass | 4 | ||||
-rw-r--r-- | classes/qmake5_base.bbclass | 70 |
2 files changed, 42 insertions, 32 deletions
diff --git a/classes/qmake5.bbclass b/classes/qmake5.bbclass index 2b43f2e3..1a960e8f 100644 --- a/classes/qmake5.bbclass +++ b/classes/qmake5.bbclass @@ -17,7 +17,3 @@ do_install() { do_install_class-native() { qmake5_base_native_do_install } - -do_install_class-nativesdk() { - qmake5_base_nativesdk_do_install -} diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index c2a84985..eb070a0a 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass @@ -30,8 +30,6 @@ EXTRA_OEMAKE = " \ OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ " -OE_QMAKESPEC = "${QMAKE_MKSPEC_PATH_NATIVE}/mkspecs/${OE_QMAKE_PLATFORM_NATIVE}" -OE_XQMAKESPEC = "${QMAKE_MKSPEC_PATH}/mkspecs/${OE_QMAKE_PLATFORM}" OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/qmake" OE_QMAKE_COMPILER = "${CC}" OE_QMAKE_CC = "${CC}" @@ -43,14 +41,18 @@ OE_QMAKE_LDFLAGS = "${LDFLAGS}" OE_QMAKE_AR = "${AR}" OE_QMAKE_STRIP = "echo" OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" - -# this one needs to be exported, because qmake reads it from shell env -export QT_CONF_PATH = "${WORKDIR}/qt.conf" +OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf" +OE_QMAKE_QTCONF = "-qtconf ${OE_QMAKE_QTCONF_PATH}" inherit qmake5_paths remove-libtool do_generate_qt_config_file() { - cat > ${QT_CONF_PATH} <<EOF + generate_qt_config_file_paths + generate_qt_config_file_effective_paths +} + +generate_qt_config_file_paths() { + cat > ${OE_QMAKE_QTCONF_PATH} <<EOF [Paths] Prefix = ${OE_QMAKE_PATH_PREFIX} Headers = ${OE_QMAKE_PATH_HEADERS} @@ -70,12 +72,21 @@ Tests = ${OE_QMAKE_PATH_TESTS} HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} HostData = ${OE_QMAKE_PATH_HOST_DATA} HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} -HostSpec = ${OE_QMAKESPEC} -TartgetSpec = ${OE_XQMAKESPEC} +HostSpec = ${OE_QMAKE_PLATFORM_NATIVE} +TargetSpec = ${OE_QMAKE_PLATFORM} ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} Sysroot = ${STAGING_DIR_TARGET} EOF } + +generate_qt_config_file_effective_paths() { + cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF +[EffectivePaths] +HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} +HostData = ${OE_QMAKE_PATH_HOST_DATA} +HostPrefix = ${STAGING_DIR_NATIVE}${prefix_native} +EOF +} # # Allows to override following values (as in version 5.0.1) # Prefix The default prefix for all paths. @@ -154,8 +165,8 @@ qmake5_base_do_configure () { # for config.tests to read this export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}" - CMD="${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST" - ${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST || die "Error calling $CMD" + CMD="${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_QTCONF} ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST" + ${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_QTCONF} ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST || die "Error calling $CMD" } qmake5_base_native_do_install() { @@ -163,32 +174,35 @@ qmake5_base_native_do_install() { find "${D}" -ignore_readdir_race -name "*.la" -delete } -qmake5_base_nativesdk_do_install() { - # Fix install paths for all - find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g" - - oe_runmake install INSTALL_ROOT=${D} +qmake5_base_fix_install() { + STAGING_PATH=$1 + if [ -d ${D}${STAGING_PATH} ] ; then + echo "Some files are installed in wrong directory ${D}${STAGING_PATH}" + cp -ra ${D}${STAGING_PATH}/* ${D} + rm -rf ${D}${STAGING_PATH} + # remove empty dirs + TMP=`dirname ${D}${STAGING_PATH}` + while test ${TMP} != ${D}; do + rmdir ${TMP} + TMP=`dirname ${TMP}`; + done + fi } qmake5_base_do_install() { # Fix install paths for all find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g" + find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g" + find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_NATIVE},(INSTALL_ROOT),g" oe_runmake install INSTALL_ROOT=${D} + find "${D}" -ignore_readdir_race -name "*.la" -delete # everything except HostData and HostBinaries is prefixed with sysroot value, # but we cannot remove sysroot override, because that's useful for pkg-config etc - # In some cases like QtQmlDevTools in qtdeclarative, the sed above does not work, - # fix them manually - if [ -d ${D}${STAGING_DIR_TARGET} ] ; then - echo "Some files are installed in wrong directory ${D}${STAGING_DIR_TARGET}" - cp -ra ${D}${STAGING_DIR_TARGET}/* ${D} - rm -rf ${D}${STAGING_DIR_TARGET} - # remove empty dirs - TMP=`dirname ${D}/${STAGING_DIR_TARGET}` - while test ${TMP} != ${D}; do - rmdir ${TMP} - TMP=`dirname ${TMP}`; - done - fi + # concurrent builds may cause qmake to regenerate Makefiles and override the above + # sed changes. If that happens, move files manually to correct location. + qmake5_base_fix_install ${STAGING_DIR_TARGET} + qmake5_base_fix_install ${STAGING_DIR_HOST} + qmake5_base_fix_install ${STAGING_DIR_NATIVE} } |