diff options
Diffstat (limited to 'classes/qmake5_base.bbclass')
-rw-r--r-- | classes/qmake5_base.bbclass | 96 |
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 | ||
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 |