diff options
| author | David Schulz <david.schulz@theqtcompany.com> | 2015-10-01 16:21:45 +0200 |
|---|---|---|
| committer | David Schulz <david.schulz@theqtcompany.com> | 2016-02-03 14:43:28 +0000 |
| commit | ff7fd3b1a9b39d217928f3e1d8f16341b9fd6fec (patch) | |
| tree | 021fe5da9af026394eadc2c7727ff2a20b93a447 /classes | |
| parent | c7cd9cb4661dd1623368d39e66c716f2222d357b (diff) | |
| download | meta-qt5-ff7fd3b1a9b39d217928f3e1d8f16341b9fd6fec.tar.gz | |
Add Windows host support.
Change-Id: I964ede0e49b63f0ff85adc2ad4d260abbe5f8f79
Signed-off-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: Samuli Piippo <samuli.piippo@theqtcompany.com>
Diffstat (limited to 'classes')
| -rw-r--r-- | classes/qmake5.bbclass | 4 | ||||
| -rw-r--r-- | classes/qmake5_base.bbclass | 71 |
2 files changed, 43 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() { | |||
| 17 | do_install_class-native() { | 17 | do_install_class-native() { |
| 18 | qmake5_base_native_do_install | 18 | qmake5_base_native_do_install |
| 19 | } | 19 | } |
| 20 | |||
| 21 | do_install_class-nativesdk() { | ||
| 22 | qmake5_base_nativesdk_do_install | ||
| 23 | } | ||
diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index a766cc6b..13bb0abc 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | # hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds | 1 | # hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds |
| 2 | OE_QMAKE_PLATFORM_NATIVE = "linux-oe-g++" | 2 | OE_QMAKE_PLATFORM_NATIVE = "linux-oe-g++" |
| 3 | OE_QMAKE_PLATFORM = "linux-oe-g++" | 3 | OE_QMAKE_PLATFORM = "linux-oe-g++" |
| 4 | OE_QMAKE_PLATFORM_NATIVE_mingw32 = "win32-g++-oe" | ||
| 5 | OE_QMAKE_PLATFORM_mingw32 = "win32-g++-oe" | ||
| 4 | 6 | ||
| 5 | # Add -d to show debug output from every qmake call, but it prints *a lot*, better to add it only to debugged recipe | 7 | # Add -d to show debug output from every qmake call, but it prints *a lot*, better to add it only to debugged recipe |
| 6 | OE_QMAKE_DEBUG_OUTPUT ?= "" | 8 | OE_QMAKE_DEBUG_OUTPUT ?= "" |
| @@ -30,8 +32,6 @@ EXTRA_OEMAKE = " \ | |||
| 30 | OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ | 32 | OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ |
| 31 | " | 33 | " |
| 32 | 34 | ||
| 33 | OE_QMAKESPEC = "${QMAKE_MKSPEC_PATH_NATIVE}/mkspecs/${OE_QMAKE_PLATFORM_NATIVE}" | ||
| 34 | OE_XQMAKESPEC = "${QMAKE_MKSPEC_PATH}/mkspecs/${OE_QMAKE_PLATFORM}" | ||
| 35 | OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/qmake" | 35 | OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/qmake" |
| 36 | OE_QMAKE_COMPILER = "${CC}" | 36 | OE_QMAKE_COMPILER = "${CC}" |
| 37 | OE_QMAKE_CC = "${CC}" | 37 | OE_QMAKE_CC = "${CC}" |
| @@ -43,14 +43,18 @@ OE_QMAKE_LDFLAGS = "${LDFLAGS}" | |||
| 43 | OE_QMAKE_AR = "${AR}" | 43 | OE_QMAKE_AR = "${AR}" |
| 44 | OE_QMAKE_STRIP = "echo" | 44 | OE_QMAKE_STRIP = "echo" |
| 45 | OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" | 45 | OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" |
| 46 | 46 | OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf" | |
| 47 | # this one needs to be exported, because qmake reads it from shell env | 47 | OE_QMAKE_QTCONF = "-qtconf ${OE_QMAKE_QTCONF_PATH}" |
| 48 | export QT_CONF_PATH = "${WORKDIR}/qt.conf" | ||
| 49 | 48 | ||
| 50 | inherit qmake5_paths | 49 | inherit qmake5_paths |
| 51 | 50 | ||
| 52 | do_generate_qt_config_file() { | 51 | do_generate_qt_config_file() { |
| 53 | cat > ${QT_CONF_PATH} <<EOF | 52 | generate_qt_config_file_paths |
| 53 | generate_qt_config_file_effective_paths | ||
| 54 | } | ||
| 55 | |||
| 56 | generate_qt_config_file_paths() { | ||
| 57 | cat > ${OE_QMAKE_QTCONF_PATH} <<EOF | ||
| 54 | [Paths] | 58 | [Paths] |
| 55 | Prefix = ${OE_QMAKE_PATH_PREFIX} | 59 | Prefix = ${OE_QMAKE_PATH_PREFIX} |
| 56 | Headers = ${OE_QMAKE_PATH_HEADERS} | 60 | Headers = ${OE_QMAKE_PATH_HEADERS} |
| @@ -70,12 +74,21 @@ Tests = ${OE_QMAKE_PATH_TESTS} | |||
| 70 | HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} | 74 | HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} |
| 71 | HostData = ${OE_QMAKE_PATH_HOST_DATA} | 75 | HostData = ${OE_QMAKE_PATH_HOST_DATA} |
| 72 | HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} | 76 | HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} |
| 73 | HostSpec = ${OE_QMAKESPEC} | 77 | HostSpec = ${OE_QMAKE_PLATFORM_NATIVE} |
| 74 | TartgetSpec = ${OE_XQMAKESPEC} | 78 | TargetSpec = ${OE_QMAKE_PLATFORM} |
| 75 | ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} | 79 | ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} |
| 76 | Sysroot = ${STAGING_DIR_TARGET} | 80 | Sysroot = ${STAGING_DIR_TARGET} |
| 77 | EOF | 81 | EOF |
| 78 | } | 82 | } |
| 83 | |||
| 84 | generate_qt_config_file_effective_paths() { | ||
| 85 | cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF | ||
| 86 | [EffectivePaths] | ||
| 87 | HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} | ||
| 88 | HostData = ${OE_QMAKE_PATH_HOST_DATA} | ||
| 89 | HostPrefix = ${STAGING_DIR_NATIVE}${prefix_native} | ||
| 90 | EOF | ||
| 91 | } | ||
| 79 | # | 92 | # |
| 80 | # Allows to override following values (as in version 5.0.1) | 93 | # Allows to override following values (as in version 5.0.1) |
| 81 | # Prefix The default prefix for all paths. | 94 | # Prefix The default prefix for all paths. |
| @@ -154,40 +167,42 @@ qmake5_base_do_configure () { | |||
| 154 | # for config.tests to read this | 167 | # for config.tests to read this |
| 155 | export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}" | 168 | export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}" |
| 156 | 169 | ||
| 157 | CMD="${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST" | 170 | 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" |
| 158 | ${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" | 171 | ${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" |
| 159 | } | 172 | } |
| 160 | 173 | ||
| 161 | qmake5_base_native_do_install() { | 174 | qmake5_base_native_do_install() { |
| 162 | oe_runmake install INSTALL_ROOT=${D} | 175 | oe_runmake install INSTALL_ROOT=${D} |
| 163 | } | 176 | } |
| 164 | 177 | ||
| 165 | qmake5_base_nativesdk_do_install() { | 178 | qmake5_base_fix_install() { |
| 166 | # Fix install paths for all | 179 | STAGING_PATH=$1 |
| 167 | find -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g" | 180 | if [ -d ${D}${STAGING_PATH} ] ; then |
| 168 | 181 | echo "Some files are installed in wrong directory ${D}${STAGING_PATH}" | |
| 169 | oe_runmake install INSTALL_ROOT=${D} | 182 | cp -ra ${D}${STAGING_PATH}/* ${D} |
| 183 | rm -rf ${D}${STAGING_PATH} | ||
| 184 | # remove empty dirs | ||
| 185 | TMP=`dirname ${D}${STAGING_PATH}` | ||
| 186 | while test ${TMP} != ${D}; do | ||
| 187 | rmdir ${TMP} | ||
| 188 | TMP=`dirname ${TMP}`; | ||
| 189 | done | ||
| 190 | fi | ||
| 170 | } | 191 | } |
| 171 | 192 | ||
| 172 | qmake5_base_do_install() { | 193 | qmake5_base_do_install() { |
| 173 | # Fix install paths for all | 194 | # Fix install paths for all |
| 174 | find -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g" | 195 | find -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g" |
| 196 | find -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g" | ||
| 197 | find -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_NATIVE},(INSTALL_ROOT),g" | ||
| 175 | 198 | ||
| 176 | oe_runmake install INSTALL_ROOT=${D} | 199 | oe_runmake install INSTALL_ROOT=${D} |
| 177 | 200 | ||
| 178 | # everything except HostData and HostBinaries is prefixed with sysroot value, | 201 | # everything except HostData and HostBinaries is prefixed with sysroot value, |
| 179 | # but we cannot remove sysroot override, because that's useful for pkg-config etc | 202 | # but we cannot remove sysroot override, because that's useful for pkg-config etc |
| 180 | # In some cases like QtQmlDevTools in qtdeclarative, the sed above does not work, | 203 | # concurrent builds may cause qmake to regenerate Makefiles and override the above |
| 181 | # fix them manually | 204 | # sed changes. If that happens, move files manually to correct location. |
| 182 | if [ -d ${D}${STAGING_DIR_TARGET} ] ; then | 205 | qmake5_base_fix_install ${STAGING_DIR_TARGET} |
| 183 | echo "Some files are installed in wrong directory ${D}${STAGING_DIR_TARGET}" | 206 | qmake5_base_fix_install ${STAGING_DIR_HOST} |
| 184 | cp -ra ${D}${STAGING_DIR_TARGET}/* ${D} | 207 | qmake5_base_fix_install ${STAGING_DIR_NATIVE} |
| 185 | rm -rf ${D}${STAGING_DIR_TARGET} | ||
| 186 | # remove empty dirs | ||
| 187 | TMP=`dirname ${D}/${STAGING_DIR_TARGET}` | ||
| 188 | while test ${TMP} != ${D}; do | ||
| 189 | rmdir ${TMP} | ||
| 190 | TMP=`dirname ${TMP}`; | ||
| 191 | done | ||
| 192 | fi | ||
| 193 | } | 208 | } |
