aboutsummaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-03-06 13:48:30 +0000
committerMans Rullgard <mans@mansr.com>2011-03-11 20:13:26 +0000
commit3f8040db3e13c3dbdf07c74d92ca34817a69f733 (patch)
treeefe4891bc18e32081afc70e103834b00ea013d0d /configure
parentedaf1ae2763ce1a23dec70e730ba2bb8ee476dfd (diff)
downloadffmpeg-3f8040db3e13c3dbdf07c74d92ca34817a69f733.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>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure36
1 files changed, 35 insertions, 1 deletions
diff --git a/configure b/configure
index ebeea1853d..72b57cdf7f 100755
--- a/configure
+++ b/configure
@@ -356,6 +356,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}
@@ -741,6 +751,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; }
}
@@ -822,6 +846,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
@@ -1144,6 +1175,7 @@ CMDLINE_SET="
logfile
malloc_prefix
nm
+ pkg_config
samples
source_path
strip
@@ -1571,6 +1603,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"
@@ -1780,12 +1813,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