From 15f24fef53a955c7c76fc966302cb0453732e657 Mon Sep 17 00:00:00 2001 From: Clemens Lang Date: Sun, 13 Aug 2017 21:17:18 +0200 Subject: openjpeg: Fix build against openjpeg 2.2 OpenJPEG 2.2 has some API changes and thus ships its headers in a new include path. Add a configure check (to both meson and autoconf) to detect the newer version of OpenJPEG and add conditional includes. Fix the autoconf test for OpenJPEG 2.1, which checked for HAVE_OPENJPEG, which was always set even for 2.0. https://bugzilla.gnome.org/show_bug.cgi?id=786250 --- configure.ac | 7 ++++++- ext/openjpeg/gstopenjpeg.h | 4 +++- ext/openjpeg/meson.build | 21 +++++++++++++-------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index 7182fb33f..6772c43c5 100644 --- a/configure.ac +++ b/configure.ac @@ -2859,8 +2859,13 @@ AG_GST_CHECK_FEATURE(OPENJPEG, [openjpeg library], openjpeg, [ if test x"$HAVE_OPENJPEG" = x"yes"; then dnl minor API changes in v2.1 AG_GST_PKG_CHECK_MODULES(OPENJPEG_2_1, libopenjp2 >= 2.1) - if test x"$HAVE_OPENJPEG" = x"yes"; then + if test x"$HAVE_OPENJPEG_2_1" = x"yes"; then AC_DEFINE([HAVE_OPENJPEG_2_1], 1, [Define if OpenJPEG 2.1 is used]) + dnl include paths changed for v2.2 + AG_GST_PKG_CHECK_MODULES(OPENJPEG_2_2, libopenjp2 >= 2.2) + if test x"$HAVE_OPENJPEG_2_2" = x"yes"; then + AC_DEFINE([HAVE_OPENJPEG_2_2], 1, [Define if OpenJPEG 2.2 is used]) + fi fi else # Fallback to v1.5 diff --git a/ext/openjpeg/gstopenjpeg.h b/ext/openjpeg/gstopenjpeg.h index 03ce52e47..52410a4f7 100644 --- a/ext/openjpeg/gstopenjpeg.h +++ b/ext/openjpeg/gstopenjpeg.h @@ -38,7 +38,9 @@ #define OPJ_CPRL CPRL #else #include -# ifdef HAVE_OPENJPEG_2_1 +# if defined(HAVE_OPENJPEG_2_2) +# include +# elif defined(HAVE_OPENJPEG_2_1) # include # else # include diff --git a/ext/openjpeg/meson.build b/ext/openjpeg/meson.build index d60974ce7..e9c416c96 100644 --- a/ext/openjpeg/meson.build +++ b/ext/openjpeg/meson.build @@ -6,16 +6,21 @@ openjpeg_sources = [ openjpeg_cargs = [] -# Check for 2.1, then 2.0 -openjpeg_dep = dependency('libopenjp2', version : '>=2.1', required : false) +# Check for 2.2, 2.1, then 2.0 +openjpeg_dep = dependency('libopenjp2', version : '>=2.2', required : false) if openjpeg_dep.found() - openjpeg_cargs += ['-DHAVE_OPENJPEG_2_1'] + openjpeg_cargs += ['-DHAVE_OPENJPEG_2_2'] else - openjpeg_dep = dependency('libopenjp2', required : false) - # Fallback to 1.5 - if not openjpeg_dep.found() - openjpeg_dep = dependency('libopenjpeg1', required : false) - openjpeg_cargs += ['-DHAVE_OPENJPEG_1'] + openjpeg_dep = dependency('libopenjp2', version : '>=2.1', required : false) + if openjpeg_dep.found() + openjpeg_cargs += ['-DHAVE_OPENJPEG_2_1'] + else + openjpeg_dep = dependency('libopenjp2', required : false) + # Fallback to 1.5 + if not openjpeg_dep.found() + openjpeg_dep = dependency('libopenjpeg1', required : false) + openjpeg_cargs += ['-DHAVE_OPENJPEG_1'] + endif endif endif -- cgit v1.2.3