meson build fails on ubuntu 18.04: OpenEXR needs C++11 mode
Trying to build gstreamer-plugins-bad 1.16.1 on Ubuntu 18.04 fails with:
# apt-cache policy libopenexr-dev
libopenexr-dev:
Installed: 2.2.0-11.1ubuntu1.1
Candidate: 2.2.0-11.1ubuntu1.1
Version table:
*** 2.2.0-11.1ubuntu1.1 500
500 http://pt.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
100 /var/lib/dpkg/status
2.2.0-11.1ubuntu1 500
500 http://pt.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
[478/638] Compiling C++ object 'ext/openexr/ee97218@@gstopenexr@sha/gstopenexrdec.cpp.o'.
FAILED: ext/openexr/ee97218@@gstopenexr@sha/gstopenexrdec.cpp.o
ccache c++ -Iext/openexr/ee97218@@gstopenexr@sha -Iext/openexr -I../../Source/gst-plugins-bad-1.16.1/ext/openexr -I. -I../../Source/gst-plugins-bad-1.16.1/ -Igst-libs -I../../Source/gst-plugins-bad-1.16.1/gst-libs -I/opt/webkitgtk/nightly/build/WebKitBuild/DependenciesGTK/Root/include/orc-0.4 -I/opt/webkitgtk/nightly/build/WebKitBuild/DependenciesGTK/Root/include/gstreamer-1.0 -I/opt/webkitgtk/nightly/build/WebKitBuild/DependenciesGTK/Root/include/glib-2.0 -I/opt/webkitgtk/nightly/build/WebKitBuild/DependenciesGTK/Root/lib/glib-2.0/include -I/usr/include/OpenEXR -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -O2 -g -Wno-non-virtual-dtor -fno-strict-aliasing -Wformat-nonliteral -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wvla -Wpointer-arith -Wno-error -O2 -g1 -fPIC -pthread -DHAVE_CONFIG_H -std=c++98 -MD -MQ 'ext/openexr/ee97218@@gstopenexr@sha/gstopenexrdec.cpp.o' -MF 'ext/openexr/ee97218@@gstopenexr@sha/gstopenexrdec.cpp.o.d' -o 'ext/openexr/ee97218@@gstopenexr@sha/gstopenexrdec.cpp.o' -c ../../Source/gst-plugins-bad-1.16.1/ext/openexr/gstopenexrdec.cpp
In file included from /usr/include/c++/7/cstdint:35:0,
from /usr/include/OpenEXR/ImfFrameBuffer.h:55,
from /usr/include/OpenEXR/ImfRgbaFile.h:51,
from ../../Source/gst-plugins-bad-1.16.1/ext/openexr/gstopenexrdec.cpp:30:
/usr/include/c++/7/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
^~~~~
It seems Ubuntu has backported this patch https://github.com/openexr/openexr/commit/119eb2d4672e5c77a79929758f7e4c566f47c794 into openexr 2.2.0 with the include of cstdint
inside ImfFrameBuffer.h
cstdint
is a C++11 header, so C++11 support is required, but the Meson config file for this plugin is forcing C++98