summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@mplayer2.org>2012-02-27 15:51:35 +0200
committerUoti Urpala <uau@mplayer2.org>2012-02-27 15:51:35 +0200
commit8d20859716db53fb6a2aa4975c8172a9d6aa7a3d (patch)
tree97dda72cdb9dad45406287ff3c5db7c2ce66b4b9
parent9f9bbb3c8b0cce1d148f3f6046ec8deb636577ff (diff)
downloadmpv-8d20859716db53fb6a2aa4975c8172a9d6aa7a3d.tar.bz2
mpv-8d20859716db53fb6a2aa4975c8172a9d6aa7a3d.tar.xz
configure: simplify pkg-config handling, drop other tests
Add helper function pkg_config_add() that checks for the presence of a package and also adds cflags/ldflags if it is found. Change existing pkg-config-using feature tests to use that. Also change the freetype test that used a separate libfreetype-config binary before; using pkg-config instead helps cross-compiling. Drop other kinds of checks (such as test compiles) from these tests. It's possible that this could cause problems on some (broken) systems, but that can't be verified without user testing.
-rwxr-xr-xconfigure247
1 files changed, 46 insertions, 201 deletions
diff --git a/configure b/configure
index ee2ea4cf14..df7058aa73 100755
--- a/configure
+++ b/configure
@@ -165,6 +165,21 @@ yasm_check() {
return "$TMPRES"
}
+pkg_config_add() {
+ echo >> "$TMPLOG"
+ echo "$_pkg_config --cflags $@" >> "$TMPLOG"
+ ctmp=$($_pkg_config --cflags "$@" 2>> "$TMPLOG") || return $?
+ echo >> "$TMPLOG"
+ echo "$_pkg_config --libs $@" >> "$TMPLOG"
+ ltmp=$($_pkg_config --libs "$@" 2>> "$TMPLOG") || return $?
+ echo >> "$TMPLOG"
+ echo "cflags: $ctmp" >> "$TMPLOG"
+ echo "libs: $ltmp" >> "$TMPLOG"
+ echo >> "$TMPLOG"
+ extra_cflags="$extra_cflags $ctmp"
+ extra_ldflags="$extra_ldflags $ltmp"
+}
+
tmp_run() {
"$TMPEXE" >> "$TMPLOG" 2>&1
}
@@ -502,7 +517,6 @@ Use these options if autodetection fails:
--extra-libs=FLAGS extra linker flags
--extra-libs-mplayer=FLAGS extra linker flags for MPlayer
- --with-freetype-config=PATH path to freetype-config
--with-sdl-config=PATH path to sdl*-config
--with-dvdnav-config=PATH path to dvdnav-config
--with-dvdread-config=PATH path to dvdread-config
@@ -687,7 +701,6 @@ quicktime=auto
_macosx_finder=no
_macosx_bundle=auto
_sortsub=yes
-_freetypeconfig='freetype-config'
_fribidi=auto
_enca=auto
_inet6=auto
@@ -744,9 +757,6 @@ for ac_option do
--with-sdl-config=*)
_sdlconfig=$(echo $ac_option | cut -d '=' -f 2)
;;
- --with-freetype-config=*)
- _freetypeconfig=$(echo $ac_option | cut -d '=' -f 2)
- ;;
--with-dvdnav-config=*)
_dvdnavconfig=$(echo $ac_option | cut -d '=' -f 2)
;;
@@ -4875,8 +4885,7 @@ echores "$_nas"
echocheck "pulse"
if test "$_pulse" = auto ; then
_pulse=no
- if $_pkg_config --exists 'libpulse >= 0.9' ; then
- header_check pulse/pulseaudio.h $($_pkg_config --libs --cflags libpulse) &&
+ if pkg_config_add 'libpulse >= 0.9' ; then
_pulse=yes
fi
fi
@@ -4885,8 +4894,6 @@ echores "$_pulse"
if test "$_pulse" = yes ; then
def_pulse='#define CONFIG_PULSE 1'
aomodules="pulse $aomodules"
- libs_mplayer="$libs_mplayer $($_pkg_config --libs libpulse)"
- extra_cflags="$extra_cflags $($_pkg_config --cflags libpulse)"
else
def_pulse='#undef CONFIG_PULSE'
noaomodules="pulse $noaomodules"
@@ -4895,14 +4902,9 @@ fi
echocheck "JACK"
if test "$_jack" = auto ; then
- _jack=yes
- if statement_check jack/jack.h 'jack_client_open("test", JackUseExactName, NULL)' -ljack ; then
- libs_mplayer="$libs_mplayer -ljack"
- elif statement_check jack/jack.h 'jack_client_open("test", JackUseExactName, NULL)' $($_pkg_config --libs --cflags --silence-errors jack) ; then
- libs_mplayer="$libs_mplayer $($_pkg_config --libs jack)"
- extra_cflags="$extra_cflags "$($_pkg_config --cflags jack)""
- else
- _jack=no
+ _jack=no
+ if pkg_config_add jack ; then
+ _jack=yes
fi
fi
@@ -5308,28 +5310,9 @@ echores "$_cdparanoia"
echocheck "libcdio"
if test "$_libcdio" = auto && test "$_cdparanoia" = no ; then
- cat > $TMPC << EOF
-#include <stdio.h>
-#include <cdio/version.h>
-#include <cdio/cdda.h>
-#include <cdio/paranoia.h>
-int main(void) {
- void *test = cdda_verbose_set;
- printf("%s\n", CDIO_VERSION);
- return test == (void *)1;
-}
-EOF
- _libcdio=no
- for _ld_tmp in "" "-lwinmm" ; do
- _ld_tmp="-lcdio_cdda -lcdio -lcdio_paranoia $_ld_tmp"
- cc_check $_ld_tmp $_ld_lm && _libcdio=yes &&
- extra_ldflags="$extra_ldflags $_ld_tmp" && break
- done
- if test "$_libcdio" = no && $_pkg_config --exists libcdio_paranoia ; then
- _inc_tmp=$($_pkg_config --cflags libcdio_paranoia)
- _ld_tmp=$($_pkg_config --libs libcdio_paranoia)
- cc_check $_inc_tmp $_ld_tmp $_ld_lm && _libcdio=yes &&
- extra_ldflags="$extra_ldflags $_ld_tmp" && extra_cflags="$extra_cflags $_inc_tmp"
+ _libcdio=no
+ if pkg_config_add libcdio_paranoia ; then
+ _libcdio=yes
fi
fi
if test "$_libcdio" = yes && test "$_cdparanoia" = no ; then
@@ -5382,33 +5365,14 @@ if test "$_iconv" = no ; then
fi
if test "$_freetype" = auto ; then
- if ( $_freetypeconfig --version ) >/dev/null 2>&1 ; then
- cat > $TMPC << EOF
-#include <stdio.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#if ((FREETYPE_MAJOR < 2) || ((FREETYPE_MINOR == 0) && (FREETYPE_PATCH < 9)))
-#error "Need FreeType 2.0.9 or newer"
-#endif
-int main(void) {
- FT_Library library;
- FT_Init_FreeType(&library);
- return 0;
-}
-EOF
- _freetype=no
- cc_check $($_freetypeconfig --cflags) $($_freetypeconfig --libs) && _freetype=yes
+ if pkg_config_add freetype2 ; then
+ _freetype=yes
else
- _freetype=no
- fi
- if test "$_freetype" != yes ; then
- die "Unable to find development files for libfreetype. Aborting. If you really mean to compile without FreeType support use --disable-freetype."
+ die "Unable to find development files for libfreetype. Aborting. If you really mean to compile without FreeType support use --disable-freetype."
fi
fi
if test "$_freetype" = yes ; then
def_freetype='#define CONFIG_FREETYPE 1'
- extra_cflags="$extra_cflags $($_freetypeconfig --cflags)"
- extra_ldflags="$extra_ldflags $($_freetypeconfig --libs)"
else
def_freetype='#undef CONFIG_FREETYPE'
fi
@@ -5420,36 +5384,11 @@ if test "$_freetype" = no ; then
fi
echocheck "fontconfig"
if test "$_fontconfig" = auto ; then
- cat > $TMPC << EOF
-#include <stdio.h>
-#include <stdlib.h>
-#include <fontconfig/fontconfig.h>
-#if FC_VERSION < 20402
-#error At least version 2.4.2 of fontconfig required
-#endif
-int main(void) {
- int err = FcInit();
- if (err == FcFalse) {
- printf("Couldn't initialize fontconfig lib\n");
- exit(err);
- }
- return 0;
-}
-EOF
- _fontconfig=no
- for _ld_tmp in "" "-lexpat -lfreetype" "-lexpat -lfreetype -lz" "-lexpat -lfreetype -lz -liconv" ; do
- _ld_tmp="-lfontconfig $_ld_tmp"
- cc_check $_ld_tmp && _fontconfig=yes && extra_ldflags="$extra_ldflags $_ld_tmp" && break
- done
- if test "$_fontconfig" = no && $_pkg_config --exists fontconfig ; then
- _inc_tmp=$($_pkg_config --cflags fontconfig)
- _ld_tmp=$($_pkg_config --libs fontconfig)
- cc_check $_inc_tmp $_ld_tmp && _fontconfig=yes &&
- extra_ldflags="$extra_ldflags $_ld_tmp" && extra_cflags="$extra_cflags $_inc_tmp"
- fi
- if test "$_fontconfig" != yes ; then
- die "Unable to find development files for libfontconfig. Aborting. If you really mean to compile without fontconfig support use --disable-fontconfig."
- fi
+ if pkg_config_add 'fontconfig >= 2.4.2' ; then
+ _fontconfig=yes
+ else
+ die "Unable to find development files for libfontconfig. Aborting. If you really mean to compile without fontconfig support use --disable-fontconfig."
+ fi
fi
if test "$_fontconfig" = yes ; then
def_fontconfig='#define CONFIG_FONTCONFIG 1'
@@ -5460,15 +5399,13 @@ echores "$_fontconfig"
echocheck "SSA/ASS support"
-if test "$_ass" = auto -o "$_ass" = yes ; then
- if $_pkg_config libass; then
- _ass=yes
- def_ass='#define CONFIG_ASS 1'
- extra_ldflags="$extra_ldflags $($_pkg_config --libs libass)"
- extra_cflags="$extra_cflags $($_pkg_config --cflags libass)"
- else
- die "Unable to find development files for libass. Aborting. If you really mean to compile without libass support use --disable-libass."
- fi
+if test "$_ass" = auto ; then
+ if pkg_config_add libass ; then
+ _ass=yes
+ def_ass='#define CONFIG_ASS 1'
+ else
+ die "Unable to find development files for libass. Aborting. If you really mean to compile without libass support use --disable-libass."
+ fi
else
def_ass='#undef CONFIG_ASS'
fi
@@ -5476,35 +5413,14 @@ echores "$_ass"
echocheck "fribidi with charsets"
-_inc_tmp=""
-_ld_tmp=""
if test "$_fribidi" = auto ; then
- cat > $TMPC << EOF
-#include <stdlib.h>
-/* workaround for fribidi 0.10.4 and below */
-#define FRIBIDI_CHARSET_UTF8 FRIBIDI_CHAR_SET_UTF8
-#include <fribidi/fribidi.h>
-int main(void) {
- if (fribidi_parse_charset("UTF-8") != FRIBIDI_CHAR_SET_UTF8)
- exit(1);
- return 0;
-}
-EOF
_fribidi=no
- _inc_tmp=""
- _ld_tmp="-lfribidi"
- cc_check $_inc_tmp $_ld_tmp && _fribidi=yes
- if $_pkg_config --exists fribidi > /dev/null 2>&1 &&
- test "$_fribidi" = no ; then
- _inc_tmp="$($_pkg_config --cflags)"
- _ld_tmp="$($_pkg_config --libs)"
- cc_check $_inc_tmp $_ld_tmp && _fribidi=yes
+ if pkg_config_add fribidi ; then
+ _fribidi=yes
fi
fi
if test "$_fribidi" = yes ; then
def_fribidi='#define CONFIG_FRIBIDI 1'
- extra_cflags="$extra_cflags $_inc_tmp"
- extra_ldflags="$extra_ldflags $_ld_tmp"
else
def_fribidi='#undef CONFIG_FRIBIDI'
fi
@@ -5629,53 +5545,13 @@ echores "$_speex"
echocheck "OggTheora support"
if test "$_theora" = auto ; then
_theora=no
- cat > $TMPC << EOF
-#include <theora/theora.h>
-#include <string.h>
-int main(void) {
- /* Theora is in flux, make sure that all interface routines and datatypes
- * exist and work the way we expect it, so we don't break MPlayer. */
- ogg_packet op;
- theora_comment tc;
- theora_info inf;
- theora_state st;
- yuv_buffer yuv;
- int r;
- double t;
-
- theora_info_init(&inf);
- theora_comment_init(&tc);
-
- return 0;
-
- /* we don't want to execute this kind of nonsense; just for making sure
- * that compilation works... */
- memset(&op, 0, sizeof(op));
- r = theora_decode_header(&inf, &tc, &op);
- r = theora_decode_init(&st, &inf);
- t = theora_granule_time(&st, op.granulepos);
- r = theora_decode_packetin(&st, &op);
- r = theora_decode_YUVout(&st, &yuv);
- theora_clear(&st);
-
- return 0;
-}
-EOF
- _ld_theora=$($_pkg_config --silence-errors --libs theora)
- _inc_theora=$($_pkg_config --silence-errors --cflags theora)
- cc_check $_inc_theora $_ld_theora && extra_ldflags="$extra_ldflags $_ld_theora" &&
- extra_cflags="$extra_cflags $_inc_theora" && _theora=yes
- if test _theora = no; then
- _ld_theora="-ltheora -logg"
- cc_check $_ld_theora && extra_ldflags="$extra_ldflags $_ld_theora" && _theora=yes
+ if pkg_config_add theora ; then
+ _theora=yes
fi
fi
if test "$_theora" = yes ; then
def_theora='#define CONFIG_OGGTHEORA 1'
codecmodules="libtheora $codecmodules"
- # when --enable-theora is forced, we'd better provide a probably sane
- # $_ld_theora than nothing
- test -z "$_ld_theora" && extra_ldflags="$extra_ldflags -ltheora -logg"
else
def_theora='#undef CONFIG_OGGTHEORA'
nocodecmodules="libtheora $nocodecmodules"
@@ -5800,35 +5676,10 @@ echores "$_ladspa"
echocheck "libbs2b audio filter support"
if test "$_libbs2b" = auto ; then
- cat > $TMPC <<EOF
-#include <bs2b.h>
-#if BS2B_VERSION_MAJOR < 3
-#error Please use libbs2b >= 3.0.0, older versions are not supported.
-#endif
-int main(void) {
- t_bs2bdp filter;
- filter=bs2b_open();
- bs2b_close(filter);
- return 0;
-}
-EOF
- _libbs2b=no
- if $_pkg_config --exists libbs2b ; then
- _inc_tmp=$($_pkg_config --cflags libbs2b)
- _ld_tmp=$($_pkg_config --libs libbs2b)
- cc_check $_inc_tmp $_ld_tmp && extra_ldflags="$extra_ldflags $_ld_tmp" &&
- extra_cflags="$extra_cflags $_inc_tmp" && _libbs2b=yes
- else
- for _inc_tmp in "" -I/usr/include/bs2b -I/usr/local/include \
- -I/usr/local/include/bs2b ; do
- if cc_check $_inc_tmp $_ld_lm -lbs2b ; then
- extra_ldflags="$extra_ldflags -lbs2b"
- extra_cflags="$extra_cflags $_inc_tmp"
+ _libbs2b=no
+ if pkg_config_add libbs2b ; then
_libbs2b=yes
- break
- fi
- done
- fi
+ fi
fi
def_libbs2b="#undef CONFIG_LIBBS2B"
test "$_libbs2b" = yes && def_libbs2b="#define CONFIG_LIBBS2B 1"
@@ -5933,9 +5784,7 @@ echores "$_qtx"
echocheck "Nemesi Streaming Media libraries"
if test "$_nemesi" = auto && test "$networking" = yes ; then
_nemesi=no
- if $_pkg_config libnemesi --atleast-version=0.6.3 ; then
- extra_cflags="$extra_cflags $($_pkg_config --cflags libnemesi)"
- extra_ldflags="$extra_ldflags $($_pkg_config --libs libnemesi)"
+ if pkg_config_add libnemesi ; then
_nemesi=yes
fi
fi
@@ -6009,11 +5858,7 @@ all_libav_libs="libavutil > 51.21.0:libavcodec > 53.34.0:libavformat > 53.20.0:l
echocheck "Libav ($all_libav_libs)"
if test "$ffmpeg" = auto ; then
IFS=":" # shell should not be used for programming
- if $_pkg_config --exists --print-errors $all_libav_libs ; then
- inc_ffmpeg=$($_pkg_config --cflags $all_libav_libs)
- _ld_tmp=$($_pkg_config --libs $all_libav_libs)
- extra_ldflags="$extra_ldflags $_ld_tmp"
- extra_cflags="$extra_cflags $inc_ffmpeg"
+ if pkg_config_add $all_libav_libs ; then
unset IFS
else
die "Unable to find development files for some of the required Libav libraries above. Aborting."