diff options
Diffstat (limited to 'meta/classes/qmake5_base.bbclass')
-rw-r--r-- | meta/classes/qmake5_base.bbclass | 140 |
1 files changed, 41 insertions, 99 deletions
diff --git a/meta/classes/qmake5_base.bbclass b/meta/classes/qmake5_base.bbclass index 8f1d143a30..c2a849856f 100644 --- a/meta/classes/qmake5_base.bbclass +++ b/meta/classes/qmake5_base.bbclass @@ -1,9 +1,6 @@ # hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds -XPLATFORM_toolchain-clang = "linux-oe-clang" -XPLATFORM ?= "linux-oe-g++" - -OE_QMAKE_PLATFORM_NATIVE = "${XPLATFORM}" -OE_QMAKE_PLATFORM = "${XPLATFORM}" +OE_QMAKE_PLATFORM_NATIVE = "linux-oe-g++" +OE_QMAKE_PLATFORM = "linux-oe-g++" # Add -d to show debug output from every qmake call, but it prints *a lot*, better to add it only to debugged recipe OE_QMAKE_DEBUG_OUTPUT ?= "" @@ -29,61 +26,31 @@ EXTRA_OEMAKE = " \ OE_QMAKE_LDFLAGS='${OE_QMAKE_LDFLAGS}' \ OE_QMAKE_AR='${OE_QMAKE_AR}' \ OE_QMAKE_STRIP='${OE_QMAKE_STRIP}' \ + OE_QMAKE_WAYLAND_SCANNER='${OE_QMAKE_WAYLAND_SCANNER}' \ OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ " -OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake" -export OE_QMAKE_COMPILER = "${CC}" -export OE_QMAKE_CC = "${CC}" -export OE_QMAKE_CFLAGS = "${CFLAGS}" -export OE_QMAKE_CXX = "${CXX}" -export OE_QMAKE_CXXFLAGS = "${CXXFLAGS}" -export OE_QMAKE_LINK = "${CXX}" -export OE_QMAKE_LDFLAGS = "${LDFLAGS}" -export OE_QMAKE_AR = "${AR}" -export OE_QMAKE_STRIP = "echo" - -# qmake reads if from shell environment -export OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf" +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}" +OE_QMAKE_CFLAGS = "${CFLAGS}" +OE_QMAKE_CXX = "${CXX}" +OE_QMAKE_CXXFLAGS = "${CXXFLAGS}" +OE_QMAKE_LINK = "${CXX}" +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" inherit qmake5_paths remove-libtool -generate_target_qt_config_file() { - qtconf="$1" - cat > "${qtconf}" <<EOF -[Paths] -Prefix = ${OE_QMAKE_PATH_PREFIX} -Headers = ${OE_QMAKE_PATH_HEADERS} -Libraries = ${OE_QMAKE_PATH_LIBS} -ArchData = ${OE_QMAKE_PATH_ARCHDATA} -Data = ${OE_QMAKE_PATH_DATA} -Binaries = ${OE_QMAKE_PATH_BINS} -LibraryExecutables = ${OE_QMAKE_PATH_LIBEXECS} -Plugins = ${OE_QMAKE_PATH_PLUGINS} -Imports = ${OE_QMAKE_PATH_IMPORTS} -Qml2Imports = ${OE_QMAKE_PATH_QML} -Translations = ${OE_QMAKE_PATH_TRANSLATIONS} -Documentation = ${OE_QMAKE_PATH_DOCS} -Settings = ${OE_QMAKE_PATH_SETTINGS} -Examples = ${OE_QMAKE_PATH_EXAMPLES} -Tests = ${OE_QMAKE_PATH_TESTS} -HostBinaries = ${OE_QMAKE_PATH_BINS} -HostData = ${OE_QMAKE_PATH_ARCHDATA} -HostLibraries = ${OE_QMAKE_PATH_LIBS} -HostSpec = ${OE_QMAKE_PLATFORM} -TargetSpec = ${OE_QMAKE_PLATFORM} -ExternalHostBinaries = ${OE_QMAKE_PATH_BINS} -Sysroot = -EOF -} - do_generate_qt_config_file() { - generate_qt_config_file_paths - generate_qt_config_file_effective_paths -} - -generate_qt_config_file_paths() { - cat > ${OE_QMAKE_QTCONF_PATH} <<EOF + cat > ${QT_CONF_PATH} <<EOF [Paths] Prefix = ${OE_QMAKE_PATH_PREFIX} Headers = ${OE_QMAKE_PATH_HEADERS} @@ -103,21 +70,12 @@ 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_QMAKE_PLATFORM_NATIVE} -TargetSpec = ${OE_QMAKE_PLATFORM} +HostSpec = ${OE_QMAKESPEC} +TartgetSpec = ${OE_XQMAKESPEC} 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} -EOF -} # # Allows to override following values (as in version 5.0.1) # Prefix The default prefix for all paths. @@ -193,60 +151,44 @@ qmake5_base_do_configure () { bbnote "qmake prevar substitution: '${EXTRA_QMAKEVARS_PRE}'" fi - if [ ! -z "${EXTRA_QMAKEVARS_CONFIGURE}" ]; then - QMAKE_VARSUBST_CONFIGURE="${EXTRA_QMAKEVARS_CONFIGURE}" - bbnote "qmake configure substitution: '${EXTRA_QMAKEVARS_CONFIGURE}'" - fi - # 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 -- $QMAKE_VARSUBST_CONFIGURE" - ${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST -- $QMAKE_VARSUBST_CONFIGURE || die "Error calling $CMD" + 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" } qmake5_base_native_do_install() { oe_runmake install INSTALL_ROOT=${D} find "${D}" -ignore_readdir_race -name "*.la" -delete - if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then - sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc - fi } -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_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_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} # everything except HostData and HostBinaries is prefixed with sysroot value, # but we cannot remove sysroot override, because that's useful for pkg-config etc - # 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} - - if ls ${D}${libdir}/pkgconfig/*.pc >/dev/null 2>/dev/null; then - sed -i ${D}${libdir}/pkgconfig/*.pc \ - -e "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" \ - -e "s@${STAGING_DIR_TARGET}@@g" + # 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 } |