diff options
author | Samuli Piippo <samuli.piippo@qt.io> | 2017-01-26 16:54:50 +0200 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2017-01-26 16:18:39 +0100 |
commit | 333949a8239dfa7788b35f1059614733e11a6a25 (patch) | |
tree | 420843abad8bfc939484fa34bd6f7da9d432db8d /classes | |
parent | c0ba8ab590ba4e17a2a04925cf48915233d4f493 (diff) | |
download | meta-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.bbclass | 4 | ||||
-rw-r--r-- | classes/qmake5_base.bbclass | 96 |
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() { | |||
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 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 | ||
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 = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake" | 33 | OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake" |
36 | OE_QMAKE_COMPILER = "${CC}" | 34 | export OE_QMAKE_COMPILER = "${CC}" |
37 | OE_QMAKE_CC = "${CC}" | 35 | export OE_QMAKE_CC = "${CC}" |
38 | OE_QMAKE_CFLAGS = "${CFLAGS}" | 36 | export OE_QMAKE_CFLAGS = "${CFLAGS}" |
39 | OE_QMAKE_CXX = "${CXX}" | 37 | export OE_QMAKE_CXX = "${CXX}" |
40 | OE_QMAKE_CXXFLAGS = "${CXXFLAGS}" | 38 | export OE_QMAKE_CXXFLAGS = "${CXXFLAGS}" |
41 | OE_QMAKE_LINK = "${CXX}" | 39 | export OE_QMAKE_LINK = "${CXX}" |
42 | OE_QMAKE_LDFLAGS = "${LDFLAGS}" | 40 | export OE_QMAKE_LDFLAGS = "${LDFLAGS}" |
43 | OE_QMAKE_AR = "${AR}" | 41 | export OE_QMAKE_AR = "${AR}" |
44 | OE_QMAKE_STRIP = "echo" | 42 | export OE_QMAKE_STRIP = "echo" |
45 | OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" | 43 | export OE_QMAKE_WAYLAND_SCANNER = "${STAGING_BINDIR_NATIVE}/wayland-scanner" |
46 | 44 | OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf" | |
47 | # this one needs to be exported, because qmake reads it from shell env | 45 | export OE_QMAKE_QTCONF = "-qtconf ${OE_QMAKE_QTCONF_PATH}" |
48 | export QT_CONF_PATH = "${WORKDIR}/qt.conf" | ||
49 | 46 | ||
50 | inherit qmake5_paths remove-libtool | 47 | inherit qmake5_paths remove-libtool |
51 | 48 | ||
52 | do_generate_qt_config_file() { | 49 | do_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 | |||
54 | generate_qt_config_file_paths() { | ||
55 | cat > ${OE_QMAKE_QTCONF_PATH} <<EOF | ||
54 | [Paths] | 56 | [Paths] |
55 | Prefix = ${OE_QMAKE_PATH_PREFIX} | 57 | Prefix = ${OE_QMAKE_PATH_PREFIX} |
56 | Headers = ${OE_QMAKE_PATH_HEADERS} | 58 | Headers = ${OE_QMAKE_PATH_HEADERS} |
@@ -70,12 +72,21 @@ Tests = ${OE_QMAKE_PATH_TESTS} | |||
70 | HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} | 72 | HostBinaries = ${OE_QMAKE_PATH_HOST_BINS} |
71 | HostData = ${OE_QMAKE_PATH_HOST_DATA} | 73 | HostData = ${OE_QMAKE_PATH_HOST_DATA} |
72 | HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} | 74 | HostLibraries = ${OE_QMAKE_PATH_HOST_LIBS} |
73 | HostSpec = ${OE_QMAKESPEC} | 75 | HostSpec = ${OE_QMAKE_PLATFORM_NATIVE} |
74 | TartgetSpec = ${OE_XQMAKESPEC} | 76 | TargetSpec = ${OE_QMAKE_PLATFORM} |
75 | ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} | 77 | ExternalHostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} |
76 | Sysroot = ${STAGING_DIR_TARGET} | 78 | Sysroot = ${STAGING_DIR_TARGET} |
77 | EOF | 79 | EOF |
78 | } | 80 | } |
81 | |||
82 | generate_qt_config_file_effective_paths() { | ||
83 | cat >> ${OE_QMAKE_QTCONF_PATH} <<EOF | ||
84 | [EffectivePaths] | ||
85 | HostBinaries = ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} | ||
86 | HostData = ${OE_QMAKE_PATH_HOST_DATA} | ||
87 | HostPrefix = ${STAGING_DIR_NATIVE}${prefix_native} | ||
88 | EOF | ||
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 | ||
161 | qmake5_base_native_do_install() { | 177 | qmake5_base_native_do_install() { |
@@ -166,37 +182,37 @@ qmake5_base_native_do_install() { | |||
166 | fi | 182 | fi |
167 | } | 183 | } |
168 | 184 | ||
169 | qmake5_base_nativesdk_do_install() { | 185 | qmake5_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 | ||
179 | qmake5_base_do_install() { | 200 | qmake5_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 |