diff options
| -rw-r--r-- | classes/qmake5_base.bbclass | 16 | ||||
| -rw-r--r-- | recipes-qt/qt5/qtbase.inc | 62 |
2 files changed, 51 insertions, 27 deletions
diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index 604397b1..fa6f3166 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | # This is useful for target recipes to reference native mkspecs | 1 | # This is useful for target recipes to reference native mkspecs |
| 2 | QMAKE_MKSPEC_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}" | 2 | QMAKE_MKSPEC_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}/${QT_DIR_NAME}" |
| 3 | QMAKE_MKSPEC_PATH_TARGET = "${STAGING_LIBDIR}/${QT_DIR_NAME}" | ||
| 3 | 4 | ||
| 4 | QMAKE_MKSPEC_PATH = "${STAGING_LIBDIR}" | 5 | QMAKE_MKSPEC_PATH = "${QMAKE_MKSPEC_PATH_TARGET}" |
| 5 | QMAKE_MKSPEC_PATH_class-native = "${QMAKE_MKSPEC_PATH_NATIVE}" | 6 | QMAKE_MKSPEC_PATH_class-native = "${QMAKE_MKSPEC_PATH_NATIVE}" |
| 6 | 7 | ||
| 7 | # hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds | 8 | # hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds |
| @@ -46,13 +47,20 @@ Libraries = ${libdir} | |||
| 46 | Headers = ${includedir}/${QT_DIR_NAME} | 47 | Headers = ${includedir}/${QT_DIR_NAME} |
| 47 | Data = ${datadir}/${QT_DIR_NAME} | 48 | Data = ${datadir}/${QT_DIR_NAME} |
| 48 | ArchData = ${libdir}/${QT_DIR_NAME} | 49 | ArchData = ${libdir}/${QT_DIR_NAME} |
| 50 | LibraryExecutables = ${libdir}/${QT_DIR_NAME}/libexec | ||
| 51 | Imports = ${libdir}/${QT_DIR_NAME}/imports | ||
| 52 | Qml2Imports = ${libdir}/${QT_DIR_NAME}/qml | ||
| 49 | Plugins = ${libdir}/${QT_DIR_NAME}/plugins | 53 | Plugins = ${libdir}/${QT_DIR_NAME}/plugins |
| 50 | Documentation = ${docdir}/${QT_DIR_NAME} | 54 | Documentation = ${docdir}/${QT_DIR_NAME} |
| 51 | HostData = ${QMAKE_MKSPEC_PATH} | 55 | HostData = ${QMAKE_MKSPEC_PATH_TARGET} |
| 56 | HostBinaries = ${bindir}/${QT_DIR_NAME} | ||
| 57 | HostSpec = ${OE_QMAKESPEC} | ||
| 58 | TartgetSpec = ${OE_XQMAKESPEC} | ||
| 52 | ExternalHostBinaries = ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME} | 59 | ExternalHostBinaries = ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME} |
| 60 | Sysroot = ${STAGING_DIR_TARGET} | ||
| 53 | EOF | 61 | EOF |
| 54 | } | 62 | } |
| 55 | 63 | # | |
| 56 | # Allows to override following values (as in version 5.0.1) | 64 | # Allows to override following values (as in version 5.0.1) |
| 57 | # Prefix The default prefix for all paths. | 65 | # Prefix The default prefix for all paths. |
| 58 | # Documentation The location for documentation upon install. | 66 | # Documentation The location for documentation upon install. |
diff --git a/recipes-qt/qt5/qtbase.inc b/recipes-qt/qt5/qtbase.inc index 5b41bded..c1198477 100644 --- a/recipes-qt/qt5/qtbase.inc +++ b/recipes-qt/qt5/qtbase.inc | |||
| @@ -29,40 +29,43 @@ INC_PR = "r0" | |||
| 29 | QT_BASE_NAME = "qt5" | 29 | QT_BASE_NAME = "qt5" |
| 30 | QT_DIR_NAME = "qt5" | 30 | QT_DIR_NAME = "qt5" |
| 31 | 31 | ||
| 32 | SSTATE_SCAN_FILES += "*.pri *.prl" | ||
| 33 | |||
| 32 | # Qt uses atomic instructions not supported in thumb mode | 34 | # Qt uses atomic instructions not supported in thumb mode |
| 33 | ARM_INSTRUCTION_SET = "arm" | 35 | ARM_INSTRUCTION_SET = "arm" |
| 34 | 36 | ||
| 35 | inherit qmake5 | 37 | inherit qmake5 |
| 36 | 38 | ||
| 39 | do_generate_qt_config_file_append() { | ||
| 40 | UNDO_SYSROOT_PREFIX=`echo ${STAGING_DIR_TARGET} | sed 's#/[^/]*#../#g'` | ||
| 41 | cat >> ${WORKDIR}/qt.conf <<EOF | ||
| 42 | |||
| 43 | [EffectivePaths] | ||
| 44 | Prefix=.. | ||
| 45 | #Prefix=$UNDO_SYSROOT_PREFIX | ||
| 46 | EOF | ||
| 47 | } | ||
| 37 | 48 | ||
| 38 | #do_generate_qt_config_file() { | 49 | EXTRA_ENV = 'QMAKE="bin/qmake ${OE_QMAKE_DEBUG_OUTPUT} -after \ |
| 39 | # cat > ${WORKDIR}/qt.conf <<EOF | 50 | INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \ |
| 40 | #[Paths] | 51 | LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \ |
| 41 | #Binaries = ${bindir} | 52 | STRIP="${OE_QMAKE_STRIP}" \ |
| 42 | #Libraries = ${libdir} | 53 | MAKE="make -e ${PARALLEL_MAKE}"' |
| 43 | #Prefix = ${prefix} | ||
| 44 | #Headers = ${includedir}/${QT_DIR_NAME} | ||
| 45 | #Data = ${datadir}/${QT_DIR_NAME} | ||
| 46 | #ArchData = ${libdir}/${QT_DIR_NAME} | ||
| 47 | #Documentation = ${docdir}/${QT_DIR_NAME} | ||
| 48 | #HostSpec = ${QMAKE_MKSPEC_PATH_NATIVE} | ||
| 49 | ##HostData = ${S} | ||
| 50 | #TargetSpec = ${S} | ||
| 51 | #ExternalHostBinaries = ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME} | ||
| 52 | #EOF | ||
| 53 | #} | ||
| 54 | 54 | ||
| 55 | # qtbase is exception, we need to use mkspecs from ${S} | 55 | # qtbase is exception, we need to use mkspecs from ${S} |
| 56 | # QMAKE_MKSPEC_PATH = "${S}/mkspecs" | 56 | # QMAKE_MKSPEC_PATH = "${S}/mkspecs" |
| 57 | QMAKE_MKSPEC_PATH = "${B}" | 57 | QMAKE_MKSPEC_PATH = "${B}" |
| 58 | 58 | ||
| 59 | do_configure_append() { | 59 | do_configure_append() { |
| 60 | # we need symlink in path relative to source, because | ||
| 61 | # EffectivePaths:Prefix is relative to qmake location | ||
| 60 | if [ ! -e ${B}/bin/qmake ]; then | 62 | if [ ! -e ${B}/bin/qmake ]; then |
| 61 | mkdir ${B}/bin | 63 | mkdir ${B}/bin |
| 62 | ln -sf ${OE_QMAKE_QMAKE} ${B}/bin/qmake | 64 | ln -sf ${OE_QMAKE_QMAKE} ${B}/bin/qmake |
| 63 | fi | 65 | fi |
| 64 | 66 | ||
| 65 | ${S}/configure -v \ | 67 | ${S}/configure -v \ |
| 68 | -dont-process \ | ||
| 66 | -opensource -confirm-license \ | 69 | -opensource -confirm-license \ |
| 67 | -sysroot ${STAGING_DIR_TARGET} \ | 70 | -sysroot ${STAGING_DIR_TARGET} \ |
| 68 | -no-gcc-sysroot \ | 71 | -no-gcc-sysroot \ |
| @@ -73,11 +76,16 @@ do_configure_append() { | |||
| 73 | -sysconfdir ${sysconfdir}/${QT_DIR_NAME} \ | 76 | -sysconfdir ${sysconfdir}/${QT_DIR_NAME} \ |
| 74 | -docdir ${docdir}/${QT_DIR_NAME} \ | 77 | -docdir ${docdir}/${QT_DIR_NAME} \ |
| 75 | -headerdir ${includedir}/${QT_DIR_NAME} \ | 78 | -headerdir ${includedir}/${QT_DIR_NAME} \ |
| 79 | -archdatadir ${libdir}/${QT_DIR_NAME} \ | ||
| 80 | -libexecdir ${libdir}/${QT_DIR_NAME}/libexec \ | ||
| 76 | -plugindir ${libdir}/${QT_DIR_NAME}/plugins \ | 81 | -plugindir ${libdir}/${QT_DIR_NAME}/plugins \ |
| 77 | -importdir ${libdir}/${QT_DIR_NAME}/imports \ | 82 | -importdir ${libdir}/${QT_DIR_NAME}/imports \ |
| 83 | -qmldir ${libdir}/${QT_DIR_NAME}/qml \ | ||
| 78 | -translationdir ${datadir}/${QT_DIR_NAME}/translations \ | 84 | -translationdir ${datadir}/${QT_DIR_NAME}/translations \ |
| 79 | -examplesdir ${bindir}/${QT_DIR_NAME}/examples \ | 85 | -testsdir ${datadir}/${QT_DIR_NAME}/tests \ |
| 80 | -hostbindir ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME} \ | 86 | -examplesdir ${datadir}/${QT_DIR_NAME}/examples \ |
| 87 | -hostbindir ${bindir}/${QT_DIR_NAME} \ | ||
| 88 | -hostdatadir ${libdir}/${QT_DIR_NAME} \ | ||
| 81 | -external-hostbindir ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME} \ | 89 | -external-hostbindir ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME} \ |
| 82 | -platform ${OE_QMAKESPEC} \ | 90 | -platform ${OE_QMAKESPEC} \ |
| 83 | -xplatform linux-oe-g++ \ | 91 | -xplatform linux-oe-g++ \ |
| @@ -89,10 +97,13 @@ do_configure_append() { | |||
| 89 | do_compile_append() { | 97 | do_compile_append() { |
| 90 | # Build qmake for the target arch | 98 | # Build qmake for the target arch |
| 91 | # Disable for now, because doesn't work well with separate ${B} | 99 | # Disable for now, because doesn't work well with separate ${B} |
| 92 | # cd ${S}/qmake | 100 | # cp -ra ${S}/qmake ${B} |
| 101 | # cd ${B}/qmake | ||
| 93 | # ${OE_QMAKE_QMAKE} | 102 | # ${OE_QMAKE_QMAKE} |
| 103 | # Fix to use headers in ${B} | ||
| 104 | # sed '/INCPATH/s#${S}#${B}#g' -i Makefile | ||
| 94 | # oe_runmake CC="${CC}" CXX="${CXX}" | 105 | # oe_runmake CC="${CC}" CXX="${CXX}" |
| 95 | # cd ${S} | 106 | # cd ${B} |
| 96 | } | 107 | } |
| 97 | 108 | ||
| 98 | do_install_append() { | 109 | do_install_append() { |
| @@ -100,9 +111,14 @@ do_install_append() { | |||
| 100 | ### TODO: FIX | 111 | ### TODO: FIX |
| 101 | # qemu built on host breaks do_package, remove it here (will be replaces with right qemu when do_compile is fixed | 112 | # qemu built on host breaks do_package, remove it here (will be replaces with right qemu when do_compile is fixed |
| 102 | # ERROR: objcopy failed with exit code 1 (cmd was 'arm-oe-linux-gnueabi-objcopy' --only-keep-debug '/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.1-r0.0/package/usr/bin/qmake' '/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.1-r0.0/package/usr/bin/.debug/qmake') | 113 | # ERROR: objcopy failed with exit code 1 (cmd was 'arm-oe-linux-gnueabi-objcopy' --only-keep-debug '/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.1-r0.0/package/usr/bin/qmake' '/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.1-r0.0/package/usr/bin/.debug/qmake') |
| 103 | rm -f ${D}/${bindir}/qmake | 114 | rm -f ${D}/${bindir}/${QT_DIR_NAME}/qmake |
| 104 | mv ${D}${B}/mkspecs ${D}${libdir}/mkspecs | 115 | |
| 105 | TMP=`dirname ${D}/${B}/mkspecs` | 116 | # everything except HostData and HostBinaries is prefixed with sysroot value, |
| 117 | # but we cannot remove sysroot override, because that's useful for pkg-config etc | ||
| 118 | cp -ra ${D}${STAGING_DIR_TARGET}/* ${D} | ||
| 119 | rm -rf ${D}${STAGING_DIR_TARGET} | ||
| 120 | # remove empty dirs | ||
| 121 | TMP=`dirname ${D}/${STAGING_DIR_TARGET}` | ||
| 106 | while test ${TMP} != ${D}; do | 122 | while test ${TMP} != ${D}; do |
| 107 | rmdir ${TMP} | 123 | rmdir ${TMP} |
| 108 | TMP=`dirname ${TMP}`; | 124 | TMP=`dirname ${TMP}`; |
