summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@theqtcompany.com>2015-10-01 16:21:45 +0200
committerDavid Schulz <david.schulz@theqtcompany.com>2016-02-03 14:43:28 +0000
commitff7fd3b1a9b39d217928f3e1d8f16341b9fd6fec (patch)
tree021fe5da9af026394eadc2c7727ff2a20b93a447 /classes
parentc7cd9cb4661dd1623368d39e66c716f2222d357b (diff)
downloadmeta-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.bbclass4
-rw-r--r--classes/qmake5_base.bbclass71
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() {
17do_install_class-native() { 17do_install_class-native() {
18 qmake5_base_native_do_install 18 qmake5_base_native_do_install
19} 19}
20
21do_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
2OE_QMAKE_PLATFORM_NATIVE = "linux-oe-g++" 2OE_QMAKE_PLATFORM_NATIVE = "linux-oe-g++"
3OE_QMAKE_PLATFORM = "linux-oe-g++" 3OE_QMAKE_PLATFORM = "linux-oe-g++"
4OE_QMAKE_PLATFORM_NATIVE_mingw32 = "win32-g++-oe"
5OE_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
6OE_QMAKE_DEBUG_OUTPUT ?= "" 8OE_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
33OE_QMAKESPEC = "${QMAKE_MKSPEC_PATH_NATIVE}/mkspecs/${OE_QMAKE_PLATFORM_NATIVE}"
34OE_XQMAKESPEC = "${QMAKE_MKSPEC_PATH}/mkspecs/${OE_QMAKE_PLATFORM}"
35OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/qmake" 35OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/qmake"
36OE_QMAKE_COMPILER = "${CC}" 36OE_QMAKE_COMPILER = "${CC}"
37OE_QMAKE_CC = "${CC}" 37OE_QMAKE_CC = "${CC}"
@@ -43,14 +43,18 @@ OE_QMAKE_LDFLAGS = "${LDFLAGS}"
43OE_QMAKE_AR = "${AR}" 43OE_QMAKE_AR = "${AR}"
44OE_QMAKE_STRIP = "echo" 44OE_QMAKE_STRIP = "echo"
45OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" 45OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner"
46 46OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf"
47# this one needs to be exported, because qmake reads it from shell env 47OE_QMAKE_QTCONF = "-qtconf ${OE_QMAKE_QTCONF_PATH}"
48export QT_CONF_PATH = "${WORKDIR}/qt.conf"
49 48
50inherit qmake5_paths 49inherit qmake5_paths
51 50
52do_generate_qt_config_file() { 51do_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
56generate_qt_config_file_paths() {
57 cat > ${OE_QMAKE_QTCONF_PATH} <<EOF
54[Paths] 58[Paths]
55Prefix = ${OE_QMAKE_PATH_PREFIX} 59Prefix = ${OE_QMAKE_PATH_PREFIX}
56Headers = ${OE_QMAKE_PATH_HEADERS} 60Headers = ${OE_QMAKE_PATH_HEADERS}
@@ -70,12 +74,21 @@ Tests = ${OE_QMAKE_PATH_TESTS}
70HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} 74HostBinaries = ${OE_QMAKE_PATH_HOST_BINS}
71HostData = ${OE_QMAKE_PATH_HOST_DATA} 75HostData = ${OE_QMAKE_PATH_HOST_DATA}
72HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} 76HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS}
73HostSpec = ${OE_QMAKESPEC} 77HostSpec = ${OE_QMAKE_PLATFORM_NATIVE}
74TartgetSpec = ${OE_XQMAKESPEC} 78TargetSpec = ${OE_QMAKE_PLATFORM}
75ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} 79ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
76Sysroot = ${STAGING_DIR_TARGET} 80Sysroot = ${STAGING_DIR_TARGET}
77EOF 81EOF
78} 82}
83
84generate_qt_config_file_effective_paths() {
85 cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF
86[EffectivePaths]
87HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
88HostData = ${OE_QMAKE_PATH_HOST_DATA}
89HostPrefix = ${STAGING_DIR_NATIVE}${prefix_native}
90EOF
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
161qmake5_base_native_do_install() { 174qmake5_base_native_do_install() {
162 oe_runmake install INSTALL_ROOT=${D} 175 oe_runmake install INSTALL_ROOT=${D}
163} 176}
164 177
165qmake5_base_nativesdk_do_install() { 178qmake5_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
172qmake5_base_do_install() { 193qmake5_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}