error: ISO C++ forbids declaration of ‘GLsync’ with no type when building gst-plugins-good qt plugin for Raspberry Pi
I am trying to compile gst-plugins-good==1.16.2
with Qt==5.14.0
support for Raspberry Pi gles2.
Building inside the armhf arch docker container which is running on aarch64 machine.
Getting the following error:
make[1]: Entering directory '/build/snaps/full/parts/gst-plugins-good/build/ext/qt'
/bin/bash ../../libtool --tag=CXX --mode=compile arm-linux-gnueabihf-g++ -DHAVE_CONFIG_H -I. -I../.. -I/opt/vc/include -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/build/snaps/full/stage/lib/gstreamer-1.0/include -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I../../gst-libs -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DGST_USE_UNSTABLE_API -fno-strict-aliasing -DG_THREADS_MANDATORY -DG_DISABLE_CAST_CHECKS -Wall -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -g -fvisibility=hidden -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/build/snaps/full/stage/usr/include/QtQuick -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtGui -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtQmlModels -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtQml -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtNetwork -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtCore -I/build/snaps/full/stage/usr/include -I//build/snaps/full/stage/usr/include/QtGui/5.14.0/QtGui -std=c++11 -I/build/snaps/full/stage/include -I/build/snaps/full/stage/usr/include -MT libgstqmlgl_la-gstqsgtexture.lo -MD -MP -MF .deps/libgstqmlgl_la-gstqsgtexture.Tpo -c -o libgstqmlgl_la-gstqsgtexture.lo `test -f 'gstqsgtexture.cc' || echo './'`gstqsgtexture.cc
libtool: compile: arm-linux-gnueabihf-g++ -DHAVE_CONFIG_H -I. -I../.. -I/opt/vc/include -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/build/snaps/full/stage/lib/gstreamer-1.0/include -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I../../gst-libs -pthread -I/build/snaps/full/stage/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -DGST_USE_UNSTABLE_API -fno-strict-aliasing -DG_THREADS_MANDATORY -DG_DISABLE_CAST_CHECKS -Wall -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -g -fvisibility=hidden -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/build/snaps/full/stage/usr/include/QtQuick -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtGui -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtQmlModels -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtQml -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtNetwork -I/build/snaps/full/stage/usr/include -I/build/snaps/full/stage/usr/include/QtCore -I/build/snaps/full/stage/usr/include -I//build/snaps/full/stage/usr/include/QtGui/5.14.0/QtGui -std=c++11 -I/build/snaps/full/stage/include -I/build/snaps/full/stage/usr/include -MT libgstqmlgl_la-gstqsgtexture.lo -MD -MP -MF .deps/libgstqmlgl_la-gstqsgtexture.Tpo -c gstqsgtexture.cc -fPIC -DPIC -o .libs/libgstqmlgl_la-gstqsgtexture.o
In file included from gstqsgtexture.cc:30:0:
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:17: error: expected identifier before ‘*’ token
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:27:1: note: in expansion of macro ‘GST_GL_EXT_FUNCTION’
GST_GL_EXT_FUNCTION (GLsync, FenceSync,
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:29:39: error: ISO C++ forbids declaration of ‘GLsync’ with no type [-fpermissive]
GLbitfield flags))
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:29:39: error: ‘GLsync’ declared as function returning a function
GLbitfield flags))
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:31:23: error: ‘GLsync’ has not been declared
(GLsync sync))
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:33:23: error: ‘GLsync’ has not been declared
(GLsync sync))
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:35:23: error: ‘GLsync’ has not been declared
(GLsync sync,
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:39:23: error: ‘GLsync’ has not been declared
(GLsync sync,
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:43:23: error: ‘GLsync’ has not been declared
(GLsync sync,
^
/build/snaps/full/stage/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro ‘GST_GL_EXT_FUNCTION’
ret (GSTGLAPI *name) args;
I encountered a similar error with Qt==5.13.2 and resolved it by removing a line from gstqtgl.h
diff -Naur ./src/ext/qt/gstqtgl.h ./src2/ext/qt/gstqtgl.h
--- ./ext/qt/gstqtgl.h 2019-04-19 09:16:25.000000000 +0000
+++ ./ext/qt/gstqtgl.h 2019-12-15 09:22:22.503065057 +0000
@@ -28,7 +28,6 @@
* that we don't typedef GLsync in gstglfuncs.h */
#include <gst/gl/gstglconfig.h>
#undef GST_GL_HAVE_GLSYNC
-#define GST_GL_HAVE_GLSYNC 1
#include <gst/gl/gstglfuncs.h>
/* The glext.h guard was renamed in 2018, but some software which
This trick doesn't work with Qt==5.14.0
anymore.
Edited by Renat Galimov