mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
parent
edaf1ae276
commit
3f8040db3e
|
@ -356,6 +356,16 @@ set_weak(){
|
||||||
done
|
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(){
|
pushvar(){
|
||||||
for var in $*; do
|
for var in $*; do
|
||||||
eval level=\${${var}_level:=0}
|
eval level=\${${var}_level:=0}
|
||||||
|
@ -741,6 +751,20 @@ check_lib2(){
|
||||||
check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
|
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_exec(){
|
||||||
check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
|
check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
|
||||||
}
|
}
|
||||||
|
@ -822,6 +846,13 @@ require2(){
|
||||||
check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
|
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(){
|
check_host_cc(){
|
||||||
log check_host_cc "$@"
|
log check_host_cc "$@"
|
||||||
cat > $TMPC
|
cat > $TMPC
|
||||||
|
@ -1144,6 +1175,7 @@ CMDLINE_SET="
|
||||||
logfile
|
logfile
|
||||||
malloc_prefix
|
malloc_prefix
|
||||||
nm
|
nm
|
||||||
|
pkg_config
|
||||||
samples
|
samples
|
||||||
source_path
|
source_path
|
||||||
strip
|
strip
|
||||||
|
@ -1571,6 +1603,7 @@ host_cc_default="gcc"
|
||||||
ln_s="ln -sf"
|
ln_s="ln -sf"
|
||||||
nm_default="nm"
|
nm_default="nm"
|
||||||
objformat="elf"
|
objformat="elf"
|
||||||
|
pkg_config_default=pkg-config
|
||||||
ranlib="ranlib"
|
ranlib="ranlib"
|
||||||
strip_default="strip"
|
strip_default="strip"
|
||||||
yasmexe="yasm"
|
yasmexe="yasm"
|
||||||
|
@ -1780,12 +1813,13 @@ set_default arch target_os
|
||||||
ar_default="${cross_prefix}${ar_default}"
|
ar_default="${cross_prefix}${ar_default}"
|
||||||
cc_default="${cross_prefix}${cc_default}"
|
cc_default="${cross_prefix}${cc_default}"
|
||||||
nm_default="${cross_prefix}${nm_default}"
|
nm_default="${cross_prefix}${nm_default}"
|
||||||
|
pkg_config_default="${cross_prefix}${pkg_config_default}"
|
||||||
ranlib="${cross_prefix}${ranlib}"
|
ranlib="${cross_prefix}${ranlib}"
|
||||||
strip_default="${cross_prefix}${strip_default}"
|
strip_default="${cross_prefix}${strip_default}"
|
||||||
|
|
||||||
sysinclude_default="${sysroot}/usr/include"
|
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
|
enabled cross_compile || host_cc_default=$cc
|
||||||
set_default host_cc
|
set_default host_cc
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue