mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
openexr: Fix check for when to pass -std=c++98
commit 6adfb120ab
added this flag to fix
builds with `-Werror`, and afterwards it was changed to use a version
check when newer versions of openexr moved over to C++11.
However, some distros have backported patches to older openexr
versions which make it require C++11, which makes the version check
incorrect and causes an error because we passed `-Werror -std=c++98`.
Instead, directly check when usage of the header requires `-std=c++98`
with `-Werror` and override the `cpp_std` setting on the target.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1117
This commit is contained in:
parent
d29012a760
commit
f3e4aa1a18
1 changed files with 19 additions and 4 deletions
|
@ -1,19 +1,34 @@
|
|||
openexr_dep = dependency('OpenEXR', required: get_option('openexr'))
|
||||
if openexr_dep.found()
|
||||
openexr_cppargs = []
|
||||
|
||||
openexr_override_options = []
|
||||
# Older versions of openexr fail to build with -Werror when using GCC >= 9.2
|
||||
# and Clang >= 6 because it uses deprecated C++98 syntax. Explicitly pass
|
||||
# -std=c++98 in those cases. Just checking the openexr version is not enough
|
||||
# because distros (such as Ubuntu 18.04) have backported patches due to which
|
||||
# older openexr versions now require C++11.
|
||||
if openexr_dep.version().version_compare('< 2.4.0')
|
||||
openexr_cppargs += cxx.get_supported_arguments(['-std=c++98'])
|
||||
# Check whether using the openexr headers with -Werror causes an error
|
||||
if cxx.has_argument('-Werror') and cxx.check_header('ImfRgbaFile.h', dependencies: openexr_dep)
|
||||
if not cxx.check_header('ImfRgbaFile.h', dependencies: openexr_dep, args: '-Werror')
|
||||
# If setting -std to c++98 fixes it, use that! Else, warn.
|
||||
if cxx.check_header('ImfRgbaFile.h', dependencies: openexr_dep, args: ['-Werror', '-std=c++98'])
|
||||
openexr_override_options = ['cpp_std=c++98']
|
||||
else
|
||||
warning('openexr headers can\'t be included with \'-Werror\', and no workaround found')
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
gstopenexr = library('gstopenexr',
|
||||
'gstopenexr.c',
|
||||
'gstopenexrdec.cpp',
|
||||
c_args: gst_plugins_bad_args,
|
||||
cpp_args: gst_plugins_bad_args + openexr_cppargs,
|
||||
cpp_args: gst_plugins_bad_args,
|
||||
link_args: noseh_link_args,
|
||||
include_directories: [configinc, libsinc],
|
||||
dependencies: [gstvideo_dep, openexr_dep],
|
||||
override_options: openexr_override_options,
|
||||
install: true,
|
||||
install_dir: plugins_install_dir,
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue