diff options
author | Mans Rullgard <mans@mansr.com> | 2011-03-06 13:48:30 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-03-19 20:06:13 +0100 |
commit | 5d117bd4629582e58a84922b74e6446004e4ed4f (patch) | |
tree | c434937f5df015b82b9dd0d506878e3abc30be37 | |
parent | 05aa8c4441c74732d411480ab3e477d602dd7695 (diff) | |
download | ffmpeg-5d117bd4629582e58a84922b74e6446004e4ed4f.tar.gz |
configure: improve pkg-config support
This adds helper functions for checking packages with pkg-config
and managing the associated flags.
Note that pkg-config use is still discouraged due to widespread
poor practices resulting in broken flags in many situations. A
few badly designed packages require flags only obtainable using
pkg-config, and these functions are intended for those cases.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 3f8040db3e13c3dbdf07c74d92ca34817a69f733)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rwxr-xr-x | configure | 36 |
1 files changed, 35 insertions, 1 deletions
@@ -357,6 +357,16 @@ set_weak(){ done } +set_safe(){ + var=$1 + shift + eval $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')='$*' +} + +get_safe(){ + eval echo \$$(echo "$1" | sed 's/[^A-Za-z0-9_]/_/g') +} + pushvar(){ for var in $*; do eval level=\${${var}_level:=0} @@ -742,6 +752,20 @@ check_lib2(){ check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@" } +check_pkg_config(){ + log check_pkg_config "$@" + pkg="$1" + headers="$2" + funcs="$3" + shift 3 + $pkg_config --exists $pkg || return + pkg_cflags=$($pkg_config --cflags $pkg) + pkg_libs=$($pkg_config --libs $pkg) + check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && + set_safe ${pkg}_cflags $pkg_cflags && + set_safe ${pkg}_libs $pkg_libs +} + check_exec(){ check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } } @@ -823,6 +847,13 @@ require2(){ check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" } +require_pkg_config(){ + pkg="$1" + check_pkg_config "$@" || die "ERROR: $pkg not found" + add_cflags $(get_safe ${pkg}_cflags) + add_extralibs $(get_safe ${pkg}_libs) +} + check_host_cc(){ log check_host_cc "$@" cat > $TMPC @@ -1149,6 +1180,7 @@ CMDLINE_SET=" logfile malloc_prefix nm + pkg_config samples source_path strip @@ -1587,6 +1619,7 @@ host_cc_default="gcc" ln_s="ln -sf" nm_default="nm" objformat="elf" +pkg_config_default=pkg-config ranlib="ranlib" strip_default="strip" yasmexe="yasm" @@ -1796,12 +1829,13 @@ set_default arch target_os ar_default="${cross_prefix}${ar_default}" cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" +pkg_config_default="${cross_prefix}${pkg_config_default}" ranlib="${cross_prefix}${ranlib}" strip_default="${cross_prefix}${strip_default}" sysinclude_default="${sysroot}/usr/include" -set_default cc nm strip sysinclude +set_default cc nm pkg_config strip sysinclude enabled cross_compile || host_cc_default=$cc set_default host_cc |