diff mbox

[FFmpeg-devel] configure: fix detection of libopenjpeg

Message ID 31250a9b-0390-c0b9-eec4-a44489eb9cba@googlemail.com
State Superseded
Headers show

Commit Message

Andreas Cadhalpun Oct. 11, 2016, 6:37 p.m. UTC
Use check_lib2 to test the header together with the function. This is
necessary, because '-DOPJ_STATIC' changes what the included header does.

Also add '-DOPJ_STATIC' to CFLAGS, so that it isn't necessary to
hardcode this in libavcodec/libopenjpeg{dec,enc}.c.

Finally, check for non-static libopenjpeg, too.

Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
---
 configure                   | 9 ++++++---
 libavcodec/libopenjpegdec.c | 2 --
 libavcodec/libopenjpegenc.c | 2 --
 3 files changed, 6 insertions(+), 7 deletions(-)

Comments

Michael Bradshaw Oct. 12, 2016, 1:35 a.m. UTC | #1
Oh man, I literally just wrote a patch for this today. You beat me by 6
hours. Anyway, thanks for the patch!

On Tue, Oct 11, 2016 at 11:37 AM, Andreas Cadhalpun <
andreas.cadhalpun@googlemail.com> wrote:

> Use check_lib2 to test the header together with the function. This is
> necessary, because '-DOPJ_STATIC' changes what the included header does.
>
> Also add '-DOPJ_STATIC' to CFLAGS, so that it isn't necessary to
> hardcode this in libavcodec/libopenjpeg{dec,enc}.c.
>
> Finally, check for non-static libopenjpeg, too.
>
> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
> ---
>  configure                   | 9 ++++++---
>  libavcodec/libopenjpegdec.c | 2 --
>  libavcodec/libopenjpegenc.c | 2 --
>  3 files changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/configure b/configure
> index 8fc71fb..ff743cb 100755
> --- a/configure
> +++ b/configure
> @@ -5710,9 +5710,12 @@ enabled libopencv         && { check_header
> opencv2/core/core_c.h &&
>                                   require opencv opencv2/core/core_c.h
> cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
>                                 require_pkg_config opencv opencv/cxcore.h
> cvCreateImageHeader; }
>  enabled libopenh264       && require_pkg_config openh264 wels/codec_api.h
> WelsGetCodecVersion
> -enabled libopenjpeg       && { check_lib openjpeg-2.1/openjpeg.h
> opj_version -lopenjp2 -DOPJ_STATIC ||
> -                               check_lib openjpeg-2.0/openjpeg.h
> opj_version -lopenjp2 -DOPJ_STATIC ||
> -                               check_lib openjpeg-1.5/openjpeg.h
> opj_version -lopenjpeg -DOPJ_STATIC ||
> +enabled libopenjpeg       && { { check_lib2 openjpeg-2.1/openjpeg.h
> opj_version -lopenjp2 -DOPJ_STATIC && add_cflags -DOPJ_STATIC; } ||
>

Use add_cppflags instead of add_cflags. The macro isn't needed for linking.


> +                               check_lib2 openjpeg-2.1/openjpeg.h
> opj_version -lopenjp2 ||
> +                               { check_lib openjpeg-2.0/openjpeg.h
> opj_version -lopenjp2 -DOPJ_STATIC  && add_cflags -DOPJ_STATIC; } ||
>

You can drop the changes for v2.0 and below. Only v2.1 needs the check. The
new OPJ_STATIC behavior was introduced in OpenJPEG v2.1.1.


> +                               check_lib2 openjpeg-2.0/openjpeg.h
> opj_version -lopenjp2 ||
> +                               { check_lib openjpeg-1.5/openjpeg.h
> opj_version -lopenjpeg -DOPJ_STATIC  && add_cflags -DOPJ_STATIC; } ||
> +                               check_lib2 openjpeg-1.5/openjpeg.h
> opj_version -lopenjpeg ||
>                                 check_lib openjpeg.h opj_version
> -lopenjpeg -DOPJ_STATIC ||
>                                 die "ERROR: libopenjpeg not found"; }
>  enabled libopenmpt        && require_pkg_config "libopenmpt >= 0.2.6557"
> libopenmpt/libopenmpt.h openmpt_module_create
> diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c
> index 65167e6..b4ce834 100644
> --- a/libavcodec/libopenjpegdec.c
> +++ b/libavcodec/libopenjpegdec.c
> @@ -24,8 +24,6 @@
>   * JPEG 2000 decoder using libopenjpeg
>   */
>
> -#define  OPJ_STATIC
> -
>  #include "libavutil/common.h"
>  #include "libavutil/imgutils.h"
>  #include "libavutil/intreadwrite.h"
> diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c
> index 1443551..5042507 100644
> --- a/libavcodec/libopenjpegenc.c
> +++ b/libavcodec/libopenjpegenc.c
> @@ -24,8 +24,6 @@
>   * JPEG 2000 encoder using libopenjpeg
>   */
>
> -#define  OPJ_STATIC
> -
>  #include "libavutil/avassert.h"
>  #include "libavutil/common.h"
>  #include "libavutil/imgutils.h"
> --
> 2.9.3
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
Michael Bradshaw Oct. 12, 2016, 1:51 a.m. UTC | #2
On Tue, Oct 11, 2016 at 6:35 PM, Michael Bradshaw <mjbshaw@gmail.com> wrote:
>
> On Tue, Oct 11, 2016 at 11:37 AM, Andreas Cadhalpun <
> andreas.cadhalpun@googlemail.com> wrote:
>>
>> +                               check_lib2 openjpeg-2.1/openjpeg.h
>> opj_version -lopenjp2 ||
>> +                               { check_lib openjpeg-2.0/openjpeg.h
>> opj_version -lopenjp2 -DOPJ_STATIC  && add_cflags -DOPJ_STATIC; } ||
>>
>
> You can drop the changes for v2.0 and below. Only v2.1 needs the check.
> The new OPJ_STATIC behavior was introduced in OpenJPEG v2.1.1.
>

Gah, this comment wasn't very clear. I mean that all the checks for v2.0
and below should have -DOPJ_STATIC && add_cppflags -DOPJ_STATIC. Only v2.1
needs to worry about possibly not using OPJ_STATIC.


> +                               check_lib2 openjpeg-2.0/openjpeg.h
>> opj_version -lopenjp2 ||
>> +                               { check_lib openjpeg-1.5/openjpeg.h
>> opj_version -lopenjpeg -DOPJ_STATIC  && add_cflags -DOPJ_STATIC; } ||
>> +                               check_lib2 openjpeg-1.5/openjpeg.h
>> opj_version -lopenjpeg ||
>
>
diff mbox

Patch

diff --git a/configure b/configure
index 8fc71fb..ff743cb 100755
--- a/configure
+++ b/configure
@@ -5710,9 +5710,12 @@  enabled libopencv         && { check_header opencv2/core/core_c.h &&
                                  require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
                                require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
 enabled libopenh264       && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
-enabled libopenjpeg       && { check_lib openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC ||
-                               check_lib openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC ||
-                               check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC ||
+enabled libopenjpeg       && { { check_lib2 openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cflags -DOPJ_STATIC; } ||
+                               check_lib2 openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
+                               { check_lib openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC  && add_cflags -DOPJ_STATIC; } ||
+                               check_lib2 openjpeg-2.0/openjpeg.h opj_version -lopenjp2 ||
+                               { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC  && add_cflags -DOPJ_STATIC; } ||
+                               check_lib2 openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
                                check_lib openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC ||
                                die "ERROR: libopenjpeg not found"; }
 enabled libopenmpt        && require_pkg_config "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create
diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c
index 65167e6..b4ce834 100644
--- a/libavcodec/libopenjpegdec.c
+++ b/libavcodec/libopenjpegdec.c
@@ -24,8 +24,6 @@ 
  * JPEG 2000 decoder using libopenjpeg
  */
 
-#define  OPJ_STATIC
-
 #include "libavutil/common.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/intreadwrite.h"
diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c
index 1443551..5042507 100644
--- a/libavcodec/libopenjpegenc.c
+++ b/libavcodec/libopenjpegenc.c
@@ -24,8 +24,6 @@ 
  * JPEG 2000 encoder using libopenjpeg
  */
 
-#define  OPJ_STATIC
-
 #include "libavutil/avassert.h"
 #include "libavutil/common.h"
 #include "libavutil/imgutils.h"