Add QML Script Compiler

The QML Script Compiler is a commercial drop-in replacement
for the cachegen tool to compile your QML script expressions
and functions to C++ ahead of time.

It is available only for commercial customers and source code
fetch needs proper ssh keys available for accessing the repository
at codereview.qt-project.org.

Usage of QML Script Compiler is not enabled by default, but if
enabled globally using ENABLE_QMLCOMPILER variable, all Qt modules
that have dependency to qtdeclarative are compiled using Qt QML Compiler.
Its usage can also be enabled or disabled by each individual recipe.

Task-number: QTBUG-95475
Change-Id: Iee8539ee8ddc17c70e9ed81ab3b4f242f9386586
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io>
(cherry picked from commit d0e7002304)
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
This commit is contained in:
Samuli Piippo 2021-09-13 12:26:00 +03:00
parent 19a635e889
commit 1bca74b41a
6 changed files with 44 additions and 0 deletions

View File

@ -12,6 +12,12 @@ DISTRO_FEATURES:append = " wayland"
INHERIT += "buildstats buildstats-summary"
INHERIT += "rm_work"
# default to commercial Qt
QT_EDITION = "commercial"
# enable Qt QML Compiler
ENABLE_QMLCOMPILER = "1"
# fast compression of SDK tar package
SDK_XZ_COMPRESSION_LEVEL = "-1"
@ -48,6 +54,7 @@ PACKAGECONFIG:append:pn-qtbase = "\
PACKAGECONFIG:append:pn-qtimageformats = " jasper"
# enable examples for all Qt modules
PACKAGECONFIG:append:pn-qmlcompilerplus = " examples"
PACKAGECONFIG:append:pn-qt3d = " examples"
PACKAGECONFIG:append:pn-qt5compat = " examples"
PACKAGECONFIG:append:pn-qtbase = " examples"

View File

@ -10,6 +10,7 @@ RDEPENDS:${PN} += " \
nativesdk-cmake \
nativesdk-ninja \
nativesdk-perl-modules \
${@bb.utils.contains('ENABLE_QMLCOMPILER', '1', 'nativesdk-qmlcompilerplus', '', d)} \
nativesdk-qtbase-dev \
nativesdk-qtbase-tools \
nativesdk-qtdeclarative-dev \

View File

@ -8,6 +8,7 @@ inherit packagegroup
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
RDEPENDS:${PN} += " \
${@bb.utils.contains('ENABLE_QMLCOMPILER', '1', 'qmlcompilerplus', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qt3d', '', d)} \
qt5compat \
qtcharts \

View File

@ -0,0 +1,24 @@
LICENSE = "The-Qt-Company-Commercial"
LIC_FILES_CHKSUM = " \
file://src/qmlcompilerplus/cppcodegen_p.h;endline=27;md5=6a1dccd03d0d5864357e72b67def8ff2 \
"
inherit qt6-cmake
include recipes-qt/qt6/qt6-git.inc
include recipes-qt/qt6/qt6.inc
python() {
if d.getVar('QT_EDITION') != 'commercial':
raise bb.parse.SkipRecipe('Available only with Commercial Qt')
}
QT_GIT = "git://codereview.qt-project.org"
QT_GIT_PROTOCOL = "ssh"
QT_MODULE = "tqtc-qmlcompilerplus"
DEPENDS += "qtbase qtdeclarative qtdeclarative-native"
PTEST_ENABLED = "0"
BBCLASSEXTEND = "native nativesdk"

View File

@ -15,6 +15,7 @@ PV = "6.2.2"
SRCREV = "${SRCREV_${QT_MODULE}}"
SRCREV_tqtc-qmlcompilerplus = "c2b3bac7c992b7038c33c233d53bdb1cc8583c07"
SRCREV_qt3d = "d548a2f8f7f4cdc560c9f48767cb67cffafc181b"
SRCREV_qt3d-assimp = "5a38cd0a03015ceabbd5bc6efb0730dde1ef74e5"
SRCREV_qt5compat = "9472f2cfe0abff5018f260c0084e6987629f4e92"

View File

@ -21,6 +21,16 @@ python __anonymous() {
d.setVar("PACKAGE_ARCH", tarch)
}
python __anonymous() {
if (d.getVar('QT_EDITION', True) != 'commercial' or
d.getVar('ENABLE_QMLCOMPILER', True) == '0' or
d.getVar('BPN', True) == 'qmlcompilerplus' or
d.getVar('CLASSOVERRIDE', True) != 'class-target'):
return
if bb.utils.contains('DEPENDS', "qtdeclarative-native", True, False, d):
d.appendVar("DEPENDS", " qmlcompilerplus-native")
}
# Many examples come with libraries installed outside of standard libdir,
# suppress QA check complaining
INSANE_SKIP:${PN}-dbg += "libdir"