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.
This commit is contained in:
Uoti Urpala 2012-02-27 15:51:35 +02:00
parent 9f9bbb3c8b
commit 8d20859716
1 changed files with 46 additions and 201 deletions

247
configure vendored
View File

@ -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."