Add support for mingw32 build

Add support for building nativesdk components with meta-mingw layer
for Windows SDK. Skip some of the nativesdk tools as they cannot be built.

Qt6Toolchain.cmake can be used with SDKPATH environment variable set
to the SDK installation path using forward slashes as path separators.
It depends on the nativesdk-cmake which cannot be built until upstream
patches to meta-mingw are approved.

Task-number: QTBUG-86431
Change-Id: I482f85f10461e77bb183cf763d6ef531b45e016a
Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io>
This commit is contained in:
Samuli Piippo 2020-09-11 07:39:08 +03:00
parent 18036b01dd
commit 08d101c2eb
4 changed files with 27 additions and 3 deletions

View File

@ -1,6 +1,12 @@
inherit qt6-paths
create_sdk_files_prepend () {
SDK_POSTPROCESS_COMMAND_prepend = "create_qt6_sdk_files;"
PATH_DELIM = ":"
PATH_DELIM_sdkmingw32 = ";"
create_qt6_sdk_files () {
# Generate a qt.conf file to be deployed with the SDK
qtconf=${SDK_OUTPUT}${SDKPATHNATIVE}${QT6_INSTALL_BINDIR}/qt.conf
touch $qtconf
@ -55,7 +61,7 @@ create_sdk_files_prepend () {
# Generate a toolchain file for using Qt without running setup-environment script
cat > ${SDK_OUTPUT}${SDKPATHNATIVE}/usr/share/cmake/Qt6Toolchain.cmake <<EOF
set(ENV{PATH} "${SDKPATHNATIVE}${bindir}/${TARGET_SYS}:\$ENV{PATH}")
set(ENV{PATH} "${SDKPATHNATIVE}${bindir}/${TARGET_SYS}${PATH_DELIM}\$ENV{PATH}")
set(ENV{CC} "${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${SDKTARGETSYSROOT}")
set(ENV{CXX} "${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${SDKTARGETSYSROOT}")
@ -71,6 +77,11 @@ include("\${CMAKE_TOOLCHAIN_FILE}")
EOF
}
create_qt6_sdk_files_append_sdkmingw32() {
sed -i -e 's|${SDKPATH}|$ENV{SDKPATH}|g' \
${SDK_OUTPUT}${SDKPATHNATIVE}/usr/share/cmake/Qt6Toolchain.cmake
}
# default debug prefix map isn't valid in the SDK
DEBUG_PREFIX_MAP = ""
SECURITY_CFLAGS = ""

View File

@ -20,3 +20,9 @@ RDEPENDS_${PN} += " \
nativesdk-qttools-tools \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nativesdk-qtwayland-dev nativesdk-qtwayland-tools', '', d)} \
"
RDEPENDS_${PN}_remove_mingw32 = " \
nativesdk-cmake \
nativesdk-ninja \
nativesdk-perl-modules \
"

View File

@ -26,6 +26,8 @@ python __anonymous() {
INSANE_SKIP_${PN}-dbg += "libdir"
INSANE_SKIP_${PN}-examples += "libdir"
SYSROOT_DIRS_append_mingw32 = " ${QT6_INSTALL_BINDIR}"
PACKAGES =. "${PN}-qmlplugins ${PN}-tools ${PN}-plugins ${PN}-examples "
ALLOW_EMPTY_${PN} = "1"
@ -55,6 +57,11 @@ FILES_${PN}-plugins = " \
${QT6_INSTALL_PLUGINSDIR}/*/*/*${SOLIBSDEV} \
${QT6_INSTALL_PLUGINSDIR}/*/*/*/*${SOLIBSDEV} \
"
FILES_${PN}-plugins_mingw32 = " \
${QT6_INSTALL_PLUGINSDIR}/*/*.dll \
${QT6_INSTALL_PLUGINSDIR}/*/*/*.dll \
${QT6_INSTALL_PLUGINSDIR}/*/*/*/*.dll \
"
FILES_${PN} += " \
${QT6_INSTALL_LIBDIR}/lib*${SOLIBS} \

View File

@ -125,7 +125,7 @@ do_install_append() {
do_install_append_class-nativesdk() {
install -d ${D}${datadir}/cmake/OEToolchainConfig.cmake.d
cat > ${D}${datadir}/cmake/OEToolchainConfig.cmake.d/OEQt6Toolchain.cmake <<EOF
set(QT_HOST_PATH "${prefix}" CACHE PATH "" FORCE)
set(QT_HOST_PATH "\$ENV{OECORE_NATIVE_SYSROOT}/usr" CACHE PATH "" FORCE)
set(QT_BUILD_TOOLS_WHEN_CROSSCOMPILING "TRUE" CACHE BOOL "" FORCE)
EOF
}