[FFmpeg-devel] [RFC][PATCH] configure: libfreetype check

Alexander Strasser eclipse7 at gmx.net
Fri Dec 6 22:55:04 CET 2013


Hi,

  this Debian bug
  
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731015

indicates that we need to extend/change our libfreetype check.

  I have attached 3 different approaches and hope for some
comments now. Beware, I did not thoroughly test yet. So
more testing welcome as well.

  Alexander
-------------- next part --------------
From c2d17ff925c9243330ac833a6dd37b7f0c5f4abc Mon Sep 17 00:00:00 2001
Message-Id: <c2d17ff925c9243330ac833a6dd37b7f0c5f4abc.1386362311.git.eclipse7 at gmx.net>
From: Alexander Strasser <eclipse7 at gmx.net>
Date: Thu, 5 Dec 2013 23:31:53 +0100
Subject: [PATCH] configure: Use macro instead of header name in #include

The freetype check is the only place where we need to include
in-directly through a macro. Specialize check_func_headers to
recognize that special case and omit the surrounding angle
brackets.

This change affects only to the configure detection, because
in the drawtext filter the macro way of including the header
is used already.

Signed-off-by: Alexander Strasser <eclipse7 at gmx.net>
---
 configure | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 5881e6a..39f9b20 100755
--- a/configure
+++ b/configure
@@ -953,7 +953,11 @@ check_func_headers(){
     shift 2
     {
         for hdr in $headers; do
-            echo "#include <$hdr>"
+            if test "$hdr" = FT_FREETYPE_H; then
+              echo "#include $hdr"
+            else
+              echo "#include <$hdr>"
+            fi
         done
         for func in $funcs; do
             echo "long check_$func(void) { return (long) $func; }"
@@ -4316,7 +4320,7 @@ enabled libfaac           && require2 libfaac "stdint.h faac.h" faacEncGetVersio
 enabled libfdk_aac        && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
 flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
 enabled libflite          && require2 libflite "flite/flite.h" flite_init $flite_libs
-enabled libfreetype       && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
+enabled libfreetype       && require_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
 enabled libgme            && require  libgme gme/gme.h gme_new_emu -lgme -lstdc++
 enabled libgsm            && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
                                    check_lib "${gsm_hdr}" gsm_create -lgsm && break;
-- 
-------------- next part --------------
From 8696dd58570deb0f7e9dfef6327d11c3c73525c7 Mon Sep 17 00:00:00 2001
Message-Id: <8696dd58570deb0f7e9dfef6327d11c3c73525c7.1386365701.git.eclipse7 at gmx.net>
From: Alexander Strasser <eclipse7 at gmx.net>
Date: Fri, 6 Dec 2013 21:20:46 +0100
Subject: [PATCH] configure: libfreetype: Check for different header paths

Some distributions have it below freetype/ directory and
others not.

The official libfreetype way to handle this is to use
a macros instead of a string literal. That is how it is
done in the drawtext filter and the reason this commit
only affects configure detection.

Signed-off-by: Alexander Strasser <eclipse7 at gmx.net>
---
 configure | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 5881e6a..d7eaa4b 100755
--- a/configure
+++ b/configure
@@ -4316,7 +4316,12 @@ enabled libfaac           && require2 libfaac "stdint.h faac.h" faacEncGetVersio
 enabled libfdk_aac        && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
 flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
 enabled libflite          && require2 libflite "flite/flite.h" flite_init $flite_libs
-enabled libfreetype       && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
+enabled libfreetype       && {    check_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType \
+                               || check_pkg_config freetype2 "ft2build.h freetype.h"          FT_Init_FreeType \
+                               || die      "ERROR: freetype2 not found"; } \
+                          && { add_cflags    $(get_safe ${pkg}_cflags)
+                               add_extralibs $(get_safe ${pkg}_libs);  }
+
 enabled libgme            && require  libgme gme/gme.h gme_new_emu -lgme -lstdc++
 enabled libgsm            && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
                                    check_lib "${gsm_hdr}" gsm_create -lgsm && break;
-- 
-------------- next part --------------
From 7da78bc381d02fbf328d251843be11f32fb04ae3 Mon Sep 17 00:00:00 2001
Message-Id: <7da78bc381d02fbf328d251843be11f32fb04ae3.1386364728.git.eclipse7 at gmx.net>
From: Alexander Strasser <eclipse7 at gmx.net>
Date: Fri, 6 Dec 2013 17:20:26 +0100
Subject: [PATCH] configure: Special case libfreetype test

Include the freetype header, in-directly through a macro, like it
is done in the drawtext filter. Do not break if the header is moved,
like it was done in at least distribution.

Signed-off-by: Alexander Strasser <eclipse7 at gmx.net>
---
 configure | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 5881e6a..5606426 100755
--- a/configure
+++ b/configure
@@ -1127,6 +1127,25 @@ require_pkg_config(){
     add_extralibs $(get_safe ${pkg}_libs)
 }
 
+require_libfreetype(){
+    log check_libfreetype "$@"
+    pkg="freetype2"
+    shift 3
+    check_cmd $pkg_config --exists --print-errors $pkg || return
+    pkg_cflags=$($pkg_config --cflags $pkg)
+    pkg_libs=$($pkg_config --libs $pkg)
+    {
+        echo "#include <ft2build.h>"
+        echo "#include FT_FREETYPE_H"
+        echo "long check_func(void) { return (long) FT_Init_FreeType; }"
+        echo "int main(void) { return 0; }"
+    } | check_ld "cc" $pkg_cflags $pkg_libs && enable $funcs &&
+        set_safe ${pkg}_cflags $pkg_cflags   &&
+        set_safe ${pkg}_libs   $pkg_libs
+    add_cflags    $(get_safe ${pkg}_cflags)
+    add_extralibs $(get_safe ${pkg}_libs)
+}
+
 hostcc_o(){
     eval printf '%s\\n' $HOSTCC_O
 }
@@ -4316,7 +4335,7 @@ enabled libfaac           && require2 libfaac "stdint.h faac.h" faacEncGetVersio
 enabled libfdk_aac        && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
 flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
 enabled libflite          && require2 libflite "flite/flite.h" flite_init $flite_libs
-enabled libfreetype       && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
+enabled libfreetype       && require_libfreetype
 enabled libgme            && require  libgme gme/gme.h gme_new_emu -lgme -lstdc++
 enabled libgsm            && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
                                    check_lib "${gsm_hdr}" gsm_create -lgsm && break;
-- 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131206/9da51bbc/attachment.asc>


More information about the ffmpeg-devel mailing list