From 449511740f06a4675b0066730fa45cdb764ffafc Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Thu, 1 May 2014 13:18:57 +0200 Subject: [PATCH] build: handle library dependencies in configure Instead of setting FFLIBS in each library Makefile configure exports FFLIBS-$library in config.mak. --- common.mak | 2 +- configure | 55 ++++++++++++++++++++++++++++++------------ libavcodec/Makefile | 1 - libavdevice/Makefile | 1 - libavfilter/Makefile | 5 ---- libavformat/Makefile | 1 - libavresample/Makefile | 1 - libswscale/Makefile | 1 - 8 files changed, 41 insertions(+), 26 deletions(-) diff --git a/common.mak b/common.mak index ade9376191..cdcdc8a149 100644 --- a/common.mak +++ b/common.mak @@ -8,7 +8,7 @@ all: all-yes include $(SRC_PATH)/arch.mak OBJS += $(OBJS-yes) -FFLIBS := $(FFLIBS-yes) $(FFLIBS) +FFLIBS := $(FFLIBS-$(NAME)) $(FFLIBS-yes) $(FFLIBS) TESTPROGS += $(TESTPROGS-yes) LDLIBS = $(FFLIBS:%=%$(BUILDSUF)) diff --git a/configure b/configure index da77f694cc..1e9a54c654 100755 --- a/configure +++ b/configure @@ -655,6 +655,15 @@ prepend(){ eval "$var=\"$* \$$var\"" } +unique(){ + var=$1 + uniq_list="" + for tok in $(eval echo \$$var); do + uniq_list="$(filter_out $tok $uniq_list) $tok" + done + eval "$var=\"${uniq_list}\"" +} + add_cppflags(){ append CPPFLAGS "$@" } @@ -2110,11 +2119,11 @@ metadata_example_deps="avformat avutil" output_example_deps="avcodec avformat avutil swscale" transcode_aac_example_deps="avcodec avformat avresample" -# libraries +# libraries, in linking order avcodec_deps="avutil" -avdevice_deps="avutil avcodec avformat" +avdevice_deps="avformat avcodec avutil" avfilter_deps="avutil" -avformat_deps="avutil avcodec" +avformat_deps="avcodec avutil" avresample_deps="avutil" swscale_deps="avutil" @@ -4373,6 +4382,20 @@ for thread in $THREADS_LIST; do fi done +# conditional library dependencies, in linking order +enabled movie_filter && prepend avfilter_deps "avformat avcodec" +enabled resample_filter && prepend avfilter_deps "avresample" +enabled scale_filter && prepend avfilter_deps "swscale" + +expand_deps(){ + lib_deps=${1}_deps + eval "deps=\$$lib_deps" + append $lib_deps $(map 'eval echo \$${v}_deps' $deps) + unique $lib_deps +} + +map 'expand_deps $v' $LIBRARY_LIST + echo "install prefix $prefix" echo "source path $source_path" echo "C compiler $cc" @@ -4578,6 +4601,8 @@ get_version(){ map 'get_version $v' $LIBRARY_LIST +map 'eval echo "FFLIBS-${v}=\$${v}_deps" >> config.mak' $LIBRARY_LIST + print_program_libs(){ eval "program_libs=\$${1}_libs" eval echo "LIBS-${1}=${program_libs}" >> config.mak @@ -4639,13 +4664,18 @@ test -n "$WARNINGS" && printf "\n$WARNINGS" # build pkg-config files +lib_version(){ + eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \"" +} + pkgconfig_generate(){ name=$1 shortname=${name#lib}${build_suffix} comment=$2 version=$3 libs=$4 - requires=$5 + requires=$(map 'lib_version $v' $(eval echo \$${name#lib}_deps)) + requires=${requires%, } enabled ${name#lib} || return 0 mkdir -p $name cat < $name/$name.pc @@ -4680,15 +4710,10 @@ Cflags: -I\${includedir} EOF } -lavfi_libs="libavutil = $LIBAVUTIL_VERSION" -enabled movie_filter && prepend lavfi_libs "libavformat >= $LIBAVFORMAT_VERSION, libavcodec >= $LIBAVCODEC_VERSION," -enabled resample_filter && prepend lavfi_libs "libavresample >= $LIBAVRESAMPLE_VERSION," -enabled scale_filter && prepend lavfi_libs "libswscale >= $LIBSWSCALE_VERSION," - pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM" -pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" -pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" -pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs" -pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" -pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION" +pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" +pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" +pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" +pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" +pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" +pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index e8f12539b9..f226484607 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1,5 +1,4 @@ NAME = avcodec -FFLIBS = avutil HEADERS = avcodec.h \ avfft.h \ diff --git a/libavdevice/Makefile b/libavdevice/Makefile index 02de216c87..2eb2f8e542 100644 --- a/libavdevice/Makefile +++ b/libavdevice/Makefile @@ -1,5 +1,4 @@ NAME = avdevice -FFLIBS = avformat avcodec avutil HEADERS = avdevice.h \ version.h \ diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 6537a8a21b..7b94f2252a 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -1,9 +1,4 @@ NAME = avfilter -FFLIBS = avutil -FFLIBS-$(CONFIG_ASYNCTS_FILTER) += avresample -FFLIBS-$(CONFIG_MOVIE_FILTER) += avformat avcodec -FFLIBS-$(CONFIG_RESAMPLE_FILTER) += avresample -FFLIBS-$(CONFIG_SCALE_FILTER) += swscale HEADERS = avfilter.h \ avfiltergraph.h \ diff --git a/libavformat/Makefile b/libavformat/Makefile index 0ef6d83aba..2a6812085d 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -1,5 +1,4 @@ NAME = avformat -FFLIBS = avcodec avutil HEADERS = avformat.h \ avio.h \ diff --git a/libavresample/Makefile b/libavresample/Makefile index 68052802ed..b9ca491194 100644 --- a/libavresample/Makefile +++ b/libavresample/Makefile @@ -1,5 +1,4 @@ NAME = avresample -FFLIBS = avutil HEADERS = avresample.h \ version.h \ diff --git a/libswscale/Makefile b/libswscale/Makefile index 0799b458be..3e8614da2b 100644 --- a/libswscale/Makefile +++ b/libswscale/Makefile @@ -1,5 +1,4 @@ NAME = swscale -FFLIBS = avutil HEADERS = swscale.h \ version.h \