summaryrefslogtreecommitdiffstats
path: root/classes/qmake5_base.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/qmake5_base.bbclass')
-rw-r--r--classes/qmake5_base.bbclass96
1 files changed, 56 insertions, 40 deletions
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