From c44fc9b620f762ce68441f834e1a157288a488e6 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 25 Apr 2018 21:03:54 +0000 Subject: qt5: import recipes which often reproduce Yocto #12434 from meta-qt5 * just temporary to make it easier to reproduce, import big part of meta-qt5 * qtquickcontrols-5.9.5+gitAUTOINC+75e9561d4f-r0 do_package_qa: QA Issue: qtquickcontrols: /qtquickcontrols-qmlplugins/usr/lib/qml/QtQuick/Controls/Styles/Base/TreeViewStyle.qml is owned by uid 1101, which is the same as the user running bitbake. This may be due to host contamination [host-user-contaminated] * to reproduce this you can try to use something like this: export COMP=qtquickcontrols; for i in `seq -w 1 999`; do echo $i; bitbake -v -v -DDDD -f -c package ${COMP} 2>${COMP}-logerr.$i >${COMP}-log.$i; bitbake -v -v -DDDD -f -c package_qa ${COMP} 2>${COMP}-logerr.qa.$i >${COMP}-log.qa.$i || { cp -ra BUILD/work/i586-oe-linux/${COMP}/ ${COMP}-workdir-$i; bitbake -c cleansstate ${COMP} ; } done Signed-off-by: Martin Jansa --- meta/classes/qmake5.bbclass | 19 ++ meta/classes/qmake5_base.bbclass | 252 +++++++++++++++++++++ meta/classes/qmake5_paths.bbclass | 52 +++++ meta/conf/bitbake.conf | 5 + meta/recipes-qt/qt5/nativesdk-qt5.inc | 12 + meta/recipes-qt/qt5/nativesdk-qtbase_git.bb | 215 ++++++++++++++++++ meta/recipes-qt/qt5/ptest/run-ptest | 6 + .../qt5/qt3d/0001-Allow-a-tools-only-build.patch | 51 +++++ ...2-Fix-BlenderDNA-for-clang-cross-compiler.patch | 44 ++++ meta/recipes-qt/qt5/qt3d_git.bb | 42 ++++ ...t-creator-to-build-on-arm-aarch32-and-aar.patch | 91 ++++++++ ...-Fix-compilation-with-QT_NO_ACCESSIBILITY.patch | 35 +++ .../0003-Qmlpuppet-add-missing-includes.patch | 38 ++++ .../0004-Link-with-libexecinfo-on-musl.patch | 30 +++ .../qt5/qt5-creator/qtcreator.desktop.in | 10 + meta/recipes-qt/qt5/qt5-creator_3.5.1.bb | 93 ++++++++ meta/recipes-qt/qt5/qt5-git.inc | 17 ++ meta/recipes-qt/qt5/qt5-native.inc | 12 + .../qt5/qt5-plugin-generic-vboxtouch_git.bb | 27 +++ meta/recipes-qt/qt5/qt5-ptest.inc | 22 ++ meta/recipes-qt/qt5/qt5.inc | 208 +++++++++++++++++ meta/recipes-qt/qt5/qtbase-native_git.bb | 140 ++++++++++++ .../qt5/qtbase/0001-Add-linux-oe-g-platform.patch | 133 +++++++++++ ...make-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch | 86 +++++++ ...o-allow-to-set-qt.conf-from-the-outside-u.patch | 36 +++ ...ump-path-length-from-256-to-512-character.patch | 34 +++ ...-unknown-features-instead-of-erroring-out.patch | 25 ++ ...-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch | 63 ++++++ .../0007-Delete-qlonglong-and-qulonglong.patch | 25 ++ ...08-Replace-pthread_yield-with-sched_yield.patch | 60 +++++ ...-Add-OE-specific-specs-for-clang-compiler.patch | 69 ++++++ ...-Invert-conditional-for-defining-QT_SOCKL.patch | 32 +++ ..._qlocale-Enable-QT_USE_FENV-only-on-glibc.patch | 25 ++ ...mon-gcc-base.conf-Use-I-instead-of-isyste.patch | 33 +++ .../qtbase/0013-Always-build-uic-and-qvkgen.patch | 28 +++ .../0014-Bootstrap-without-linkat-feature.patch | 27 +++ meta/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake | 1 + meta/recipes-qt/qt5/qtbase_git.bb | 247 ++++++++++++++++++++ meta/recipes-qt/qt5/qtcanvas3d_git.bb | 13 ++ meta/recipes-qt/qt5/qtcharts_git.bb | 15 ++ meta/recipes-qt/qt5/qtconnectivity_git.bb | 22 ++ meta/recipes-qt/qt5/qtdatavis3d_git.bb | 11 + meta/recipes-qt/qt5/qtdeclarative_git.bb | 35 +++ meta/recipes-qt/qt5/qtenginio_git.bb | 16 ++ meta/recipes-qt/qt5/qtgamepad_git.bb | 17 ++ meta/recipes-qt/qt5/qtgraphicaleffects_git.bb | 21 ++ meta/recipes-qt/qt5/qtimageformats_git.bb | 29 +++ meta/recipes-qt/qt5/qtknx_git.bb | 14 ++ meta/recipes-qt/qt5/qtlocation_git.bb | 37 +++ meta/recipes-qt/qt5/qtmqtt_git.bb | 14 ++ ...tmultimedia-fix-a-conflicting-declaration.patch | 100 ++++++++ meta/recipes-qt/qt5/qtmultimedia_git.bb | 39 ++++ meta/recipes-qt/qt5/qtnetworkauth_git.bb | 12 + meta/recipes-qt/qt5/qtpurchasing_git.bb | 13 ++ meta/recipes-qt/qt5/qtquick1_git.bb | 29 +++ meta/recipes-qt/qt5/qtquickcontrols2_git.bb | 13 ++ meta/recipes-qt/qt5/qtquickcontrols_git.bb | 20 ++ .../0001-Allow-a-tools-only-build.patch | 37 +++ meta/recipes-qt/qt5/qtremoteobjects_git.bb | 29 +++ meta/recipes-qt/qt5/qtscript_git.bb | 33 +++ ...Use-external-host-bin-path-for-cmake-file.patch | 28 +++ meta/recipes-qt/qt5/qtscxml_git.bb | 24 ++ meta/recipes-qt/qt5/qtsensors_git.bb | 15 ++ meta/recipes-qt/qt5/qtserialbus_git.bb | 14 ++ meta/recipes-qt/qt5/qtserialport_git.bb | 18 ++ meta/recipes-qt/qt5/qtsvg_git.bb | 16 ++ meta/recipes-qt/qt5/qtsystems_git.bb | 34 +++ .../0001-add-noqtwebkit-configuration.patch | 48 ++++ ...ols-cmake-allow-overriding-the-location-f.patch | 60 +++++ meta/recipes-qt/qt5/qttools/run-ptest | 4 + meta/recipes-qt/qt5/qttools_git.bb | 41 ++++ meta/recipes-qt/qt5/qttranslations_git.bb | 109 +++++++++ .../0001-include-sys-time.h-for-timeval.patch | 25 ++ meta/recipes-qt/qt5/qtvirtualkeyboard_git.bb | 56 +++++ .../0001-fix-build-without-xkbcommon-evdev.patch | 68 ++++++ meta/recipes-qt/qt5/qtwayland_git.bb | 53 +++++ meta/recipes-qt/qt5/qtwebchannel_git.bb | 15 ++ ...quickwebengineview_p_p.h-add-include-QCol.patch | 23 ++ ...romium-Force-host-toolchain-configuration.patch | 33 +++ ...-dependency-to-QCoreApplication-translate.patch | 23 ++ ...um-workaround-for-too-long-.rps-file-name.patch | 42 ++++ .../0003-Force-host-toolchain-configuration.patch | 71 ++++++ ...sl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch | 33 +++ ...sl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch | 67 ++++++ ...use-pvalloc-as-it-s-not-available-on-musl.patch | 37 +++ ...-chromium-musl-include-fcntl.h-for-loff_t.patch | 22 ++ .../0005-musl-link-against-libexecinfo.patch | 24 ++ ...sl-use-off64_t-instead-of-the-internal-__.patch | 62 +++++ ...ium-musl-linux-glibc-make-the-distinction.patch | 23 ++ ...sl-allocator-Do-not-include-glibc_weak_sy.patch | 24 ++ ...sl-Use-correct-member-name-__si_fields-fr.patch | 24 ++ ...hromium-musl-Match-syscalls-to-match-musl.patch | 44 ++++ ...sl-Define-res_ninit-and-res_nclose-for-no.patch | 79 +++++++ ...hromium-musl-Do-not-define-__sbrk-on-musl.patch | 26 +++ ...um-musl-Adjust-default-pthread-stack-size.patch | 47 ++++ ...sl-include-asm-generic-ioctl.h-for-TCGETS.patch | 22 ++ ...sl-tcmalloc-Use-off64_t-insread-of-__off6.patch | 23 ++ meta/recipes-qt/qt5/qtwebengine_git.bb | 169 ++++++++++++++ meta/recipes-qt/qt5/qtwebkit-examples_git.bb | 22 ++ .../0001-qtwebkit-fix-QA-issue-bad-RPATH.patch | 27 +++ ...ude-backtrace-API-for-non-glibc-libraries.patch | 35 +++ meta/recipes-qt/qt5/qtwebkit_git.bb | 100 ++++++++ meta/recipes-qt/qt5/qtwebsockets_git.bb | 14 ++ meta/recipes-qt/qt5/qtwebview_git.bb | 22 ++ meta/recipes-qt/qt5/qtx11extras_git.bb | 16 ++ meta/recipes-qt/qt5/qtxmlpatterns_git.bb | 20 ++ 106 files changed, 4716 insertions(+) create mode 100644 meta/classes/qmake5.bbclass create mode 100644 meta/classes/qmake5_base.bbclass create mode 100644 meta/classes/qmake5_paths.bbclass create mode 100644 meta/recipes-qt/qt5/nativesdk-qt5.inc create mode 100644 meta/recipes-qt/qt5/nativesdk-qtbase_git.bb create mode 100644 meta/recipes-qt/qt5/ptest/run-ptest create mode 100644 meta/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch create mode 100644 meta/recipes-qt/qt5/qt3d/0002-Fix-BlenderDNA-for-clang-cross-compiler.patch create mode 100644 meta/recipes-qt/qt5/qt3d_git.bb create mode 100644 meta/recipes-qt/qt5/qt5-creator/0001-Fix-Allow-qt-creator-to-build-on-arm-aarch32-and-aar.patch create mode 100644 meta/recipes-qt/qt5/qt5-creator/0002-Fix-compilation-with-QT_NO_ACCESSIBILITY.patch create mode 100644 meta/recipes-qt/qt5/qt5-creator/0003-Qmlpuppet-add-missing-includes.patch create mode 100644 meta/recipes-qt/qt5/qt5-creator/0004-Link-with-libexecinfo-on-musl.patch create mode 100644 meta/recipes-qt/qt5/qt5-creator/qtcreator.desktop.in create mode 100644 meta/recipes-qt/qt5/qt5-creator_3.5.1.bb create mode 100644 meta/recipes-qt/qt5/qt5-git.inc create mode 100644 meta/recipes-qt/qt5/qt5-native.inc create mode 100644 meta/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb create mode 100644 meta/recipes-qt/qt5/qt5-ptest.inc create mode 100644 meta/recipes-qt/qt5/qt5.inc create mode 100644 meta/recipes-qt/qt5/qtbase-native_git.bb create mode 100644 meta/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0013-Always-build-uic-and-qvkgen.patch create mode 100644 meta/recipes-qt/qt5/qtbase/0014-Bootstrap-without-linkat-feature.patch create mode 100644 meta/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake create mode 100644 meta/recipes-qt/qt5/qtbase_git.bb create mode 100644 meta/recipes-qt/qt5/qtcanvas3d_git.bb create mode 100644 meta/recipes-qt/qt5/qtcharts_git.bb create mode 100644 meta/recipes-qt/qt5/qtconnectivity_git.bb create mode 100644 meta/recipes-qt/qt5/qtdatavis3d_git.bb create mode 100644 meta/recipes-qt/qt5/qtdeclarative_git.bb create mode 100644 meta/recipes-qt/qt5/qtenginio_git.bb create mode 100644 meta/recipes-qt/qt5/qtgamepad_git.bb create mode 100644 meta/recipes-qt/qt5/qtgraphicaleffects_git.bb create mode 100644 meta/recipes-qt/qt5/qtimageformats_git.bb create mode 100644 meta/recipes-qt/qt5/qtknx_git.bb create mode 100644 meta/recipes-qt/qt5/qtlocation_git.bb create mode 100644 meta/recipes-qt/qt5/qtmqtt_git.bb create mode 100644 meta/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch create mode 100644 meta/recipes-qt/qt5/qtmultimedia_git.bb create mode 100644 meta/recipes-qt/qt5/qtnetworkauth_git.bb create mode 100644 meta/recipes-qt/qt5/qtpurchasing_git.bb create mode 100644 meta/recipes-qt/qt5/qtquick1_git.bb create mode 100644 meta/recipes-qt/qt5/qtquickcontrols2_git.bb create mode 100644 meta/recipes-qt/qt5/qtquickcontrols_git.bb create mode 100644 meta/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch create mode 100644 meta/recipes-qt/qt5/qtremoteobjects_git.bb create mode 100644 meta/recipes-qt/qt5/qtscript_git.bb create mode 100644 meta/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch create mode 100644 meta/recipes-qt/qt5/qtscxml_git.bb create mode 100644 meta/recipes-qt/qt5/qtsensors_git.bb create mode 100644 meta/recipes-qt/qt5/qtserialbus_git.bb create mode 100644 meta/recipes-qt/qt5/qtserialport_git.bb create mode 100644 meta/recipes-qt/qt5/qtsvg_git.bb create mode 100644 meta/recipes-qt/qt5/qtsystems_git.bb create mode 100644 meta/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch create mode 100644 meta/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch create mode 100644 meta/recipes-qt/qt5/qttools/run-ptest create mode 100644 meta/recipes-qt/qt5/qttools_git.bb create mode 100644 meta/recipes-qt/qt5/qttranslations_git.bb create mode 100644 meta/recipes-qt/qt5/qtvirtualkeyboard/0001-include-sys-time.h-for-timeval.patch create mode 100644 meta/recipes-qt/qt5/qtvirtualkeyboard_git.bb create mode 100644 meta/recipes-qt/qt5/qtwayland/0001-fix-build-without-xkbcommon-evdev.patch create mode 100644 meta/recipes-qt/qt5/qtwayland_git.bb create mode 100644 meta/recipes-qt/qt5/qtwebchannel_git.bb create mode 100644 meta/recipes-qt/qt5/qtwebengine/0001-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0001-chromium-Force-host-toolchain-configuration.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0002-Include-dependency-to-QCoreApplication-translate.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0002-chromium-workaround-for-too-long-.rps-file-name.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0003-Force-host-toolchain-configuration.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0003-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0004-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0004-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0005-chromium-musl-include-fcntl.h-for-loff_t.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0005-musl-link-against-libexecinfo.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0006-chromium-musl-use-off64_t-instead-of-the-internal-__.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0007-chromium-musl-linux-glibc-make-the-distinction.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0008-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0009-chromium-musl-Use-correct-member-name-__si_fields-fr.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0010-chromium-musl-Match-syscalls-to-match-musl.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0013-chromium-musl-Adjust-default-pthread-stack-size.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch create mode 100644 meta/recipes-qt/qt5/qtwebengine_git.bb create mode 100644 meta/recipes-qt/qt5/qtwebkit-examples_git.bb create mode 100644 meta/recipes-qt/qt5/qtwebkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch create mode 100644 meta/recipes-qt/qt5/qtwebkit/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch create mode 100644 meta/recipes-qt/qt5/qtwebkit_git.bb create mode 100644 meta/recipes-qt/qt5/qtwebsockets_git.bb create mode 100644 meta/recipes-qt/qt5/qtwebview_git.bb create mode 100644 meta/recipes-qt/qt5/qtx11extras_git.bb create mode 100644 meta/recipes-qt/qt5/qtxmlpatterns_git.bb (limited to 'meta') diff --git a/meta/classes/qmake5.bbclass b/meta/classes/qmake5.bbclass new file mode 100644 index 0000000000..1a960e8f32 --- /dev/null +++ b/meta/classes/qmake5.bbclass @@ -0,0 +1,19 @@ +# +# QMake variables for Qt +# +inherit qmake5_base + +QT5TOOLSDEPENDS ?= "qtbase-native" +DEPENDS_prepend = "${QT5TOOLSDEPENDS} " + +do_configure() { + qmake5_base_do_configure +} + +do_install() { + qmake5_base_do_install +} + +do_install_class-native() { + qmake5_base_native_do_install +} diff --git a/meta/classes/qmake5_base.bbclass b/meta/classes/qmake5_base.bbclass new file mode 100644 index 0000000000..8f1d143a30 --- /dev/null +++ b/meta/classes/qmake5_base.bbclass @@ -0,0 +1,252 @@ +# hardcode linux, because that's what 0001-Add-linux-oe-g-platform.patch adds +XPLATFORM_toolchain-clang = "linux-oe-clang" +XPLATFORM ?= "linux-oe-g++" + +OE_QMAKE_PLATFORM_NATIVE = "${XPLATFORM}" +OE_QMAKE_PLATFORM = "${XPLATFORM}" + +# Add -d to show debug output from every qmake call, but it prints *a lot*, better to add it only to debugged recipe +OE_QMAKE_DEBUG_OUTPUT ?= "" + +# Look through supplied directories recursively by default +OE_QMAKE_RECURSIVE ?= "-r" + +# Paths in .prl files contain SYSROOT value +SSTATE_SCAN_FILES += "*.pri *.prl *.prf" + +# drop default -e and add needed OE_QMAKE vars explicitly +# the problem is that when generated Makefile has: +# CFLAGS = -pipe $(OE_QMAKE_CFLAGS) -O2 -pthread -D_REENTRANT -Wall -W -fPIC $(DEFINES) +# then OE_QMAKE_CFLAGS are exported and used correctly, but then whole CFLAGS is overwritten from env (and -fPIC lost and build fails) +EXTRA_OEMAKE = " \ + MAKEFLAGS='${PARALLEL_MAKE}' \ + OE_QMAKE_COMPILER='${OE_QMAKE_COMPILER}' \ + OE_QMAKE_CC='${OE_QMAKE_CC}' \ + OE_QMAKE_CXX='${OE_QMAKE_CXX}' \ + OE_QMAKE_CFLAGS='${OE_QMAKE_CFLAGS}' \ + OE_QMAKE_CXXFLAGS='${OE_QMAKE_CXXFLAGS}' \ + OE_QMAKE_LINK='${OE_QMAKE_LINK}' \ + OE_QMAKE_LDFLAGS='${OE_QMAKE_LDFLAGS}' \ + OE_QMAKE_AR='${OE_QMAKE_AR}' \ + OE_QMAKE_STRIP='${OE_QMAKE_STRIP}' \ + OE_QMAKE_INCDIR_QT='${STAGING_DIR_TARGET}/${OE_QMAKE_PATH_HEADERS}' \ +" + +OE_QMAKE_QMAKE = "${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake" +export OE_QMAKE_COMPILER = "${CC}" +export OE_QMAKE_CC = "${CC}" +export OE_QMAKE_CFLAGS = "${CFLAGS}" +export OE_QMAKE_CXX = "${CXX}" +export OE_QMAKE_CXXFLAGS = "${CXXFLAGS}" +export OE_QMAKE_LINK = "${CXX}" +export OE_QMAKE_LDFLAGS = "${LDFLAGS}" +export OE_QMAKE_AR = "${AR}" +export OE_QMAKE_STRIP = "echo" + +# qmake reads if from shell environment +export OE_QMAKE_QTCONF_PATH = "${WORKDIR}/qt.conf" + +inherit qmake5_paths remove-libtool + +generate_target_qt_config_file() { + qtconf="$1" + cat > "${qtconf}" < ${OE_QMAKE_QTCONF_PATH} <> ${OE_QMAKE_QTCONF_PATH} < ${CONFIGURESTAMPFILE} + fi +} + +EXTRAQCONFFUNCS ??= "" + +do_configure[prefuncs] += "qmake5_base_preconfigure ${EXTRAQCONFFUNCS}" +do_configure[postfuncs] += "qmake5_base_postconfigure" + +addtask generate_qt_config_file after do_patch before do_configure + +qmake5_base_do_configure () { + if [ -z "${QMAKE_PROFILES}" ]; then + PROFILES="`ls ${S}/*.pro`" + else + PROFILES="${QMAKE_PROFILES}" + bbnote "qmake using profiles: '${QMAKE_PROFILES}'" + fi + + if [ ! -z "${EXTRA_QMAKEVARS_POST}" ]; then + AFTER="-after" + QMAKE_VARSUBST_POST="${EXTRA_QMAKEVARS_POST}" + bbnote "qmake postvar substitution: '${EXTRA_QMAKEVARS_POST}'" + fi + + if [ ! -z "${EXTRA_QMAKEVARS_PRE}" ]; then + QMAKE_VARSUBST_PRE="${EXTRA_QMAKEVARS_PRE}" + bbnote "qmake prevar substitution: '${EXTRA_QMAKEVARS_PRE}'" + fi + + if [ ! -z "${EXTRA_QMAKEVARS_CONFIGURE}" ]; then + QMAKE_VARSUBST_CONFIGURE="${EXTRA_QMAKEVARS_CONFIGURE}" + bbnote "qmake configure substitution: '${EXTRA_QMAKEVARS_CONFIGURE}'" + fi + + # for config.tests to read this + export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}" + + CMD="${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST -- $QMAKE_VARSUBST_CONFIGURE" + ${OE_QMAKE_QMAKE} -makefile -o Makefile ${OE_QMAKE_DEBUG_OUTPUT} ${OE_QMAKE_RECURSIVE} $QMAKE_VARSUBST_PRE $AFTER $PROFILES $QMAKE_VARSUBST_POST -- $QMAKE_VARSUBST_CONFIGURE || die "Error calling $CMD" +} + +qmake5_base_native_do_install() { + oe_runmake install INSTALL_ROOT=${D} + find "${D}" -ignore_readdir_race -name "*.la" -delete + if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then + sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc + fi +} + +qmake5_base_fix_install() { + STAGING_PATH=$1 + if [ -d ${D}${STAGING_PATH} ] ; then + echo "Some files are installed in wrong directory ${D}${STAGING_PATH}" + cp -ra ${D}${STAGING_PATH}/* ${D} + rm -rf ${D}${STAGING_PATH} + # remove empty dirs + TMP=`dirname ${D}${STAGING_PATH}` + while test ${TMP} != ${D}; do + rmdir ${TMP} + TMP=`dirname ${TMP}`; + done + fi +} + +qmake5_base_do_install() { + # Fix install paths for all + find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_TARGET},(INSTALL_ROOT),g" + find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_HOST},(INSTALL_ROOT),g" + find . -name "Makefile*" | xargs -r sed -i "s,(INSTALL_ROOT)${STAGING_DIR_NATIVE},(INSTALL_ROOT),g" + + oe_runmake install INSTALL_ROOT=${D} + + # everything except HostData and HostBinaries is prefixed with sysroot value, + # but we cannot remove sysroot override, because that's useful for pkg-config etc + # concurrent builds may cause qmake to regenerate Makefiles and override the above + # sed changes. If that happens, move files manually to correct location. + qmake5_base_fix_install ${STAGING_DIR_TARGET} + qmake5_base_fix_install ${STAGING_DIR_HOST} + qmake5_base_fix_install ${STAGING_DIR_NATIVE} + + if ls ${D}${libdir}/pkgconfig/*.pc >/dev/null 2>/dev/null; then + sed -i ${D}${libdir}/pkgconfig/*.pc \ + -e "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" \ + -e "s@${STAGING_DIR_TARGET}@@g" + fi +} diff --git a/meta/classes/qmake5_paths.bbclass b/meta/classes/qmake5_paths.bbclass new file mode 100644 index 0000000000..e1101a9c48 --- /dev/null +++ b/meta/classes/qmake5_paths.bbclass @@ -0,0 +1,52 @@ +# If your distribution supports only qt5, or you don't care +# about conflicts with qt4, then you can add qmake5_paths.bbclass +# to your distro layer and flatten all QT_DIR_NAME directories + +QT_DIR_NAME ?= "/qt5" + +# This is useful for target recipes to reference native mkspecs +QMAKE_MKSPEC_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}${QT_DIR_NAME}" +QMAKE_MKSPEC_PATH_TARGET = "${STAGING_LIBDIR}${QT_DIR_NAME}" + +QMAKE_MKSPEC_PATH = "${QMAKE_MKSPEC_PATH_TARGET}" +QMAKE_MKSPEC_PATH_class-native = "${QMAKE_MKSPEC_PATH_NATIVE}" +QMAKE_MKSPEC_PATH_class-nativesdk = "${QMAKE_MKSPEC_PATH_NATIVE}" + +OE_QMAKE_PATH_PREFIX = "${prefix}" +OE_QMAKE_PATH_HEADERS = "${includedir}${QT_DIR_NAME}" +OE_QMAKE_PATH_LIBS = "${libdir}" +OE_QMAKE_PATH_ARCHDATA = "${libdir}" +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}" +OE_QMAKE_PATH_SETTINGS = "${sysconfdir}" +OE_QMAKE_PATH_EXAMPLES = "${datadir}/examples" +OE_QMAKE_PATH_TESTS = "${datadir}/tests" +OE_QMAKE_PATH_HOST_PREFIX = "" +OE_QMAKE_PATH_HOST_PREFIX_class-target = "${STAGING_DIR_NATIVE}" +OE_QMAKE_PATH_HOST_BINS = "${bindir}${QT_DIR_NAME}" +OE_QMAKE_PATH_HOST_DATA = "${QMAKE_MKSPEC_PATH_TARGET}" +OE_QMAKE_PATH_HOST_LIBS = "${STAGING_LIBDIR}" +OE_QMAKE_PATH_EXTERNAL_HOST_BINS = "${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}" + +# for qt5 components we're using QT_DIR_NAME subdirectory in more +# variables, because we don't want conflicts with qt4 +# This block is usefull for components which install their +# own files without QT_DIR_NAME but need to reference paths e.g. +# with QT headers +OE_QMAKE_PATH_QT_HEADERS = "${includedir}${QT_DIR_NAME}" +OE_QMAKE_PATH_QT_ARCHDATA = "${libdir}${QT_DIR_NAME}" +OE_QMAKE_PATH_QT_DATA = "${datadir}${QT_DIR_NAME}" +OE_QMAKE_PATH_QT_BINS = "${bindir}${QT_DIR_NAME}" +OE_QMAKE_PATH_QT_TRANSLATIONS = "${datadir}${QT_DIR_NAME}/translations" +OE_QMAKE_PATH_QT_DOCS = "${docdir}${QT_DIR_NAME}" +OE_QMAKE_PATH_QT_SETTINGS = "${sysconfdir}${QT_DIR_NAME}" +OE_QMAKE_PATH_QT_EXAMPLES = "${datadir}${QT_DIR_NAME}/examples" +OE_QMAKE_PATH_QT_TESTS = "${datadir}${QT_DIR_NAME}/tests" + +OE_QMAKE_PATH_QT_FONTS = "${OE_QMAKE_PATH_LIBS}/fonts" diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 7f8b043cc4..a311405012 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -898,3 +898,8 @@ BB_SIGNATURE_EXCLUDE_FLAGS ?= "doc deps depends \ MLPREFIX ??= "" MULTILIB_VARIANTS ??= "" + +QT_GIT_PROJECT ?= "qt" +QT_GIT ?= "git://code.qt.io/${QT_GIT_PROJECT}" +QT_GIT_PROTOCOL ?= "git" +QT_EDITION ?= "opensource" diff --git a/meta/recipes-qt/qt5/nativesdk-qt5.inc b/meta/recipes-qt/qt5/nativesdk-qt5.inc new file mode 100644 index 0000000000..2eb8c1423e --- /dev/null +++ b/meta/recipes-qt/qt5/nativesdk-qt5.inc @@ -0,0 +1,12 @@ +inherit nativesdk qmake5_base + +# we don't want conflicts with qt4 +OE_QMAKE_PATH_HEADERS = "${OE_QMAKE_PATH_QT_HEADERS}" +OE_QMAKE_PATH_ARCHDATA = "${OE_QMAKE_PATH_QT_ARCHDATA}" +OE_QMAKE_PATH_DATA = "${OE_QMAKE_PATH_QT_DATA}" +OE_QMAKE_PATH_BINS = "${OE_QMAKE_PATH_QT_BINS}" +OE_QMAKE_PATH_TRANSLATIONS = "${OE_QMAKE_PATH_QT_TRANSLATIONS}" +OE_QMAKE_PATH_DOCS = "${OE_QMAKE_PATH_QT_DOCS}" +OE_QMAKE_PATH_SETTINGS = "${OE_QMAKE_PATH_QT_SETTINGS}" +OE_QMAKE_PATH_EXAMPLES = "${OE_QMAKE_PATH_QT_EXAMPLES}" +OE_QMAKE_PATH_TESTS = "${OE_QMAKE_PATH_QT_TESTS}" diff --git a/meta/recipes-qt/qt5/nativesdk-qtbase_git.bb b/meta/recipes-qt/qt5/nativesdk-qtbase_git.bb new file mode 100644 index 0000000000..87da66e44f --- /dev/null +++ b/meta/recipes-qt/qt5/nativesdk-qtbase_git.bb @@ -0,0 +1,215 @@ +DESCRIPTION = "SDK version of Qt/[X11|Mac|Embedded]" +DEPENDS = "nativesdk-zlib qtbase-native" +SECTION = "libs" +HOMEPAGE = "http://qt-project.org" + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.LGPLv21;md5=fb91571854638f10b2e5f36562661a5a \ + file://LICENSE.LGPLv3;md5=a909b94c1c9674b2aa15ff03a86f518a \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +QT_MODULE = "qtbase" + +require nativesdk-qt5.inc +require qt5-git.inc + +# it's already included with newer oe-core, but include it here for dylan +FILESEXTRAPATHS =. "${FILE_DIRNAME}/qtbase:" + +# common for qtbase-native, qtbase-nativesdk and qtbase +# Patches from https://github.com/meta-qt5/qtbase/commits/b5.10-shared +# 5.10.meta-qt5-shared.2 +SRC_URI += "\ + file://0001-Add-linux-oe-g-platform.patch \ + file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \ + file://0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \ + file://0004-configure-bump-path-length-from-256-to-512-character.patch \ + file://0005-Disable-all-unknown-features-instead-of-erroring-out.patch \ + file://0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch \ + file://0007-Delete-qlonglong-and-qulonglong.patch \ + file://0008-Replace-pthread_yield-with-sched_yield.patch \ + file://0009-Add-OE-specific-specs-for-clang-compiler.patch \ + file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \ + file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \ + file://0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch \ +" + +# common for qtbase-native and nativesdk-qtbase +# Patches from https://github.com/meta-qt5/qtbase/commits/b5.10-native +# 5.10.meta-qt5-native.2 +SRC_URI += " \ + file://0013-Always-build-uic-and-qvkgen.patch \ +" + +# CMake's toolchain configuration of nativesdk-qtbase +SRC_URI += " \ + file://OEQt5Toolchain.cmake \ +" + +PACKAGES = "${PN}-tools-dbg ${PN}-tools-dev ${PN}-tools-staticdev ${PN}-tools" + +PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src" + +FILES_${PN}-tools-dev = " \ + ${includedir} \ + ${FILES_SOLIBSDEV} ${libdir}/*.la \ + ${libdir}/*.prl \ + ${OE_QMAKE_PATH_ARCHDATA}/mkspecs \ + ${OE_QMAKE_PATH_LIBS}/*.prl \ +" + +FILES_${PN}-tools-staticdev = " \ + ${OE_QMAKE_PATH_LIBS}/*.a \ +" + +FILES_${PN}-tools-dbg = " \ + ${libdir}/.debug \ + ${OE_QMAKE_PATH_BINS}/.debug \ +" + +FILES_${PN}-tools = " \ + ${libdir}/lib*${SOLIBS} \ + ${OE_QMAKE_PATH_BINS}/* \ + ${SDKPATHNATIVE}/environment-setup.d \ + ${datadir}/cmake \ +" + +# qttools binaries are placed in a subdir of bin in order to avoid +# collisions with qt4. This would trigger debian.bbclass to rename the +# package, since it doesn't detect binaries in subdirs. Explicitly +# disable package auto-renaming for the tools-package. +DEBIAN_NOAUTONAME_${PN}-tools = "1" + +QT_CONFIG_FLAGS += " \ + -shared \ + -silent \ + -no-pch \ + -no-rpath \ + -pkg-config \ + ${PACKAGECONFIG_CONFARGS} \ +" + +# qtbase is exception, as these are used as install path for sysroots +OE_QMAKE_PATH_HOST_DATA = "${libdir}${QT_DIR_NAME}" +OE_QMAKE_PATH_HOST_LIBS = "${libdir}" + +# for qtbase configuration we need default settings +# since we cannot set empty set filename to a not existent file +deltask generate_qt_config_file + +do_configure() { + # Regenerate header files when they are included in source tarball + # Otherwise cmake files don't set PRIVATE_HEADERS correctly + rm -rf ${S}/include + mkdir -p ${S}/.git || true + + ${S}/configure -v \ + -${QT_EDITION} -confirm-license \ + -sysroot ${STAGING_DIR_TARGET} \ + -no-gcc-sysroot \ + -system-zlib \ + -dbus-runtime \ + -no-libjpeg \ + -no-libpng \ + -no-gif \ + -no-accessibility \ + -no-cups \ + -no-gui \ + -no-qml-debug \ + -no-sql-mysql \ + -no-sql-sqlite \ + -no-opengl \ + -no-openssl \ + -no-xcb \ + -no-feature-bearermanagement \ + -no-icu \ + -verbose \ + -release \ + -prefix ${OE_QMAKE_PATH_PREFIX} \ + -bindir ${OE_QMAKE_PATH_BINS} \ + -libdir ${OE_QMAKE_PATH_LIBS} \ + -datadir ${OE_QMAKE_PATH_DATA} \ + -sysconfdir ${OE_QMAKE_PATH_SETTINGS} \ + -docdir ${OE_QMAKE_PATH_DOCS} \ + -headerdir ${OE_QMAKE_PATH_HEADERS} \ + -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} \ + -hostbindir ${OE_QMAKE_PATH_HOST_BINS} \ + -hostdatadir ${OE_QMAKE_PATH_HOST_DATA} \ + -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \ + -no-glib \ + -no-iconv \ + -silent \ + -nomake examples \ + -nomake tests \ + -no-compile-examples \ + -no-rpath \ + -platform ${OE_QMAKE_PLATFORM_NATIVE} \ + -xplatform ${OE_QMAKE_PLATFORM} \ + ${QT_CONFIG_FLAGS} +} + +do_install() { + qmake5_base_do_install + + # remove things unused in nativesdk, we need the headers and libs + rm -rf ${D}${datadir} \ + ${D}/${OE_QMAKE_PATH_PLUGINS} \ + ${D}${libdir}/cmake \ + ${D}${libdir}/pkgconfig + + # Install CMake's toolchain configuration + mkdir -p ${D}${datadir}/cmake/OEToolchainConfig.cmake.d/ + install -m 644 ${WORKDIR}/OEQt5Toolchain.cmake ${D}${datadir}/cmake/OEToolchainConfig.cmake.d/ + + # Fix up absolute paths in scripts + grep -lr /usr/bin/python ${D}${OE_QMAKE_PATH_QT_ARCHDATA}/ | \ + xargs -r sed -i -e '1s,#!.*python,#! ${USRBINPATH}/env python,' +} + +fakeroot do_generate_qt_environment_file() { + mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d/ + script=${D}${SDKPATHNATIVE}/environment-setup.d/qt5.sh + + echo 'export PATH=${OE_QMAKE_PATH_HOST_BINS}:$PATH' > $script + echo 'export OE_QMAKE_CFLAGS="$CFLAGS"' >> $script + echo 'export OE_QMAKE_CXXFLAGS="$CXXFLAGS"' >> $script + echo 'export OE_QMAKE_LDFLAGS="$LDFLAGS"' >> $script + echo 'export OE_QMAKE_CC=$CC' >> $script + echo 'export OE_QMAKE_CXX=$CXX' >> $script + echo 'export OE_QMAKE_LINK=$CXX' >> $script + echo 'export OE_QMAKE_AR=$AR' >> $script + echo 'export OE_QMAKE_STRIP=$STRIP' >> $script + echo 'export QT_CONF_PATH=${OE_QMAKE_PATH_HOST_BINS}/qt.conf' >> $script + echo 'export OE_QMAKE_LIBDIR_QT=`qmake -query QT_INSTALL_LIBS`' >> $script + echo 'export OE_QMAKE_INCDIR_QT=`qmake -query QT_INSTALL_HEADERS`' >> $script + echo 'export OE_QMAKE_MOC=${OE_QMAKE_PATH_HOST_BINS}/moc' >> $script + echo 'export OE_QMAKE_UIC=${OE_QMAKE_PATH_HOST_BINS}/uic' >> $script + echo 'export OE_QMAKE_RCC=${OE_QMAKE_PATH_HOST_BINS}/rcc' >> $script + echo 'export OE_QMAKE_QDBUSCPP2XML=${OE_QMAKE_PATH_HOST_BINS}/qdbuscpp2xml' >> $script + echo 'export OE_QMAKE_QDBUSXML2CPP=${OE_QMAKE_PATH_HOST_BINS}/qdbusxml2cpp' >> $script + echo 'export OE_QMAKE_QT_CONFIG=`qmake -query QT_INSTALL_LIBS`${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script + echo 'export OE_QMAKE_PATH_HOST_BINS=${OE_QMAKE_PATH_HOST_BINS}' >> $script + echo 'export QMAKESPEC=`qmake -query QT_INSTALL_LIBS`${QT_DIR_NAME}/mkspecs/linux-oe-g++' >> $script + + # Use relocable sysroot + sed -i -e 's:${SDKPATHNATIVE}:$OECORE_NATIVE_SYSROOT:g' $script +} + +do_generate_qt_environment_file[umask] = "022" +addtask generate_qt_environment_file after do_install before do_package + +SRCREV = "6c6ace9d23f90845fd424e474d38fe30f070775e" diff --git a/meta/recipes-qt/qt5/ptest/run-ptest b/meta/recipes-qt/qt5/ptest/run-ptest new file mode 100644 index 0000000000..044f834d68 --- /dev/null +++ b/meta/recipes-qt/qt5/ptest/run-ptest @@ -0,0 +1,6 @@ +#!/bin/sh + +for x in ` awk '{print $1}' tst_list `;do + ./${x}; +done + diff --git a/meta/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch b/meta/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch new file mode 100644 index 0000000000..66c8017329 --- /dev/null +++ b/meta/recipes-qt/qt5/qt3d/0001-Allow-a-tools-only-build.patch @@ -0,0 +1,51 @@ +From 05562960b7a3ed7753c9a39a7032fea873fc4098 Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Wed, 10 Feb 2016 09:02:09 +0200 +Subject: [PATCH] Allow a tools-only build + +--- + qt3d.pro | 7 ++++++- + src/3rdparty/assimp/assimp_dependency.pri | 2 +- + tools/tools.pro | 2 +- + 3 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/qt3d.pro b/qt3d.pro +index 2cc347a..81cdeef 100644 +--- a/qt3d.pro ++++ b/qt3d.pro +@@ -1,4 +1,4 @@ +-requires(qtConfig(opengl)) ++!tools-only:requires(qtConfig(opengl)) + + CONFIG += examples_need_tools + load(qt_parts) +@@ -14,3 +14,8 @@ load(qt_parts) + + OTHER_FILES += \ + sync.profile ++ ++tools-only { ++ sub_tools.depends -= sub_src ++ SUBDIRS = sub_tools ++} +diff --git a/src/3rdparty/assimp/assimp_dependency.pri b/src/3rdparty/assimp/assimp_dependency.pri +index 8ba2d9a..e973d93 100644 +--- a/src/3rdparty/assimp/assimp_dependency.pri ++++ b/src/3rdparty/assimp/assimp_dependency.pri +@@ -1,5 +1,5 @@ + QT_FOR_CONFIG += 3dcore-private +-qtConfig(system-assimp):!if(cross_compile:host_build) { ++!tools-only:qtConfig(system-assimp):!if(cross_compile:host_build) { + QMAKE_USE_PRIVATE += assimp + } else { + include(assimp.pri) +diff --git a/tools/tools.pro b/tools/tools.pro +index 8e973ae..ad51db5 100644 +--- a/tools/tools.pro ++++ b/tools/tools.pro +@@ -1,4 +1,4 @@ + TEMPLATE = subdirs + QT_FOR_CONFIG += 3dcore-private +-!android:qtConfig(assimp):qtConfig(commandlineparser): \ ++!android:tools-only|qtConfig(assimp):qtConfig(commandlineparser): \ + SUBDIRS += qgltf diff --git a/meta/recipes-qt/qt5/qt3d/0002-Fix-BlenderDNA-for-clang-cross-compiler.patch b/meta/recipes-qt/qt5/qt3d/0002-Fix-BlenderDNA-for-clang-cross-compiler.patch new file mode 100644 index 0000000000..3357fa3e85 --- /dev/null +++ b/meta/recipes-qt/qt5/qt3d/0002-Fix-BlenderDNA-for-clang-cross-compiler.patch @@ -0,0 +1,44 @@ +From fc23039612ab9aed4f994b4390016e71ceee8165 Mon Sep 17 00:00:00 2001 +From: Kim Kulling +Date: Mon, 7 Nov 2016 17:19:49 +0100 +Subject: [PATCH] Fix BlenderDNA for clang cross compiler. + +Signed-off-by: Martin Jansa +--- + src/3rdparty/assimp/code/BlenderDNA.cpp | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/3rdparty/assimp/code/BlenderDNA.cpp b/src/3rdparty/assimp/code/BlenderDNA.cpp +index 18ec9f2..5b0b209 100644 +--- a/src/3rdparty/assimp/code/BlenderDNA.cpp ++++ b/src/3rdparty/assimp/code/BlenderDNA.cpp +@@ -55,10 +55,10 @@ using namespace Assimp::Formatter; + + bool match4(StreamReaderAny& stream, const char* string) { + char tmp[] = { +- (stream).GetI1(), +- (stream).GetI1(), +- (stream).GetI1(), +- (stream).GetI1() ++ (const char)(stream).GetI1(), ++ (const char)(stream).GetI1(), ++ (const char)(stream).GetI1(), ++ (const char)(stream).GetI1() + }; + return (tmp[0]==string[0] && tmp[1]==string[1] && tmp[2]==string[2] && tmp[3]==string[3]); + } +@@ -345,10 +345,10 @@ void SectionParser :: Next() + stream.SetCurrentPos(current.start + current.size); + + const char tmp[] = { +- stream.GetI1(), +- stream.GetI1(), +- stream.GetI1(), +- stream.GetI1() ++ (const char)stream.GetI1(), ++ (const char)stream.GetI1(), ++ (const char)stream.GetI1(), ++ (const char)stream.GetI1() + }; + current.id = std::string(tmp,tmp[3]?4:tmp[2]?3:tmp[1]?2:1); + diff --git a/meta/recipes-qt/qt5/qt3d_git.bb b/meta/recipes-qt/qt5/qt3d_git.bb new file mode 100644 index 0000000000..dbd1b27916 --- /dev/null +++ b/meta/recipes-qt/qt5/qt3d_git.bb @@ -0,0 +1,42 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "LGPL-3.0 | GPL-2.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv3;md5=8211fde12cc8a4e2477602f5953f5b71 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LICENSE.GPL;md5=c96076271561b0e3785dad260634eaa8 \ +" + +DEPENDS += "qtbase" +DEPENDS_class-target += "qtdeclarative qt3d-native" + +# Patches from https://github.com/meta-qt5/qt3d/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += " \ + file://0001-Allow-a-tools-only-build.patch \ + file://0002-Fix-BlenderDNA-for-clang-cross-compiler.patch \ +" + +PACKAGECONFIG ??= "" +PACKAGECONFIG_class-native ??= "tools-only" +PACKAGECONFIG_class-nativesdk ??= "tools-only" +PACKAGECONFIG[tools-only] = "" +PACKAGECONFIG[system-assimp] = "-feature-system-assimp,-no-feature-system-assimp,assimp" +PACKAGECONFIG[qtgamepad] = ",,qtgamepad" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'tools-only', 'CONFIG+=tools-only QMAKE_USE_PRIVATE+=zlib', '', d)}" +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtgamepad', 'CONFIG+=OE_QTGAMEPAD_ENABLED', '', d)}" + +do_configure_prepend() { + # disable qtgamepad test if it isn't enabled by PACKAGECONFIG + sed -e 's/^\(qtHaveModule(gamepad)\)/OE_QTGAMEPAD_ENABLED:\1/' -i \ + ${S}/src/input/frontend/frontend.pri \ + ${S}/src/quick3d/imports/input/importsinput.pro +} + +SRCREV = "31f424bb81cd2583920d3d521e1e01f01c2d28e2" + +BBCLASSEXTEND += "native nativesdk" diff --git a/meta/recipes-qt/qt5/qt5-creator/0001-Fix-Allow-qt-creator-to-build-on-arm-aarch32-and-aar.patch b/meta/recipes-qt/qt5/qt5-creator/0001-Fix-Allow-qt-creator-to-build-on-arm-aarch32-and-aar.patch new file mode 100644 index 0000000000..c4ee34bf9d --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-creator/0001-Fix-Allow-qt-creator-to-build-on-arm-aarch32-and-aar.patch @@ -0,0 +1,91 @@ +From 056bc88a15df06443a4a6bdea2b1ead045f89bf6 Mon Sep 17 00:00:00 2001 +From: Greg Nietsky +Date: Tue, 4 Mar 2014 11:33:40 +0200 +Subject: [PATCH] Fix: Allow qt-creator to build on arm aarch32 and aarch64 + +Botan is imported hardwired for x86 this small patch allows it +too operate on arm other platforms could be added. + +Task-number: QTCREATORBUG-8107 +Change-Id: Iddea28f21c9fa1afd2fdd5d16a44e6c96a516a7a +--- + src/libs/3rdparty/botan/botan.cpp | 16 +++++++++++++++- + src/libs/3rdparty/botan/botan.h | 2 ++ + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/src/libs/3rdparty/botan/botan.cpp b/src/libs/3rdparty/botan/botan.cpp +index e6a5f22..7b625ac 100644 +--- a/src/libs/3rdparty/botan/botan.cpp ++++ b/src/libs/3rdparty/botan/botan.cpp +@@ -1101,6 +1101,8 @@ class Montgomery_Exponentiator : public Modular_Exponentiator + + #if (BOTAN_MP_WORD_BITS != 32) + #error The mp_x86_32 module requires that BOTAN_MP_WORD_BITS == 32 ++#elif !defined(BOTAN_TARGET_CPU_IS_X86_FAMILY) ++typedef Botan::u64bit dword; + #endif + + #ifdef Q_OS_UNIX +@@ -1118,6 +1120,7 @@ extern "C" { + */ + inline word word_madd2(word a, word b, word* c) + { ++#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY) + asm( + ASM("mull %[b]") + ASM("addl %[c],%[a]") +@@ -1127,6 +1130,11 @@ inline word word_madd2(word a, word b, word* c) + : "0"(a), "1"(b), [c]"g"(*c) : "cc"); + + return a; ++#else ++ dword z = (dword)a * b + *c; ++ *c = (word)(z >> BOTAN_MP_WORD_BITS); ++ return (word)z; ++#endif + } + + /* +@@ -1134,6 +1142,7 @@ inline word word_madd2(word a, word b, word* c) + */ + inline word word_madd3(word a, word b, word c, word* d) + { ++#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY) + asm( + ASM("mull %[b]") + +@@ -1147,6 +1156,11 @@ inline word word_madd3(word a, word b, word c, word* d) + : "0"(a), "1"(b), [c]"g"(c), [d]"g"(*d) : "cc"); + + return a; ++#else ++ dword z = (dword)a * b + c + *d; ++ *d = (word)(z >> BOTAN_MP_WORD_BITS); ++ return (word)z; ++#endif + } + + } +@@ -2315,7 +2329,7 @@ namespace Botan { + + extern "C" { + +-#ifdef Q_OS_UNIX ++#if defined(Q_OS_UNIX) && defined(BOTAN_TARGET_CPU_IS_X86_FAMILY) + /* + * Helper Macros for x86 Assembly + */ +diff --git a/src/libs/3rdparty/botan/botan.h b/src/libs/3rdparty/botan/botan.h +index 2caa4a3..39b8079 100644 +--- a/src/libs/3rdparty/botan/botan.h ++++ b/src/libs/3rdparty/botan/botan.h +@@ -85,7 +85,9 @@ + #endif + + #define BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN ++#if !defined(__arm__) && !defined(__aarch64__) + #define BOTAN_TARGET_CPU_IS_X86_FAMILY ++#endif + #define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 1 + + #if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN) || \ diff --git a/meta/recipes-qt/qt5/qt5-creator/0002-Fix-compilation-with-QT_NO_ACCESSIBILITY.patch b/meta/recipes-qt/qt5/qt5-creator/0002-Fix-compilation-with-QT_NO_ACCESSIBILITY.patch new file mode 100644 index 0000000000..8d953c99d9 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-creator/0002-Fix-compilation-with-QT_NO_ACCESSIBILITY.patch @@ -0,0 +1,35 @@ +From fbae8e85e74976b79308c203d38839b364757302 Mon Sep 17 00:00:00 2001 +From: Eike Ziller +Date: Fri, 24 Jun 2016 10:23:24 +0200 +Subject: [PATCH] Fix compilation with QT_NO_ACCESSIBILITY + +Task-number: QTCREATORBUG-16446 +Change-Id: If75122c23a697f26ccf56391fe2e8d316aad6367 +Reviewed-by: hjk +--- + src/libs/utils/fancymainwindow.cpp | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp +index 9477f17..1ee425f 100644 +--- a/src/libs/utils/fancymainwindow.cpp ++++ b/src/libs/utils/fancymainwindow.cpp +@@ -159,13 +159,16 @@ public: + + m_floatButton = new DockWidgetTitleButton(this); + m_floatButton->setIcon(q->style()->standardIcon(QStyle::SP_TitleBarNormalButton, &opt, q)); +- m_floatButton->setAccessibleName(QDockWidget::tr("Float")); +- m_floatButton->setAccessibleDescription(QDockWidget::tr("Undocks and re-attaches the dock widget")); + + m_closeButton = new DockWidgetTitleButton(this); + m_closeButton->setIcon(q->style()->standardIcon(QStyle::SP_TitleBarCloseButton, &opt, q)); ++ ++#ifndef QT_NO_ACCESSIBILITY ++ m_floatButton->setAccessibleName(QDockWidget::tr("Float")); ++ m_floatButton->setAccessibleDescription(QDockWidget::tr("Undocks and re-attaches the dock widget")); + m_closeButton->setAccessibleName(QDockWidget::tr("Close")); + m_closeButton->setAccessibleDescription(QDockWidget::tr("Closes the dock widget")); ++#endif + + setActive(false); + diff --git a/meta/recipes-qt/qt5/qt5-creator/0003-Qmlpuppet-add-missing-includes.patch b/meta/recipes-qt/qt5/qt5-creator/0003-Qmlpuppet-add-missing-includes.patch new file mode 100644 index 0000000000..e64b6d9aa2 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-creator/0003-Qmlpuppet-add-missing-includes.patch @@ -0,0 +1,38 @@ +From 896624d715e20e658344ac85db91cd55d25e7211 Mon Sep 17 00:00:00 2001 +From: Marco Benelli +Date: Thu, 6 Jul 2017 09:31:41 +0200 +Subject: [PATCH] Qmlpuppet: add missing includes + +Task-number: QTCREATORBUG-18498 +Change-Id: Ie40a066508bb52f53b8ad528f9d4cf6969fc0632 +Reviewed-by: Thomas Hartmann +--- + .../qtcreator/qml/qmlpuppet/qml2puppet/instances/layoutnodeinstance.cpp | 2 ++ + .../qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/layoutnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/layoutnodeinstance.cpp +index 3f9f148..160e5c4 100644 +--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/layoutnodeinstance.cpp ++++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/layoutnodeinstance.cpp +@@ -29,6 +29,8 @@ + ****************************************************************************/ + #include "layoutnodeinstance.h" + ++#include ++ + namespace QmlDesigner { + namespace Internal { + +diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp +index 5a9342f..bacbc12 100644 +--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp ++++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp +@@ -33,6 +33,7 @@ + #include + #include + ++#include + #include + #include + #include diff --git a/meta/recipes-qt/qt5/qt5-creator/0004-Link-with-libexecinfo-on-musl.patch b/meta/recipes-qt/qt5/qt5-creator/0004-Link-with-libexecinfo-on-musl.patch new file mode 100644 index 0000000000..59687e5516 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-creator/0004-Link-with-libexecinfo-on-musl.patch @@ -0,0 +1,30 @@ +From 7fb65b82d247123c7fdb61436183f1d76067b66b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 16 Jan 2018 13:26:57 +0000 +Subject: [PATCH] Link with libexecinfo on musl + +Signed-off-by: Khem Raj +Signed-off-by: Martin Jansa +--- + src/plugins/debugger/debugger.pro | 1 + + src/plugins/qmldesigner/config.pri | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro +index c40bd63..96ab542 100644 +--- a/src/plugins/debugger/debugger.pro ++++ b/src/plugins/debugger/debugger.pro +@@ -148,3 +148,4 @@ include(qml/qml.pri) + include(namedemangler/namedemangler.pri) + + include(shared/shared.pri) ++LIBS *= -lexecinfo +diff --git a/src/plugins/qmldesigner/config.pri b/src/plugins/qmldesigner/config.pri +index 1b559b2..b485b63 100644 +--- a/src/plugins/qmldesigner/config.pri ++++ b/src/plugins/qmldesigner/config.pri +@@ -9,3 +9,4 @@ equals(TMP_BAUHAUS_NO_OUTPUT, true):DEFINES += QT_NO_DEBUG_OUTPUT \ + DEFINES += ENABLE_TEXT_VIEW + + isEmpty($$(BAUHAUS_OUTPUT_IN_TEST)):DEFINES += QDEBUG_IN_TESTS WARNINGS_IN_TESTS ++LIBS *= -lexecinfo diff --git a/meta/recipes-qt/qt5/qt5-creator/qtcreator.desktop.in b/meta/recipes-qt/qt5/qt5-creator/qtcreator.desktop.in new file mode 100644 index 0000000000..64f7c6ba08 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-creator/qtcreator.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Exec=sh -c "PATH=$PATH:@QT5_QMAKE@ qtcreator %F" +Name=Qt Creator +GenericName=C++ IDE for developing Qt applications +X-KDE-StartupNotify=true +Icon=QtProject-qtcreator +Terminal=false +Categories=Development;IDE;Qt; +MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.nokia.qt.qmakeprofile;application/vnd.nokia.xml.qt.resource; diff --git a/meta/recipes-qt/qt5/qt5-creator_3.5.1.bb b/meta/recipes-qt/qt5/qt5-creator_3.5.1.bb new file mode 100644 index 0000000000..fe9cb41404 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-creator_3.5.1.bb @@ -0,0 +1,93 @@ +SUMMARY = "Qt Creator is a new cross-platform Qt IDE" + +# Note: +# The toolchain auto detection does not work completely yet. To compile/debug +# open menu 'Tools/Options and select 'Build & Run'. In tab 'Kits' select 'Desktop' +# 'Compiler/Manage...' and add local gcc'. At 'Debugger' select +# 'System GDB at /usr/bin/gdb. + +HOMEPAGE = "https://qt-project.org/" +LICENSE = "LGPLv2.1 | GPLv3" +LIC_FILES_CHKSUM = " \ + file://LGPL_EXCEPTION.TXT;md5=f4748b0d1a72c5c8fb5dab2dd1f7fa46 \ + file://LICENSE.LGPLv21;md5=825920de5f6db2eeb1bebe625476346d \ + file://LICENSE.LGPLv3;md5=0786418af032b9e608909874f334a2d1 \ +" + +inherit qmake5 + +DEPENDS = "qtbase qtscript qtwebkit qtxmlpatterns qtx11extras qtdeclarative qttools qttools-native qtsvg qtquick1" +DEPENDS_append_libc-musl = " libexecinfo" + +# Patches from https://github.com/meta-qt5/qtcreator/commits/b5.3.1 +# 5.3.1.meta-qt5.1 +SRC_URI = " \ + http://download.qt.io/official_releases/qtcreator/3.5/${PV}/qt-creator-opensource-src-${PV}.tar.gz \ + file://0001-Fix-Allow-qt-creator-to-build-on-arm-aarch32-and-aar.patch \ + file://0002-Fix-compilation-with-QT_NO_ACCESSIBILITY.patch \ + file://0003-Qmlpuppet-add-missing-includes.patch \ + file://qtcreator.desktop.in \ +" + +SRC_URI_append_libc-musl = " file://0004-Link-with-libexecinfo-on-musl.patch" + + +SRC_URI[md5sum] = "77aef7df837eba07c7ce6037ee504c05" +SRC_URI[sha256sum] = "5925ac818a08be919094e0f28fb4c5d8896765e0975d54d353e4c50f13d63e65" + +S = "${WORKDIR}/qt-creator-opensource-src-${PV}" + +EXTRA_QMAKEVARS_PRE += "IDE_LIBRARY_BASENAME=${baselib}${QT_DIR_NAME}" + +LDFLAGS_append_libc-musl = " -lexecinfo " +do_configure_append() { + # Find native tools + sed -i 's:${STAGING_BINDIR}.*/lrelease:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/lrelease:g' ${B}/share/qtcreator/translations/Makefile + sed -i 's:${STAGING_BINDIR}.*/qdoc:${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdoc:g' ${B}/Makefile + + # see qtbase-native.inc + # sed -i 's:QT_INSTALL_DOCS=${docdir}:QT_INSTALL_DOCS=${STAGING_DATADIR_NATIVE}${QT_DIR_NAME}/doc:g' ${B}/Makefile +} + +do_compile_append() { + # build docs + #oe_runmake docs_online +} + +do_install() { + oe_runmake install INSTALL_ROOT=${D}${prefix} + oe_runmake install_inst_qch_docs INSTALL_ROOT=${D}${prefix} + # install desktop and ensure that qt-creator finds qmake + install -d ${D}${datadir}/applications + install -m 0644 ${WORKDIR}/qtcreator.desktop.in ${D}${datadir}/applications/qtcreator.desktop + sed -i 's:@QT5_QMAKE@:${OE_QMAKE_PATH_QT_BINS}:g' ${D}${datadir}/applications/qtcreator.desktop +} + +FILES_${PN} += " \ + ${datadir}/qtcreator \ + ${datadir}/icons \ + ${libdir}${QT_DIR_NAME}/qtcreator \ +" +FILES_${PN}-dbg += " \ + ${libdir}${QT_DIR_NAME}/qtcreator/.debug \ + ${libdir}${QT_DIR_NAME}/qtcreator/plugins/.debug \ + ${libdir}${QT_DIR_NAME}/qtcreator/plugins/qmldesigner/.debug \ + ${libdir}${QT_DIR_NAME}/qtcreator/plugins/qbs/plugins/.debug \ +" + +FILES_${PN}-dev += " \ + ${libdir}${QT_DIR_NAME}/qtcreator/*${SOLIBSDEV} \ +" + +RDEPENDS_${PN} += "perl" +RCONFLICTS_${PN} = "qt-creator" + +# To give best user experience out of the box.. +RRECOMMENDS_${PN} += " \ + packagegroup-qt5-toolchain-target \ + binutils \ + ccache \ + make \ + gcc-symlinks g++-symlinks cpp-symlinks \ + gdb \ +" diff --git a/meta/recipes-qt/qt5/qt5-git.inc b/meta/recipes-qt/qt5/qt5-git.inc new file mode 100644 index 0000000000..beba913547 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-git.inc @@ -0,0 +1,17 @@ +# Copyright (C) 2012-2016 O.S. Systems Software LTDA. +# Copyright (C) 2013-2018 Martin Jansa + +QT_MODULE ?= "${BPN}" +QT_MODULE_BRANCH ?= "5.10.1" +QT_MODULE_BRANCH_PARAM ?= "branch=${QT_MODULE_BRANCH}" + +# each module needs to define valid SRCREV +SRC_URI = " \ + ${QT_GIT}/${QT_MODULE}.git;name=${QT_MODULE};${QT_MODULE_BRANCH_PARAM};protocol=${QT_GIT_PROTOCOL} \ +" + +CVE_PRODUCT = "qt" + +S = "${WORKDIR}/git" + +PV = "5.10.1+git${SRCPV}" diff --git a/meta/recipes-qt/qt5/qt5-native.inc b/meta/recipes-qt/qt5/qt5-native.inc new file mode 100644 index 0000000000..76816027fe --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-native.inc @@ -0,0 +1,12 @@ +inherit native qmake5_base + +# we don't want conflicts with qt4 +OE_QMAKE_PATH_HEADERS = "${OE_QMAKE_PATH_QT_HEADERS}" +OE_QMAKE_PATH_ARCHDATA = "${OE_QMAKE_PATH_QT_ARCHDATA}" +OE_QMAKE_PATH_DATA = "${OE_QMAKE_PATH_QT_DATA}" +OE_QMAKE_PATH_BINS = "${OE_QMAKE_PATH_QT_BINS}" +OE_QMAKE_PATH_TRANSLATIONS = "${OE_QMAKE_PATH_QT_TRANSLATIONS}" +OE_QMAKE_PATH_DOCS = "${OE_QMAKE_PATH_QT_DOCS}" +OE_QMAKE_PATH_SETTINGS = "${OE_QMAKE_PATH_QT_SETTINGS}" +OE_QMAKE_PATH_EXAMPLES = "${OE_QMAKE_PATH_QT_EXAMPLES}" +OE_QMAKE_PATH_TESTS = "${OE_QMAKE_PATH_QT_TESTS}" diff --git a/meta/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb b/meta/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb new file mode 100644 index 0000000000..383145beb3 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-plugin-generic-vboxtouch_git.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "This driver extends Qt's platform support (QPA) for Virtualbox guests. \ +It uses the integrated pointer feature to create a smooth conversion from \ +the host pointer to touchscreen events in the guest, without grabbing the \ +host pointer." +SUMMARY = "Touchscreen driver for integrated mouse pointer in VirtualBox" +LICENSE = "LGPL-2.1 & GPL-3.0" +LIC_FILES_CHKSUM = " \ + file://vboxtouch.cpp;beginline=1;endline=22;md5=ca51db8f7c0606c77f702dcee4cf31d9 \ + file://evdevmousehandler.cpp;beginline=1;endline=40;md5=9081062f6e7f74b6e62ad7ecee4a71be \ +" + +PV = "1.1.4+gitr${SRCPV}" + +DEPENDS = "qtbase" + +# Needed with gcc-5.2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65801 +CXXFLAGS += "-Wno-narrowing" + +SRC_URI = "git://github.com/nemomobile/qt5-plugin-generic-vboxtouch.git" +SRCREV = "3f2bdb5a1d346f02d5ab185522271ba2288a42bb" +S = "${WORKDIR}/git/vboxtouch" + +inherit qmake5 + +FILES_${PN} += "${OE_QMAKE_PATH_PLUGINS}/generic/libvboxtouchplugin.so" +FILES_${PN}-dbg += "${OE_QMAKE_PATH_PLUGINS}/generic/.debug/" +FILES_${PN}-dev += "${OE_QMAKE_PATH_LIBS}/cmake/*" diff --git a/meta/recipes-qt/qt5/qt5-ptest.inc b/meta/recipes-qt/qt5/qt5-ptest.inc new file mode 100644 index 0000000000..56efe10688 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5-ptest.inc @@ -0,0 +1,22 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/ptest" +SRC_URI += "file://run-ptest" + +inherit ptest + +do_compile_ptest() { + mkdir -p ${B}/tests + cd ${B}/tests + ${OE_QMAKE_QMAKE} -o Makefile ${S}/tests/tests.pro + oe_runmake +} + +fakeroot do_install_ptest() { + mkdir -p ${D}${PTEST_PATH} + t=${D}${PTEST_PATH} + for var in ` find ${B}/tests/auto/ -name tst_*`; do + if [ -z ` echo ${var##*/} | grep '\.'` ]; then + echo ${var##*/} >> ${t}/tst_list + install -m 0644 ${var} ${t} + fi + done +} diff --git a/meta/recipes-qt/qt5/qt5.inc b/meta/recipes-qt/qt5/qt5.inc new file mode 100644 index 0000000000..95e3854cb2 --- /dev/null +++ b/meta/recipes-qt/qt5/qt5.inc @@ -0,0 +1,208 @@ +# Copyright (C) 2012, 2014 O.S. Systems Software LTDA. +# Copyright (C) 2013 Martin Jansa + +inherit qmake5 + +PACKAGECONFIG_OPENSSL ?= "openssl" + +PACKAGECONFIG[examples] = "" +PACKAGECONFIG[tests] = "" +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'examples', 'QT_BUILD_PARTS+=examples', '', d)}" +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'tests', 'QT_BUILD_PARTS+=tests', '', d)}" + +# we don't want conflicts with qt4 +OE_QMAKE_PATH_HEADERS = "${OE_QMAKE_PATH_QT_HEADERS}" +OE_QMAKE_PATH_ARCHDATA = "${OE_QMAKE_PATH_QT_ARCHDATA}" +OE_QMAKE_PATH_DATA = "${OE_QMAKE_PATH_QT_DATA}" +OE_QMAKE_PATH_BINS = "${OE_QMAKE_PATH_QT_BINS}" +OE_QMAKE_PATH_TRANSLATIONS = "${OE_QMAKE_PATH_QT_TRANSLATIONS}" +OE_QMAKE_PATH_DOCS = "${OE_QMAKE_PATH_QT_DOCS}" +OE_QMAKE_PATH_SETTINGS = "${OE_QMAKE_PATH_QT_SETTINGS}" +OE_QMAKE_PATH_EXAMPLES = "${OE_QMAKE_PATH_QT_EXAMPLES}" +OE_QMAKE_PATH_TESTS = "${OE_QMAKE_PATH_QT_TESTS}" + +OE_QMAKE_RECURSIVE = "" + +# If Qt5 (qtbase) is machine specific, then everything will be, +# because the (initial) qtbase configuration becomes part of Qt5/qmake +python __anonymous() { + barch = d.getVar("BUILD_ARCH", True) or '' + tarch = d.getVar("TARGET_ARCH", True) or '' + # do not do anything if we are building a native package + if barch != tarch: + tarch = d.getVar("QT_PACKAGES_ARCH", True) or '' + if tarch: + d.setVar("PACKAGE_ARCH", tarch) +} + +# Many examples come with libraries installed outside of standard libdir, +# suppress QA check complaining +INSANE_SKIP_${PN}-dbg += "libdir" +INSANE_SKIP_${PN}-examples += "libdir" +INSANE_SKIP_${PN}-examples-dbg += "libdir" +INSANE_SKIP_${PN}-examples-dev += "libdir dev-elf" + +PACKAGES =. "${PN}-qmlplugins-dbg ${PN}-tools-dbg ${PN}-plugins-dbg ${PN}-qmldesigner ${PN}-qmlplugins ${PN}-tools ${PN}-plugins ${PN}-mkspecs ${PN}-examples-dev ${PN}-examples-staticdev ${PN}-examples-dbg ${PN}-examples " + +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-dbg = "1" + +RRECOMMENDS_${PN} = " \ + ${PN}-plugins \ + ${PN}-qmlplugins \ + " +RRECOMMENDS_${PN}_class-native = "" + +RRECOMMENDS_${PN}-dev = " \ + ${PN} \ + ${PN}-mkspecs \ + ${PN}-qmldesigner \ + " + +RRECOMMENDS_${PN}-dbg = " \ + ${PN}-plugins-dbg \ + ${PN}-qmlplugins-dbg \ + " + +# extra -dbg packages +FILES_${PN}-qmlplugins-dbg = " \ + ${OE_QMAKE_PATH_QML}/*/.debug \ + ${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 \ +" +FILES_${PN}-plugins-dbg = " \ + ${OE_QMAKE_PATH_PLUGINS}/*/.debug/* \ + ${OE_QMAKE_PATH_PLUGINS}/*/*/.debug/* \ + ${OE_QMAKE_PATH_PLUGINS}/*/*/*/.debug/* \ +" + +# extra packages +FILES_${PN}-qmldesigner += " \ + ${OE_QMAKE_PATH_QML}/*/designer \ + ${OE_QMAKE_PATH_QML}/*/*/designer \ + ${OE_QMAKE_PATH_QML}/*/*/*/designer \ +" + +# qmlplugins 1-4 levels of subdirs qmldir + *{.so,*.qmltypes,*.qml,*.qmlc,*.js,*.jsc} +FILES_${PN}-qmlplugins = " \ + ${OE_QMAKE_PATH_QML}/*.qmltypes \ + ${OE_QMAKE_PATH_QML}/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_QML}/*/qmldir \ + ${OE_QMAKE_PATH_QML}/*/*.qmltypes \ + ${OE_QMAKE_PATH_QML}/*/*.qml \ + ${OE_QMAKE_PATH_QML}/*/*.qmlc \ + ${OE_QMAKE_PATH_QML}/*/*.js \ + ${OE_QMAKE_PATH_QML}/*/*.jsc \ + ${OE_QMAKE_PATH_QML}/*/*.png \ + ${OE_QMAKE_PATH_QML}/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_QML}/*/*/qmldir \ + ${OE_QMAKE_PATH_QML}/*/*/*.qmltypes \ + ${OE_QMAKE_PATH_QML}/*/*/*.qml \ + ${OE_QMAKE_PATH_QML}/*/*/*.qmlc \ + ${OE_QMAKE_PATH_QML}/*/*/*.js \ + ${OE_QMAKE_PATH_QML}/*/*/*.jsc \ + ${OE_QMAKE_PATH_QML}/*/*/*.png \ + ${OE_QMAKE_PATH_QML}/*/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_QML}/*/*/*/qmldir \ + ${OE_QMAKE_PATH_QML}/*/*/*/images \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.qmltypes \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.qml \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.qmlc \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.js \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.jsc \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.png \ + ${OE_QMAKE_PATH_QML}/*/*/*/*.metainfo \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/qmldir \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/*.qmltypes \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/*.qml \ + ${OE_QMAKE_PATH_QML}/*/*/*/*/*.qmlc \ + ${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 = " \ + ${OE_QMAKE_PATH_BINS}/* \ +" +FILES_${PN}-plugins = " \ + ${OE_QMAKE_PATH_PLUGINS}/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_PLUGINS}/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_PLUGINS}/*/*/*/*${SOLIBSDEV} \ +" +FILES_${PN}-mkspecs = "\ + ${OE_QMAKE_PATH_ARCHDATA}/mkspecs \ +" + +# modifications to normal packages +FILES_${PN} += " \ + ${OE_QMAKE_PATH_LIBS}/lib*${SOLIBS} \ + ${OE_QMAKE_PATH_LIBEXECS} \ +" +FILES_${PN}-dev += " \ + ${OE_QMAKE_PATH_LIBS}/lib*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_LIBS}/pkgconfig \ + ${OE_QMAKE_PATH_LIBS}/cmake/* \ + ${OE_QMAKE_PATH_LIBS}/*.prl \ + ${OE_QMAKE_PATH_LIBS}/*.la \ + ${OE_QMAKE_PATH_HEADERS}/* \ +" +FILES_${PN}-dbg += " \ + ${OE_QMAKE_PATH_LIBS}/.debug \ + ${OE_QMAKE_PATH_LIBEXECS}/.debug \ +" +FILES_${PN}-staticdev += " \ + ${OE_QMAKE_PATH_LIBS}/*.a \ +" +FILES_${PN}-examples = " \ + ${OE_QMAKE_PATH_EXAMPLES}/* \ +" +FILES_${PN}-examples-dev = " \ + ${OE_QMAKE_PATH_EXAMPLES}/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*/*${SOLIBSDEV} \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*/*/*${SOLIBSDEV} \ +" +FILES_${PN}-examples-dbg = " \ + ${OE_QMAKE_PATH_EXAMPLES}/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*/.debug \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*/*/.debug \ +" +FILES_${PN}-examples-staticdev = " \ + ${OE_QMAKE_PATH_EXAMPLES}/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*/*.a \ + ${OE_QMAKE_PATH_EXAMPLES}/*/*/*/*/*/*/*/*.a \ +" + +PATH_prepend = "${STAGING_DIR_NATIVE}${OE_QMAKE_PATH_QT_BINS}:" diff --git a/meta/recipes-qt/qt5/qtbase-native_git.bb b/meta/recipes-qt/qt5/qtbase-native_git.bb new file mode 100644 index 0000000000..36eeae8936 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase-native_git.bb @@ -0,0 +1,140 @@ +DESCRIPTION = "Native version of Qt/[X11|Mac|Embedded]" +DEPENDS = "zlib-native dbus-native" +SECTION = "libs" +HOMEPAGE = "http://qt-project.org" + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.LGPLv21;md5=fb91571854638f10b2e5f36562661a5a \ + file://LICENSE.LGPLv3;md5=a909b94c1c9674b2aa15ff03a86f518a \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +require qt5-native.inc +require qt5-git.inc + +# common for qtbase-native, qtbase-nativesdk and qtbase +# Patches from https://github.com/meta-qt5/qtbase/commits/b5.10-shared +# 5.10.meta-qt5-shared.2 +SRC_URI += "\ + file://0001-Add-linux-oe-g-platform.patch \ + file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \ + file://0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \ + file://0004-configure-bump-path-length-from-256-to-512-character.patch \ + file://0005-Disable-all-unknown-features-instead-of-erroring-out.patch \ + file://0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch \ + file://0007-Delete-qlonglong-and-qulonglong.patch \ + file://0008-Replace-pthread_yield-with-sched_yield.patch \ + file://0009-Add-OE-specific-specs-for-clang-compiler.patch \ + file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \ + file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \ + file://0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch \ +" + +# common for qtbase-native and nativesdk-qtbase +# Patches from https://github.com/meta-qt5/qtbase/commits/b5.10-native +# 5.10.meta-qt5-native.2 +SRC_URI += " \ + file://0013-Always-build-uic-and-qvkgen.patch \ +" + +# only for qtbase-native +SRC_URI += " \ + file://0014-Bootstrap-without-linkat-feature.patch \ +" + +CLEANBROKEN = "1" + +XPLATFORM_toolchain-clang = "linux-oe-clang" +XPLATFORM ?= "linux-oe-g++" + +PACKAGECONFIG_CONFARGS = " \ + -sysroot ${STAGING_DIR_NATIVE} \ + -no-gcc-sysroot \ + -system-zlib \ + -qt-pcre \ + -no-libjpeg \ + -no-libpng \ + -no-gif \ + -no-accessibility \ + -no-cups \ + -no-gui \ + -no-qml-debug \ + -no-sql-mysql \ + -no-sql-sqlite \ + -no-opengl \ + -no-openssl \ + -no-xcb \ + -no-icu \ + -verbose \ + -release \ + -prefix ${OE_QMAKE_PATH_PREFIX} \ + -hostprefix ${OE_QMAKE_PATH_PREFIX} \ + -bindir ${OE_QMAKE_PATH_BINS} \ + -hostbindir ${OE_QMAKE_PATH_BINS} \ + -libdir ${OE_QMAKE_PATH_LIBS} \ + -hostlibdir ${OE_QMAKE_PATH_LIBS} \ + -headerdir ${OE_QMAKE_PATH_HEADERS} \ + -archdatadir ${OE_QMAKE_PATH_ARCHDATA} \ + -datadir ${OE_QMAKE_PATH_DATA} \ + -hostdatadir ${QMAKE_MKSPEC_PATH_NATIVE} \ + -docdir ${OE_QMAKE_PATH_DOCS} \ + -sysconfdir ${OE_QMAKE_PATH_SETTINGS} \ + -no-glib \ + -no-iconv \ + -silent \ + -nomake examples \ + -nomake tests \ + -no-rpath \ + -no-feature-linkat \ + -platform ${XPLATFORM} \ +" + +# for qtbase configuration we need default settings +# since we cannot set empty set filename to a not existent file +deltask generate_qt_config_file + +do_configure_prepend() { + # Regenerate header files when they are included in source tarball + # Otherwise cmake files don't set PRIVATE_HEADERS correctly + rm -rf ${S}/include + mkdir -p ${S}/.git || true + + # Avoid qmake error "Cannot read [...]/usr/lib/qt5/mkspecs/oe-device-extra.pri: No such file or directory" + touch ${S}/mkspecs/oe-device-extra.pri + + MAKEFLAGS="${PARALLEL_MAKE}" ${S}/configure -${QT_EDITION} -confirm-license ${PACKAGECONFIG_CONFARGS} || die "Configuring qt failed. PACKAGECONFIG_CONFARGS was ${PACKAGECONFIG_CONFARGS}" +} + +do_install() { + # Fix install paths for all + find . -name "Makefile*" | xargs sed -i "s,(INSTALL_ROOT)${STAGING_DIR_NATIVE}${STAGING_DIR_NATIVE},(INSTALL_ROOT)${STAGING_DIR_NATIVE},g" + + oe_runmake install INSTALL_ROOT=${D} + + if [ -d ${D}${STAGING_DIR_NATIVE}${STAGING_DIR_NATIVE} ] ; then + echo "Some files are installed in wrong directory ${D}${STAGING_DIR_NATIVE}" + cp -ra ${D}${STAGING_DIR_NATIVE}${STAGING_DIR_NATIVE}/* ${D}${STAGING_DIR_NATIVE} + rm -rf ${D}${STAGING_DIR_NATIVE}${STAGING_DIR_NATIVE} + # remove empty dirs + TMP=`dirname ${D}/${STAGING_DIR_NATIVE}${STAGING_DIR_NATIVE}` + while test ${TMP} != ${D}${STAGING_DIR_NATIVE}; do + rmdir ${TMP} + TMP=`dirname ${TMP}`; + done + fi + + install -m 755 ${B}/bin/qfloat16-tables ${D}${OE_QMAKE_PATH_BINS} + + # since 5.9.2 something sets a very strange path to mkspec ("${_qt5Core_install_prefix}/../../../../../../../../../../usr/lib/qt5//mkspecs/linux-oe-g++") + # override this until somebody finds a better way + echo 'set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/lib${QT_DIR_NAME}/mkspecs/linux-oe-g++")' > ${D}${libdir}/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake +} + +SRCREV = "6c6ace9d23f90845fd424e474d38fe30f070775e" diff --git a/meta/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch b/meta/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch new file mode 100644 index 0000000000..07fc2f77b7 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch @@ -0,0 +1,133 @@ +From 1ed7a2e9a883fe1240d89b7b70fb0f296bb2b54f Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Mon, 15 Apr 2013 04:29:32 +0200 +Subject: [PATCH] Add linux-oe-g++ platform + +* This qmake.conf unlike other platforms reads most variables from + shell environment, because it's easier for qt recipes to export + *FLAGS or CC specific for given recipe + +* configure: extend setBootstrapVariable to convert $$(...) operator + to $(...) operator to work in qmake's Makefiles + +* configure.prf: Allow to add extra arguments to make + sometimes we would like to add -e or define some variable and respect it from both + Makefiles used in configure tests and also Makefiles to build the application + +Upstream-Status: Inappropriate [embedded specific] + too OE specific, probably cannot be upstreamed + +Change-Id: I0591ed5da0d61d7cf1509d420e6b293582f1863c +Signed-off-by: Martin Jansa +--- + configure | 2 +- + mkspecs/features/configure.prf | 4 ++-- + 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(-) + create mode 100644 mkspecs/linux-oe-g++/qmake.conf + create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h + +diff --git a/configure b/configure +index 08b49a8..5876721 100755 +--- a/configure ++++ b/configure +@@ -712,7 +712,7 @@ fi + # is where the resulting variable is written to + setBootstrapVariable() + { +- getQMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile" ++ getQMakeConf "$1" | sed 's:\$\$(:\$(:' | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile" + } + + # build qmake +diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf +index 934a18a..0f5b1b6 100644 +--- a/mkspecs/features/configure.prf ++++ b/mkspecs/features/configure.prf +@@ -46,14 +46,14 @@ defineTest(qtCompileTest) { + } + + # Clean up after previous run +- exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean") ++ exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS) distclean") + + mkpath($$test_out_dir)|error() + + !isEmpty (QMAKE_QTCONF): qtconfarg = -qtconf $$QMAKE_QTCONF + + qtRunLoggedCommand("$$test_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE)) $$qtconfarg -spec $$QMAKESPEC $$qmake_configs $$shell_quote($$test_dir)") { +- qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE") { ++ qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS)") { + log("yes$$escape_expand(\\n)") + msg = "test $$1 succeeded" + write_file($$QMAKE_CONFIG_LOG, msg, append) +diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf +index 1903e50..c093dd4 100644 +--- a/mkspecs/features/qt_functions.prf ++++ b/mkspecs/features/qt_functions.prf +@@ -69,7 +69,7 @@ defineTest(qtHaveModule) { + defineTest(qtPrepareTool) { + cmd = $$eval(QT_TOOL.$${2}.binary) + isEmpty(cmd) { +- cmd = $$[QT_HOST_BINS]/$$2 ++ cmd = $$[QT_HOST_BINS/get]/$$2 + exists($${cmd}.pl) { + $${1}_EXE = $${cmd}.pl + cmd = perl -w $$system_path($${cmd}.pl) +diff --git a/mkspecs/linux-oe-g++/qmake.conf b/mkspecs/linux-oe-g++/qmake.conf +new file mode 100644 +index 0000000..30d31ed +--- /dev/null ++++ b/mkspecs/linux-oe-g++/qmake.conf +@@ -0,0 +1,42 @@ ++# ++# qmake configuration for linux-g++ with modifications for building with OpenEmbedded ++# ++ ++MAKEFILE_GENERATOR = UNIX ++CONFIG += incremental ++QMAKE_INCREMENTAL_STYLE = sublib ++ ++include(../common/linux.conf) ++ ++# QMAKE_ (moc, uic, rcc) are gone, overwrite only ar and strip ++QMAKE_AR = $$(OE_QMAKE_AR) cqs ++QMAKE_STRIP = $$(OE_QMAKE_STRIP) ++ ++include(../common/gcc-base-unix.conf) ++ ++# *FLAGS from gcc-base.conf ++QMAKE_CFLAGS += $$(OE_QMAKE_CFLAGS) ++QMAKE_CXXFLAGS += $$(OE_QMAKE_CXXFLAGS) ++QMAKE_LFLAGS += $$(OE_QMAKE_LDFLAGS) ++ ++include(../common/g++-unix.conf) ++ ++# tc settings from g++-base.conf ++QMAKE_COMPILER = $$(OE_QMAKE_COMPILER) gcc ++QMAKE_CC = $$(OE_QMAKE_CC) ++QMAKE_CXX = $$(OE_QMAKE_CXX) ++ ++QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$(OE_QMAKE_CFLAGS) ++ ++QMAKE_LINK = $$(OE_QMAKE_LINK) ++QMAKE_LINK_SHLIB = $$(OE_QMAKE_LINK) ++QMAKE_LINK_C = $$(OE_QMAKE_LINK) ++QMAKE_LINK_C_SHLIB = $$(OE_QMAKE_LINK) ++ ++# for the SDK ++isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $$(OE_QMAKE_QT_CONFIG) ++ ++include(../oe-device-extra.pri) ++ ++load(device_config) ++load(qt_config) +diff --git a/mkspecs/linux-oe-g++/qplatformdefs.h b/mkspecs/linux-oe-g++/qplatformdefs.h +new file mode 100644 +index 0000000..5d22fb4 +--- /dev/null ++++ b/mkspecs/linux-oe-g++/qplatformdefs.h +@@ -0,0 +1 @@ ++#include "../linux-g++/qplatformdefs.h" diff --git a/meta/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch b/meta/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch new file mode 100644 index 0000000000..fa59883490 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch @@ -0,0 +1,86 @@ +From c7dd4e5de1fac8c35df79a86418b6cd552024bd0 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Sat, 6 Apr 2013 13:15:07 +0200 +Subject: [PATCH] cmake: Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS + +... to determine path to host binaries + +Upstream-Status: Inappropriate [OE specific] + +Signed-off-by: Martin Jansa +Signed-off-by: Simon Busch +Signed-off-by: Jonathan Liu + +Change-Id: Iacaa1c5531cd6dcc094891610c351673db55d7b2 +--- + src/corelib/Qt5CoreConfigExtras.cmake.in | 6 +++--- + src/dbus/Qt5DBusConfigExtras.cmake.in | 4 ++-- + src/widgets/Qt5WidgetsConfigExtras.cmake.in | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in +index 545b9a3..c991a9b 100644 +--- a/src/corelib/Qt5CoreConfigExtras.cmake.in ++++ b/src/corelib/Qt5CoreConfigExtras.cmake.in +@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qmake) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Core_check_file_exists(${imported_location}) + +@@ -20,7 +20,7 @@ if (NOT TARGET Qt5::moc) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/moc$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Core_check_file_exists(${imported_location}) + +@@ -37,7 +37,7 @@ if (NOT TARGET Qt5::rcc) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/rcc$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Core_check_file_exists(${imported_location}) + +diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in +index 1d94715..301af8f 100644 +--- a/src/dbus/Qt5DBusConfigExtras.cmake.in ++++ b/src/dbus/Qt5DBusConfigExtras.cmake.in +@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_DBus_check_file_exists(${imported_location}) + +@@ -20,7 +20,7 @@ if (NOT TARGET Qt5::qdbusxml2cpp) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_DBus_check_file_exists(${imported_location}) + +diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in +index 99d87e2..5621dc0 100644 +--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in ++++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in +@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::uic) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/uic$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Widgets_check_file_exists(${imported_location}) + diff --git a/meta/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch b/meta/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch new file mode 100644 index 0000000000..cc0a330517 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch @@ -0,0 +1,36 @@ +From f1d359e60e76867cee1df636c5c834fe829f5316 Mon Sep 17 00:00:00 2001 +From: Holger Freyther +Date: Wed, 26 Sep 2012 17:22:30 +0200 +Subject: [PATCH] qlibraryinfo: allow to set qt.conf from the outside using the + environment + +Allow to set a qt.conf from the outside using the environment. This allows +to inject new prefixes and other paths into qmake. This is needed when using +the same qmake binary to build qt/x11 and qt/embedded + +Upstream-Status: Inappropriate [embedded specific] + again very OE specific to read everything from environment (reusing the same + qmake from sstate and replacing all configured paths in it with qt.conf from + environment). + +Signed-off-by: Martin Jansa +--- + src/corelib/global/qlibraryinfo.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp +index b4ba0b5..11d4c00 100644 +--- a/src/corelib/global/qlibraryinfo.cpp ++++ b/src/corelib/global/qlibraryinfo.cpp +@@ -172,7 +172,10 @@ void QLibrarySettings::load() + QSettings *QLibraryInfoPrivate::findConfiguration() + { + #ifdef QT_BUILD_QMAKE +- QString qtconfig = qmake_libraryInfoFile(); ++ QByteArray config = getenv("OE_QMAKE_QTCONF_PATH"); ++ QString qtconfig = QFile::decodeName(config); ++ if(!QFile::exists(qtconfig)) ++ qtconfig = qmake_libraryInfoFile(); + if (QFile::exists(qtconfig)) + return new QSettings(qtconfig, QSettings::IniFormat); + #else diff --git a/meta/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch b/meta/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch new file mode 100644 index 0000000000..5a3dfea2f5 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0004-configure-bump-path-length-from-256-to-512-character.patch @@ -0,0 +1,34 @@ +From cb813ec552f965208ecfc9750a0fbf10841322fb Mon Sep 17 00:00:00 2001 +From: Denys Dmytriyenko +Date: Tue, 25 Aug 2015 10:05:15 -0400 +Subject: [PATCH] configure: bump path length from 256 to 512 characters + +Increase the path length that gets hardcoded into generated config.cpp file +from 256 to 512 characters, as nativesdk path can be quite long. + +Also update length of EXT_PREFIX and HOST_PREFIX now. + +Change-Id: If98dd57160efe9c98c36148cdf872f50b3d38118 +Signed-off-by: Denys Dmytriyenko +--- + configure.pri | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/configure.pri b/configure.pri +index ea48255..0699701 100644 +--- a/configure.pri ++++ b/configure.pri +@@ -796,10 +796,10 @@ defineTest(qtConfOutput_preparePaths) { + "static const char qt_configure_installation [12+11] = \"qt_instdate=2012-12-20\";" \ + "" \ + "/* Installation Info */" \ +- "static const char qt_configure_prefix_path_str [12+256] = \"qt_prfxpath=$$config.input.prefix\";" \ ++ "static const char qt_configure_prefix_path_str [12+512] = \"qt_prfxpath=$$config.input.prefix\";" \ + "$${LITERAL_HASH}ifdef QT_BUILD_QMAKE" \ +- "static const char qt_configure_ext_prefix_path_str [12+256] = \"qt_epfxpath=$$config.input.extprefix\";" \ +- "static const char qt_configure_host_prefix_path_str [12+256] = \"qt_hpfxpath=$$config.input.hostprefix\";" \ ++ "static const char qt_configure_ext_prefix_path_str [12+512] = \"qt_epfxpath=$$config.input.extprefix\";" \ ++ "static const char qt_configure_host_prefix_path_str [12+512] = \"qt_hpfxpath=$$config.input.hostprefix\";" \ + "$${LITERAL_HASH}endif" \ + "" \ + "static const short qt_configure_str_offsets[] = {" \ diff --git a/meta/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch b/meta/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch new file mode 100644 index 0000000000..2e261b813e --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0005-Disable-all-unknown-features-instead-of-erroring-out.patch @@ -0,0 +1,25 @@ +From 6cd8e808e0eb8fa26976da66dd3dfdd58c1d026a Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Mon, 24 Oct 2016 09:45:18 +0300 +Subject: [PATCH] Disable all unknown features instead of erroring out + +Task-number: QTBUG-56656 +Change-Id: Ib884fe33cac74439f9592b145937f6b75ced8447 +--- + mkspecs/features/qt_configure.prf | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf +index d5dcda2..501151d 100644 +--- a/mkspecs/features/qt_configure.prf ++++ b/mkspecs/features/qt_configure.prf +@@ -1251,7 +1251,8 @@ defineReplace(qtConfEvaluateSingleExpression) { + error("Expression '$$1' is accessing field '$$var' of non-local feature $${feature}.") + return($$result) + } +- error("Unknown feature object $${feature} in expression '$${1}'.") ++ warning("Unknown feature object $${feature} in expression '$${1}'.") ++ result = false + } + !qtConfCheckFeature($$feature): \ + error("Expression '$$1' is accessing non-emitted feature $${feature}.") diff --git a/meta/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch b/meta/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch new file mode 100644 index 0000000000..cf1a716f6e --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch @@ -0,0 +1,63 @@ +From e3fe48be51aa67227ac1b34c01e4c913d82866c2 Mon Sep 17 00:00:00 2001 +From: Pascal Bach +Date: Wed, 11 May 2016 15:20:41 +0200 +Subject: [PATCH] Pretend Qt5 wasn't found if OE_QMAKE_PATH_EXTERNAL_HOST_BINS + isn't set + +This prevents errors like: + +| The imported target "Qt5::Core" references the file +| +| "/qmake" +| +| but this file does not exist. Possible reasons include: + +Which happen if CMake is used without setting OE_QMAKE_PATH_EXTERNAL_HOST_BINS. +To achieve this a check for OE_QMAKE_PATH_EXTERNAL_HOST_BINS is added to each Qt5*Config.cmake +file. And in the case where the variable is not set we just return which is basically +equal to telling CMake that Qt5 wasn't found. + +Upstream-Status: Pending + The patch only makes sense in connection with other patches included here. + Specifically this are: + - 0003-Add-external-hostbindir-option.patch + - 0010-Add-external-hostbindir-option-for-native-sdk.patch + +Signed-off-by: Pascal Bach +--- + mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in | 5 +++++ + src/corelib/Qt5Config.cmake.in | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +index 55c74aa..f9ec328 100644 +--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in ++++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +@@ -9,6 +9,11 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0) + endif() + !!ENDIF + ++if(NOT DEFINED OE_QMAKE_PATH_EXTERNAL_HOST_BINS) ++ message(WARNING "Skipping because OE_QMAKE_PATH_EXTERNAL_HOST_BINS is not defined") ++ return() ++endif() ++ + !!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) + !!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) + set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +diff --git a/src/corelib/Qt5Config.cmake.in b/src/corelib/Qt5Config.cmake.in +index 75b5348..ed31888 100644 +--- a/src/corelib/Qt5Config.cmake.in ++++ b/src/corelib/Qt5Config.cmake.in +@@ -3,6 +3,11 @@ if (CMAKE_VERSION VERSION_LESS 2.8.9) + message(FATAL_ERROR \"Qt5 requires at least CMake version 2.8.9\") + endif() + ++if(NOT DEFINED OE_QMAKE_PATH_EXTERNAL_HOST_BINS) ++ message(WARNING "Skipping because OE_QMAKE_PATH_EXTERNAL_HOST_BINS is not defined") ++ return() ++endif() ++ + if (NOT Qt5_FIND_COMPONENTS) + set(Qt5_NOT_FOUND_MESSAGE \"The Qt5 package requires at least one component\") + set(Qt5_FOUND False) diff --git a/meta/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch b/meta/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch new file mode 100644 index 0000000000..fd9a9e5a56 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0007-Delete-qlonglong-and-qulonglong.patch @@ -0,0 +1,25 @@ +From efaae3535a1ac006ec1b3003258b83d905265fd3 Mon Sep 17 00:00:00 2001 +From: Huang Qiyu +Date: Wed, 7 Jun 2017 21:00:49 +0900 +Subject: [PATCH] Delete qlonglong and qulonglong + +Signed-off-by: Huang Qiyu +--- + tests/auto/corelib/thread/qatomicinteger/qatomicinteger.pro | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/tests/auto/corelib/thread/qatomicinteger/qatomicinteger.pro b/tests/auto/corelib/thread/qatomicinteger/qatomicinteger.pro +index 09458bd..59a120e 100644 +--- a/tests/auto/corelib/thread/qatomicinteger/qatomicinteger.pro ++++ b/tests/auto/corelib/thread/qatomicinteger/qatomicinteger.pro +@@ -5,10 +5,8 @@ SUBDIRS=\ + char32_t \ + int \ + long \ +- qlonglong \ + qptrdiff \ + quintptr \ +- qulonglong \ + schar \ + short \ + uchar \ diff --git a/meta/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch b/meta/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch new file mode 100644 index 0000000000..81269d2e87 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0008-Replace-pthread_yield-with-sched_yield.patch @@ -0,0 +1,60 @@ +From d79fecb4e8d2040efdc295d06c5e24bdf3cf6b60 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 27 Jul 2017 08:02:51 -0700 +Subject: [PATCH] Replace pthread_yield with sched_yield + +On Linux pthead_yield is same as sched_yield implementation wise +and sched_yield is available on all libc +implementations on Linux + +Signed-off-by: Khem Raj +--- + tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | 4 ++-- + tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp | 5 +++-- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +index 076610a..cb8431f 100644 +--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp ++++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +@@ -34,7 +34,7 @@ + #include "tst_qvariant_common.h" + + #ifdef Q_OS_LINUX +-# include ++# include + #endif + + #include +@@ -199,7 +199,7 @@ protected: + const char *nm = name.constData(); + int tp = qRegisterMetaType(nm); + #if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) +- pthread_yield(); ++ sched_yield(); + #endif + QMetaType info(tp); + if (!info.isValid()) { +diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp +index e45eda2..e64f329 100644 +--- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp ++++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp +@@ -78,6 +78,7 @@ + #include + #include + #include ++#include + #endif + + #include "private/qhostinfo_p.h" +@@ -2136,8 +2137,8 @@ public slots: + + #if defined(Q_OS_MAC) + pthread_yield_np(); +-#elif defined Q_OS_LINUX && !defined Q_OS_ANDROID +- pthread_yield(); ++#elif defined Q_OS_LINUX ++ sched_yield(); + #endif + if (!sock->waitForConnected()) { + networkTimeout = true; diff --git a/meta/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch b/meta/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch new file mode 100644 index 0000000000..c210d644b6 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0009-Add-OE-specific-specs-for-clang-compiler.patch @@ -0,0 +1,69 @@ +From aaeadb4326f1f9df7bbafa0b9fa6937504a1c035 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 3 Sep 2017 09:11:44 -0700 +Subject: [PATCH] Add OE specific specs for clang compiler + +Signed-off-by: Khem Raj +--- + mkspecs/linux-oe-clang/qmake.conf | 43 ++++++++++++++++++++++++++++++++++ + mkspecs/linux-oe-clang/qplatformdefs.h | 1 + + 2 files changed, 44 insertions(+) + create mode 100644 mkspecs/linux-oe-clang/qmake.conf + create mode 100644 mkspecs/linux-oe-clang/qplatformdefs.h + +diff --git a/mkspecs/linux-oe-clang/qmake.conf b/mkspecs/linux-oe-clang/qmake.conf +new file mode 100644 +index 0000000..ffc9f05 +--- /dev/null ++++ b/mkspecs/linux-oe-clang/qmake.conf +@@ -0,0 +1,43 @@ ++# ++# qmake configuration for linux-g++ with modifications for building with OpenEmbedded ++# ++ ++MAKEFILE_GENERATOR = UNIX ++CONFIG += incremental ++QMAKE_INCREMENTAL_STYLE = sublib ++ ++include(../common/linux.conf) ++ ++# QMAKE_ (moc, uic, rcc) are gone, overwrite only ar and strip ++QMAKE_AR = $$(OE_QMAKE_AR) cqs ++QMAKE_STRIP = $$(OE_QMAKE_STRIP) ++QMAKE_WAYLAND_SCANNER = $$(OE_QMAKE_WAYLAND_SCANNER) ++ ++include(../common/gcc-base-unix.conf) ++ ++# *FLAGS from gcc-base.conf ++QMAKE_CFLAGS += $$(OE_QMAKE_CFLAGS) ++QMAKE_CXXFLAGS += $$(OE_QMAKE_CXXFLAGS) ++QMAKE_LFLAGS += $$(OE_QMAKE_LDFLAGS) ++ ++include(../common/clang.conf) ++ ++# tc settings from g++-base.conf ++QMAKE_COMPILER = $$(OE_QMAKE_COMPILER) clang ++QMAKE_CC = $$(OE_QMAKE_CC) ++QMAKE_CXX = $$(OE_QMAKE_CXX) ++ ++QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$(OE_QMAKE_CFLAGS) ++ ++QMAKE_LINK = $$(OE_QMAKE_LINK) ++QMAKE_LINK_SHLIB = $$(OE_QMAKE_LINK) ++QMAKE_LINK_C = $$(OE_QMAKE_LINK) ++QMAKE_LINK_C_SHLIB = $$(OE_QMAKE_LINK) ++ ++# for the SDK ++isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $$(OE_QMAKE_QT_CONFIG) ++ ++include(../oe-device-extra.pri) ++ ++load(device_config) ++load(qt_config) +diff --git a/mkspecs/linux-oe-clang/qplatformdefs.h b/mkspecs/linux-oe-clang/qplatformdefs.h +new file mode 100644 +index 0000000..880c927 +--- /dev/null ++++ b/mkspecs/linux-oe-clang/qplatformdefs.h +@@ -0,0 +1 @@ ++#include "../linux-clang/qplatformdefs.h" diff --git a/meta/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch b/meta/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch new file mode 100644 index 0000000000..5fed2ff891 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch @@ -0,0 +1,32 @@ +From 7c7545fc64e78b2a4a411aa392df6f424ee27c5a Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 3 Sep 2017 09:44:48 -0700 +Subject: [PATCH] linux-clang: Invert conditional for defining QT_SOCKLEN_T + +This helps to make sure that QT_SOCKLEN_T is defined to be 'int' +only when its glibc < 2 and not for other libcswhich may define +it as per standards but are not glibc, e.g. musl + +Signed-off-by: Khem Raj +--- + mkspecs/linux-clang/qplatformdefs.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/mkspecs/linux-clang/qplatformdefs.h b/mkspecs/linux-clang/qplatformdefs.h +index d29225f..a0cdb57 100644 +--- a/mkspecs/linux-clang/qplatformdefs.h ++++ b/mkspecs/linux-clang/qplatformdefs.h +@@ -84,10 +84,10 @@ + + #undef QT_SOCKLEN_T + +-#if defined(__GLIBC__) && (__GLIBC__ >= 2) +-#define QT_SOCKLEN_T socklen_t +-#else ++#if defined(__GLIBC__) && (__GLIBC__ < 2) + #define QT_SOCKLEN_T int ++#else ++#define QT_SOCKLEN_T socklen_t + #endif + + #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) diff --git a/meta/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch b/meta/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch new file mode 100644 index 0000000000..a0aaa520ee --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch @@ -0,0 +1,25 @@ +From ba70f3ca46d921c20bebb5cb9d4b41e64bd02d8b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 3 Sep 2017 10:11:50 -0700 +Subject: [PATCH] tst_qlocale: Enable QT_USE_FENV only on glibc + +musl does not have feenableexcept function + +Signed-off-by: Khem Raj +--- + tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp +index d424e60..3eae828 100644 +--- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp ++++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp +@@ -46,7 +46,7 @@ + #include + #include + +-#if defined(Q_OS_LINUX) && !defined(__UCLIBC__) ++#if defined(Q_OS_LINUX) && defined(__GLIBC__) + # define QT_USE_FENV + #endif + diff --git a/meta/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch b/meta/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch new file mode 100644 index 0000000000..fe1fcf57ae --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch @@ -0,0 +1,33 @@ +From 81fc64f7f3a8b0554fd8d1b96b113bc04b5f0b5c Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 14 Feb 2018 17:08:43 -0800 +Subject: [PATCH] mkspecs/common/gcc-base.conf: Use -I instead of -isystem + +-isystem fails to build when code uses include_next on certain files e.g. + +qtbase/5.10.0+gitAUTOINC+50117d738a-r0/recipe-sysroot/usr/include/c++/7.3.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory + #include_next + ^~~~~~~~~~ +compilation terminated. +make[2]: *** [Makefile:11592: .obj/qgenericpluginfactory.o] Error 1 + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + mkspecs/common/gcc-base.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf +index 234f71d..ee3da02 100644 +--- a/mkspecs/common/gcc-base.conf ++++ b/mkspecs/common/gcc-base.conf +@@ -46,7 +46,7 @@ QMAKE_CFLAGS_DEBUG += -g + QMAKE_CFLAGS_SHLIB += $$QMAKE_CFLAGS_PIC + QMAKE_CFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_PIC + QMAKE_CFLAGS_APP += $$QMAKE_CFLAGS_PIC +-QMAKE_CFLAGS_ISYSTEM = -isystem ++QMAKE_CFLAGS_ISYSTEM = -I + QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses + QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden + QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions diff --git a/meta/recipes-qt/qt5/qtbase/0013-Always-build-uic-and-qvkgen.patch b/meta/recipes-qt/qt5/qtbase/0013-Always-build-uic-and-qvkgen.patch new file mode 100644 index 0000000000..3d40515f1a --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0013-Always-build-uic-and-qvkgen.patch @@ -0,0 +1,28 @@ +From 2ea3a1612452f1dc9c2febb4ae610194f67e39d6 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Sat, 16 Nov 2013 00:32:30 +0100 +Subject: [PATCH] Always build uic and qvkgen + +Even if we are not building gui or widgets. This tool is needed later +as a native tool when compiling the target. + +Change-Id: I257668ac28c22b192e7ec7736e6c23fa3be6bab6 +Signed-off-by: Mikko Levonmaa +Signed-off-by: Martin Jansa +--- + src/src.pro | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/src.pro b/src/src.pro +index a73729a..c7668b5 100644 +--- a/src/src.pro ++++ b/src/src.pro +@@ -213,7 +213,7 @@ qtConfig(gui) { + } + } + } +-SUBDIRS += src_plugins ++SUBDIRS += src_plugins src_tools_uic src_tools_qvkgen + + nacl: SUBDIRS -= src_network src_testlib + diff --git a/meta/recipes-qt/qt5/qtbase/0014-Bootstrap-without-linkat-feature.patch b/meta/recipes-qt/qt5/qtbase/0014-Bootstrap-without-linkat-feature.patch new file mode 100644 index 0000000000..c733c1566d --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/0014-Bootstrap-without-linkat-feature.patch @@ -0,0 +1,27 @@ +From 77365eda4dd1c4c26803b3f0d1f411b7416ad531 Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Fri, 24 Nov 2017 15:16:31 +0200 +Subject: [PATCH] Bootstrap without linkat feature + +qmake does not work together with pseudo when unnamed temporary files +are used with linkat. + +Upstream-Status: Inappropriate [OE specific] +[YOCTO #11996] +--- + src/corelib/global/qconfig-bootstrapped.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h +index dabb715..5b4ff86 100644 +--- a/src/corelib/global/qconfig-bootstrapped.h ++++ b/src/corelib/global/qconfig-bootstrapped.h +@@ -88,7 +88,7 @@ + #define QT_FEATURE_futimes -1 + #define QT_FEATURE_library -1 + #ifdef __linux__ +-# define QT_FEATURE_linkat 1 ++# define QT_FEATURE_linkat -1 + #else + # define QT_FEATURE_linkat -1 + #endif diff --git a/meta/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake b/meta/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake new file mode 100644 index 0000000000..6f0042b251 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake @@ -0,0 +1 @@ +set( OE_QMAKE_PATH_EXTERNAL_HOST_BINS $ENV{OE_QMAKE_PATH_HOST_BINS} ) diff --git a/meta/recipes-qt/qt5/qtbase_git.bb b/meta/recipes-qt/qt5/qtbase_git.bb new file mode 100644 index 0000000000..6532dde212 --- /dev/null +++ b/meta/recipes-qt/qt5/qtbase_git.bb @@ -0,0 +1,247 @@ +require qt5.inc +require qt5-git.inc +require qt5-ptest.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.LGPLv21;md5=fb91571854638f10b2e5f36562661a5a \ + file://LICENSE.LGPLv3;md5=a909b94c1c9674b2aa15ff03a86f518a \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +# common for qtbase-native, qtbase-nativesdk and qtbase +# Patches from https://github.com/meta-qt5/qtbase/commits/b5.10-shared +# 5.10.meta-qt5-shared.2 +SRC_URI += "\ + file://0001-Add-linux-oe-g-platform.patch \ + file://0002-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS.patch \ + file://0003-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \ + file://0004-configure-bump-path-length-from-256-to-512-character.patch \ + file://0005-Disable-all-unknown-features-instead-of-erroring-out.patch \ + file://0006-Pretend-Qt5-wasn-t-found-if-OE_QMAKE_PATH_EXTERNAL_H.patch \ + file://0007-Delete-qlonglong-and-qulonglong.patch \ + file://0008-Replace-pthread_yield-with-sched_yield.patch \ + file://0009-Add-OE-specific-specs-for-clang-compiler.patch \ + file://0010-linux-clang-Invert-conditional-for-defining-QT_SOCKL.patch \ + file://0011-tst_qlocale-Enable-QT_USE_FENV-only-on-glibc.patch \ + file://0012-mkspecs-common-gcc-base.conf-Use-I-instead-of-isyste.patch \ +" + +# LGPL-3.0 is used only in src/plugins/platforms/android/extract.cpp + +# for syncqt +RDEPENDS_${PN}-tools += "perl" + +# workaround for gold bug: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=842304 +# https://sourceware.org/bugzilla/show_bug.cgi?id=21712 +# it's triggered only in combination of gold and security_flags.inc, +# because security_flags.inc now enable pie by default. +# Adding -no-pie or changing -fuse-ld=gold to -fuse-ld=bfd +# works around this issue, will use -fuse-ld=bfd as it's considered +# binutils bug. +# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread +# .obj/tst_qmetatype.o(.qtversion+0x0): error: unexpected reloc 3 against global symbol qt_version_tag without base register in object file when generating a position-independent output file +# collect2: error: ld returned 1 exit status +# +# with -no-pie: +# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -no-pie -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread +# +# with -fuse-ld=gold replaced with -fuse-ld=bfd: +# OE @ ~/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/tests/auto/corelib/kernel/qmetatype $ i586-oe-linux-g++ -m32 -march=i586 --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot -Wl,-O1 -fuse-ld=bfd -Wl,--enable-new-dtags -o tst_qmetatype .obj/tst_qmetatype.o -L/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/build/lib -lQt5Test -lQt5Core -lpthread +# +# http://errors.yoctoproject.org/Errors/Details/150329/ +QT_CONFIG_FLAGS_GOLD_x86 = "-no-use-gold-linker" +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +# separate some parts of PACKAGECONFIG which are often changed +PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)}" +PACKAGECONFIG_FB ?= "${@bb.utils.contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)}" +PACKAGECONFIG_X11 ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xcb xinput2 glib xkb xkbcommon-evdev', '', d)}" +PACKAGECONFIG_FONTS ?= "" +PACKAGECONFIG_SYSTEM ?= "jpeg libpng zlib" +PACKAGECONFIG_DISTRO ?= "" +# Either release or debug, can be overridden in bbappends +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)} \ +" + +PACKAGECONFIG ?= " \ + ${PACKAGECONFIG_RELEASE} \ + ${PACKAGECONFIG_DEFAULT} \ + ${PACKAGECONFIG_OPENSSL} \ + ${PACKAGECONFIG_GL} \ + ${PACKAGECONFIG_FB} \ + ${PACKAGECONFIG_X11} \ + ${PACKAGECONFIG_FONTS} \ + ${PACKAGECONFIG_SYSTEM} \ + ${PACKAGECONFIG_DISTRO} \ +" + +PACKAGECONFIG[release] = "-release,-debug" +PACKAGECONFIG[debug] = "" +PACKAGECONFIG[developer] = "-developer-build" +PACKAGECONFIG[qml-debug] = "-qml-debug,-no-qml-debug" +PACKAGECONFIG[optimize-size] = "-optimize-size" +PACKAGECONFIG[sm] = "-sm,-no-sm" +PACKAGECONFIG[tests] = "-make tests,-nomake tests" +PACKAGECONFIG[examples] = "-make examples -compile-examples,-nomake examples" +PACKAGECONFIG[tools] = "-make tools,-nomake tools" +# only for completeness, configure will add libs even if you try to explicitly remove it +PACKAGECONFIG[libs] = "-make libs" +# accessibility is required to compile qtquickcontrols +PACKAGECONFIG[accessibility] = "-accessibility,-no-accessibility" +PACKAGECONFIG[glib] = "-glib,-no-glib,glib-2.0" +# use either system freetype or bundled freetype, if you disable freetype completely +# fontdatabases/basic/qbasicfontdatabase.cpp will fail to build and system freetype +# works only together with fontconfig +PACKAGECONFIG[freetype] = "-system-freetype,-qt-freetype,freetype" +PACKAGECONFIG[harfbuzz] = "-system-harfbuzz,-no-harfbuzz,harfbuzz" +PACKAGECONFIG[jpeg] = "-system-libjpeg,-no-libjpeg,jpeg" +PACKAGECONFIG[libpng] = "-system-libpng,-no-libpng,libpng" +PACKAGECONFIG[gif] = "-gif,-no-gif" +PACKAGECONFIG[ico] = "-ico,-no-ico" +PACKAGECONFIG[zlib] = "-system-zlib,-qt-zlib,zlib" +PACKAGECONFIG[pcre] = "-system-pcre,-qt-pcre,pcre2" +PACKAGECONFIG[eglfs] = "-eglfs,-no-eglfs,drm" +PACKAGECONFIG[gl] = "-opengl desktop,,virtual/libgl" +PACKAGECONFIG[gles2] = "-opengl es2,,virtual/libgles2 virtual/egl" +PACKAGECONFIG[no-opengl] = "-no-opengl" +PACKAGECONFIG[tslib] = "-tslib,-no-tslib,tslib" +PACKAGECONFIG[cups] = "-cups,-no-cups,cups" +PACKAGECONFIG[dbus] = "-dbus,-no-dbus,dbus" +PACKAGECONFIG[xcb] = "-xcb -xcb-xlib -system-xcb,-no-xcb,libxcb xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil" +PACKAGECONFIG[sql-ibase] = "-sql-ibase,-no-sql-ibase" +PACKAGECONFIG[sql-mysql] = "-sql-mysql,-no-sql-mysql,mysql5" +PACKAGECONFIG[sql-psql] = "-sql-psql,-no-sql-psql,postgresql" +PACKAGECONFIG[sql-odbc] = "-sql-odbc,-no-sql-odbc" +PACKAGECONFIG[sql-oci] = "-sql-oci,-no-sql-oci" +PACKAGECONFIG[sql-tds] = "-sql-tds,-no-sql-tds" +PACKAGECONFIG[sql-db2] = "-sql-db2,-no-sql-db2" +PACKAGECONFIG[sql-sqlite2] = "-sql-sqlite2,-no-sql-sqlite2,sqlite" +PACKAGECONFIG[sql-sqlite] = "-sql-sqlite -system-sqlite,-no-sql-sqlite,sqlite3" +PACKAGECONFIG[xinput2] = "-xinput2,-no-xinput2,libxi" +PACKAGECONFIG[iconv] = "-iconv,-no-iconv,virtual/libiconv" +PACKAGECONFIG[xkb] = "-xkb,-no-xkb -no-xkbcommon,libxkbcommon" +PACKAGECONFIG[xkbcommon-evdev] = "-xkbcommon-evdev,-no-xkbcommon-evdev,libxkbcommon,xkeyboard-config" +PACKAGECONFIG[evdev] = "-evdev,-no-evdev" +PACKAGECONFIG[mtdev] = "-mtdev,-no-mtdev,mtdev" +# depends on glib +PACKAGECONFIG[fontconfig] = "-fontconfig,-no-fontconfig,fontconfig" +PACKAGECONFIG[gtk] = "-gtk,-no-gtk,gtk+3" +PACKAGECONFIG[directfb] = "-directfb,-no-directfb,directfb" +PACKAGECONFIG[linuxfb] = "-linuxfb,-no-linuxfb" +PACKAGECONFIG[kms] = "-kms,-no-kms,drm virtual/egl" +PACKAGECONFIG[gbm] = "-gbm,-no-gbm,virtual/mesa" +PACKAGECONFIG[icu] = "-icu,-no-icu,icu" +PACKAGECONFIG[udev] = "-libudev,-no-libudev,udev" +PACKAGECONFIG[openssl] = "-openssl,-no-openssl,openssl,libssl" +PACKAGECONFIG[widgets] = "-widgets,-no-widgets" +PACKAGECONFIG[libproxy] = "-libproxy,-no-libproxy,libproxy" +PACKAGECONFIG[libinput] = "-libinput,-no-libinput,libinput" +PACKAGECONFIG[journald] = "-journald,-no-journald,systemd" + +QT_CONFIG_FLAGS_GOLD = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '-use-gold-linker', '-no-use-gold-linker', d)}" +QT_CONFIG_FLAGS += " \ + ${QT_CONFIG_FLAGS_GOLD} \ + -shared \ + -silent \ + -no-pch \ + -no-rpath \ + -pkg-config \ + ${PACKAGECONFIG_CONFARGS} \ +" + +# for qtbase configuration we need default settings +# since we cannot set empty set filename to a not existent file +deltask generate_qt_config_file + +XPLATFORM_toolchain-clang = "linux-oe-clang" +XPLATFORM ?= "linux-oe-g++" + +do_configure() { + # Regenerate header files when they are included in source tarball + # Otherwise cmake files don't set PRIVATE_HEADERS correctly + rm -rf ${S}/include + mkdir -p ${S}/.git || true + + # Avoid qmake error "Cannot read [...]/usr/lib/qt5/mkspecs/oe-device-extra.pri: No such file or directory" during configuration + touch ${S}/mkspecs/oe-device-extra.pri + + ${S}/configure -v \ + -${QT_EDITION} -confirm-license \ + -sysroot ${STAGING_DIR_TARGET} \ + -prefix ${OE_QMAKE_PATH_PREFIX} \ + -bindir ${OE_QMAKE_PATH_BINS} \ + -libdir ${OE_QMAKE_PATH_LIBS} \ + -datadir ${OE_QMAKE_PATH_DATA} \ + -sysconfdir ${OE_QMAKE_PATH_SETTINGS} \ + -docdir ${OE_QMAKE_PATH_DOCS} \ + -headerdir ${OE_QMAKE_PATH_HEADERS} \ + -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} \ + -examplesdir ${OE_QMAKE_PATH_EXAMPLES} \ + -hostprefix ${OE_QMAKE_PATH_HOST_PREFIX} \ + -hostlibdir ${OE_QMAKE_PATH_HOST_LIBS} \ + -hostbindir ${OE_QMAKE_PATH_HOST_BINS} \ + -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \ + -hostdatadir ${OE_QMAKE_PATH_HOST_DATA} \ + -platform ${OE_QMAKE_PLATFORM_NATIVE} \ + -xplatform ${XPLATFORM} \ + ${QT_CONFIG_FLAGS} +} + +do_install_append() { + # Avoid qmake error "Cannot read [...]/usr/lib/qt5/mkspecs/oe-device-extra.pri: No such file or directory" + touch ${D}/${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/oe-device-extra.pri + + # Replace host paths with qmake built-in properties + sed -i -e 's|${STAGING_DIR_NATIVE}|$$[QT_HOST_PREFIX/get]|g' \ + -e 's|${STAGING_DIR_HOST}|$$[QT_SYSROOT]|g' \ + ${D}/${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/*.pri + + # Update the mkspecs to include the default OE toolchain config for the target + conf=${D}/${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs/${XPLATFORM}/qmake.conf + + # qmake already knows the sysroot, see above $$[QT_SYSROOT], so remove the hardcoded sysroot + OE_QMAKE_CC_NO_SYSROOT=$(echo ${OE_QMAKE_CC} | sed -e 's!--sysroot=[^ ]*!!g') + OE_QMAKE_CXX_NO_SYSROOT=$(echo ${OE_QMAKE_CXX} | sed -e 's!--sysroot=[^ ]*!!g') + OE_QMAKE_LINK_NO_SYSROOT=$(echo ${OE_QMAKE_LINK} | sed -e 's!--sysroot=[^ ]*!!g') + + echo "" >> $conf + echo "# default compiler options which can be overwritten from the environment" >> $conf + echo "isEmpty(QMAKE_AR): QMAKE_AR = ${OE_QMAKE_AR} cqs" >> $conf + echo "isEmpty(QMAKE_CC): QMAKE_CC = $OE_QMAKE_CC_NO_SYSROOT" >> $conf + echo "isEmpty(QMAKE_CFLAGS): QMAKE_CFLAGS = ${OE_QMAKE_CFLAGS}" >> $conf + echo "isEmpty(QMAKE_CXX): QMAKE_CXX = $OE_QMAKE_CXX_NO_SYSROOT" >> $conf + echo "isEmpty(QMAKE_CXXFLAGS): QMAKE_CXXFLAGS = ${OE_QMAKE_CXXFLAGS}" >> $conf + echo "isEmpty(QMAKE_LINK): QMAKE_LINK = $OE_QMAKE_LINK_NO_SYSROOT" >> $conf + echo "isEmpty(QMAKE_LINK_SHLIB): QMAKE_LINK_SHLIB = $OE_QMAKE_LINK_NO_SYSROOT" >> $conf + echo "isEmpty(QMAKE_LINK_C): QMAKE_LINK_C = $OE_QMAKE_LINK_NO_SYSROOT" >> $conf + echo "isEmpty(QMAKE_LINK_C_SHLIB): QMAKE_LINK_C_SHLIB = $OE_QMAKE_LINK_NO_SYSROOT" >> $conf + echo "isEmpty(QMAKE_LFLAGS): QMAKE_LFLAGS = ${OE_QMAKE_LDFLAGS}" >> $conf + echo "isEmpty(QMAKE_STRIP): QMAKE_STRIP = ${TARGET_PREFIX}strip" >> $conf + + generate_target_qt_config_file ${D}${OE_QMAKE_PATH_BINS}/qt.conf +} + +# mkspecs have mac specific scripts that depend on perl and bash +INSANE_SKIP_${PN}-mkspecs += "file-rdeps" + +RRECOMMENDS_${PN}-plugins += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11-locale', '', d)}" + +SRCREV = "6c6ace9d23f90845fd424e474d38fe30f070775e" diff --git a/meta/recipes-qt/qt5/qtcanvas3d_git.bb b/meta/recipes-qt/qt5/qtcanvas3d_git.bb new file mode 100644 index 0000000000..af0b1186ce --- /dev/null +++ b/meta/recipes-qt/qt5/qtcanvas3d_git.bb @@ -0,0 +1,13 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "LGPL-3.0 | GPL-3.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \ +" + +DEPENDS = "qtdeclarative" + +SRCREV = "0eecd96a7b83e8b1fc2811ec366b4ca1980296e0" diff --git a/meta/recipes-qt/qt5/qtcharts_git.bb b/meta/recipes-qt/qt5/qtcharts_git.bb new file mode 100644 index 0000000000..a2d4ced2b0 --- /dev/null +++ b/meta/recipes-qt/qt5/qtcharts_git.bb @@ -0,0 +1,15 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GPL-3.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ +" + +DEPENDS += "qtbase qtdeclarative qtmultimedia" + +SRCREV = "9a4f99f518a49716cc9cc300eb456c6b13f9e8d1" + +# The same issue as in qtbase: +# http://errors.yoctoproject.org/Errors/Details/152641/ +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" diff --git a/meta/recipes-qt/qt5/qtconnectivity_git.bb b/meta/recipes-qt/qt5/qtconnectivity_git.bb new file mode 100644 index 0000000000..32ccdced5b --- /dev/null +++ b/meta/recipes-qt/qt5/qtconnectivity_git.bb @@ -0,0 +1,22 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtbase qtdeclarative" + +inherit bluetooth + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}" +PACKAGECONFIG[bluez] = "-feature-bluez,-no-feature-bluez,${BLUEZ}" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +SRCREV = "2331b915d207fe794a07b834ec2bf8578965bc4d" diff --git a/meta/recipes-qt/qt5/qtdatavis3d_git.bb b/meta/recipes-qt/qt5/qtdatavis3d_git.bb new file mode 100644 index 0000000000..ea0ba59d27 --- /dev/null +++ b/meta/recipes-qt/qt5/qtdatavis3d_git.bb @@ -0,0 +1,11 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GPL-3.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ +" + +DEPENDS += "qtbase qtdeclarative qtmultimedia qtxmlpatterns" + +SRCREV = "397e50147407c16a16b6505558992ca3180f9aff" diff --git a/meta/recipes-qt/qt5/qtdeclarative_git.bb b/meta/recipes-qt/qt5/qtdeclarative_git.bb new file mode 100644 index 0000000000..d6f468fc2d --- /dev/null +++ b/meta/recipes-qt/qt5/qtdeclarative_git.bb @@ -0,0 +1,35 @@ +require qt5.inc +require qt5-git.inc +require qt5-ptest.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtbase" + +PACKAGECONFIG ??= "qtxmlpatterns" +PACKAGECONFIG[qtxmlpatterns] = ",,qtxmlpatterns" + +do_configure_prepend() { + # disable qtxmlpatterns test if it isn't enabled by PACKAGECONFIG + sed -e 's/^\(qtHaveModule(xmlpatterns)\)/OE_QTXMLPATTERNS_ENABLED:\1/' -i ${S}/src/imports/imports.pro + sed -e 's/^\(!qtHaveModule(xmlpatterns)\)/!OE_QTXMLPATTERNS_ENABLED|\1/' -i ${S}/tests/auto/quick/quick.pro +} + +do_install_append_class-nativesdk() { + # qml files not needed in nativesdk + rm -rf ${D}${OE_QMAKE_PATH_QML} +} + +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtxmlpatterns', 'CONFIG+=OE_QTXMLPATTERNS_ENABLED', '', d)}" + +SRCREV = "3e91062877c0853aff693799bc5e33cdf7aaad42" + +BBCLASSEXTEND =+ "native nativesdk" diff --git a/meta/recipes-qt/qt5/qtenginio_git.bb b/meta/recipes-qt/qt5/qtenginio_git.bb new file mode 100644 index 0000000000..30d5eeae06 --- /dev/null +++ b/meta/recipes-qt/qt5/qtenginio_git.bb @@ -0,0 +1,16 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=f70ee9a6c44ae8917586fea34dff0ab5 \ +" + +DEPENDS += "qtbase qtdeclarative qtxmlpatterns" + +QT_MODULE_BRANCH = "dev" +SRCREV = "23603a3b088178d8ec92fddb240e5a5c55d77d5a" diff --git a/meta/recipes-qt/qt5/qtgamepad_git.bb b/meta/recipes-qt/qt5/qtgamepad_git.bb new file mode 100644 index 0000000000..e91754cd36 --- /dev/null +++ b/meta/recipes-qt/qt5/qtgamepad_git.bb @@ -0,0 +1,17 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GPL-3.0 | LGPL-3.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv3;md5=c4fe8c6de4eef597feec6e90ed62e962 \ + file://LICENSE.GPL;md5=d32239bcb673463ab874e80d47fae504 \ +" + +DEPENDS += "qtbase qtxmlpatterns qtdeclarative" + +PACKAGECONFIG ??= "sdl2" +PACKAGECONFIG[sdl2] = "-feature-sdl2,-no-feature-sdl2,libsdl2" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +SRCREV = "e6f366618dc9a3d232446197d6fea7c814e53828" diff --git a/meta/recipes-qt/qt5/qtgraphicaleffects_git.bb b/meta/recipes-qt/qt5/qtgraphicaleffects_git.bb new file mode 100644 index 0000000000..658420b522 --- /dev/null +++ b/meta/recipes-qt/qt5/qtgraphicaleffects_git.bb @@ -0,0 +1,21 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +DEPENDS += "qtdeclarative" + +RDEPENDS_${PN}-dev = "" + +# The same issue as in qtbase: +# http://errors.yoctoproject.org/Errors/Build/44912/ +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +SRCREV = "a38c4da7b598f5a185d7c9f824482d418353e6bf" diff --git a/meta/recipes-qt/qt5/qtimageformats_git.bb b/meta/recipes-qt/qt5/qtimageformats_git.bb new file mode 100644 index 0000000000..d804b0194d --- /dev/null +++ b/meta/recipes-qt/qt5/qtimageformats_git.bb @@ -0,0 +1,29 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtbase" + +PACKAGECONFIG ?= "libtiff" +# Currently we don't have recipe for libmng, but lock it anyway so qtimageformats stay deterministic even when libmng is introduced +PACKAGECONFIG[jasper] = ",CONFIG+=done_config_jasper,jasper" +PACKAGECONFIG[libmng] = ",CONFIG+=done_config_libmng,libmng" +PACKAGECONFIG[libtiff] = ",CONFIG+=done_config_libtiff,tiff" +PACKAGECONFIG[libwebp] = ",CONFIG+=done_config_libwebp,libwebp" + +EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}" + +SRCREV = "892d4a0df7dccc6e70586835bb1211cf1b79bc69" diff --git a/meta/recipes-qt/qt5/qtknx_git.bb b/meta/recipes-qt/qt5/qtknx_git.bb new file mode 100644 index 0000000000..fa981abb73 --- /dev/null +++ b/meta/recipes-qt/qt5/qtknx_git.bb @@ -0,0 +1,14 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "(GPL-3.0 & The-Qt-Company-GPL-Exception-1.0) | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ +" + +DEPENDS += "qtbase" + +QT_MODULE_BRANCH = "5.10" + +SRCREV = "29c34e8f072afd01002ed3847d752b4e065f977e" diff --git a/meta/recipes-qt/qt5/qtlocation_git.bb b/meta/recipes-qt/qt5/qtlocation_git.bb new file mode 100644 index 0000000000..03f3aca097 --- /dev/null +++ b/meta/recipes-qt/qt5/qtlocation_git.bb @@ -0,0 +1,37 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "Apache-2.0 & MIT & openssl & BSL-1.0 & GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://src/3rdparty/mapbox-gl-native/LICENSE.md;md5=0ab9025299bcee16858021d557f09449 \ +" + +DEPENDS += "qtbase qtxmlpatterns qtdeclarative qtquickcontrols" + +PACKAGECONFIG ??= "" +# older geoclue 0.12.99 is needed +PACKAGECONFIG[geoclue] = ",,geoclue" +PACKAGECONFIG[gypsy] = "-feature-gypsy,-no-feature-gypsy,gconf gypsy" +PACKAGECONFIG[geoservices_mapboxgl] = "-feature-geoservices_mapboxgl,-no-feature-geoservices_mapboxgl" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +# The same issue as in qtbase: +# http://errors.yoctoproject.org/Errors/Details/152640/ +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +SRC_URI += " \ + ${QT_GIT}/qtlocation-mapboxgl.git;name=qtlocation-mapboxgl;branch=upstream/qt-staging;protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty/mapbox-gl-native \ +" + +SRCREV_qtlocation = "ec00ff89bee900a1b8925e227a892bc57839cd60" +SRCREV_qtlocation-mapboxgl = "8c1be4ec01ef46bf453856531ebf53b48ce3dbe7" + +SRCREV_FORMAT = "qtlocation_qtlocation-mapboxgl" diff --git a/meta/recipes-qt/qt5/qtmqtt_git.bb b/meta/recipes-qt/qt5/qtmqtt_git.bb new file mode 100644 index 0000000000..90c255d721 --- /dev/null +++ b/meta/recipes-qt/qt5/qtmqtt_git.bb @@ -0,0 +1,14 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "(GPL-3.0 & The-Qt-Company-GPL-Exception-1.0) | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ +" + +DEPENDS += "qtbase" + +QT_MODULE_BRANCH = "5.10" + +SRCREV = "2c3c2a41c55a179332ec2a076856990f36dd5ef9" diff --git a/meta/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch b/meta/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch new file mode 100644 index 0000000000..4fb0f7241f --- /dev/null +++ b/meta/recipes-qt/qt5/qtmultimedia/0001-qtmultimedia-fix-a-conflicting-declaration.patch @@ -0,0 +1,100 @@ +From ec1740a7bce48435e65ede530e0b96593ac619ea Mon Sep 17 00:00:00 2001 +From: Wenlin Kang +Date: Thu, 8 Sep 2016 12:18:13 +0800 +Subject: [PATCH] qtmultimedia: fix a conflicting declaration + +Use lgl2.h instead of gl2.h and gl2ext.h, +fix a "conflicting declaration" error. + +Signed-off-by: Wenlin Kang +--- + src/plugins/videonode/imx6/lgl2.h | 46 ++++++++++++++++++++++ + .../videonode/imx6/qsgvivantevideomaterial.cpp | 5 ++- + src/plugins/videonode/imx6/qsgvivantevideonode.cpp | 5 ++- + 3 files changed, 52 insertions(+), 4 deletions(-) + create mode 100644 src/plugins/videonode/imx6/lgl2.h + +diff --git a/src/plugins/videonode/imx6/lgl2.h b/src/plugins/videonode/imx6/lgl2.h +new file mode 100644 +index 0000000..2423697 +--- /dev/null ++++ b/src/plugins/videonode/imx6/lgl2.h +@@ -0,0 +1,46 @@ ++#ifndef __L_GL2_H__ ++#define __L_GL2_H__ ++ ++// this file comes from and , ++// it's a light gl2.h. ++ ++/*------------------------------------------------------------------------- ++ * Definition of KHRONOS_APIENTRY ++ *------------------------------------------------------------------------- ++ * This follows the return type of the function and precedes the function ++ * name in the function prototype. ++ */ ++#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) ++ /* Win32 but not WinCE */ ++# define KHRONOS_APIENTRY __stdcall ++#else ++# define KHRONOS_APIENTRY ++#endif ++ ++#ifndef GL_APIENTRY ++# define GL_APIENTRY KHRONOS_APIENTRY ++#endif ++ ++#ifndef GL_APIENTRYP ++# define GL_APIENTRYP GL_APIENTRY* ++#endif ++ ++typedef void GLvoid; ++typedef unsigned int GLenum; ++typedef unsigned int GLuint; ++typedef int GLsizei; ++ ++#define GL_VIV_YV12 0x8FC0 ++#define GL_VIV_NV12 0x8FC1 ++#define GL_VIV_YUY2 0x8FC2 ++#define GL_VIV_UYVY 0x8FC3 ++#define GL_VIV_NV21 0x8FC4 ++#define GL_VIV_I420 0x8FC5 ++ ++typedef void (GL_APIENTRYP PFNGLTEXDIRECTVIVMAPPROC) (GLenum Target, GLsizei Width, GLsizei Height, GLenum Format, GLvoid ** Logical, const GLuint * Physical); ++typedef void (GL_APIENTRYP PFNGLTEXDIRECTMAPVIVPROC) (GLenum Target, GLsizei Width, GLsizei Height, GLenum Format, GLvoid ** Logical, const GLuint * Physical); ++typedef void (GL_APIENTRYP PFNGLTEXDIRECTVIVPROC) (GLenum Target, GLsizei Width, GLsizei Height, GLenum Format, GLvoid ** Pixels); ++typedef void (GL_APIENTRYP PFNGLTEXDIRECTINVALIDATEVIVPROC) (GLenum Target); ++typedef void (GL_APIENTRYP PFNGLTEXDIRECTTILEDMAPVIVPROC) (GLenum Target, GLsizei Width, GLsizei Height, GLenum Format, GLvoid ** Logical, const GLuint * Physical); ++ ++#endif +diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp +index 465ccfa..40e7592 100644 +--- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp ++++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp +@@ -37,8 +37,9 @@ + ** + ****************************************************************************/ + +-#include +-#include ++// use lgl2.h instead of and , ++// fixes a conflicting declaration issue. ++#include "lgl2.h" + + #include "qsgvivantevideomaterial.h" + #include "qsgvivantevideomaterialshader.h" +diff --git a/src/plugins/videonode/imx6/qsgvivantevideonode.cpp b/src/plugins/videonode/imx6/qsgvivantevideonode.cpp +index c8d83b4..5b1b8f2 100644 +--- a/src/plugins/videonode/imx6/qsgvivantevideonode.cpp ++++ b/src/plugins/videonode/imx6/qsgvivantevideonode.cpp +@@ -37,8 +37,9 @@ + ** + ****************************************************************************/ + +-#include +-#include ++// use lgl2.h instead of and , ++// fixes a conflicting declaration issue. ++#include "lgl2.h" + + #include "qsgvivantevideonode.h" + #include "qsgvivantevideomaterialshader.h" diff --git a/meta/recipes-qt/qt5/qtmultimedia_git.bb b/meta/recipes-qt/qt5/qtmultimedia_git.bb new file mode 100644 index 0000000000..efe848f005 --- /dev/null +++ b/meta/recipes-qt/qt5/qtmultimedia_git.bb @@ -0,0 +1,39 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtdeclarative" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}" +PACKAGECONFIG[alsa] = "-alsa,-no-alsa,alsa-lib" +PACKAGECONFIG[pulseaudio] = "-pulseaudio,-no-pulseaudio,pulseaudio" +PACKAGECONFIG[openal] = "-feature-openal,-no-feature-openal,openal-soft" +PACKAGECONFIG[gstreamer] = "-gstreamer 1.0,,gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" +PACKAGECONFIG[gstreamer010] = "-gstreamer 0.10,,gstreamer gst-plugins-base gst-plugins-bad" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +# Disable GStreamer if completely disabled +EXTRA_QMAKEVARS_CONFIGURE += "${@bb.utils.contains_any('PACKAGECONFIG', 'gstreamer gstreamer010', '', '-no-gstreamer', d)}" + +CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DMESA_EGL_NO_X11_HEADERS=1', d)}" +# Patches from https://github.com/meta-qt5/qtmultimedia/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += "\ + file://0001-qtmultimedia-fix-a-conflicting-declaration.patch \ +" + +# The same issue as in qtbase: +# http://errors.yoctoproject.org/Errors/Build/44914/ +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +SRCREV = "038716bb1f2d9b95f2d638e2d61d297563343af9" diff --git a/meta/recipes-qt/qt5/qtnetworkauth_git.bb b/meta/recipes-qt/qt5/qtnetworkauth_git.bb new file mode 100644 index 0000000000..0180376e3e --- /dev/null +++ b/meta/recipes-qt/qt5/qtnetworkauth_git.bb @@ -0,0 +1,12 @@ +LICENSE = "BSD & GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +require qt5.inc +require qt5-git.inc + +DEPENDS += "qtbase" + +SRCREV = "8f4f2e0cae642ff5eb0b87ae1d4e9c5e6ccf2bd8" diff --git a/meta/recipes-qt/qt5/qtpurchasing_git.bb b/meta/recipes-qt/qt5/qtpurchasing_git.bb new file mode 100644 index 0000000000..adda211c13 --- /dev/null +++ b/meta/recipes-qt/qt5/qtpurchasing_git.bb @@ -0,0 +1,13 @@ +require qt5.inc +require qt5-git.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "Apache-2.0 & BSD & ( LGPL-3.0 | GPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv3;md5=b8c75190712063cde04e1f41b6fdad98 \ + file://LICENSE.GPLv3;md5=40f9bf30e783ddc201497165dfb32afb \ +" + +DEPENDS += "qtbase qtdeclarative" + +SRCREV = "d925245573a76b23b231a93fa4674fb340f226a7" diff --git a/meta/recipes-qt/qt5/qtquick1_git.bb b/meta/recipes-qt/qt5/qtquick1_git.bb new file mode 100644 index 0000000000..85b8462931 --- /dev/null +++ b/meta/recipes-qt/qt5/qtquick1_git.bb @@ -0,0 +1,29 @@ +require qt5.inc +require qt5-git.inc +require qt5-ptest.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtscript qtsvg qtxmlpatterns" +# qttools + +PACKAGECONFIG ??= "webkit" +PACKAGECONFIG[webkit] = ",,qtwebkit" + +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'webkit', '', 'CONFIG+=noqtwebkit', d)}" + +do_configure_prepend() { + sed -i 's#^qtHaveModule(webkitwidgets):#qtHaveModule(webkitwidgets):!contains(CONFIG, noqtwebkit):#g' ${S}/src/imports/imports.pro +} + +QT_MODULE_BRANCH = "dev" + +SRCREV = "b2476dcd53f0dea1e9eb38df5add3a771d64c4a1" diff --git a/meta/recipes-qt/qt5/qtquickcontrols2_git.bb b/meta/recipes-qt/qt5/qtquickcontrols2_git.bb new file mode 100644 index 0000000000..d922cd68cb --- /dev/null +++ b/meta/recipes-qt/qt5/qtquickcontrols2_git.bb @@ -0,0 +1,13 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & LGPL-3.0 | GPL-3.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.LGPLv3;md5=382747d0119037529ec2b98b24038eb0 \ + file://LICENSE.GPLv3;md5=dce746aa5261707df6d6999ab9958d8b \ +" + +DEPENDS += "qtdeclarative" + +SRCREV = "e693ad2c4ae22f8813befd5fe825c855537497ed" diff --git a/meta/recipes-qt/qt5/qtquickcontrols_git.bb b/meta/recipes-qt/qt5/qtquickcontrols_git.bb new file mode 100644 index 0000000000..17dd0fc1d0 --- /dev/null +++ b/meta/recipes-qt/qt5/qtquickcontrols_git.bb @@ -0,0 +1,20 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtdeclarative" + +FILES_${PN}-qmlplugins += " \ + ${OE_QMAKE_PATH_QML}/QtQuick/Controls/Shaders \ + ${OE_QMAKE_PATH_QML}/QtQuick/Dialogs/qml/icons.ttf \ +" + +SRCREV = "09ebb25aa686fc3f47f860905c2abb32a95c75d1" diff --git a/meta/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch b/meta/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch new file mode 100644 index 0000000000..19b526c992 --- /dev/null +++ b/meta/recipes-qt/qt5/qtremoteobjects/0001-Allow-a-tools-only-build.patch @@ -0,0 +1,37 @@ +From 6235a3fdd0807205c818d70582033970ee008013 Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Wed, 7 Jun 2017 15:17:12 +0300 +Subject: [PATCH] Allow a tools-only build + +Change-Id: I3b33fc1c8877fc82568bd386b063e7a0aa57b706 +--- + mkspecs/features/repccommon.pri | 2 +- + qtremoteobjects.pro | 5 +++++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/mkspecs/features/repccommon.pri b/mkspecs/features/repccommon.pri +index 5e88bf8..6efd19e 100644 +--- a/mkspecs/features/repccommon.pri ++++ b/mkspecs/features/repccommon.pri +@@ -3,7 +3,7 @@ cmd = $${QT.remoteobjects.bins}/repc + contains(QMAKE_HOST.os, Windows) { + cmd = $$system_path($${cmd}.exe) + } +-exists($$cmd): QT_TOOL.repc.binary = $$cmd ++false:exists($$cmd): QT_TOOL.repc.binary = $$cmd + + # qtPrepareTool honors QT_TOOL.repc.binary if set + qtPrepareTool(QMAKE_REPC, repc) +diff --git a/qtremoteobjects.pro b/qtremoteobjects.pro +index c2e2b6b..93c2bb5 100644 +--- a/qtremoteobjects.pro ++++ b/qtremoteobjects.pro +@@ -2,3 +2,8 @@ CONFIG += examples_need_tools tests_need_tools + load(qt_parts) + + SUBDIRS += mkspecs ++ ++tools-only { ++ sub_tools.depends -= sub_src ++ SUBDIRS = sub_tools ++} diff --git a/meta/recipes-qt/qt5/qtremoteobjects_git.bb b/meta/recipes-qt/qt5/qtremoteobjects_git.bb new file mode 100644 index 0000000000..e70579abcf --- /dev/null +++ b/meta/recipes-qt/qt5/qtremoteobjects_git.bb @@ -0,0 +1,29 @@ +LICENSE = "BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 ) & ( GPL-2.0+ | LGPL-3.0 ) | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +require qt5.inc +require qt5-git.inc + +DEPENDS += "qtbase qtdeclarative qtremoteobjects-native" + +# Patches from https://github.com/meta-qt5/qtremoteobjects/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += " \ + file://0001-Allow-a-tools-only-build.patch \ +" + +PACKAGECONFIG ??= "" +PACKAGECONFIG_class-native ??= "tools-only" +PACKAGECONFIG_class-nativesdk ??= "tools-only" +PACKAGECONFIG[tools-only] = "CONFIG+=tools-only" + +EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}" + +SRCREV = "61d2de26db7b90ad0ed3923b5deecd1c5b3be46a" + +BBCLASSEXTEND += "native nativesdk" diff --git a/meta/recipes-qt/qt5/qtscript_git.bb b/meta/recipes-qt/qt5/qtscript_git.bb new file mode 100644 index 0000000000..d73eb44eb6 --- /dev/null +++ b/meta/recipes-qt/qt5/qtscript_git.bb @@ -0,0 +1,33 @@ +require qt5.inc +require qt5-git.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +# 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] +# *reinterpret_cast(&m_buffer[m_size]) = value; +# ^ +#{standard input}: Assembler messages: +#{standard input}:22: Error: selected processor does not support Thumb mode `stmdb sp!,{r1-r3}' +#{standard input}:23: Error: selected processor does not support Thumb mode `stmdb sp!,{r4-r8,lr}' +#{standard input}:30: Error: lo register required -- `ldmia sp!,{r4-r8,lr}' +#{standard input}:43: Error: lo register required -- `ldmia sp!,{r4-r8,lr}' +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +DEPENDS += "qtbase" + +# The same issue as in qtbase: +# http://errors.yoctoproject.org/Errors/Build/44915/ +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" + +SRCREV = "76bcf9b526f96edb35469e9de4b032a112a2b1c0" diff --git a/meta/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch b/meta/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch new file mode 100644 index 0000000000..e734cf32f2 --- /dev/null +++ b/meta/recipes-qt/qt5/qtscxml/0001-Use-external-host-bin-path-for-cmake-file.patch @@ -0,0 +1,28 @@ +From f83817b29477f33ee3b4abf8468a7b01bb347d2b Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Tue, 10 Jan 2017 15:28:26 +0200 +Subject: [PATCH] Use external host bin path for cmake file + +Need to use ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} for cmake to find the +qscxmlc tool from correct sysroot path. + +Upstream-Status: Inappropriate [OE specific] +Signed-off-by: Samuli Piippo +Change-Id: Idb814be705e9cbaad7f1e68b5d7cdb79c4b65008 +--- + src/scxml/Qt5ScxmlConfigExtras.cmake.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/scxml/Qt5ScxmlConfigExtras.cmake.in b/src/scxml/Qt5ScxmlConfigExtras.cmake.in +index edb320a..ce7f2df 100644 +--- a/src/scxml/Qt5ScxmlConfigExtras.cmake.in ++++ b/src/scxml/Qt5ScxmlConfigExtras.cmake.in +@@ -40,7 +40,7 @@ if (NOT TARGET Qt5::qscxmlc) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Scxml_install_prefix}/$${CMAKE_BIN_DIR}qscxmlc$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qscxmlc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qscxmlc$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Scxml_check_file_exists(${imported_location}) + diff --git a/meta/recipes-qt/qt5/qtscxml_git.bb b/meta/recipes-qt/qt5/qtscxml_git.bb new file mode 100644 index 0000000000..feb333fe20 --- /dev/null +++ b/meta/recipes-qt/qt5/qtscxml_git.bb @@ -0,0 +1,24 @@ +LICENSE = "LGPL-3.0 & BSD & GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +require qt5.inc +require qt5-git.inc + +DEPENDS += "qtbase qtdeclarative qtxmlpatterns qtscxml-native" + +SRCREV = "d9b2f8c56d162c108d5427769a8e496dd7a3b62e" + +# Patches from https://github.com/meta-qt5/qtscxml/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += "file://0001-Use-external-host-bin-path-for-cmake-file.patch" + +do_install_append_class-nativesdk() { + # qml files not needed in nativesdk + rm -rf ${D}${OE_QMAKE_PATH_QML} +} + +BBCLASSEXTEND =+ "native nativesdk" diff --git a/meta/recipes-qt/qt5/qtsensors_git.bb b/meta/recipes-qt/qt5/qtsensors_git.bb new file mode 100644 index 0000000000..09e8e8b9f6 --- /dev/null +++ b/meta/recipes-qt/qt5/qtsensors_git.bb @@ -0,0 +1,15 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +DEPENDS += "qtbase qtdeclarative" + +SRCREV = "d5a94c5595170fed9a0f7d3d42ef4b0216909d0d" diff --git a/meta/recipes-qt/qt5/qtserialbus_git.bb b/meta/recipes-qt/qt5/qtserialbus_git.bb new file mode 100644 index 0000000000..85c4669ff9 --- /dev/null +++ b/meta/recipes-qt/qt5/qtserialbus_git.bb @@ -0,0 +1,14 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & (LGPL-3.0 | GPL-2.0+) | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LICENSE.FDL;md5=f70ee9a6c44ae8917586fea34dff0ab5 \ +" + +DEPENDS += "qtbase qtserialport" + +SRCREV = "d5d35d64d06729322c80327de40badaf553df87e" diff --git a/meta/recipes-qt/qt5/qtserialport_git.bb b/meta/recipes-qt/qt5/qtserialport_git.bb new file mode 100644 index 0000000000..ddc6957ad4 --- /dev/null +++ b/meta/recipes-qt/qt5/qtserialport_git.bb @@ -0,0 +1,18 @@ +require qt5.inc +require qt5-git.inc + +# text of LGPL_EXCEPTION.txt and LICENSE.FDL is slightly different than what +# other qt* components use :/ +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LGPL_EXCEPTION.txt;md5=bb426f3367c4805d1e12fad05bd0b750 \ + file://LICENSE.FDL;md5=3801d7932fdc07fd9efe89f9854a6caa \ +" + +DEPENDS += "qtbase" + +SRCREV = "fa688ac5c36a16aa3b44d4ca1509f9386e670a89" diff --git a/meta/recipes-qt/qt5/qtsvg_git.bb b/meta/recipes-qt/qt5/qtsvg_git.bb new file mode 100644 index 0000000000..12fcff1f4e --- /dev/null +++ b/meta/recipes-qt/qt5/qtsvg_git.bb @@ -0,0 +1,16 @@ +require qt5.inc +require qt5-git.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtbase" + +SRCREV = "af35137016f082c3fa15e61414f3c78c73ac322f" diff --git a/meta/recipes-qt/qt5/qtsystems_git.bb b/meta/recipes-qt/qt5/qtsystems_git.bb new file mode 100644 index 0000000000..0bda2e9970 --- /dev/null +++ b/meta/recipes-qt/qt5/qtsystems_git.bb @@ -0,0 +1,34 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +DEPENDS += "qtbase qtdeclarative udev gconf" + +inherit bluetooth + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}" +PACKAGECONFIG[bluez] = "CONFIG+=OE_BLUEZ_ENABLED,,${BLUEZ}" + +EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}" + +do_configure_prepend() { + # disable bluez test if it isn't enabled by PACKAGECONFIG + sed -i 's/^ qtCompileTest(bluez)/ OE_BLUEZ_ENABLED:qtCompileTest(bluez)/g' ${S}/qtsystems.pro +} + +do_install_append() { + # Remove example.pro file as it is useless + rm -f ${D}${OE_QMAKE_PATH_EXAMPLES}/examples.pro +} + +QT_MODULE_BRANCH = "dev" + +SRCREV = "66e45676f5f5c6251ccab36906c6324fd0065e08" diff --git a/meta/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch b/meta/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch new file mode 100644 index 0000000000..7a081a1cfe --- /dev/null +++ b/meta/recipes-qt/qt5/qttools/0001-add-noqtwebkit-configuration.patch @@ -0,0 +1,48 @@ +From 9557b7b0100c335b42503c3f3b6a9a193c3bf9cf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Wed, 4 Jun 2014 11:28:16 +0200 +Subject: [PATCH] add noqtwebkit configuration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Upstream-Status: Inappropiate [configuration] + +Signed-off-by: Andreas Müller +Signed-off-by: Martin Jansa +--- + src/assistant/assistant/assistant.pro | 4 ++-- + src/designer/src/plugins/plugins.pro | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/assistant/assistant/assistant.pro b/src/assistant/assistant/assistant.pro +index 1374c07..28c45a2 100644 +--- a/src/assistant/assistant/assistant.pro ++++ b/src/assistant/assistant/assistant.pro +@@ -1,4 +1,4 @@ +-qtHaveModule(webkitwidgets):!contains(QT_CONFIG, static) { ++qtHaveModule(webkitwidgets):!contains(QT_CONFIG, static):!contains(CONFIG, noqtwebkit) { + BROWSER = qtwebkit + } else { + BROWSER = qtextbrowser +@@ -75,7 +75,7 @@ SOURCES += aboutdialog.cpp \ + openpagesmanager.cpp \ + openpagesswitcher.cpp + +-equals(BROWSER, "qtwebkit") { ++equals(BROWSER, "qtwebkit"):!contains(CONFIG, noqtwebkit) { + DEFINES += BROWSER_QTWEBKIT + QT += webkitwidgets + SOURCES += helpviewer_qwv.cpp +diff --git a/src/designer/src/plugins/plugins.pro b/src/designer/src/plugins/plugins.pro +index 500a153..b60fa2d 100644 +--- a/src/designer/src/plugins/plugins.pro ++++ b/src/designer/src/plugins/plugins.pro +@@ -1,6 +1,6 @@ + TEMPLATE = subdirs + + # qtHaveModule(opengl): SUBDIRS += tools/view3d +-qtHaveModule(webkitwidgets): SUBDIRS += qwebview ++qtHaveModule(webkitwidgets):!contains(CONFIG, noqtwebkit): SUBDIRS += qwebview + win32: qtHaveModule(axcontainer): SUBDIRS += activeqt + qtHaveModule(quickwidgets): SUBDIRS += qquickwidget diff --git a/meta/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch b/meta/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch new file mode 100644 index 0000000000..a4909f75fd --- /dev/null +++ b/meta/recipes-qt/qt5/qttools/0002-linguist-tools-cmake-allow-overriding-the-location-f.patch @@ -0,0 +1,60 @@ +From a260d3a5b1664027e09c7de368ee5e94d22ff8bf Mon Sep 17 00:00:00 2001 +From: Cody P Schafer +Date: Thu, 9 Jul 2015 11:28:19 -0400 +Subject: [PATCH] linguist-tools cmake: allow overriding the location for + lupdate and lrelease + +--- + src/linguist/Qt5LinguistToolsConfig.cmake.in | 15 +++------------ + 1 file changed, 3 insertions(+), 12 deletions(-) + +diff --git a/src/linguist/Qt5LinguistToolsConfig.cmake.in b/src/linguist/Qt5LinguistToolsConfig.cmake.in +index 4318b16..2e3b70f 100644 +--- a/src/linguist/Qt5LinguistToolsConfig.cmake.in ++++ b/src/linguist/Qt5LinguistToolsConfig.cmake.in +@@ -26,6 +26,9 @@ get_filename_component(_qt5_linguisttools_install_prefix \"${CMAKE_CURRENT_LIST_ + !!ELSE + set(_qt5_linguisttools_install_prefix \"$$[QT_INSTALL_PREFIX]\") + !!ENDIF ++if (OE_QMAKE_PATH_HOST_PREFIX) ++ set(_qt5_linguisttools_install_prefix \"${OE_QMAKE_PATH_HOST_PREFIX}\") ++endif() + + macro(_qt5_LinguistTools_check_file_exists file) + if(NOT EXISTS \"${file}\" ) +@@ -44,11 +47,7 @@ endmacro() + if (NOT TARGET Qt5::lrelease) + add_executable(Qt5::lrelease IMPORTED) + +-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lrelease$$CMAKE_BIN_SUFFIX\") +-!!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}lrelease$$CMAKE_BIN_SUFFIX\") +-!!ENDIF + _qt5_LinguistTools_check_file_exists(${imported_location}) + + set_target_properties(Qt5::lrelease PROPERTIES +@@ -59,11 +58,7 @@ endif() + if (NOT TARGET Qt5::lupdate) + add_executable(Qt5::lupdate IMPORTED) + +-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lupdate$$CMAKE_BIN_SUFFIX\") +-!!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}lupdate$$CMAKE_BIN_SUFFIX\") +-!!ENDIF + _qt5_LinguistTools_check_file_exists(${imported_location}) + + set_target_properties(Qt5::lupdate PROPERTIES +@@ -74,11 +69,7 @@ endif() + if (NOT TARGET Qt5::lconvert) + add_executable(Qt5::lconvert IMPORTED) + +-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5_linguisttools_install_prefix}/$${CMAKE_BIN_DIR}lconvert$$CMAKE_BIN_SUFFIX\") +-!!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}lconvert$$CMAKE_BIN_SUFFIX\") +-!!ENDIF + _qt5_LinguistTools_check_file_exists(${imported_location}) + + set_target_properties(Qt5::lconvert PROPERTIES diff --git a/meta/recipes-qt/qt5/qttools/run-ptest b/meta/recipes-qt/qt5/qttools/run-ptest new file mode 100644 index 0000000000..5cd5e27eb4 --- /dev/null +++ b/meta/recipes-qt/qt5/qttools/run-ptest @@ -0,0 +1,4 @@ +#!/bin/sh + +./tst_qtdiag +./tst_qtattributionsscanner diff --git a/meta/recipes-qt/qt5/qttools_git.bb b/meta/recipes-qt/qt5/qttools_git.bb new file mode 100644 index 0000000000..df15d88b11 --- /dev/null +++ b/meta/recipes-qt/qt5/qttools_git.bb @@ -0,0 +1,41 @@ +require qt5.inc +require qt5-git.inc +require qt5-ptest.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtbase qtdeclarative qtxmlpatterns" + +# Patches from https://github.com/meta-qt5/qttools/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += " \ + file://0001-add-noqtwebkit-configuration.patch \ + file://0002-linguist-tools-cmake-allow-overriding-the-location-f.patch \ +" + +FILES_${PN}-tools += "${datadir}${QT_DIR_NAME}/phrasebooks" +FILES_${PN}-examples = "${datadir}${QT_DIR_NAME}/examples" + +PACKAGECONFIG ??= "" +PACKAGECONFIG[qtwebkit] = ",,qtwebkit" + +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('PACKAGECONFIG', 'qtwebkit', '', 'CONFIG+=noqtwebkit', d)}" + +SRCREV = "03ebf1c3d6ceae715c696a171920a0204c58dd0a" + +BBCLASSEXTEND = "native nativesdk" + +do_install_ptest() { + mkdir -p ${D}${PTEST_PATH} + t=${D}${PTEST_PATH} + cp ${B}/tests/auto/qtdiag/tst_tdiag $t + cp ${B}/tests/auto/qtattributionsscanner/tst_qtattributionsscanner $t +} diff --git a/meta/recipes-qt/qt5/qttranslations_git.bb b/meta/recipes-qt/qt5/qttranslations_git.bb new file mode 100644 index 0000000000..a8c7166865 --- /dev/null +++ b/meta/recipes-qt/qt5/qttranslations_git.bb @@ -0,0 +1,109 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ +" + +DEPENDS += "qtbase qttools-native" + +PACKAGES =. " \ + ${PN}-assistant \ + ${PN}-designer \ + ${PN}-linguist \ + ${PN}-qmlviewer \ + ${PN}-qtconnectivity \ + ${PN}-qtmultimedia \ + ${PN}-qtlocation \ + ${PN}-qtdeclarative \ + ${PN}-qtquickcontrols \ + ${PN}-qtquickcontrols2 \ + ${PN}-qtwebsockets \ + ${PN}-qtwebengine \ + ${PN}-qtxmlpatterns \ + ${PN}-qtquick1 \ + ${PN}-qtscript \ + ${PN}-qtserialport \ + ${PN}-qtbase \ + ${PN}-qthelp \ + ${PN}-qt \ +" + +FILES_${PN}-assistant = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/assistant_*.qm \ +" + +FILES_${PN}-designer = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/designer_*.qm \ +" + +FILES_${PN}-linguist = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/linguist_*.qm \ +" + +FILES_${PN}-qmlviewer = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qmlviewer_*.qm \ +" + +FILES_${PN}-qtconnectivity = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtconnectivity_*.qm \ +" + +FILES_${PN}-qtmultimedia = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtmultimedia_*.qm \ +" + +FILES_${PN}-qtlocation = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtlocation_*.qm \ +" + +FILES_${PN}-qtdeclarative = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtdeclarative_*.qm \ +" + +FILES_${PN}-qtquickcontrols = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtquickcontrols_*.qm \ +" + +FILES_${PN}-qtquickcontrols2 = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtquickcontrols2_*.qm \ +" + +FILES_${PN}-qtwebsockets = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtwebsockets_*.qm \ +" + +FILES_${PN}-qtwebengine = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtwebengine_*.qm \ +" + +FILES_${PN}-qtxmlpatterns = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtxmlpatterns_*.qm \ +" + +FILES_${PN}-qtquick1 = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtquick1_*.qm \ +" + +FILES_${PN}-qtscript = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtscript_*.qm \ +" + +FILES_${PN}-qtserialport = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtserialport_*.qm \ +" + +FILES_${PN}-qtbase = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qtbase_*.qm \ +" + +FILES_${PN}-qthelp = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qt_help_*.qm \ +" + +FILES_${PN}-qt = " \ + ${OE_QMAKE_PATH_TRANSLATIONS}/qt_*.qm \ +" + +SRCREV = "c3486e072ebc704f9c82c005044143b07bb88f12" diff --git a/meta/recipes-qt/qt5/qtvirtualkeyboard/0001-include-sys-time.h-for-timeval.patch b/meta/recipes-qt/qt5/qtvirtualkeyboard/0001-include-sys-time.h-for-timeval.patch new file mode 100644 index 0000000000..1e50d5ad87 --- /dev/null +++ b/meta/recipes-qt/qt5/qtvirtualkeyboard/0001-include-sys-time.h-for-timeval.patch @@ -0,0 +1,25 @@ +From d479fe395566ed84cde2579011e2ca2358f22c41 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 12 Jul 2017 23:59:52 -0700 +Subject: [PATCH] include sys/time.h for timeval + +Musl exposes this issue since its not indirectly +including sys/time.h like glibc + +Signed-off-by: Khem Raj +--- + src/virtualkeyboard/3rdparty/pinyin/include/userdict.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h b/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h +index 1b9673f..924be7b 100644 +--- a/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h ++++ b/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h +@@ -24,6 +24,7 @@ + // Debug performance for operations + // #define ___DEBUG_PERF___ + ++#include + #ifdef _WIN32 + #include // timeval + #else diff --git a/meta/recipes-qt/qt5/qtvirtualkeyboard_git.bb b/meta/recipes-qt/qt5/qtvirtualkeyboard_git.bb new file mode 100644 index 0000000000..0029170fd3 --- /dev/null +++ b/meta/recipes-qt/qt5/qtvirtualkeyboard_git.bb @@ -0,0 +1,56 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GPL-3.0 | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ +" + +# Patches from https://github.com/meta-qt5/qtvirtualkeyboard/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += "file://0001-include-sys-time.h-for-timeval.patch" + +# To enabled Nuance T9 Write support, you need to provide the licensed components +# and enable "t9write" in PACKAGECONFIG. This can be done in a separate .bbappend file. +# for example: +#T9WRITEPACKAGE = "${HOME}/Downloads/zzEval_QT_T9Write_Alpha_v750_20150916.zip" +#SRC_URI += "file://${T9WRITEPACKAGE};subdir=git/src/virtualkeyboard/3rdparty/t9write" +#PACKAGECONFIG = "t9write lang-all" + +PACKAGECONFIG ?= "lang-all lipi-toolkit" +PACKAGECONFIG[hunspell] = ",CONFIG+=disable-hunspell,hunspell" +PACKAGECONFIG[t9write] = "CONFIG+=t9write" +PACKAGECONFIG[lipi-toolkit] = "CONFIG+=lipi-toolkit" +PACKAGECONFIG[lang-all] = "CONFIG+=lang-all" +PACKAGECONFIG[lang-ar_AR] = "CONFIG+=lang-ar_AR" +PACKAGECONFIG[lang-da_DK] = "CONFIG+=lang-da_DK" +PACKAGECONFIG[lang-de_DE] = "CONFIG+=lang-de_DE" +PACKAGECONFIG[lang-en_GB] = "CONFIG+=lang-en_GB" +PACKAGECONFIG[lang-es_ES] = "CONFIG+=lang-es_ES" +PACKAGECONFIG[lang-fa_FA] = "CONFIG+=lang-fa_FA" +PACKAGECONFIG[lang-fi_FI] = "CONFIG+=lang-fi_FI" +PACKAGECONFIG[lang-fr_FR] = "CONFIG+=lang-fr_FR" +PACKAGECONFIG[lang-hi_IN] = "CONFIG+=lang-hi_IN" +PACKAGECONFIG[lang-it_IT] = "CONFIG+=lang-it_IT" +PACKAGECONFIG[lang-ja_JP] = "CONFIG+=lang-ja_JP" +PACKAGECONFIG[lang-ko_KR] = "CONFIG+=lang-ko_KR" +PACKAGECONFIG[lang-nb_NO] = "CONFIG+=lang-nb_NO" +PACKAGECONFIG[lang-pl_PL] = "CONFIG+=lang-pl_PL" +PACKAGECONFIG[lang-pt_PT] = "CONFIG+=lang-pt_PT" +PACKAGECONFIG[lang-ro_RO] = "CONFIG+=lang-ro_RO" +PACKAGECONFIG[lang-ru_RU] = "CONFIG+=lang-ru_RU" +PACKAGECONFIG[lang-sv_SE] = "CONFIG+=lang-sv_SE" +PACKAGECONFIG[lang-zh_CN] = "CONFIG+=lang-zh_CN" +PACKAGECONFIG[lang-zh_TW] = "CONFIG+=lang-zh_TW" + +EXTRA_QMAKEVARS_PRE += "${PACKAGECONFIG_CONFARGS}" +EXTRA_QMAKEVARS_PRE += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'CONFIG+=disable-desktop', d)}" + +PACKAGES += "${PN}-dictionaries" +RRECOMMENDS_${PN} += "${PN}-dictionaries" +FILES_${PN}-dictionaries = "${OE_QMAKE_PATH_DATA}/qtvirtualkeyboard/*/*.dat" +FILES_${PN} += "${OE_QMAKE_PATH_DATA}/qtvirtualkeyboard/lipi_toolkit" + +DEPENDS += "qtbase qtdeclarative qtmultimedia qtquickcontrols qtsvg qtxmlpatterns" + +SRCREV = "85d35bb12235dd6b92c898ddb6d6e84703d25d48" diff --git a/meta/recipes-qt/qt5/qtwayland/0001-fix-build-without-xkbcommon-evdev.patch b/meta/recipes-qt/qt5/qtwayland/0001-fix-build-without-xkbcommon-evdev.patch new file mode 100644 index 0000000000..04ae7e0e87 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwayland/0001-fix-build-without-xkbcommon-evdev.patch @@ -0,0 +1,68 @@ +From e41bc392aa79073926aba917796e836f5b0d9f32 Mon Sep 17 00:00:00 2001 +From: Raphael Freudiger +Date: Tue, 10 Jan 2017 15:49:55 +0100 +Subject: [PATCH] fix build without xkbcommon-evdev +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Change-Id: I4f52c4ad741fdd7063a18b67f5777b52f03726fe +Signed-off-by: Raphael Freudiger +Signed-off-by: Gordan Markuš +--- + src/client/client.pro | 2 ++ + src/compositor/compositor.pro | 2 ++ + src/compositor/compositor_api/qwaylandkeyboard.cpp | 13 +++++++------ + 3 files changed, 11 insertions(+), 6 deletions(-) + +diff --git a/src/client/client.pro b/src/client/client.pro +index eae7ad5..0bb7b18 100644 +--- a/src/client/client.pro ++++ b/src/client/client.pro +@@ -147,3 +147,5 @@ MODULE_PLUGIN_TYPES = \ + wayland-decoration-client \ + wayland-shell-integration + load(qt_module) ++ ++LIBS += -lxkbcommon +diff --git a/src/compositor/compositor.pro b/src/compositor/compositor.pro +index dc9000d..4eebfd6 100644 +--- a/src/compositor/compositor.pro ++++ b/src/compositor/compositor.pro +@@ -32,3 +32,5 @@ include ($$PWD/extensions/extensions.pri) + MODULE_PLUGIN_TYPES = \ + wayland-graphics-integration-server + load(qt_module) ++ ++LIBS += -lxkbcommon +diff --git a/src/compositor/compositor_api/qwaylandkeyboard.cpp b/src/compositor/compositor_api/qwaylandkeyboard.cpp +index c30f7b1..e6f1a0b 100644 +--- a/src/compositor/compositor_api/qwaylandkeyboard.cpp ++++ b/src/compositor/compositor_api/qwaylandkeyboard.cpp +@@ -349,12 +349,6 @@ void QWaylandKeyboardPrivate::createXKBState(xkb_keymap *keymap) + xkb_state = xkb_state_new(keymap); + } + +-uint QWaylandKeyboardPrivate::toWaylandXkbV1Key(const uint nativeScanCode) +-{ +- const uint offset = 8; +- Q_ASSERT(nativeScanCode >= offset); +- return nativeScanCode - offset; +-} + + void QWaylandKeyboardPrivate::createXKBKeymap() + { +@@ -384,6 +378,13 @@ void QWaylandKeyboardPrivate::createXKBKeymap() + } + #endif + ++uint QWaylandKeyboardPrivate::toWaylandXkbV1Key(const uint nativeScanCode) ++{ ++ const uint offset = 8; ++ Q_ASSERT(nativeScanCode >= offset); ++ return nativeScanCode - offset; ++} ++ + void QWaylandKeyboardPrivate::sendRepeatInfo() + { + Q_FOREACH (Resource *resource, resourceMap()) { diff --git a/meta/recipes-qt/qt5/qtwayland_git.bb b/meta/recipes-qt/qt5/qtwayland_git.bb new file mode 100644 index 0000000000..91ffcd771b --- /dev/null +++ b/meta/recipes-qt/qt5/qtwayland_git.bb @@ -0,0 +1,53 @@ +require qt5.inc +require qt5-git.inc + +DEPENDS += "qtbase qtdeclarative wayland wayland-native qtwayland-native" +DEPENDS_append_class-target = " libxkbcommon" + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +PACKAGECONFIG ?= " \ + wayland-client \ + wayland-server \ + wayland-egl \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xcomposite-egl xcomposite-glx', '', d)} \ +" +PACKAGECONFIG_class-native ?= "" +PACKAGECONFIG_class-nativesdk ?= "" +QMAKE_PROFILES_class-native = "${S}/src/qtwaylandscanner" +QMAKE_PROFILES_class-nativesdk = "${S}/src/qtwaylandscanner" +B_class-native = "${SEPB}/src/qtwaylandscanner" +B_class-nativesdk = "${SEPB}/src/qtwaylandscanner" + +PACKAGECONFIG[wayland-client] = "-feature-wayland-client,-no-feature-wayland-client" +PACKAGECONFIG[wayland-server] = "-feature-wayland-server,-no-feature-wayland-server" +PACKAGECONFIG[xcomposite-egl] = "-feature-xcomposite-egl,-no-feature-xcomposite-egl,libxcomposite" +PACKAGECONFIG[xcomposite-glx] = "-feature-xcomposite-glx,-no-feature-xcomposite-glx,virtual/mesa" +PACKAGECONFIG[wayland-egl] = "-feature-wayland-egl,-no-feature-wayland-egl,virtual/egl" +PACKAGECONFIG[wayland-brcm] = "-feature-wayland-brcm,-no-feature-wayland-brcm,virtual/egl" +PACKAGECONFIG[drm-egl-server] = "-feature-drm-egl-server,-no-feature-drm-egl-server,libdrm virtual/egl" +PACKAGECONFIG[libhybris-egl-server] = "-feature-libhybris-egl-server,-no-feature-libhybris-egl-server,libhybris" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +SRCREV = "db36bc0d9ccae21e84cd54be3e18ae539542eadc" + +# Patches from https://github.com/meta-qt5/qtwayland/commits/b5.10 +# 5.10.meta-qt5.2 +# From https://bugreports.qt.io/browse/QTBUG-57767 +SRC_URI += " \ + file://0001-fix-build-without-xkbcommon-evdev.patch \ +" + +BBCLASSEXTEND =+ "native nativesdk" + +# The same issue as in qtbase: +# http://errors.yoctoproject.org/Errors/Details/152641/ +LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}" diff --git a/meta/recipes-qt/qt5/qtwebchannel_git.bb b/meta/recipes-qt/qt5/qtwebchannel_git.bb new file mode 100644 index 0000000000..2b4a4875c7 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebchannel_git.bb @@ -0,0 +1,15 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +DEPENDS += "qtdeclarative qtwebsockets" + +SRCREV = "7540a85c82cd940b7da3ea75eccad7e733bd0ae6" diff --git a/meta/recipes-qt/qt5/qtwebengine/0001-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch b/meta/recipes-qt/qt5/qtwebengine/0001-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch new file mode 100644 index 0000000000..a324dc6450 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0001-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch @@ -0,0 +1,23 @@ +From a70b6d2183934e4d9a3ad00167acfaf0a78a90a9 Mon Sep 17 00:00:00 2001 +From: Cleiton Bueno +Date: Fri, 25 Dec 2015 18:16:05 -0200 +Subject: [PATCH] WebEngine qquickwebengineview_p_p.h add include QColor + +Signed-off-by: Cleiton Bueno +--- + src/webengine/api/qquickwebengineview_p_p.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h +index 1b8edc8..03d6558 100644 +--- a/src/webengine/api/qquickwebengineview_p_p.h ++++ b/src/webengine/api/qquickwebengineview_p_p.h +@@ -59,6 +59,8 @@ + #include + #include + #include ++#include ++ + + namespace QtWebEngineCore { + class WebContentsAdapter; diff --git a/meta/recipes-qt/qt5/qtwebengine/0001-chromium-Force-host-toolchain-configuration.patch b/meta/recipes-qt/qt5/qtwebengine/0001-chromium-Force-host-toolchain-configuration.patch new file mode 100644 index 0000000000..69e05660b3 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0001-chromium-Force-host-toolchain-configuration.patch @@ -0,0 +1,33 @@ +From d760fcdd764985f05a480ba475855f92844a6f0d Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Wed, 15 Mar 2017 13:53:28 +0200 +Subject: [PATCH] chromium: Force host toolchain configuration + +Force gcc/g++ to be used for parts using host toolchain, since +the option(host_build) does not work in yocto builds. + +Upstream-Status: Inappropriate [OE specific] +Signed-off-by: Samuli Piippo +Signed-off-by: Martin Jansa +--- + chromium/tools/gn/bootstrap/bootstrap.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/chromium/tools/gn/bootstrap/bootstrap.py b/chromium/tools/gn/bootstrap/bootstrap.py +index b1ff7e7..bccabbb 100755 +--- a/chromium/tools/gn/bootstrap/bootstrap.py ++++ b/chromium/tools/gn/bootstrap/bootstrap.py +@@ -318,10 +318,10 @@ def write_gn_ninja(path, root_gen_dir, options): + ld = os.environ.get('LD', cxx) + ar = os.environ.get('AR', 'ar -X64') + else: +- cc = os.environ.get('CC', 'cc') +- cxx = os.environ.get('CXX', 'c++') ++ cc = os.environ.get('CC_host', 'gcc') ++ cxx = os.environ.get('CXX_host', 'g++') + ld = cxx +- ar = os.environ.get('AR', 'ar') ++ ar = os.environ.get('AR_host', 'ar') + + # QTBUG-64759 + # cflags = os.environ.get('CFLAGS', '').split() diff --git a/meta/recipes-qt/qt5/qtwebengine/0002-Include-dependency-to-QCoreApplication-translate.patch b/meta/recipes-qt/qt5/qtwebengine/0002-Include-dependency-to-QCoreApplication-translate.patch new file mode 100644 index 0000000000..e41636a315 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0002-Include-dependency-to-QCoreApplication-translate.patch @@ -0,0 +1,23 @@ +From 838bb0afe93321ae3d225988728a5736cd4844fc Mon Sep 17 00:00:00 2001 +From: Cleiton Bueno +Date: Thu, 24 Dec 2015 15:59:51 -0200 +Subject: [PATCH] Include dependency to QCoreApplication::translate() + +Signed-off-by: Cleiton Bueno +--- + src/core/media_capture_devices_dispatcher.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/core/media_capture_devices_dispatcher.h b/src/core/media_capture_devices_dispatcher.h +index 579d159..0904c46 100644 +--- a/src/core/media_capture_devices_dispatcher.h ++++ b/src/core/media_capture_devices_dispatcher.h +@@ -45,6 +45,8 @@ + #include + #include + ++#include ++ + #include "web_contents_adapter_client.h" + + #include "base/callback.h" diff --git a/meta/recipes-qt/qt5/qtwebengine/0002-chromium-workaround-for-too-long-.rps-file-name.patch b/meta/recipes-qt/qt5/qtwebengine/0002-chromium-workaround-for-too-long-.rps-file-name.patch new file mode 100644 index 0000000000..592a30f37a --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0002-chromium-workaround-for-too-long-.rps-file-name.patch @@ -0,0 +1,42 @@ +From d76853bd469881625bedc85afabc69d36ecb05ed Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Thu, 30 Mar 2017 11:37:24 +0300 +Subject: [PATCH] chromium: workaround for too long .rps file name + +Ninja may fail when the build directory is too long: + +ninja: error: WriteFile(__third_party_WebKit_Source_bindings_modules_\ +interfaces_info_individual_modules__home_qt_work_build_build-nitrogen\ +6x_tmp_work_cortexa9hf-neon-mx6qdl-poky-linux-gnueabi_qtwebengine_5.9\ +.0_gitAUTOINC_29afdb0a34_049134677a-r0_build_src_toolchain_target__ru\ +le.rsp): Unable to create file. File name too long + +Task-number: QTBUG-59769 +Change-Id: I73c5e64ae5174412be2a675e35b0b6047f2bf4c1 +--- + chromium/tools/gn/ninja_action_target_writer.cc | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/chromium/tools/gn/ninja_action_target_writer.cc b/chromium/tools/gn/ninja_action_target_writer.cc +index eaf1b3d..ddf456e 100644 +--- a/chromium/tools/gn/ninja_action_target_writer.cc ++++ b/chromium/tools/gn/ninja_action_target_writer.cc +@@ -118,9 +118,18 @@ std::string NinjaActionTargetWriter::WriteRuleDefinition() { + // strictly necessary for regular one-shot actions, but it's easier to + // just always define unique_name. + std::string rspfile = custom_rule_name; ++ ++ //quick workaround if filename length > 255 - ".rsp", just cut the dirs starting from the end ++ //please note ".$unique_name" is not used at the moment ++ int pos = 0; ++ std::string delimiter("_"); ++ while (rspfile.length() > 251 && (pos = rspfile.find_last_of(delimiter)) != std::string::npos) ++ rspfile = rspfile.substr(0,pos); ++ + if (!target_->sources().empty()) + rspfile += ".$unique_name"; + rspfile += ".rsp"; ++ + out_ << " rspfile = " << rspfile << std::endl; + + // Response file contents. diff --git a/meta/recipes-qt/qt5/qtwebengine/0003-Force-host-toolchain-configuration.patch b/meta/recipes-qt/qt5/qtwebengine/0003-Force-host-toolchain-configuration.patch new file mode 100644 index 0000000000..84e430b732 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0003-Force-host-toolchain-configuration.patch @@ -0,0 +1,71 @@ +From 36657d556e4f97d06aa44d874d7256c970cdad3c Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Wed, 15 Mar 2017 13:53:28 +0200 +Subject: [PATCH] Force host toolchain configuration + +Force gcc/g++ to be used for parts using host toolchain, since +the option(host_build) does not work in yocto builds. + +Don't use QT_ARCH for the host architecture, since that's always +the target architecture in bitbake builds, instead ask specifically +for the qmakes's host architecture. + +Upstream-Status: Inappropriate [OE specific] +Signed-off-by: Samuli Piippo +--- + src/buildtools/configure_host.pro | 14 +++++++------- + src/core/config/linux.pri | 2 +- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/buildtools/configure_host.pro b/src/buildtools/configure_host.pro +index dd0d3e3..70161c8 100644 +--- a/src/buildtools/configure_host.pro ++++ b/src/buildtools/configure_host.pro +@@ -4,7 +4,7 @@ TEMPLATE = aux + # Pick up the host toolchain + option(host_build) + +-GN_HOST_CPU = $$gnArch($$QT_ARCH) ++GN_HOST_CPU = $$gnArch($$QMAKE_HOST.arch) + !isEmpty(QT_TARGET_ARCH): GN_TARGET_CPU = $$gnArch($$QT_TARGET_ARCH) + else: GN_TARGET_CPU = $$GN_HOST_CPU + GN_OS = $$gnOS() +@@ -31,9 +31,9 @@ GN_CONTENTS = \ + "import(\"//build/config/sysroot.gni\")" \ + "import(\"//build/toolchain/gcc_toolchain.gni\")" \ + "gcc_toolchain(\"host\") {" \ +-" cc = \"$$which($$QMAKE_CC)\" " \ +-" cxx = \"$$which($$QMAKE_CXX)\" " \ +-" ld = \"$$which($$QMAKE_LINK)\" " \ ++" cc = \"$$which(gcc)\" " \ ++" cxx = \"$$which(g++)\" " \ ++" ld = \"$$which(g++)\" " \ + " ar = \"$$which(ar)\" " \ + " nm = \"$$which(nm)\" " \ + " extra_cppflags = \"$$GN_HOST_EXTRA_CPPFLAGS\" " \ +@@ -45,9 +45,9 @@ GN_CONTENTS = \ + " } " \ + "}" \ + "gcc_toolchain(\"v8_snapshot\") {" \ +-" cc = \"$$which($$QMAKE_CC)\" " \ +-" cxx = \"$$which($$QMAKE_CXX)\" " \ +-" ld = \"$$which($$QMAKE_LINK)\" " \ ++" cc = \"$$which(gcc)\" " \ ++" cxx = \"$$which(g++)\" " \ ++" ld = \"$$which(g++)\" " \ + " ar = \"$$which(ar)\" " \ + " nm = \"$$which(nm)\" " \ + " toolchain_args = { " \ +diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri +index 1ce3ea8..23d0793 100644 +--- a/src/core/config/linux.pri ++++ b/src/core/config/linux.pri +@@ -91,7 +91,7 @@ contains(QT_ARCH, "mips") { + + host_build { + gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\" +- GN_HOST_CPU = $$gnArch($$QT_ARCH) ++ GN_HOST_CPU = $$gnArch($$QMAKE_HOST.arch) + gn_args += host_cpu=\"$$GN_HOST_CPU\" + # Don't bother trying to use system libraries in this case + gn_args += use_glib=false diff --git a/meta/recipes-qt/qt5/qtwebengine/0003-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch b/meta/recipes-qt/qt5/qtwebengine/0003-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch new file mode 100644 index 0000000000..1fb85fb337 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0003-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch @@ -0,0 +1,33 @@ +From c6e7171bf8f5ecb8b82d911581a45defe93854e1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 14:01:12 -0700 +Subject: [PATCH] chromium: musl: sandbox: Define TEMP_FAILURE_RETRY if not + defined + +Musl does not define this Macro + +Signed-off-by: Khem Raj +--- + chromium/sandbox/linux/suid/sandbox.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/chromium/sandbox/linux/suid/sandbox.c b/chromium/sandbox/linux/suid/sandbox.c +index 66f68ef..9284d0d 100644 +--- a/chromium/sandbox/linux/suid/sandbox.c ++++ b/chromium/sandbox/linux/suid/sandbox.c +@@ -44,6 +44,15 @@ static bool DropRoot(); + + #define HANDLE_EINTR(x) TEMP_FAILURE_RETRY(x) + ++#ifndef TEMP_FAILURE_RETRY ++# define TEMP_FAILURE_RETRY(expression) \ ++ (__extension__ \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; })) ++#endif ++ + static void FatalError(const char* msg, ...) + __attribute__((noreturn, format(printf, 1, 2))); + diff --git a/meta/recipes-qt/qt5/qtwebengine/0004-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch b/meta/recipes-qt/qt5/qtwebengine/0004-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch new file mode 100644 index 0000000000..5dbd07f10a --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0004-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch @@ -0,0 +1,67 @@ +From 104d93f24a44dc4a1939d6e2c99f346526a5a7d9 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 14:09:06 -0700 +Subject: [PATCH] chromium: musl: Avoid mallinfo() APIs on non-glibc/linux + +Signed-off-by: Khem Raj +--- + chromium/base/process/process_metrics_posix.cc | 4 ++-- + chromium/base/trace_event/malloc_dump_provider.cc | 3 ++- + chromium/content/child/content_child_helpers.cc | 2 +- + 3 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/chromium/base/process/process_metrics_posix.cc b/chromium/base/process/process_metrics_posix.cc +index 0eb5c1f..8af7799 100644 +--- a/chromium/base/process/process_metrics_posix.cc ++++ b/chromium/base/process/process_metrics_posix.cc +@@ -94,14 +94,14 @@ size_t ProcessMetrics::GetMallocUsage() { + malloc_statistics_t stats = {0}; + malloc_zone_statistics(nullptr, &stats); + return stats.size_in_use; +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(__GLIBC__) || defined(OS_ANDROID) + struct mallinfo minfo = mallinfo(); + #if defined(USE_TCMALLOC) + return minfo.uordblks; + #else + return minfo.hblkhd + minfo.arena; + #endif +-#elif defined(OS_FUCHSIA) ++#else + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif +diff --git a/chromium/base/trace_event/malloc_dump_provider.cc b/chromium/base/trace_event/malloc_dump_provider.cc +index 14ba0a2..e5d9581 100644 +--- a/chromium/base/trace_event/malloc_dump_provider.cc ++++ b/chromium/base/trace_event/malloc_dump_provider.cc +@@ -197,6 +197,7 @@ MallocDumpProvider::~MallocDumpProvider() {} + // the current process. + bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args, + ProcessMemoryDump* pmd) { ++#if defined(__GLIBC__) + size_t total_virtual_size = 0; + size_t resident_size = 0; + size_t allocated_objects_size = 0; +@@ -317,7 +318,7 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDumpArgs& args, + pmd->DumpHeapUsage(metrics_by_context, overhead, "malloc"); + } + tid_dumping_heap_ = kInvalidThreadId; +- ++#endif // __GLIBC__ + return true; + } + +diff --git a/chromium/content/child/content_child_helpers.cc b/chromium/content/child/content_child_helpers.cc +index 7ddeb4d..b8c73b0 100644 +--- a/chromium/content/child/content_child_helpers.cc ++++ b/chromium/content/child/content_child_helpers.cc +@@ -25,7 +25,7 @@ namespace content { + // though, this provides only a partial and misleading value. + // Unfortunately some telemetry benchmark rely on it and these need to + // be refactored before getting rid of this. See crbug.com/581365 . +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(__GLIBC__) || defined(OS_ANDROID) + size_t GetMemoryUsageKB() { + struct mallinfo minfo = mallinfo(); + uint64_t mem_usage = diff --git a/meta/recipes-qt/qt5/qtwebengine/0004-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch b/meta/recipes-qt/qt5/qtwebengine/0004-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch new file mode 100644 index 0000000000..76160d16ba --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0004-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch @@ -0,0 +1,37 @@ +From 1a23cb4027692535aeace4c6070864af672de70d Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Tue, 12 Dec 2017 16:06:14 +0200 +Subject: [PATCH] musl: don't use pvalloc as it's not available on musl + +Change-Id: I7145463ac7b9560e7459d3384a3db108bd727403 +Signed-off-by: Samuli Piippo +--- + src/core/api/qtbug-61521.cpp | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/src/core/api/qtbug-61521.cpp b/src/core/api/qtbug-61521.cpp +index 002a1af..8fd2da3 100644 +--- a/src/core/api/qtbug-61521.cpp ++++ b/src/core/api/qtbug-61521.cpp +@@ -74,10 +74,6 @@ SHIM_SYMBOL_VERSION(valloc); + void* __valloc(size_t size) + SHIM_ALIAS_SYMBOL(ShimValloc); + +-SHIM_SYMBOL_VERSION(pvalloc); +-void* __pvalloc(size_t size) +- SHIM_ALIAS_SYMBOL(ShimPvalloc); +- + SHIM_SYMBOL_VERSION(posix_memalign); + int __posix_memalign(void** r, size_t a, size_t s) + SHIM_ALIAS_SYMBOL(ShimPosixMemalign); +@@ -110,10 +106,6 @@ SHIM_HIDDEN void* ShimValloc(size_t size) { + return valloc(size); + } + +-SHIM_HIDDEN void* ShimPvalloc(size_t size) { +- return pvalloc(size); +-} +- + SHIM_HIDDEN int ShimPosixMemalign(void** r, size_t a, size_t s) { + return posix_memalign(r,a,s); + } diff --git a/meta/recipes-qt/qt5/qtwebengine/0005-chromium-musl-include-fcntl.h-for-loff_t.patch b/meta/recipes-qt/qt5/qtwebengine/0005-chromium-musl-include-fcntl.h-for-loff_t.patch new file mode 100644 index 0000000000..e0a3f80486 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0005-chromium-musl-include-fcntl.h-for-loff_t.patch @@ -0,0 +1,22 @@ +From 1e51c5e3a299213b632dd2d448c86dabf45b2258 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 14:37:49 -0700 +Subject: [PATCH] chromium: musl: include fcntl.h for loff_t + +Signed-off-by: Khem Raj +--- + chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h +index b29ec2d..91f77dd 100644 +--- a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h ++++ b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h +@@ -150,6 +150,7 @@ extern "C" { + #include + #include + #include ++#include + #include + #include + #include diff --git a/meta/recipes-qt/qt5/qtwebengine/0005-musl-link-against-libexecinfo.patch b/meta/recipes-qt/qt5/qtwebengine/0005-musl-link-against-libexecinfo.patch new file mode 100644 index 0000000000..45a45f9baa --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0005-musl-link-against-libexecinfo.patch @@ -0,0 +1,24 @@ +From e735b0adfa9b1dcaa93e3ce65d9cc01255ab340b Mon Sep 17 00:00:00 2001 +From: Samuli Piippo +Date: Thu, 14 Dec 2017 11:28:10 +0200 +Subject: [PATCH] musl: link against libexecinfo + +Change-Id: Ifada60f9c72691973612850121f6fb152d70839a +Signed-off-by: Samuli Piippo +--- + src/core/core_module.pro | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/core_module.pro b/src/core/core_module.pro +index d21985e..eeebeb4 100644 +--- a/src/core/core_module.pro ++++ b/src/core/core_module.pro +@@ -54,7 +54,7 @@ linux { + POST_TARGETDEPS += $$NINJA_TARGETDEPS + + +-LIBS_PRIVATE += -L$$api_library_path ++LIBS_PRIVATE += -L$$api_library_path -lexecinfo + CONFIG *= no_smart_library_merge + osx { + LIBS_PRIVATE += -Wl,-force_load,$${api_library_path}$${QMAKE_DIR_SEP}lib$${api_library_name}.a diff --git a/meta/recipes-qt/qt5/qtwebengine/0006-chromium-musl-use-off64_t-instead-of-the-internal-__.patch b/meta/recipes-qt/qt5/qtwebengine/0006-chromium-musl-use-off64_t-instead-of-the-internal-__.patch new file mode 100644 index 0000000000..f8c4150a7d --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0006-chromium-musl-use-off64_t-instead-of-the-internal-__.patch @@ -0,0 +1,62 @@ +From f0fba131a285144c5d71dad8b98ff0f15ce454ad Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 14:38:37 -0700 +Subject: [PATCH] chromium: musl: use off64_t instead of the internal __off64_t + +- only do the glibc 32-bit ABI check for mmap/mmap64 on gnu libc. musl + does not support the 32-bit ABI. + +Signed-off-by: Khem Raj +--- + .../third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h +index 715c045..edc8cf2 100644 +--- a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h ++++ b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h +@@ -77,7 +77,7 @@ typedef off64_t __off64_t; + + static inline void* do_mmap64(void *start, size_t length, + int prot, int flags, +- int fd, __off64_t offset) __THROW { ++ int fd, off64_t offset) __THROW { + // The original gperftools uses sys_mmap() here. But, it is not allowed by + // Chromium's sandbox. + return (void *)syscall(SYS_mmap, start, length, prot, flags, fd, offset); +@@ -90,7 +90,7 @@ static inline void* do_mmap64(void *start, size_t length, + + static inline void* do_mmap64(void *start, size_t length, + int prot, int flags, +- int fd, __off64_t offset) __THROW { ++ int fd, off64_t offset) __THROW { + void *result; + + // Try mmap2() unless it's not supported +@@ -161,7 +161,7 @@ static inline void* do_mmap64(void *start, size_t length, + + extern "C" { + void* mmap64(void *start, size_t length, int prot, int flags, +- int fd, __off64_t offset ) __THROW ++ int fd, off64_t offset ) __THROW + ATTRIBUTE_SECTION(malloc_hook); + void* mmap(void *start, size_t length,int prot, int flags, + int fd, off_t offset) __THROW +@@ -178,7 +178,7 @@ extern "C" { + } + + extern "C" void* mmap64(void *start, size_t length, int prot, int flags, +- int fd, __off64_t offset) __THROW { ++ int fd, off64_t offset) __THROW { + MallocHook::InvokePreMmapHook(start, length, prot, flags, fd, offset); + void *result; + if (!MallocHook::InvokeMmapReplacement( +@@ -189,7 +189,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags, + return result; + } + +-# if !defined(__USE_FILE_OFFSET64) || !defined(__REDIRECT_NTH) ++# if defined(__GLIBC__) && (!defined(__USE_FILE_OFFSET64) || !defined(__REDIRECT_NTH)) + + extern "C" void* mmap(void *start, size_t length, int prot, int flags, + int fd, off_t offset) __THROW { diff --git a/meta/recipes-qt/qt5/qtwebengine/0007-chromium-musl-linux-glibc-make-the-distinction.patch b/meta/recipes-qt/qt5/qtwebengine/0007-chromium-musl-linux-glibc-make-the-distinction.patch new file mode 100644 index 0000000000..fbff28830d --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0007-chromium-musl-linux-glibc-make-the-distinction.patch @@ -0,0 +1,23 @@ +From 42a0586aa7040caef931db8657b2ac8d345e4dd3 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 14:54:38 -0700 +Subject: [PATCH] chromium: musl: linux != glibc, make the distinction + +Signed-off-by: Khem Raj +--- + chromium/base/allocator/allocator_check.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/base/allocator/allocator_check.cc b/chromium/base/allocator/allocator_check.cc +index 9cd5d22..1e70095 100644 +--- a/chromium/base/allocator/allocator_check.cc ++++ b/chromium/base/allocator/allocator_check.cc +@@ -27,7 +27,7 @@ bool IsAllocatorInitialized() { + // Set by allocator_shim_override_ucrt_symbols_win.h when the + // shimmed _set_new_mode() is called. + return g_is_win_shim_layer_initialized; +-#elif defined(OS_LINUX) && defined(USE_TCMALLOC) && \ ++#elif defined(__GLIBC__) && defined(USE_TCMALLOC) && \ + !defined(MEMORY_TOOL_REPLACES_ALLOCATOR) + // From third_party/tcmalloc/chromium/src/gperftools/tcmalloc.h. + // TODO(primiano): replace with an include once base can depend on allocator. diff --git a/meta/recipes-qt/qt5/qtwebengine/0008-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch b/meta/recipes-qt/qt5/qtwebengine/0008-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch new file mode 100644 index 0000000000..d040057a40 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0008-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch @@ -0,0 +1,24 @@ +From ff7af7ff21d259cfc580541b931d478e3d604f01 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 15:09:02 -0700 +Subject: [PATCH] chromium: musl: allocator: Do not include glibc_weak_symbols + for musl + +Signed-off-by: Khem Raj +--- + chromium/base/allocator/allocator_shim.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/base/allocator/allocator_shim.cc b/chromium/base/allocator/allocator_shim.cc +index 41adbf8..091971e 100644 +--- a/chromium/base/allocator/allocator_shim.cc ++++ b/chromium/base/allocator/allocator_shim.cc +@@ -319,7 +319,7 @@ ALWAYS_INLINE void ShimFreeDefiniteSize(void* ptr, size_t size, void* context) { + // In the case of tcmalloc we also want to plumb into the glibc hooks + // to avoid that allocations made in glibc itself (e.g., strdup()) get + // accidentally performed on the glibc heap instead of the tcmalloc one. +-#if defined(USE_TCMALLOC) ++#if defined(USE_TCMALLOC) && defined(__GLIBC__) + #include "base/allocator/allocator_shim_override_glibc_weak_symbols.h" + #endif + diff --git a/meta/recipes-qt/qt5/qtwebengine/0009-chromium-musl-Use-correct-member-name-__si_fields-fr.patch b/meta/recipes-qt/qt5/qtwebengine/0009-chromium-musl-Use-correct-member-name-__si_fields-fr.patch new file mode 100644 index 0000000000..c2a9c8a0cb --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0009-chromium-musl-Use-correct-member-name-__si_fields-fr.patch @@ -0,0 +1,24 @@ +From 74171f47edb76dc89edcc7116cd33d234e0e0490 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 15:12:39 -0700 +Subject: [PATCH] chromium: musl: Use correct member name __si_fields from + LinuxSigInfo + +Signed-off-by: Khem Raj +--- + chromium/sandbox/linux/seccomp-bpf/trap.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/sandbox/linux/seccomp-bpf/trap.cc b/chromium/sandbox/linux/seccomp-bpf/trap.cc +index 003708d..0fef314 100644 +--- a/chromium/sandbox/linux/seccomp-bpf/trap.cc ++++ b/chromium/sandbox/linux/seccomp-bpf/trap.cc +@@ -168,7 +168,7 @@ void Trap::SigSys(int nr, LinuxSigInfo* info, ucontext_t* ctx) { + // most versions of glibc don't include this information in siginfo_t. So, + // we need to explicitly copy it into a arch_sigsys structure. + struct arch_sigsys sigsys; +- memcpy(&sigsys, &info->_sifields, sizeof(sigsys)); ++ memcpy(&sigsys, &info->__si_fields, sizeof(sigsys)); + + #if defined(__mips__) + // When indirect syscall (syscall(__NR_foo, ...)) is made on Mips, the diff --git a/meta/recipes-qt/qt5/qtwebengine/0010-chromium-musl-Match-syscalls-to-match-musl.patch b/meta/recipes-qt/qt5/qtwebengine/0010-chromium-musl-Match-syscalls-to-match-musl.patch new file mode 100644 index 0000000000..7be83c55c6 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0010-chromium-musl-Match-syscalls-to-match-musl.patch @@ -0,0 +1,44 @@ +From ce23b6a6e5a5ebae15dedeebf7044ac9a0249a80 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 15:24:49 -0700 +Subject: [PATCH] chromium: musl: Match syscalls to match musl + +Signed-off-by: Khem Raj +--- + chromium/third_party/lss/linux_syscall_support.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/chromium/third_party/lss/linux_syscall_support.h b/chromium/third_party/lss/linux_syscall_support.h +index 80a3e56..1e57b1a 100644 +--- a/chromium/third_party/lss/linux_syscall_support.h ++++ b/chromium/third_party/lss/linux_syscall_support.h +@@ -794,6 +794,14 @@ struct kernel_statfs { + #endif + + ++#undef stat64 ++#undef fstat64 ++ ++#ifndef __NR_fstatat ++#define __NR_fstatat __NR_fstatat64 ++#endif ++ ++ + #if defined(__x86_64__) + #ifndef ARCH_SET_GS + #define ARCH_SET_GS 0x1001 +@@ -1211,6 +1219,14 @@ struct kernel_statfs { + #ifndef __NR_fallocate + #define __NR_fallocate 285 + #endif ++ ++#ifndef __NR_pread ++#define __NR_pread __NR_pread64 ++#endif ++#ifndef __NR_pwrite ++#define __NR_pwrite __NR_pwrite64 ++#endif ++ + /* End of x86-64 definitions */ + #elif defined(__mips__) + #if _MIPS_SIM == _MIPS_SIM_ABI32 diff --git a/meta/recipes-qt/qt5/qtwebengine/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch b/meta/recipes-qt/qt5/qtwebengine/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch new file mode 100644 index 0000000000..9b2749134e --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch @@ -0,0 +1,79 @@ +From 1781911655bddf8a8352f9bd0a7ce4867df6981b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 15:27:50 -0700 +Subject: [PATCH] chromium: musl: Define res_ninit and res_nclose for non-glibc + platforms + +Signed-off-by: Khem Raj +--- + chromium/net/dns/dns_config_service_posix.cc | 4 ++++ + chromium/net/dns/dns_reloader.cc | 4 ++++ + chromium/net/dns/resolv_compat.h | 29 ++++++++++++++++++++++++++++ + 3 files changed, 37 insertions(+) + create mode 100644 chromium/net/dns/resolv_compat.h + +diff --git a/chromium/net/dns/dns_config_service_posix.cc b/chromium/net/dns/dns_config_service_posix.cc +index 088fb9b..98d0a35 100644 +--- a/chromium/net/dns/dns_config_service_posix.cc ++++ b/chromium/net/dns/dns_config_service_posix.cc +@@ -26,6 +26,10 @@ + #include "net/dns/notify_watcher_mac.h" + #include "net/dns/serial_worker.h" + ++#if defined(OS_LINUX) && !defined(__GLIBC__) ++#include "net/dns/resolv_compat.h" ++#endif ++ + #if defined(OS_MACOSX) && !defined(OS_IOS) + #include "net/dns/dns_config_watcher_mac.h" + #endif +diff --git a/chromium/net/dns/dns_reloader.cc b/chromium/net/dns/dns_reloader.cc +index 322c8a5..72ff40d 100644 +--- a/chromium/net/dns/dns_reloader.cc ++++ b/chromium/net/dns/dns_reloader.cc +@@ -9,6 +9,10 @@ + + #include + ++#if defined(OS_LINUX) && !defined(__GLIBC__) ++#include "net/dns/resolv_compat.h" ++#endif ++ + #include "base/lazy_instance.h" + #include "base/logging.h" + #include "base/macros.h" +diff --git a/chromium/net/dns/resolv_compat.h b/chromium/net/dns/resolv_compat.h +new file mode 100644 +index 0000000..4f0e852 +--- /dev/null ++++ b/chromium/net/dns/resolv_compat.h +@@ -0,0 +1,29 @@ ++#if !defined(__GLIBC__) ++/*************************************************************************** ++ * resolv_compat.h ++ * ++ * Mimick GLIBC's res_ninit() and res_nclose() for musl libc ++ * Note: res_init() is actually deprecated according to ++ * http://docs.oracle.com/cd/E36784_01/html/E36875/res-nclose-3resolv.html ++ **************************************************************************/ ++#include ++ ++static inline int res_ninit(res_state statp) ++{ ++ int rc = res_init(); ++ if (statp != &_res) { ++ memcpy(statp, &_res, sizeof(*statp)); ++ } ++ return rc; ++} ++ ++static inline int res_nclose(res_state statp) ++{ ++ if (!statp) ++ return -1; ++ if (statp != &_res) { ++ memset(statp, 0, sizeof(*statp)); ++ } ++ return 0; ++} ++#endif diff --git a/meta/recipes-qt/qt5/qtwebengine/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch b/meta/recipes-qt/qt5/qtwebengine/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch new file mode 100644 index 0000000000..e6863251f4 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch @@ -0,0 +1,26 @@ +From a968ea31e3ac6a007fd157c61faf9f6f632d8230 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 15:39:57 -0700 +Subject: [PATCH] chromium: musl: Do not define __sbrk on musl + +musl libc does not have sbrk. on musl libc will only work when called with 0 as +argument, so we just let it out for now + +Signed-off-by: Khem Raj +--- + chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h +index edc8cf2..a868b50 100644 +--- a/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h ++++ b/chromium/third_party/tcmalloc/chromium/src/malloc_hook_mmap_linux.h +@@ -233,7 +233,7 @@ extern "C" void* mremap(void* old_addr, size_t old_size, size_t new_size, + } + + // Don't hook sbrk() in Android, since it doesn't expose __sbrk. +-#if !defined(__ANDROID__) ++#if !defined(__ANDROID__) && defined(__GLIBC__) + // libc's version: + extern "C" void* __sbrk(ptrdiff_t increment); + diff --git a/meta/recipes-qt/qt5/qtwebengine/0013-chromium-musl-Adjust-default-pthread-stack-size.patch b/meta/recipes-qt/qt5/qtwebengine/0013-chromium-musl-Adjust-default-pthread-stack-size.patch new file mode 100644 index 0000000000..c1d6ec32ae --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0013-chromium-musl-Adjust-default-pthread-stack-size.patch @@ -0,0 +1,47 @@ +From a56debd9f26bacf76f0d734e98191485deba03fa Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 16:41:23 -0700 +Subject: [PATCH] chromium: musl: Adjust default pthread stack size + +Signed-off-by: Khem Raj +--- + chromium/base/threading/platform_thread_linux.cc | 3 ++- + chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/chromium/base/threading/platform_thread_linux.cc b/chromium/base/threading/platform_thread_linux.cc +index 8d411ed..4b56cf3 100644 +--- a/chromium/base/threading/platform_thread_linux.cc ++++ b/chromium/base/threading/platform_thread_linux.cc +@@ -175,7 +175,8 @@ void TerminateOnThread() {} + + size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) { + #if !defined(THREAD_SANITIZER) +- return 0; ++ // use 8mb like glibc to avoid running out of space ++ return (1 << 23); + #else + // ThreadSanitizer bloats the stack heavily. Evidence has been that the + // default stack size isn't enough for some browser tests. +diff --git a/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp b/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp +index 13c3f90..07308e0 100644 +--- a/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp ++++ b/chromium/third_party/WebKit/Source/platform/wtf/StackUtil.cpp +@@ -28,7 +28,7 @@ size_t GetUnderestimatedStackSize() { + // FIXME: On Mac OSX and Linux, this method cannot estimate stack size + // correctly for the main thread. + +-#if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ + defined(OS_FUCHSIA) + // pthread_getattr_np() can fail if the thread is not invoked by + // pthread_create() (e.g., the main thread of webkit_unit_tests). +@@ -96,7 +96,7 @@ size_t GetUnderestimatedStackSize() { + } + + void* GetStackStart() { +-#if defined(__GLIBC__) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD) || \ + defined(OS_FUCHSIA) + pthread_attr_t attr; + int error; diff --git a/meta/recipes-qt/qt5/qtwebengine/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch b/meta/recipes-qt/qt5/qtwebengine/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch new file mode 100644 index 0000000000..81e71e7db8 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch @@ -0,0 +1,22 @@ +From 5809e73146cdf43d13aa1b3789bfc7ff2ff723af Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 7 Jul 2017 17:15:34 -0700 +Subject: [PATCH] chromium: musl: include asm-generic/ioctl.h for TCGETS2 + +Signed-off-by: Khem Raj +--- + chromium/device/serial/serial_io_handler_posix.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/chromium/device/serial/serial_io_handler_posix.cc b/chromium/device/serial/serial_io_handler_posix.cc +index 8ffba12..82fb09f 100644 +--- a/chromium/device/serial/serial_io_handler_posix.cc ++++ b/chromium/device/serial/serial_io_handler_posix.cc +@@ -6,6 +6,7 @@ + + #include + #include ++#include + + #include "base/files/file_util.h" + #include "base/posix/eintr_wrapper.h" diff --git a/meta/recipes-qt/qt5/qtwebengine/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch b/meta/recipes-qt/qt5/qtwebengine/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch new file mode 100644 index 0000000000..03aa77a048 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine/0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch @@ -0,0 +1,23 @@ +From 0aca8610a03cc100464d0d52a2c5425c52ab1e66 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 8 Jul 2017 09:08:23 -0700 +Subject: [PATCH] chromium: musl: tcmalloc: Use off64_t insread of __off64_t + +Signed-off-by: Khem Raj +--- + chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h +index 91f77dd..bb84a0b 100644 +--- a/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h ++++ b/chromium/third_party/tcmalloc/chromium/src/base/linux_syscall_support.h +@@ -1929,7 +1929,7 @@ typedef unsigned long int ulong; + #if defined(__x86_64__) + /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */ + LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, +- __off64_t o) { ++ off64_t o) { + LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l), + LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f), + LSS_SYSCALL_ARG(d), (uint64_t)(o)); diff --git a/meta/recipes-qt/qt5/qtwebengine_git.bb b/meta/recipes-qt/qt5/qtwebengine_git.bb new file mode 100644 index 0000000000..db089c14de --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebengine_git.bb @@ -0,0 +1,169 @@ +SUMMARY = "QtWebEngine combines the power of Chromium and Qt" + +# Read http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ +LICENSE = "BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://src/core/browser_context_qt.cpp;md5=b5193b7d68699260f3b40b201365c8d2;beginline=1;endline=38 \ + file://src/3rdparty/chromium/LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \ + file://LICENSE.LGPL3;md5=8211fde12cc8a4e2477602f5953f5b71 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ +" + +DEPENDS += " \ + libpng-native \ + nss-native \ + nspr-native \ + ninja-native \ + yasm-native \ + bison-native \ + qtwebchannel \ + qtbase qtdeclarative qtxmlpatterns qtquickcontrols qtquickcontrols2 \ + qtlocation \ + libdrm fontconfig pixman openssl pango cairo icu pciutils nss \ + libcap \ + gperf-native \ + ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa-lib', '', d)} \ +" + +DEPENDS_append_libc-musl = " libexecinfo" + +EXTRA_QMAKEVARS_CONFIGURE += "-feature-webengine-system-ninja -no-feature-webengine-system-gn" + +# chromium/third_party/openh264/openh264.gyp adds +# -Wno-format to openh264_cflags_add +# similarly chromium/third_party/openh264/BUILD.gn for newer qtwebengine +# causing following error, because -Wformat-security cannot be used together with -Wno-format +# cc1plus: error: -Wformat-security ignored without -Wformat [-Werror=format-security] +# http://errors.yoctoproject.org/Errors/Details/150333/ +SECURITY_STRINGFORMAT = "" + +# To use system ffmpeg you need to enable also libwebp, opus, vpx +# Only depenedencies available in oe-core are enabled by default +PACKAGECONFIG ??= "libwebp libevent libpng" +PACKAGECONFIG[icu] = "-feature-webengine-system-icu,-no-feature-webengine-system-icu,icu" +PACKAGECONFIG[ffmpeg] = "-feature-webengine-system-ffmpeg,-no-feature-webengine-system-ffmpeg,libav" +PACKAGECONFIG[webrtc] = "-feature-webengine-webrtc,-no-feature-webengine-webrtc,libvpx" +PACKAGECONFIG[libwebp] = "-feature-webengine-system-libwebp,-no-feature-webengine-system-libwebp,libwebp" +PACKAGECONFIG[opus] = "-feature-webengine-system-opus,-no-feature-webengine-system-opus,libopus" +PACKAGECONFIG[libvpx] = "-feature-webengine-system-libvpx,-no-feature-webengine-system-libvpx,libvpx" +PACKAGECONFIG[libevent] = "-feature-webengine-system-libevent,-no-feature-webengine-system-libevent,libevent" +PACKAGECONFIG[libpng] = "-feature-webengine-system-png,-no-feature-webengine-system-png,libpng" +PACKAGECONFIG[harfbuzz] = "-feature-webengine-system-harfbuzz,-no-feature-webengine-system-harfbuzz,harfbuzz" +PACKAGECONFIG[glib] = "-feature-webengine-system-glib,-no-feature-webengine-system-glib,glib" +PACKAGECONFIG[zlib] = "-feature-webengine-system-zlib,-no-feature-webengine-system-zlib,zlib" +PACKAGECONFIG[protobuf] = "-feature-webengine-system-protobuf,-no-feature-webengine-system-protobuf,protobuf" +PACKAGECONFIG[jasoncpp] = "-feature-webengine-system-jsoncpp,-no-feature-webengine-system-jsoncpp,jasoncpp" +PACKAGECONFIG[libxml2] = "-feature-webengine-system-libxml2,-no-feature-webengine-system-libxml2,libxml2" +PACKAGECONFIG[minizip] = "-feature-webengine-system-minizip,-no-feature-webengine-system-minizip,minizip" + +EXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" + +COMPATIBLE_MACHINE = "(-)" +COMPATIBLE_MACHINE_x86 = "(.*)" +COMPATIBLE_MACHINE_x86-64 = "(.*)" +COMPATIBLE_MACHINE_armv6 = "(.*)" +COMPATIBLE_MACHINE_armv7a = "(.*)" +COMPATIBLE_MACHINE_armv7ve = "(.*)" +COMPATIBLE_MACHINE_aarch64 = "(.*)" + +inherit qmake5 +inherit gettext +inherit pythonnative +inherit perlnative + +# we don't want gettext.bbclass to append --enable-nls +def gettext_oeconf(d): + return "" + +require qt5.inc +require qt5-git.inc + +export GN_PKG_CONFIG_HOST = "${STAGING_BINDIR_NATIVE}/pkg-config-native" +export GN_HOST_TOOLCHAIN_EXTRA_CPPFLAGS = "-I${STAGING_DIR_NATIVE}/usr/include" + +do_configure() { + + # qmake can't find the OE_QMAKE_* variables on it's own so directly passing them as + # arguments here + ${OE_QMAKE_QMAKE} ${EXTRA_QMAKEVARS_PRE} ${S} \ + QMAKE_CXX="${OE_QMAKE_CXX}" \ + QMAKE_CC="${OE_QMAKE_CC}" \ + QMAKE_LINK="${OE_QMAKE_LINK}" \ + QMAKE_CFLAGS="${OE_QMAKE_CFLAGS}" \ + QMAKE_CXXFLAGS="${OE_QMAKE_CXXFLAGS}" \ + -after ${EXTRA_QMAKEVARS_POST} -- \ + ${EXTRA_QMAKEVARS_CONFIGURE} +} + +do_configure_prepend_libc-musl() { + for f in `find ${S}/src/3rdparty/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ -name config.h -o -name config.asm`; do + sed -i -e "s:define HAVE_SYSCTL 1:define HAVE_SYSCTL 0:g" $f + done + sed -i -e "s:define HAVE_STRUCT_MALLINFO 1:/*undef HAVE_STRUCT_MALLINFO */:g" ${S}/src/3rdparty/chromium/third_party/tcmalloc/chromium/src/config_linux.h +} + +do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" + +do_install_append() { + sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@[^ ]*${B}[^ ]* @@g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc +} +PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src" + +# for /usr/share/qt5/qtwebengine_resources.pak +FILES_${PN} += "${OE_QMAKE_PATH_QT_TRANSLATIONS} ${OE_QMAKE_PATH_QT_DATA}" + +RDEPENDS_${PN}-examples += " \ + ${PN}-qmlplugins \ + qtquickcontrols-qmlplugins \ + qtdeclarative-qmlplugins \ +" + +QT_MODULE_BRANCH_CHROMIUM = "61-based" + +# Patches from https://github.com/meta-qt5/qtwebengine/commits/b5.10 +# 5.10.meta-qt5.2 +SRC_URI += " \ + ${QT_GIT}/qtwebengine-chromium.git;name=chromium;branch=${QT_MODULE_BRANCH_CHROMIUM};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty \ + file://0001-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch \ + file://0002-Include-dependency-to-QCoreApplication-translate.patch \ + file://0003-Force-host-toolchain-configuration.patch \ +" +SRC_URI_append_libc-musl = "\ + file://0004-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch \ + file://0005-musl-link-against-libexecinfo.patch \ +" + +# Patches from https://github.com/meta-qt5/qtwebengine-chromium/commits/61-based +# 61-based.meta-qt5.2 +SRC_URI += " \ + file://0001-chromium-Force-host-toolchain-configuration.patch;patchdir=src/3rdparty \ + file://0002-chromium-workaround-for-too-long-.rps-file-name.patch;patchdir=src/3rdparty \ +" + +SRC_URI_append_libc-musl = "\ + file://0003-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch;patchdir=src/3rdparty \ + file://0004-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch;patchdir=src/3rdparty \ + file://0005-chromium-musl-include-fcntl.h-for-loff_t.patch;patchdir=src/3rdparty \ + file://0006-chromium-musl-use-off64_t-instead-of-the-internal-__.patch;patchdir=src/3rdparty \ + file://0007-chromium-musl-linux-glibc-make-the-distinction.patch;patchdir=src/3rdparty \ + file://0008-chromium-musl-allocator-Do-not-include-glibc_weak_sy.patch;patchdir=src/3rdparty \ + file://0009-chromium-musl-Use-correct-member-name-__si_fields-fr.patch;patchdir=src/3rdparty \ + file://0010-chromium-musl-Match-syscalls-to-match-musl.patch;patchdir=src/3rdparty \ + file://0011-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch;patchdir=src/3rdparty \ + file://0012-chromium-musl-Do-not-define-__sbrk-on-musl.patch;patchdir=src/3rdparty \ + file://0013-chromium-musl-Adjust-default-pthread-stack-size.patch;patchdir=src/3rdparty \ + file://0014-chromium-musl-include-asm-generic-ioctl.h-for-TCGETS.patch;patchdir=src/3rdparty \ + file://0015-chromium-musl-tcmalloc-Use-off64_t-insread-of-__off6.patch;patchdir=src/3rdparty \ +" + +SRCREV_qtwebengine = "9dc8dff7a8f4d58f71d816375d49f8829f06aae5" +SRCREV_chromium = "c858cc76099db0af82a264b3c6f921a287cfcb42" +SRCREV = "${SRCREV_qtwebengine}" + +SRCREV_FORMAT = "qtwebengine_chromium" + +# WARNING: qtwebengine-5.5.99+5.6.0-rc+gitAUTOINC+3f02c25de4_779a2388fc-r0 do_package_qa: QA Issue: ELF binary '/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtwebengine/5.5.99+5.6.0-rc+gitAUTOINC+3f02c25de4_779a2388fc-r0/packages-split/qtwebengine/usr/lib/libQt5WebEngineCore.so.5.6.0' has relocations in .text [textrel] +INSANE_SKIP_${PN} += "textrel" diff --git a/meta/recipes-qt/qt5/qtwebkit-examples_git.bb b/meta/recipes-qt/qt5/qtwebkit-examples_git.bb new file mode 100644 index 0000000000..114fab7a7d --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebkit-examples_git.bb @@ -0,0 +1,22 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPLv2;md5=05832301944453ec79e40ba3c3cfceec \ + file://LICENSE.LGPLv21;md5=58a180e1cf84c756c29f782b3a485c29 \ + file://LICENSE.LGPLv3;md5=b8c75190712063cde04e1f41b6fdad98 \ + file://LICENSE.GPLv3;md5=40f9bf30e783ddc201497165dfb32afb \ + file://examples/webkitwidgets/scroller/wheel/main.cpp;endline=39;md5=b0739af76072fbe303dc04b6941e054f \ + file://examples/webkitwidgets/imageanalyzer/imageanalyzer.cpp;endline=39;md5=b0739af76072fbe303dc04b6941e054f \ +" + +PACKAGECONFIG ?= "examples" + +DEPENDS += "qtwebkit qtxmlpatterns" +RDEPENDS_${PN}-examples += "qtwebkit-qmlplugins" +RDEPENDS_${PN}-examples += "${@bb.utils.contains('PACKAGECONFIG_OPENSSL', 'openssl', 'ca-certificates', '', d)}" + +QT_MODULE_BRANCH = "5.9" + +SRCREV = "a24c780b60d7d8bc00c4a48042cf7f32db777d55" diff --git a/meta/recipes-qt/qt5/qtwebkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/meta/recipes-qt/qt5/qtwebkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch new file mode 100644 index 0000000000..f35c5d47e8 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch @@ -0,0 +1,27 @@ +From c4e691a8dd2037d9b359e0de9d4790da9078f74e Mon Sep 17 00:00:00 2001 +From: Trevor Woerner +Date: Fri, 7 Feb 2014 04:07:17 +0100 +Subject: [PATCH] qtwebkit: fix QA issue (bad RPATH) + +Building qtwebkit causes a QA issue such that QtWebPluginProcess and +QtWebProcess contain bad RPATHs which point into the build location. This fix +adds a patch to not include the rpath.prf which causes this problem. + +Signed-off-by: Trevor Woerner +Signed-off-by: Martin Jansa +--- + Tools/qmake/mkspecs/features/unix/default_post.prf | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf +index fd66af6..ef754c3 100644 +--- a/Tools/qmake/mkspecs/features/unix/default_post.prf ++++ b/Tools/qmake/mkspecs/features/unix/default_post.prf +@@ -61,7 +61,6 @@ linux-*g++* { + } + } + +-contains(TEMPLATE, app): CONFIG += rpath + + CONFIG(debug, debug|release)|force_debug_info { + # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase. diff --git a/meta/recipes-qt/qt5/qtwebkit/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch b/meta/recipes-qt/qt5/qtwebkit/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch new file mode 100644 index 0000000000..6affd2e608 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebkit/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch @@ -0,0 +1,35 @@ +From fc2773961eaa536e6a617ded7c1a972d979fa2e4 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 5 Jun 2015 19:55:05 -0700 +Subject: [PATCH] Exclude backtrace() API for non-glibc libraries + +It was excluding musl with current checks, so lets make it such that it +considers only glibc when using backtrace API + +Signed-off-by: Khem Raj +--- + Source/WTF/wtf/Assertions.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp +index 1b2091f..ba03a28 100644 +--- a/Source/WTF/wtf/Assertions.cpp ++++ b/Source/WTF/wtf/Assertions.cpp +@@ -61,7 +61,7 @@ + #include + #endif + +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) ++#if (OS(DARWIN) || (OS(LINUX) && defined (__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID) + #include + #include + #include +@@ -245,7 +245,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f + + void WTFGetBacktrace(void** stack, int* size) + { +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) ++#if (OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID) + *size = backtrace(stack, *size); + #elif OS(WINDOWS) && !OS(WINCE) + // The CaptureStackBackTrace function is available in XP, but it is not defined diff --git a/meta/recipes-qt/qt5/qtwebkit_git.bb b/meta/recipes-qt/qt5/qtwebkit_git.bb new file mode 100644 index 0000000000..c8e832819d --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebkit_git.bb @@ -0,0 +1,100 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "BSD & LGPLv2+ | GPL-2.0" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPLv2;md5=05832301944453ec79e40ba3c3cfceec \ + file://Source/WebCore/rendering/RenderApplet.h;endline=22;md5=fb9694013ad71b78f8913af7a5959680 \ + file://Source/WebKit/gtk/webkit/webkit.h;endline=21;md5=b4fbe9f4a944f1d071dba1d2c76b3351 \ + file://Source/JavaScriptCore/parser/Parser.h;endline=21;md5=bd69f72183a7af673863f057576e21ee \ +" + +DEPENDS += "qtbase qtdeclarative icu ruby-native sqlite3 glib-2.0 libxslt gperf-native" + +# qemuarm build fails with: +# | {standard input}: Assembler messages: +# | {standard input}:106: Error: invalid immediate: 983040 is out of range +# | {standard input}:106: Error: value of 983040 too large for field of 2 bytes at 146 +ARM_INSTRUCTION_SET_armv4 = "arm" +ARM_INSTRUCTION_SET_armv5 = "arm" + +# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474 +# https://bugs.webkit.org/show_bug.cgi?id=159880 +# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime. +# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb). +ARM_INSTRUCTION_SET_armv7a = "thumb" +ARM_INSTRUCTION_SET_armv7r = "thumb" +ARM_INSTRUCTION_SET_armv7ve = "thumb" + +# Patches from https://github.com/meta-qt5/qtwebkit/commits/b5.10 +# 5.10.meta-qt5.1 +SRC_URI += "\ + file://0001-qtwebkit-fix-QA-issue-bad-RPATH.patch \ + file://0002-Exclude-backtrace-API-for-non-glibc-libraries.patch \ +" + +PACKAGECONFIG ??= "gstreamer qtlocation qtmultimedia qtsensors qtwebchannel \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxcomposite libxrender', '', d)} \ + fontconfig \ +" +PACKAGECONFIG[gstreamer] = "OE_GSTREAMER_ENABLED,,gstreamer1.0 gstreamer1.0-plugins-base" +PACKAGECONFIG[gstreamer010] = "OE_GSTREAMER010_ENABLED,,gstreamer gst-plugins-base" +PACKAGECONFIG[qtlocation] = "OE_QTLOCATION_ENABLED,,qtlocation" +PACKAGECONFIG[qtmultimedia] = "OE_QTMULTIMEDIA_ENABLED,,qtmultimedia" +PACKAGECONFIG[qtsensors] = "OE_QTSENSORS_ENABLED,,qtsensors" +PACKAGECONFIG[qtwebchannel] = "OE_QTWEBCHANNEL_ENABLED,,qtwebchannel" +PACKAGECONFIG[libwebp] = "OE_LIBWEBP_ENABLED,,libwebp" +PACKAGECONFIG[libxcomposite] = "OE_LIBXCOMPOSITE_ENABLED,,libxcomposite" +PACKAGECONFIG[libxrender] = "OE_LIBXRENDER_ENABLED,,libxrender" +PACKAGECONFIG[fontconfig] = "OE_FONTCONFIG_ENABLED,,fontconfig" + +do_configure_prepend() { + export QMAKE_CACHE_EVAL="CONFIG+=${PACKAGECONFIG_CONFARGS}" + # disable gstreamer-1.0 test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(packagesExist(".*\.*")\)/ OE_GSTREAMER_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable gstreamer-0.10 test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(packagesExist(".*\.*")\)/ OE_GSTREAMER010_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable qtlocation test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(qtHaveModule(positioning)\)/ OE_QTLOCATION_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable qtmultimedia test if it isn't enabled by PACKAGECONFIG + sed -e 's/(video):\(qtHaveModule(multimediawidgets)\)/(video):OE_QTMULTIMEDIA_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable qtsensors test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(qtHaveModule(sensors)\)/ OE_QTSENSORS_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable qtwebchannel test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(qtHaveModule(webchannel)\)/ OE_QTWEBCHANNEL_ENABLED:\1/' -i ${S}/Source/WebKit2/Target.pri + sed -e 's/\s\(qtHaveModule(webchannel)\)/ OE_QTWEBCHANNEL_ENABLED:\1/' -i ${S}/Source/WebKit2/WebKit2.pri + # disable libwebp test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(config_libwebp: \)/ OE_LIBWEBP_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable libxcomposite test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(config_libXcomposite: \)/ OE_LIBXCOMPOSITE_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable libxrender test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(config_libXrender: \)/ OE_LIBXRENDER_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf + # disable fontconfig test if it isn't enabled by PACKAGECONFIG + sed -e 's/\s\(config_fontconfig: \)/ OE_FONTCONFIG_ENABLED:\1/' -i ${S}/Tools/qmake/mkspecs/features/features.prf +} + +# Forcibly enable ICU, so qtbase doesn't need it. +EXTRA_QMAKEVARS_PRE += "QT_CONFIG+=icu" + +# qtwebkit gets terribly big when linking with all debug info, disable by default +QTWEBKIT_DEBUG = "QMAKE_CFLAGS+=-g0 QMAKE_CXXFLAGS+=-g0" +EXTRA_QMAKEVARS_PRE += "${QTWEBKIT_DEBUG}" + +do_install_append() { + # Remove paths to workdir, qtwebkit is dead now, so I won't spend extra time trying to prevent this + # from some .prl or .prf file like for other modules + sed -i 's@-Wl,-no-whole-archive -L${B}[^ ]* @ @g' ${D}${libdir}/pkgconfig/Qt5WebKit.pc +} + +# remove default ${PN}-examples* set in qt5.inc, because they conflicts with ${PN} from separate webkit-examples recipe +PACKAGES_remove = "${PN}-examples-dev ${PN}-examples-staticdev ${PN}-examples-dbg ${PN}-examples" + +# make sure rb files are used from sysroot, not from host +# ruby-1.9.3-always-use-i386.patch is doing target_cpu=`echo $target_cpu | sed s/i.86/i386/` +# we need to replace it too (a bit longer version without importing re) +RUBY_SYS = "${@ '${BUILD_SYS}'.replace('i486', 'i386').replace('i586', 'i386').replace('i686', 'i386') }" +export RUBYLIB="${STAGING_DATADIR_NATIVE}/rubygems:${STAGING_LIBDIR_NATIVE}/ruby:${STAGING_LIBDIR_NATIVE}/ruby/${RUBY_SYS}" + +QT_MODULE_BRANCH = "5.9" + +SRCREV = "bd0657f98aff85b9f06d85a8cf4da6a27f61a56e" diff --git a/meta/recipes-qt/qt5/qtwebsockets_git.bb b/meta/recipes-qt/qt5/qtwebsockets_git.bb new file mode 100644 index 0000000000..5d429ca055 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebsockets_git.bb @@ -0,0 +1,14 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & (GPL-3 | LGPL-3.0) | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ +" + +DEPENDS += "qtbase qtdeclarative" + +SRCREV = "2160c268ec80012f86be3eef20e05c267cdd2926" diff --git a/meta/recipes-qt/qt5/qtwebview_git.bb b/meta/recipes-qt/qt5/qtwebview_git.bb new file mode 100644 index 0000000000..f164c6af58 --- /dev/null +++ b/meta/recipes-qt/qt5/qtwebview_git.bb @@ -0,0 +1,22 @@ +LICENSE = "GFDL-1.3 & BSD & ( GPL-2.0+ | LGPL-3.0 ) | The-Qt-Company-Commercial" +LIC_FILES_CHKSUM = " \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ +" + +require qt5.inc +require qt5-git.inc + +DEPENDS += "qtbase qtwebengine" + +COMPATIBLE_MACHINE = "(-)" +COMPATIBLE_MACHINE_x86 = "(.*)" +COMPATIBLE_MACHINE_x86-64 = "(.*)" +COMPATIBLE_MACHINE_armv6 = "(.*)" +COMPATIBLE_MACHINE_armv7a = "(.*)" +COMPATIBLE_MACHINE_armv7ve = "(.*)" +COMPATIBLE_MACHINE_aarch64 = "(.*)" + +SRCREV = "7445cd28616e68af3cf5e074a5576cbe6c5bf491" diff --git a/meta/recipes-qt/qt5/qtx11extras_git.bb b/meta/recipes-qt/qt5/qtx11extras_git.bb new file mode 100644 index 0000000000..443e9d50b3 --- /dev/null +++ b/meta/recipes-qt/qt5/qtx11extras_git.bb @@ -0,0 +1,16 @@ +require qt5.inc +require qt5-git.inc + +LICENSE = "GFDL-1.3 & BSD & (LGPL-2.1 & The-Qt-Company-Qt-LGPL-Exception-1.1 | LGPL-3.0) | GPL-2.0" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPLv21;md5=4bfd28363f541b10d9f024181b8df516 \ + file://LICENSE.LGPLv3;md5=e0459b45c5c4840b353141a8bbed91f0 \ + file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ + file://LGPL_EXCEPTION.txt;md5=9625233da42f9e0ce9d63651a9d97654 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ + file://LICENSE.GPLv2;md5=c96076271561b0e3785dad260634eaa8 \ +" + +DEPENDS += "qtbase" + +SRCREV = "a751298bc381b0fd0c6867e43d2613b98c2cb71f" diff --git a/meta/recipes-qt/qt5/qtxmlpatterns_git.bb b/meta/recipes-qt/qt5/qtxmlpatterns_git.bb new file mode 100644 index 0000000000..77d7fe20b1 --- /dev/null +++ b/meta/recipes-qt/qt5/qtxmlpatterns_git.bb @@ -0,0 +1,20 @@ +require qt5.inc +require qt5-git.inc +require qt5-ptest.inc + +HOMEPAGE = "http://www.qt.io" +LICENSE = "GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial )" +LIC_FILES_CHKSUM = " \ + file://LICENSE.LGPL3;md5=e6a600fd5e1d9cbde2d983680233ad02 \ + file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ + file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ + file://LICENSE.FDL;md5=6d9f2a9af4c8b8c3c769f6cc1b6aaf7e \ +" + +DEPENDS += "qtbase" + +SRCREV = "7c4113d6e6215b26b866ed2a0da0fa5e0c12b8ea" + +BBCLASSEXTEND =+ "native nativesdk" + -- cgit 1.2.3-korg