summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@qt.io>2017-01-26 16:54:50 +0200
committerMartin Jansa <Martin.Jansa@gmail.com>2017-01-26 16:18:39 +0100
commit333949a8239dfa7788b35f1059614733e11a6a25 (patch)
tree420843abad8bfc939484fa34bd6f7da9d432db8d /classes
parentc0ba8ab590ba4e17a2a04925cf48915233d4f493 (diff)
downloadmeta-qt5-333949a8239dfa7788b35f1059614733e11a6a25.tar.gz
Upgrade to Qt 5.8
The linux-oe-g++ mkspec is changed to use $$(...) operator to obtain the contents of an environment value when qmake is run instead of when Makefile is processed. All OE_QMAKE_xxx variables need to be exported for qmake to find them. configure's setBootstrapVariable function needs to change $$(..) to normal $(...) operator to work with qmake's Makefile. qt.conf generation for qtbase recipes is not needed, as configure will generate its own version based on configure arguments. Skip running qmake, since configure is now automatically invoked when it's run in qtbase's root folder. Update PACKAGECONFIGs for qtbase to match current configure options. The new Qt configuration system [1] can be used with a new variable EXTRA_QMAKEVARS_CONFIGURE, which takes both command line and feature arguments. Merge the two qtwayland recipes to one that supports all three targets (target, native, nativesdk) without need for additional patch. Recipes for new Qt modules: QtSCXML, QtNetworkAuth, QtGamepad. Removes qtdeclarative-render2d [1] https://www.mail-archive.com/development@qt-project.org/msg25257.html Change-Id: Ib37c4d7323e8b45aa2b171e8427b6ec15aaee213 Signed-off-by: Samuli Piippo <samuli.piippo@qt.io> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'classes')
-rw-r--r--classes/qmake5.bbclass4
-rw-r--r--classes/qmake5_base.bbclass96
2 files changed, 56 insertions, 44 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 70faccaa..50e5a306 100644
--- a/classes/qmake5_base.bbclass
+++ b/classes/qmake5_base.bbclass
@@ -30,27 +30,29 @@ EXTRA_OEMAKE = " \
30 OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ 30 OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \
31" 31"
32 32
33OE_QMAKESPEC = "${QMAKE_MKSPEC_PATH_NATIVE}/mkspecs/${OE_QMAKE_PLATFORM_NATIVE}"
34OE_XQMAKESPEC = "${QMAKE_MKSPEC_PATH}/mkspecs/${OE_QMAKE_PLATFORM}"
35OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake" 33OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake"
36OE_QMAKE_COMPILER = "${CC}" 34export OE_QMAKE_COMPILER = "${CC}"
37OE_QMAKE_CC = "${CC}" 35export OE_QMAKE_CC = "${CC}"
38OE_QMAKE_CFLAGS = "${CFLAGS}" 36export OE_QMAKE_CFLAGS = "${CFLAGS}"
39OE_QMAKE_CXX = "${CXX}" 37export OE_QMAKE_CXX = "${CXX}"
40OE_QMAKE_CXXFLAGS = "${CXXFLAGS}" 38export OE_QMAKE_CXXFLAGS = "${CXXFLAGS}"
41OE_QMAKE_LINK = "${CXX}" 39export OE_QMAKE_LINK = "${CXX}"
42OE_QMAKE_LDFLAGS = "${LDFLAGS}" 40export OE_QMAKE_LDFLAGS = "${LDFLAGS}"
43OE_QMAKE_AR = "${AR}" 41export OE_QMAKE_AR = "${AR}"
44OE_QMAKE_STRIP = "echo" 42export OE_QMAKE_STRIP = "echo"
45OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" 43export OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner"
46 44OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf"
47# this one needs to be exported, because qmake reads it from shell env 45export OE_QMAKE_QTCONF = "-qtconf ${OE_QMAKE_QTCONF_PATH}"
48export QT_CONF_PATH = "${WORKDIR}/qt.conf"
49 46
50inherit qmake5_paths remove-libtool 47inherit qmake5_paths remove-libtool
51 48
52do_generate_qt_config_file() { 49do_generate_qt_config_file() {
53 cat > ${QT_CONF_PATH} <<EOF 50 generate_qt_config_file_paths
51 generate_qt_config_file_effective_paths
52}
53
54generate_qt_config_file_paths() {
55 cat > ${OE_QMAKE_QTCONF_PATH} <<EOF
54[Paths] 56[Paths]
55Prefix = ${OE_QMAKE_PATH_PREFIX} 57Prefix = ${OE_QMAKE_PATH_PREFIX}
56Headers = ${OE_QMAKE_PATH_HEADERS} 58Headers = ${OE_QMAKE_PATH_HEADERS}
@@ -70,12 +72,21 @@ Tests = ${OE_QMAKE_PATH_TESTS}
70HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} 72HostBinaries = ${OE_QMAKE_PATH_HOST_BINS}
71HostData = ${OE_QMAKE_PATH_HOST_DATA} 73HostData = ${OE_QMAKE_PATH_HOST_DATA}
72HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} 74HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS}
73HostSpec = ${OE_QMAKESPEC} 75HostSpec = ${OE_QMAKE_PLATFORM_NATIVE}
74TartgetSpec = ${OE_XQMAKESPEC} 76TargetSpec = ${OE_QMAKE_PLATFORM}
75ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} 77ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
76Sysroot = ${STAGING_DIR_TARGET} 78Sysroot = ${STAGING_DIR_TARGET}
77EOF 79EOF
78} 80}
81
82generate_qt_config_file_effective_paths() {
83 cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF
84[EffectivePaths]
85HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
86HostData = ${OE_QMAKE_PATH_HOST_DATA}
87HostPrefix = ${STAGING_DIR_NATIVE}${prefix_native}
88EOF
89}
79# 90#
80# Allows to override following values (as in version 5.0.1) 91# Allows to override following values (as in version 5.0.1)
81# Prefix The default prefix for all paths. 92# Prefix The default prefix for all paths.
@@ -151,11 +162,16 @@ qmake5_base_do_configure () {
151 bbnote "qmake prevar substitution: '${EXTRA_QMAKEVARS_PRE}'" 162 bbnote "qmake prevar substitution: '${EXTRA_QMAKEVARS_PRE}'"
152 fi 163 fi
153 164
165 if [ ! -z "${EXTRA_QMAKEVARS_CONFIGURE}" ]; then
166 QMAKE_VARSUBST_CONFIGURE="${EXTRA_QMAKEVARS_CONFIGURE}"
167 bbnote "qmake configure substitution: '${EXTRA_QMAKEVARS_CONFIGURE}'"
168 fi
169
154 # for config.tests to read this 170 # for config.tests to read this
155 export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}" 171 export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}"
156 172
157 CMD="${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST" 173 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 -- $QMAKE_VARSUBST_CONFIGURE"
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" 174 ${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_QTCONF} ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST -- $QMAKE_VARSUBST_CONFIGURE || die "Error calling $CMD"
159} 175}
160 176
161qmake5_base_native_do_install() { 177qmake5_base_native_do_install() {
@@ -166,37 +182,37 @@ qmake5_base_native_do_install() {
166 fi 182 fi
167} 183}
168 184
169qmake5_base_nativesdk_do_install() { 185qmake5_base_fix_install() {
170 # Fix install paths for all 186 STAGING_PATH=$1
171 find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g" 187 if [ -d ${D}${STAGING_PATH} ] ; then
172 188 echo "Some files are installed in wrong directory ${D}${STAGING_PATH}"
173 oe_runmake install INSTALL_ROOT=${D} 189 cp -ra ${D}${STAGING_PATH}/* ${D}
174 if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then 190 rm -rf ${D}${STAGING_PATH}
175 sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc 191 # remove empty dirs
192 TMP=`dirname ${D}${STAGING_PATH}`
193 while test ${TMP} != ${D}; do
194 rmdir ${TMP}
195 TMP=`dirname ${TMP}`;
196 done
176 fi 197 fi
177} 198}
178 199
179qmake5_base_do_install() { 200qmake5_base_do_install() {
180 # Fix install paths for all 201 # Fix install paths for all
181 find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g" 202 find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g"
203 find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g"
204 find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_NATIVE},(INSTALL_ROOT),g"
182 205
183 oe_runmake install INSTALL_ROOT=${D} 206 oe_runmake install INSTALL_ROOT=${D}
184 207
185 # everything except HostData and HostBinaries is prefixed with sysroot value, 208 # everything except HostData and HostBinaries is prefixed with sysroot value,
186 # but we cannot remove sysroot override, because that's useful for pkg-config etc 209 # but we cannot remove sysroot override, because that's useful for pkg-config etc
187 # In some cases like QtQmlDevTools in qtdeclarative, the sed above does not work, 210 # concurrent builds may cause qmake to regenerate Makefiles and override the above
188 # fix them manually 211 # sed changes. If that happens, move files manually to correct location.
189 if [ -d ${D}${STAGING_DIR_TARGET} ] ; then 212 qmake5_base_fix_install ${STAGING_DIR_TARGET}
190 echo "Some files are installed in wrong directory ${D}${STAGING_DIR_TARGET}" 213 qmake5_base_fix_install ${STAGING_DIR_HOST}
191 cp -ra ${D}${STAGING_DIR_TARGET}/* ${D} 214 qmake5_base_fix_install ${STAGING_DIR_NATIVE}
192 rm -rf ${D}${STAGING_DIR_TARGET} 215
193 # remove empty dirs
194 TMP=`dirname ${D}/${STAGING_DIR_TARGET}`
195 while test ${TMP} != ${D}; do
196 rmdir ${TMP}
197 TMP=`dirname ${TMP}`;
198 done
199 fi
200 if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then 216 if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then
201 sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc 217 sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc
202 fi 218 fi