* [meta-qt5][PATCH 2/3] qt3d: Fix assimp build with clang
2015-08-24 4:52 [meta-qt5][PATCH 1/3] qtbase: Fix build with clang Khem Raj
@ 2015-08-24 4:52 ` Khem Raj
2015-08-24 4:52 ` [meta-qt5][PATCH 3/3] qtwayland: Fix build for raspberryPi Khem Raj
2015-08-24 12:42 ` [meta-qt5][PATCH 1/3] qtbase: Fix build with clang Martin Jansa
2 siblings, 0 replies; 4+ messages in thread
From: Khem Raj @ 2015-08-24 4:52 UTC (permalink / raw)
To: openembedded-devel
These issues wont happen with qt3d master since assimp seems to have dropped
the offending code, but for the release we use in meta-qt5 as of now we
will need it.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...001-Fix-narrowing-errors-found-with-clang.patch | 72 ++++++++++++++++++++++
recipes-qt/qt5/qt3d_git.bb | 2 +
2 files changed, 74 insertions(+)
create mode 100644 recipes-qt/qt5/qt3d/0001-Fix-narrowing-errors-found-with-clang.patch
diff --git a/recipes-qt/qt5/qt3d/0001-Fix-narrowing-errors-found-with-clang.patch b/recipes-qt/qt5/qt3d/0001-Fix-narrowing-errors-found-with-clang.patch
new file mode 100644
index 0000000..afe7d32
--- /dev/null
+++ b/recipes-qt/qt5/qt3d/0001-Fix-narrowing-errors-found-with-clang.patch
@@ -0,0 +1,72 @@
+From 538f94f658b181c95c4e98be1429f798be1b437f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Aug 2015 15:50:38 -0700
+Subject: [PATCH] Fix narrowing errors found with clang
+
+clang errors out with
+
+non-constant-expression cannot be narrowed from type 'int8_t' (aka
+'signed char') to 'char' in initializer list
+
+adjust the types to fix the error
+
+string contructor expects char* and not unsigned char* so adjust the
+call
+
+Another issue is seen in constructor using bool instead of a pointer
+
+error: cannot initialize a
+ member subobject of type 'Assimp::DXFImporter::LayerInfo *' with
+ an rvalue of type 'bool'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ 3rdparty/assimp/code/BlenderDNA.cpp | 6 +++---
+ 3rdparty/assimp/code/DXFLoader.cpp | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/3rdparty/assimp/code/BlenderDNA.cpp b/3rdparty/assimp/code/BlenderDNA.cpp
+index 75ef61f..fb6d1de 100644
+--- a/3rdparty/assimp/code/BlenderDNA.cpp
++++ b/3rdparty/assimp/code/BlenderDNA.cpp
+@@ -55,7 +55,7 @@ using namespace Assimp::Formatter;
+
+ #define for_each BOOST_FOREACH
+ bool match4(StreamReaderAny& stream, const char* string) {
+- char tmp[] = {
++ int8_t tmp[] = {
+ (stream).GetI1(),
+ (stream).GetI1(),
+ (stream).GetI1(),
+@@ -343,13 +343,13 @@ void SectionParser :: Next()
+ {
+ stream.SetCurrentPos(current.start + current.size);
+
+- const char tmp[] = {
++ const int8_t tmp[] = {
+ stream.GetI1(),
+ stream.GetI1(),
+ stream.GetI1(),
+ stream.GetI1()
+ };
+- current.id = std::string(tmp,tmp[3]?4:tmp[2]?3:tmp[1]?2:1);
++ current.id = std::string((char*)tmp,tmp[3]?4:tmp[2]?3:tmp[1]?2:1);
+
+ current.size = stream.GetI4();
+ current.address.val = ptr64 ? stream.GetU8() : stream.GetU4();
+diff --git a/3rdparty/assimp/code/DXFLoader.cpp b/3rdparty/assimp/code/DXFLoader.cpp
+index e372d60..159e1a9 100644
+--- a/3rdparty/assimp/code/DXFLoader.cpp
++++ b/3rdparty/assimp/code/DXFLoader.cpp
+@@ -84,7 +84,7 @@ aiColor4D g_clrInvalid = aiColor4D(get_qnan(),0.f,0.f,1.f);
+
+ // ------------------------------------------------------------------------------------------------
+ // Constructor to be privately used by Importer
+-DXFImporter::DXFImporter() : buffer(0), groupCode(0), bRepeat(false), mDefaultLayer(false)
++DXFImporter::DXFImporter() : buffer(0), groupCode(0), bRepeat(false), mDefaultLayer(NULL)
+ {
+ memset(cursor,0,sizeof(cursor));
+ }
+--
+2.1.4
+
diff --git a/recipes-qt/qt5/qt3d_git.bb b/recipes-qt/qt5/qt3d_git.bb
index 62f17e1..752d896 100644
--- a/recipes-qt/qt5/qt3d_git.bb
+++ b/recipes-qt/qt5/qt3d_git.bb
@@ -21,3 +21,5 @@ QT_MODULE_BRANCH = "dev"
# last tag before this SRCREV is 5.0.0-beta1, but version says 5.3.0 already
SRCREV = "8a9723d7420829a2ba0141a9f7d8dc8cd11d8331"
+
+SRC_URI += "file://0001-Fix-narrowing-errors-found-with-clang.patch"
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread* [meta-qt5][PATCH 3/3] qtwayland: Fix build for raspberryPi
2015-08-24 4:52 [meta-qt5][PATCH 1/3] qtbase: Fix build with clang Khem Raj
2015-08-24 4:52 ` [meta-qt5][PATCH 2/3] qt3d: Fix assimp " Khem Raj
@ 2015-08-24 4:52 ` Khem Raj
2015-08-24 12:42 ` [meta-qt5][PATCH 1/3] qtbase: Fix build with clang Martin Jansa
2 siblings, 0 replies; 4+ messages in thread
From: Khem Raj @ 2015-08-24 4:52 UTC (permalink / raw)
To: openembedded-devel
rpi uses bcom EGL implementation and it has descrepency when it comes to
defining 'EGLNativePixmapType', lets typecast the ussage of this type to
avoid this sort of errors.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...egl-Typecast-proper-EGLNativeWindowType-t.patch | 56 ++++++++++++++++++++++
recipes-qt/qt5/qtwayland_git.bb | 1 +
2 files changed, 57 insertions(+)
create mode 100644 recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch
diff --git a/recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch b/recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch
new file mode 100644
index 0000000..2e1f2c4
--- /dev/null
+++ b/recipes-qt/qt5/qtwayland/0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch
@@ -0,0 +1,56 @@
+From 91746518a0cd56d7b0bfda69ba6cf743bf051fb9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Aug 2015 17:33:25 -0700
+Subject: [PATCH] xcomposite-egl: Typecast proper EGLNativeWindowType to
+ eglCreateWindowSurface params
+
+This surfaces on rpi which has slightly different definition of
+EGLNativeWindowType
+
+Fixes errors like
+
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtwayland/5.4.2+gitAUTOINC+182488129c-r0/git/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp:117:26: error: no matching function for call
+ to 'eglCreatePixmapSurface'
+ EGLSurface surface = eglCreatePixmapSurface(mEglDisplay,config,pixmap,attribList.constData());
+ ^~~~~~~~~~~~~~~~~~~~~~
+/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/sysroots/raspberrypi2/usr/include/EGL/egl.h:270:31: note: candidate function not viable: no known conversion from 'Pixmap' (aka 'unsigned long') to 'EGLNativePixmapType' (aka 'void *') for 3rd argument; take the
+ address of the argument with &
+EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
+ ^
+1 error generated.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp | 2 +-
+ .../compositor/xcomposite-egl/xcompositeeglintegration.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp
+index 01d6324..e268ede 100644
+--- a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp
++++ b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp
+@@ -122,7 +122,7 @@ void QWaylandXCompositeEGLWindow::createEglSurface()
+ XCompositeRedirectWindow(m_glxIntegration->xDisplay(), m_xWindow, CompositeRedirectManual);
+ XMapWindow(m_glxIntegration->xDisplay(), m_xWindow);
+
+- m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, m_xWindow,0);
++ m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, (EGLNativeWindowType)m_xWindow,0);
+ if (m_surface == EGL_NO_SURFACE) {
+ qFatal("Could not make eglsurface");
+ }
+diff --git a/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp b/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp
+index 2401d67..61664b5 100644
+--- a/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp
++++ b/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp
+@@ -114,7 +114,7 @@ void XCompositeEglClientBufferIntegration::bindTextureToBuffer(struct ::wl_resou
+ attribList.append(EGL_TEXTURE_2D);
+ attribList.append(EGL_NONE);
+
+- EGLSurface surface = eglCreatePixmapSurface(mEglDisplay,config,pixmap,attribList.constData());
++ EGLSurface surface = eglCreatePixmapSurface(mEglDisplay,config,(EGLNativeWindowType)pixmap,attribList.constData());
+ if (surface == EGL_NO_SURFACE) {
+ qDebug() << "Failed to create eglsurface" << pixmap << compositorBuffer->window();
+ }
+--
+2.1.4
+
diff --git a/recipes-qt/qt5/qtwayland_git.bb b/recipes-qt/qt5/qtwayland_git.bb
index 0be7afe..4725d3c 100644
--- a/recipes-qt/qt5/qtwayland_git.bb
+++ b/recipes-qt/qt5/qtwayland_git.bb
@@ -35,6 +35,7 @@ FILES_${PN}-plugins-dbg += " \
SRC_URI += " \
file://0001-examples-wayland-include-server-buffer-only-when-bui.patch \
+ file://0001-xcomposite-egl-Typecast-proper-EGLNativeWindowType-t.patch \
"
QT_VERSION ?= "5.4.3"
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [meta-qt5][PATCH 1/3] qtbase: Fix build with clang
2015-08-24 4:52 [meta-qt5][PATCH 1/3] qtbase: Fix build with clang Khem Raj
2015-08-24 4:52 ` [meta-qt5][PATCH 2/3] qt3d: Fix assimp " Khem Raj
2015-08-24 4:52 ` [meta-qt5][PATCH 3/3] qtwayland: Fix build for raspberryPi Khem Raj
@ 2015-08-24 12:42 ` Martin Jansa
2 siblings, 0 replies; 4+ messages in thread
From: Martin Jansa @ 2015-08-24 12:42 UTC (permalink / raw)
To: openembedded-devel
[-- Attachment #1: Type: text/plain, Size: 6857 bytes --]
On Sun, Aug 23, 2015 at 09:52:57PM -0700, Khem Raj wrote:
> This patch is a backport from upstream qt5 fixes building with clang
> from meta-clang
I've just merged upgrade to 5.5 can you please rebase your changes and
re-submit?
Thanks
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> recipes-qt/qt5/qtbase-native_git.bb | 1 +
> .../qt5/qtbase/0015-Fix-build-with-clang-3.7.patch | 71 ++++++++++++++++++++++
> recipes-qt/qt5/qtbase_git.bb | 7 ++-
> 3 files changed, 76 insertions(+), 3 deletions(-)
> create mode 100644 recipes-qt/qt5/qtbase/0015-Fix-build-with-clang-3.7.patch
>
> diff --git a/recipes-qt/qt5/qtbase-native_git.bb b/recipes-qt/qt5/qtbase-native_git.bb
> index f84f38e..034a314 100644
> --- a/recipes-qt/qt5/qtbase-native_git.bb
> +++ b/recipes-qt/qt5/qtbase-native_git.bb
> @@ -27,6 +27,7 @@ SRC_URI += "\
> file://0008-eglfs-fix-egl-error-for-platforms-only-supporting-on.patch \
> file://0009-QOpenGLPaintDevice-sub-area-support.patch \
> file://0010-Make-Qt5GuiConfigExtras.cmake-find-gl-es-include-dir.patch \
> + file://0015-Fix-build-with-clang-3.7.patch \
> "
>
> # common for qtbase-native and nativesdk-qtbase
> diff --git a/recipes-qt/qt5/qtbase/0015-Fix-build-with-clang-3.7.patch b/recipes-qt/qt5/qtbase/0015-Fix-build-with-clang-3.7.patch
> new file mode 100644
> index 0000000..181d63c
> --- /dev/null
> +++ b/recipes-qt/qt5/qtbase/0015-Fix-build-with-clang-3.7.patch
> @@ -0,0 +1,71 @@
> +This is backport of https://codereview.qt-project.org/#/c/121545/
> +
> +From 6a6acc496728ce96198d27f9ddd44c2367758d42 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sun, 23 Aug 2015 15:19:41 -0700
> +Subject: [PATCH] Fix build with clang 3.7
> +
> +Nullable is a language extension in clang 3.7 (indicating whether or
> +not a pointer can be null).
> +http://clang.llvm.org/docs/AttributeReference.html#nullable
> +Using it as a class name breaks building with this compiler
> +
> +/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:241:1: error: declaration of anonymous
> + struct must be a definition
> +struct _Nullable: public std::unary_function<Name, bool>
> +^
> +/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:241:56: error: expected unqualified-id
> +struct _Nullable: public std::unary_function<Name, bool>
> + ^
> +/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:303:98: error: expected expression
> + NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (_Nullable (this)));
> + ^
> +/mnt/home/kraj/work/angstrom/build/tmp-angstrom-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.4.2+gitAUTOINC+2cb17c1fb9-r0/git/src/tools/qlalr/lalr.cpp:638:107: error: expected expression
> + NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (_Nullable (this)));
> + ^
> +4 errors generated.
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> + src/tools/qlalr/lalr.cpp | 8 ++++----
> + 1 file changed, 4 insertions(+), 4 deletions(-)
> +
> +diff --git a/src/tools/qlalr/lalr.cpp b/src/tools/qlalr/lalr.cpp
> +index be1df7d..55ef056 100644
> +--- a/src/tools/qlalr/lalr.cpp
> ++++ b/src/tools/qlalr/lalr.cpp
> +@@ -238,11 +238,11 @@ void Grammar::buildExtendedGrammar ()
> + non_terminals.insert (accept_symbol);
> + }
> +
> +-struct _Nullable: public std::unary_function<Name, bool>
> ++struct Nullable: public std::unary_function<Name, bool>
> + {
> + Automaton *_M_automaton;
> +
> +- _Nullable (Automaton *aut):
> ++ Nullable (Automaton *aut):
> + _M_automaton (aut) {}
> +
> + bool operator () (Name name) const
> +@@ -300,7 +300,7 @@ void Automaton::buildNullables ()
> +
> + for (RulePointer rule = _M_grammar->rules.begin (); rule != _M_grammar->rules.end (); ++rule)
> + {
> +- NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (_Nullable (this)));
> ++ NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (Nullable (this)));
> +
> + if (nn == rule->rhs.end ())
> + changed |= nullables.insert (rule->lhs).second;
> +@@ -635,7 +635,7 @@ void Automaton::buildIncludesDigraph ()
> + if (! _M_grammar->isNonTerminal (*A))
> + continue;
> +
> +- NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (_Nullable (this)));
> ++ NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (Nullable (this)));
> + if (first_not_nullable != rule->rhs.end ())
> + continue;
> +
> +--
> +2.1.4
> +
> diff --git a/recipes-qt/qt5/qtbase_git.bb b/recipes-qt/qt5/qtbase_git.bb
> index 33620cb..6814dbe 100644
> --- a/recipes-qt/qt5/qtbase_git.bb
> +++ b/recipes-qt/qt5/qtbase_git.bb
> @@ -22,8 +22,9 @@ SRC_URI += "\
> file://0009-QOpenGLPaintDevice-sub-area-support.patch \
> file://0010-Make-Qt5GuiConfigExtras.cmake-find-gl-es-include-dir.patch \
> file://0014-linux-oe-g-Invert-conditional-for-defining-QT_SOCKLE.patch \
> + file://0015-Fix-build-with-clang-3.7.patch \
> "
> -
> +
> # specific for qtbase
> SRC_URI += "\
> file://0011-qmake-don-t-build-it-in-configure-but-allow-to-build.patch \
> @@ -199,9 +200,9 @@ do_configure() {
> -hostbindir ${OE_QMAKE_PATH_HOST_BINS} \
> -hostdatadir ${OE_QMAKE_PATH_HOST_DATA} \
> -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \
> + ${QT_CONFIG_FLAGS} \
> -platform ${OE_QMAKESPEC} \
> - -xplatform linux-oe-g++ \
> - ${QT_CONFIG_FLAGS}
> + -xplatform linux-oe-g++
>
> qmake5_base_do_configure
> }
> --
> 2.1.4
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
--
Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread