From 1452ed3db4fe692de2f83f195f3e7df1263f593d Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 26 Jun 2018 17:47:39 -0300 Subject: README: Add Yocto Project Compatible badge and fix formatting Signed-off-by: Otavio Salvador --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fe943211..705f2f27 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,7 @@ Qt5 OpenEmbedded/Yocto Project layer This layer depends on: -URI: https://github.com/openembedded/openembedded-core -branch: master -revision: HEAD +URI: https://github.com/openembedded/openembedded-core (branch: master) When building stuff like `qtdeclarative`, `qtquick`, `qtwebkit`, make sure that you have required `PACKAGECONFIG` options enabled in qtbase @@ -28,5 +26,7 @@ Maintainers Yocto Project Compatible ------------------------ -meta-qt5 has Yocto Project Compatible status since 2013: +![Yocto Project Compatible](https://github.com/meta-qt5/meta-qt5/blob/master/files/YoctoProject_Badge_Compatible.png) + +meta-qt5 has Yocto Project Compatible status since 2013. Check it at: https://www.yoctoproject.org/product/meta-qt5 -- cgit v1.2.3 From 65c85d36407edb113b1b6d40bf7d8966a7651ea4 Mon Sep 17 00:00:00 2001 From: Alistair Francis Date: Tue, 26 Jun 2018 16:02:34 -0700 Subject: qt5/qtscript: Fix qtscript cross compile error Fix errors like this: error: cast from 'QTJSC::JSCell*' to 'int32_t' {aka 'int'} loses precision when cross compiling for RISC-V. Signed-off-by: Alistair Francis --- .../0001-javascriptcore-Use-64-bit-ints.patch | 58 ++++++++++++++++++++++ recipes-qt/qt5/qtscript_git.bb | 2 + 2 files changed, 60 insertions(+) create mode 100644 recipes-qt/qt5/qtscript/0001-javascriptcore-Use-64-bit-ints.patch diff --git a/recipes-qt/qt5/qtscript/0001-javascriptcore-Use-64-bit-ints.patch b/recipes-qt/qt5/qtscript/0001-javascriptcore-Use-64-bit-ints.patch new file mode 100644 index 00000000..a083decf --- /dev/null +++ b/recipes-qt/qt5/qtscript/0001-javascriptcore-Use-64-bit-ints.patch @@ -0,0 +1,58 @@ +From 8fd53951d53ef8c5b62fe985665dad0545bb3161 Mon Sep 17 00:00:00 2001 +From: Alistair Francis +Date: Mon, 4 Jun 2018 14:24:59 -0700 +Subject: [PATCH] javascriptcore: Use 64-bit ints + +Where required use 64-bit integers for casts. + +Signed-off-by: Alistair Francis +Upstream-Status: Pending +--- + .../JavaScriptCore/assembler/X86Assembler.h | 2 +- + .../javascriptcore/JavaScriptCore/runtime/JSValue.h | 8 ++++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/assembler/X86Assembler.h b/src/3rdparty/javascriptcore/JavaScriptCore/assembler/X86Assembler.h +index ab3d05f..ed5965f 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/assembler/X86Assembler.h ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/assembler/X86Assembler.h +@@ -2033,7 +2033,7 @@ private: + } + } + +-#if !CPU(X86_64) ++#if CPU(X86) + void memoryModRM(int reg, void* address) + { + // noBase + ModRmMemoryNoDisp means noBase + ModRmMemoryDisp32! +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h +index 7584c52..958ac89 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h +@@ -490,7 +490,11 @@ namespace JSC { + u.asBits.tag = CellTag; + else + u.asBits.tag = EmptyValueTag; ++#if CPU(X86) + u.asBits.payload = reinterpret_cast(ptr); ++#else ++ u.asBits.payload = reinterpret_cast(ptr); ++#endif + #if ENABLE(JSC_ZOMBIES) + ASSERT(!isZombie()); + #endif +@@ -502,7 +506,11 @@ namespace JSC { + u.asBits.tag = CellTag; + else + u.asBits.tag = EmptyValueTag; ++#if CPU(X86) + u.asBits.payload = reinterpret_cast(const_cast(ptr)); ++#else ++ u.asBits.payload = reinterpret_cast(const_cast(ptr)); ++#endif + #if ENABLE(JSC_ZOMBIES) + ASSERT(!isZombie()); + #endif +-- +2.17.1 + diff --git a/recipes-qt/qt5/qtscript_git.bb b/recipes-qt/qt5/qtscript_git.bb index 913d8c69..5c1e2e10 100644 --- a/recipes-qt/qt5/qtscript_git.bb +++ b/recipes-qt/qt5/qtscript_git.bb @@ -11,6 +11,8 @@ LIC_FILES_CHKSUM = " \ file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ " +SRC_URI += "file://0001-javascriptcore-Use-64-bit-ints.patch" + # qemuarm build fails with: # /OE/build/oe-core/tmp-glibc/work/armv5te-oe-linux-gnueabi/qtscript/5.4.1+gitAUTOINC+822df36f25-r0/git/src/3rdparty/javascriptcore/JavaScriptCore/assembler/AssemblerBuffer.h: In member function 'void QTJSC::AssemblerBuffer::putInt64Unchecked(int64_t)': #/OE/build/oe-core/tmp-glibc/work/armv5te-oe-linux-gnueabi/qtscript/5.4.1+gitAUTOINC+822df36f25-r0/git/src/3rdparty/javascriptcore/JavaScriptCore/assembler/AssemblerBuffer.h:106:58: warning: cast from 'char*' to 'int64_t* {aka long long int*}' increases required alignment of target type [-Wcast-align] -- cgit v1.2.3 From 7faa5d8f39381975a861e3e918789e9f33a079f6 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Wed, 27 Jun 2018 15:59:29 +0300 Subject: qt5: remove all references to qtquick1 import path Since qtquick1 recipes have been removed, there is no need to have OE_QMAKE_PATH_IMPORTS anymore. Signed-off-by: Samuli Piippo --- classes/cmake_qt5.bbclass | 1 - classes/populate_sdk_qt5_base.bbclass | 1 - classes/qmake5_base.bbclass | 2 -- classes/qmake5_paths.bbclass | 1 - recipes-qt/qt5/nativesdk-qtbase_git.bb | 1 - recipes-qt/qt5/qt5.inc | 13 ------------- recipes-qt/qt5/qtbase_git.bb | 1 - 7 files changed, 20 deletions(-) diff --git a/classes/cmake_qt5.bbclass b/classes/cmake_qt5.bbclass index 5d605a68..5ba960ec 100644 --- a/classes/cmake_qt5.bbclass +++ b/classes/cmake_qt5.bbclass @@ -12,7 +12,6 @@ EXTRA_OECMAKE_prepend = " \ -DOE_QMAKE_PATH_BINS=${OE_QMAKE_PATH_BINS} \ -DOE_QMAKE_PATH_LIBEXECS=${OE_QMAKE_PATH_LIBEXECS} \ -DOE_QMAKE_PATH_PLUGINS=${OE_QMAKE_PATH_PLUGINS} \ - -DOE_QMAKE_PATH_IMPORTS=${OE_QMAKE_PATH_IMPORTS} \ -DOE_QMAKE_PATH_QML=${OE_QMAKE_PATH_QML} \ -DOE_QMAKE_PATH_TRANSLATIONS=${OE_QMAKE_PATH_TRANSLATIONS} \ -DOE_QMAKE_PATH_DOCS=${OE_QMAKE_PATH_DOCS} \ diff --git a/classes/populate_sdk_qt5_base.bbclass b/classes/populate_sdk_qt5_base.bbclass index b6ce5967..c26fee44 100644 --- a/classes/populate_sdk_qt5_base.bbclass +++ b/classes/populate_sdk_qt5_base.bbclass @@ -14,7 +14,6 @@ create_sdk_files_prepend () { echo 'Binaries = ${OE_QMAKE_PATH_QT_BINS}' >> $qtconf echo 'LibraryExecutables = ${OE_QMAKE_PATH_LIBEXECS}' >> $qtconf echo 'Plugins = ${OE_QMAKE_PATH_PLUGINS}' >> $qtconf - echo 'Imports = ${OE_QMAKE_PATH_IMPORTS}' >> $qtconf echo 'Qml2Imports = ${OE_QMAKE_PATH_QML}' >> $qtconf echo 'Translations = ${OE_QMAKE_PATH_QT_TRANSLATIONS}' >> $qtconf echo 'Documentation = ${OE_QMAKE_PATH_QT_DOCS}' >> $qtconf diff --git a/classes/qmake5_base.bbclass b/classes/qmake5_base.bbclass index 8f1d143a..b3a4826a 100644 --- a/classes/qmake5_base.bbclass +++ b/classes/qmake5_base.bbclass @@ -60,7 +60,6 @@ Data = ${OE_QMAKE_PATH_DATA} Binaries = ${OE_QMAKE_PATH_BINS} LibraryExecutables = ${OE_QMAKE_PATH_LIBEXECS} Plugins = ${OE_QMAKE_PATH_PLUGINS} -Imports = ${OE_QMAKE_PATH_IMPORTS} Qml2Imports = ${OE_QMAKE_PATH_QML} Translations = ${OE_QMAKE_PATH_TRANSLATIONS} Documentation = ${OE_QMAKE_PATH_DOCS} @@ -93,7 +92,6 @@ Data = ${OE_QMAKE_PATH_DATA} Binaries = ${OE_QMAKE_PATH_BINS} LibraryExecutables = ${OE_QMAKE_PATH_LIBEXECS} Plugins = ${OE_QMAKE_PATH_PLUGINS} -Imports = ${OE_QMAKE_PATH_IMPORTS} Qml2Imports = ${OE_QMAKE_PATH_QML} Translations = ${OE_QMAKE_PATH_TRANSLATIONS} Documentation = ${OE_QMAKE_PATH_DOCS} diff --git a/classes/qmake5_paths.bbclass b/classes/qmake5_paths.bbclass index e1101a9c..f3c7b112 100644 --- a/classes/qmake5_paths.bbclass +++ b/classes/qmake5_paths.bbclass @@ -20,7 +20,6 @@ OE_QMAKE_PATH_DATA = "${datadir}" OE_QMAKE_PATH_BINS = "${bindir}" OE_QMAKE_PATH_LIBEXECS = "${libdir}${QT_DIR_NAME}/libexec" OE_QMAKE_PATH_PLUGINS = "${libdir}${QT_DIR_NAME}/plugins" -OE_QMAKE_PATH_IMPORTS = "${libdir}${QT_DIR_NAME}/imports" OE_QMAKE_PATH_QML = "${libdir}${QT_DIR_NAME}/qml" OE_QMAKE_PATH_TRANSLATIONS = "${datadir}/translations" OE_QMAKE_PATH_DOCS = "${docdir}" diff --git a/recipes-qt/qt5/nativesdk-qtbase_git.bb b/recipes-qt/qt5/nativesdk-qtbase_git.bb index 595e5858..8c3adae1 100644 --- a/recipes-qt/qt5/nativesdk-qtbase_git.bb +++ b/recipes-qt/qt5/nativesdk-qtbase_git.bb @@ -141,7 +141,6 @@ do_configure() { -archdatadir ${OE_QMAKE_PATH_ARCHDATA} \ -libexecdir ${OE_QMAKE_PATH_LIBEXECS} \ -plugindir ${OE_QMAKE_PATH_PLUGINS} \ - -importdir ${OE_QMAKE_PATH_IMPORTS} \ -qmldir ${OE_QMAKE_PATH_QML} \ -translationdir ${OE_QMAKE_PATH_TRANSLATIONS} \ -testsdir ${OE_QMAKE_PATH_TESTS} \ diff --git a/recipes-qt/qt5/qt5.inc b/recipes-qt/qt5/qt5.inc index edae5724..b4915138 100644 --- a/recipes-qt/qt5/qt5.inc +++ b/recipes-qt/qt5/qt5.inc @@ -72,9 +72,6 @@ FILES_${PN}-qmlplugins-dbg = " \ ${OE_QMAKE_PATH_QML}/*/*/.debug \ ${OE_QMAKE_PATH_QML}/*/*/*/.debug \ ${OE_QMAKE_PATH_QML}/*/*/*/*/.debug \ - ${OE_QMAKE_PATH_IMPORTS}/*/.debug \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/.debug \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/*/.debug \ " FILES_${PN}-tools-dbg = " \ ${OE_QMAKE_PATH_BINS}/.debug \ @@ -129,16 +126,6 @@ FILES_${PN}-qmlplugins = " \ ${OE_QMAKE_PATH_QML}/*/*/*/*/*.js \ ${OE_QMAKE_PATH_QML}/*/*/*/*/*.jsc \ ${OE_QMAKE_PATH_QML}/*/*/*/*/*/*.png \ - ${OE_QMAKE_PATH_IMPORTS}/*.qmltypes \ - ${OE_QMAKE_PATH_IMPORTS}/*/*${SOLIBSDEV} \ - ${OE_QMAKE_PATH_IMPORTS}/*/*.qmltypes \ - ${OE_QMAKE_PATH_IMPORTS}/*/qmldir \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/*${SOLIBSDEV} \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/*.qmltypes \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/qmldir \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/*/*${SOLIBSDEV} \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/*/*.qmltypes \ - ${OE_QMAKE_PATH_IMPORTS}/*/*/*/qmldir \ " FILES_${PN}-tools = " \ diff --git a/recipes-qt/qt5/qtbase_git.bb b/recipes-qt/qt5/qtbase_git.bb index da0b1d4e..800239ad 100644 --- a/recipes-qt/qt5/qtbase_git.bb +++ b/recipes-qt/qt5/qtbase_git.bb @@ -190,7 +190,6 @@ do_configure() { -archdatadir ${OE_QMAKE_PATH_ARCHDATA} \ -libexecdir ${OE_QMAKE_PATH_LIBEXECS} \ -plugindir ${OE_QMAKE_PATH_PLUGINS} \ - -importdir ${OE_QMAKE_PATH_IMPORTS} \ -qmldir ${OE_QMAKE_PATH_QML} \ -translationdir ${OE_QMAKE_PATH_TRANSLATIONS} \ -testsdir ${OE_QMAKE_PATH_TESTS} \ -- cgit v1.2.3 From c3cc11bc289363203da533e477d4f58a64a79db2 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 2 Jul 2018 09:53:22 +0300 Subject: qtbase: add PACKAGECONFIG for Link Time Optimization qtbase configure option -ltcg enables Link Time Code Generation using GCC's LTO feature. Enable it by default if the selected optimization is for size. Signed-off-by: Samuli Piippo --- recipes-qt/qt5/qtbase_git.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes-qt/qt5/qtbase_git.bb b/recipes-qt/qt5/qtbase_git.bb index 800239ad..bf05cf81 100644 --- a/recipes-qt/qt5/qtbase_git.bb +++ b/recipes-qt/qt5/qtbase_git.bb @@ -69,7 +69,7 @@ PACKAGECONFIG_RELEASE ?= "release" # This is in qt5.inc, because qtwebkit-examples are using it to enable ca-certificates dependency # PACKAGECONFIG_OPENSSL ?= "openssl" PACKAGECONFIG_DEFAULT ?= "dbus udev evdev widgets tools libs freetype tests \ - ${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Os', 'optimize-size', '', d)} \ + ${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Os', 'optimize-size ltcg', '', d)} \ " PACKAGECONFIG ?= " \ @@ -88,6 +88,7 @@ PACKAGECONFIG[release] = "-release,-debug" PACKAGECONFIG[debug] = "" PACKAGECONFIG[developer] = "-developer-build" PACKAGECONFIG[optimize-size] = "-optimize-size" +PACKAGECONFIG[ltcg] = "-ltcg" PACKAGECONFIG[sm] = "-sm,-no-sm" PACKAGECONFIG[tests] = "-make tests,-nomake tests" PACKAGECONFIG[examples] = "-make examples -compile-examples,-nomake examples" -- cgit v1.2.3 From 0ea31eaf6a3b51c77c515589fb850a3570cba5be Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Tue, 3 Jul 2018 14:40:56 -0300 Subject: qttools: Disable clang support If host has clang installed, the qdoc is enabled doing host contamination. For now, we disable this completely. Signed-off-by: Otavio Salvador --- recipes-qt/qt5/qttools_git.bb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes-qt/qt5/qttools_git.bb b/recipes-qt/qt5/qttools_git.bb index 678624dc..6e139cf2 100644 --- a/recipes-qt/qt5/qttools_git.bb +++ b/recipes-qt/qt5/qttools_git.bb @@ -27,7 +27,10 @@ FILES_${PN}-examples = "${datadir}${QT_DIR_NAME}/examples" PACKAGECONFIG ??= "" PACKAGECONFIG[qtwebkit] = ",,qtwebkit" -EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtwebkit', '', 'CONFIG+=noqtwebkit', d)}" +EXTRA_QMAKEVARS_PRE += " \ + CONFIG-=config_clang \ + ${@bb.utils.contains('PACKAGECONFIG', 'qtwebkit', '', 'CONFIG+=noqtwebkit', d)} \ +" SRCREV = "a01f3629377f25506d523406d2b93ffbff711a51" -- cgit v1.2.3 From 2b01a6d8b8e39030afe5e6a5876f873505bbc112 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Fri, 29 Jun 2018 13:29:25 +0300 Subject: qttranslations: do not use qt meta catalog translation package The qt_xx packages are meta catalogs that have dependencies to qtquick1 which is not available anymore, which then breaks loading of the translation file. Signed-off-by: Samuli Piippo --- recipes-qt/qt5/qttranslations_git.bb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/recipes-qt/qt5/qttranslations_git.bb b/recipes-qt/qt5/qttranslations_git.bb index d402bf1b..7b434e73 100644 --- a/recipes-qt/qt5/qttranslations_git.bb +++ b/recipes-qt/qt5/qttranslations_git.bb @@ -10,7 +10,7 @@ DEPENDS += "qtbase qttools-native" do_install_append() { # remove qtquick1 translations - qtquick1 is gone - for transfile in `find ${D}/${OE_QMAKE_PATH_TRANSLATIONS} -name qtquick1_*.qm`; do + for transfile in `find ${D}/${OE_QMAKE_PATH_TRANSLATIONS} -name qtquick1_*.qm -o -name qt_*.qm ! -name qt_help_*.qm`; do rm $transfile done } @@ -33,7 +33,6 @@ PACKAGES =. " \ ${PN}-qtserialport \ ${PN}-qtbase \ ${PN}-qthelp \ - ${PN}-qt \ " FILES_${PN}-assistant = " \ @@ -104,8 +103,4 @@ FILES_${PN}-qthelp = " \ ${OE_QMAKE_PATH_TRANSLATIONS}/qt_help_*.qm \ " -FILES_${PN}-qt = " \ - ${OE_QMAKE_PATH_TRANSLATIONS}/qt_*.qm \ -" - SRCREV = "3e0de1e1cd4fd194d1069b61f57a55b8d23ab60d" -- cgit v1.2.3 From a4f88b6b5f0703d15c4b50589d36fd6df22cd330 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Wed, 4 Jul 2018 19:29:28 +0300 Subject: qtbase: fix install locations used in static builds Both qml and plugin paths need to be adjusted for static builds, so that they point to the recipe-sysroot instead of the native one. Similar change is already applied to host bins. These changes do not affect regular dynamic builds, as the sections are only used in static builds. Signed-off-by: Samuli Piippo --- .../qt5/qtbase/0001-Add-linux-oe-g-platform.patch | 27 +++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch b/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch index 8f7afb6d..f4dfe0b7 100644 --- a/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch +++ b/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch @@ -22,10 +22,11 @@ Signed-off-by: Martin Jansa --- configure | 2 +- mkspecs/features/configure.prf | 4 +-- + mkspecs/features/qt.prf | 6 ++-- mkspecs/features/qt_functions.prf | 2 +- mkspecs/linux-oe-g++/qmake.conf | 42 ++++++++++++++++++++++++++++ mkspecs/linux-oe-g++/qplatformdefs.h | 1 + - 5 files changed, 47 insertions(+), 4 deletions(-) + 6 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 mkspecs/linux-oe-g++/qmake.conf create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h @@ -63,6 +64,30 @@ index 934a18a924..0f5b1b6333 100644 log("yes$$escape_expand(\\n)") msg = "test $$1 succeeded" write_file($$QMAKE_CONFIG_LOG, msg, append) +diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf +index b57afcf72d..afa1c39b3e 100644 +--- a/mkspecs/features/qt.prf ++++ b/mkspecs/features/qt.prf +@@ -147,7 +147,7 @@ import_plugins:qtConfig(static) { + !isEmpty(plug_type) { + plug_path = $$eval(QT_PLUGIN.$${plug}.PATH) + isEmpty(plug_path): \ +- plug_path = $$[QT_INSTALL_PLUGINS/get] ++ plug_path = $$[QT_INSTALL_PLUGINS] + LIBS += -L$$plug_path/$$plug_type + } + LIBS += -l$${plug}$$qtPlatformTargetSuffix() +@@ -298,8 +298,8 @@ for(ever) { + # static builds: link qml import plugins into the target. + contains(all_qt_module_deps, qml): \ + qtConfig(static):import_plugins:!host_build:!no_import_scan { +- exists($$[QT_INSTALL_QML/get]): \ +- QMLPATHS *= $$[QT_INSTALL_QML/get] ++ exists($$[QT_INSTALL_QML]): \ ++ QMLPATHS *= $$[QT_INSTALL_QML] + + # run qmlimportscanner + qtPrepareTool(QMLIMPORTSCANNER, qmlimportscanner, , system) diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index 1903e509c8..c093dd4592 100644 --- a/mkspecs/features/qt_functions.prf -- cgit v1.2.3 From 0263af75c053d1d7ea4882a75cf59b230fbb88ad Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 18 Jun 2018 10:52:40 +0300 Subject: qt5: add option to build Qt5 statically Add PACKAGECONFIG that enables static build for qtbase and consequently to all Qt recipes. This can be enabled with DISTRO_FEATURE 'qt5-static', which also adds qtdeclarative-native dependency to all recipes that depend on qtdeclarative as it's required for qmlimportscannertool. Building examples and tests with static build can take excessive amounts of time and disk space, so disabling DISTRO_FEATURE 'ptest' and PACKAGECONFIGs 'examples' from qtbase is advised. Not all recipes support static builds and those are not fixed here. Change-Id: Ia0e2a2467cd42d4395ed5292a645fd1d89ad521a Signed-off-by: Samuli Piippo --- recipes-qt/qt5/qt5.inc | 22 ++++++++++++++++++++++ recipes-qt/qt5/qtbase_git.bb | 2 ++ recipes-qt/qt5/qtdeclarative_git.bb | 3 ++- recipes-qt/qt5/qtwebengine_git.bb | 4 ++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/recipes-qt/qt5/qt5.inc b/recipes-qt/qt5/qt5.inc index b4915138..99105bd9 100644 --- a/recipes-qt/qt5/qt5.inc +++ b/recipes-qt/qt5/qt5.inc @@ -37,6 +37,14 @@ python __anonymous() { d.setVar("PACKAGE_ARCH", tarch) } +# if building static Qt5, add qtdeclarative-native dependency to all recipes +# that depend on qtdeclarative as it's required for qmlimportscannertool +python __anonymous() { + if bb.utils.contains('DISTRO_FEATURES', "qt5-static", True, False, d): + if bb.utils.contains('DEPENDS', "qtdeclarative", True, False, d): + d.appendVar("DEPENDS", " qtdeclarative-native") +} + # Many examples come with libraries installed outside of standard libdir, # suppress QA check complaining INSANE_SKIP_${PN}-dbg += "libdir" @@ -48,6 +56,8 @@ PACKAGES =. "${PN}-qmlplugins-dbg ${PN}-tools-dbg ${PN}-plugins-dbg ${PN}-qmldes ALLOW_EMPTY_${PN} = "1" ALLOW_EMPTY_${PN}-dbg = "1" +ALLOW_EMPTY_${PN}-plugins = "1" +ALLOW_EMPTY_${PN}-qmlplugins = "1" RRECOMMENDS_${PN} = " \ ${PN}-plugins \ @@ -159,6 +169,18 @@ FILES_${PN}-dbg += " \ " FILES_${PN}-staticdev += " \ ${OE_QMAKE_PATH_LIBS}/*.a \ + ${OE_QMAKE_PATH_PLUGINS}/*/*.a \ + ${OE_QMAKE_PATH_PLUGINS}/*/*.prl \ + ${OE_QMAKE_PATH_PLUGINS}/*/*/*.a \ + ${OE_QMAKE_PATH_PLUGINS}/*/*/*.prl \ + ${OE_QMAKE_PATH_QML}/*/*.a \ + ${OE_QMAKE_PATH_QML}/*/*.prl \ + ${OE_QMAKE_PATH_QML}/*/*/*.a \ + ${OE_QMAKE_PATH_QML}/*/*/*.prl \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.a \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.prl \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/*.a \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/*.prl \ " FILES_${PN}-examples = " \ ${OE_QMAKE_PATH_EXAMPLES}/* \ diff --git a/recipes-qt/qt5/qtbase_git.bb b/recipes-qt/qt5/qtbase_git.bb index bf05cf81..fdaf031f 100644 --- a/recipes-qt/qt5/qtbase_git.bb +++ b/recipes-qt/qt5/qtbase_git.bb @@ -70,6 +70,7 @@ PACKAGECONFIG_RELEASE ?= "release" # PACKAGECONFIG_OPENSSL ?= "openssl" PACKAGECONFIG_DEFAULT ?= "dbus udev evdev widgets tools libs freetype tests \ ${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Os', 'optimize-size ltcg', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'qt5-static', 'static', '', d)} \ " PACKAGECONFIG ?= " \ @@ -84,6 +85,7 @@ PACKAGECONFIG ?= " \ ${PACKAGECONFIG_DISTRO} \ " +PACKAGECONFIG[static] = "-static,-shared" PACKAGECONFIG[release] = "-release,-debug" PACKAGECONFIG[debug] = "" PACKAGECONFIG[developer] = "-developer-build" diff --git a/recipes-qt/qt5/qtdeclarative_git.bb b/recipes-qt/qt5/qtdeclarative_git.bb index 69e90570..e6173b4e 100644 --- a/recipes-qt/qt5/qtdeclarative_git.bb +++ b/recipes-qt/qt5/qtdeclarative_git.bb @@ -14,10 +14,11 @@ LIC_FILES_CHKSUM = " \ DEPENDS += "qtbase" -PACKAGECONFIG ??= "qtxmlpatterns qml-debug qml-network" +PACKAGECONFIG ??= "qtxmlpatterns qml-debug qml-network ${@bb.utils.contains('DISTRO_FEATURES', 'qt5-static', 'static', '', d)}" PACKAGECONFIG[qtxmlpatterns] = ",,qtxmlpatterns" PACKAGECONFIG[qml-debug] = "-qml-debug,-no-qml-debug" PACKAGECONFIG[qml-network] = "-qml-network, -no-qml-network" +PACKAGECONFIG[static] = ",,qtdeclarative-native" do_configure_prepend() { # disable qtxmlpatterns test if it isn't enabled by PACKAGECONFIG diff --git a/recipes-qt/qt5/qtwebengine_git.bb b/recipes-qt/qt5/qtwebengine_git.bb index 11ee347e..32ad875c 100644 --- a/recipes-qt/qt5/qtwebengine_git.bb +++ b/recipes-qt/qt5/qtwebengine_git.bb @@ -73,6 +73,10 @@ inherit qmake5 inherit gettext inherit pythonnative inherit perlnative +inherit distro_features_check + +# Static builds of QtWebEngine aren't supported. +CONFLICT_DISTRO_FEATURES = "qt5-static" # we don't want gettext.bbclass to append --enable-nls def gettext_oeconf(d): -- cgit v1.2.3