summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-05-13 21:36:14 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-05-13 22:40:32 +0200
commit3d7218d932923e2b964fef37e8993fd0a6df7c1d (patch)
tree8d84104fd947b896e3879276a85c0f98f80fa191
parentd90ba411aba28ebaced788f0810e082d9525bc13 (diff)
parent449511740f06a4675b0066730fa45cdb764ffafc (diff)
Merge commit '449511740f06a4675b0066730fa45cdb764ffafc'
* commit '449511740f06a4675b0066730fa45cdb764ffafc': build: handle library dependencies in configure Conflicts: common.mak configure libavdevice/Makefile libavfilter/Makefile Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--common.mak2
-rwxr-xr-xconfigure88
-rw-r--r--libavcodec/Makefile1
-rw-r--r--libavdevice/Makefile2
-rw-r--r--libavfilter/Makefile21
-rw-r--r--libavformat/Makefile1
-rw-r--r--libavresample/Makefile1
-rw-r--r--libswscale/Makefile1
8 files changed, 65 insertions, 52 deletions
diff --git a/common.mak b/common.mak
index cdad4f37b5..eaa6b47117 100644
--- a/common.mak
+++ b/common.mak
@@ -93,7 +93,7 @@ include $(SRC_PATH)/arch.mak
OBJS += $(OBJS-yes)
SLIBOBJS += $(SLIBOBJS-yes)
-FFLIBS := $(FFLIBS-yes) $(FFLIBS)
+FFLIBS := $(FFLIBS-$(NAME)) $(FFLIBS-yes) $(FFLIBS)
TESTPROGS += $(TESTPROGS-yes)
LDLIBS = $(FFLIBS:%=%$(BUILDSUF))
diff --git a/configure b/configure
index b2a764e7b6..dc7a49f5ce 100755
--- a/configure
+++ b/configure
@@ -726,6 +726,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 "$@"
}
@@ -2537,11 +2546,11 @@ scaling_video_example_deps="avutil swscale"
transcode_aac_example_deps="avcodec avformat swresample"
transcoding_example_deps="avfilter avcodec avformat avutil"
-# 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"
postproc_deps="avutil gpl"
swscale_deps="avutil"
@@ -5104,6 +5113,42 @@ for thread in $THREADS_LIST; do
fi
done
+# conditional library dependencies, in linking order
+enabled aconvert_filter && prepend avfilter_deps "swresample"
+enabled amovie_filter && prepend avfilter_deps "avformat avcodec"
+enabled aresample_filter && prepend avfilter_deps "swresample"
+enabled asyncts_filter && prepend avfilter_deps "avresample"
+enabled atempo_filter && prepend avfilter_deps "avcodec"
+enabled decimate_filter && prepend avfilter_deps "avcodec"
+enabled deshake_filter && prepend avfilter_deps "avcodec"
+enabled elbg_filter && prepend avfilter_deps "avcodec"
+enabled mcdeint_filter && prepend avfilter_deps "avcodec"
+enabled movie_filter && prepend avfilter_deps "avformat avcodec"
+enabled mp_filter && prepend avfilter_deps "avcodec"
+enabled pan_filter && prepend avfilter_deps "swresample"
+enabled pp_filter && prepend avfilter_deps "postproc"
+enabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale"
+enabled resample_filter && prepend avfilter_deps "avresample"
+enabled sab_filter && prepend avfilter_deps "swscale"
+enabled scale_filter && prepend avfilter_deps "swscale"
+enabled showspectrum_filter && prepend avfilter_deps "avcodec"
+enabled smartblur_filter && prepend avfilter_deps "swscale"
+enabled subtitles_filter && prepend avfilter_deps "avformat avcodec"
+
+enabled lavfi_indev && prepend avdevice_deps "avfilter"
+
+expand_deps(){
+ lib_deps=${1}_deps
+ eval "deps=\$$lib_deps"
+ append $lib_deps $(map 'eval echo \$${v}_deps' $deps)
+ unique $lib_deps
+}
+
+#we have to remove gpl from the deps here as some code assumes all lib deps are libs
+postproc_deps="$(filter_out 'gpl' $postproc_deps)"
+
+map 'expand_deps $v' $LIBRARY_LIST
+
echo "install prefix $prefix"
echo "source path $source_path"
echo "C compiler $cc"
@@ -5345,6 +5390,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
@@ -5421,13 +5468,18 @@ fi
# build pkg-config files
+lib_version(){
+ eval printf "\"lib${1}${build_suffix} >= \$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 <<EOF > $name/$name${build_suffix}.pc
@@ -5466,24 +5518,12 @@ Cflags: -I\${includedir}
EOF
}
-lavfi_libs="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
-enabled libavfilter_deps_avcodec && prepend lavfi_libs "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
-enabled libavfilter_deps_avformat && prepend lavfi_libs "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
-enabled libavfilter_deps_avresample && prepend lavfi_libs "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
-enabled libavfilter_deps_swscale && prepend lavfi_libs "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
-enabled libavfilter_deps_swresample && prepend lavfi_libs "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
-enabled libavfilter_deps_postproc && prepend lavfi_libs "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
-lavfi_libs=${lavfi_libs%, }
-
-lavd_libs="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
-enabled lavfi_indev && prepend lavd_libs "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
-
pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
-pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
-pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
-pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$lavd_libs"
-pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs"
-pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
-pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
-pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
-pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
+pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs"
+pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs"
+pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs"
+pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
+pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" ""
+pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs"
+pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM"
+pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 463e1a92c1..34544de882 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -1,7 +1,6 @@
include $(SUBDIR)../config.mak
NAME = avcodec
-FFLIBS = avutil
HEADERS = avcodec.h \
avfft.h \
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index d4e691121f..767df19aa7 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -1,8 +1,6 @@
include $(SUBDIR)../config.mak
NAME = avdevice
-FFLIBS = avformat avcodec avutil
-FFLIBS-$(CONFIG_LAVFI_INDEV) += avfilter
HEADERS = avdevice.h \
version.h \
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 65786cf0c1..d61b69eebe 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -1,27 +1,6 @@
include $(SUBDIR)../config.mak
NAME = avfilter
-FFLIBS = avutil
-FFLIBS-$(CONFIG_ACONVERT_FILTER) += swresample
-FFLIBS-$(CONFIG_AMOVIE_FILTER) += avformat avcodec
-FFLIBS-$(CONFIG_ARESAMPLE_FILTER) += swresample
-FFLIBS-$(CONFIG_ASYNCTS_FILTER) += avresample
-FFLIBS-$(CONFIG_ATEMPO_FILTER) += avcodec
-FFLIBS-$(CONFIG_DECIMATE_FILTER) += avcodec
-FFLIBS-$(CONFIG_DESHAKE_FILTER) += avcodec
-FFLIBS-$(CONFIG_ELBG_FILTER) += avcodec
-FFLIBS-$(CONFIG_MCDEINT_FILTER) += avcodec
-FFLIBS-$(CONFIG_MOVIE_FILTER) += avformat avcodec
-FFLIBS-$(CONFIG_MP_FILTER) += avcodec
-FFLIBS-$(CONFIG_PAN_FILTER) += swresample
-FFLIBS-$(CONFIG_PP_FILTER) += postproc
-FFLIBS-$(CONFIG_REMOVELOGO_FILTER) += avformat avcodec swscale
-FFLIBS-$(CONFIG_RESAMPLE_FILTER) += avresample
-FFLIBS-$(CONFIG_SAB_FILTER) += swscale
-FFLIBS-$(CONFIG_SCALE_FILTER) += swscale
-FFLIBS-$(CONFIG_SHOWSPECTRUM_FILTER) += avcodec
-FFLIBS-$(CONFIG_SMARTBLUR_FILTER) += swscale
-FFLIBS-$(CONFIG_SUBTITLES_FILTER) += avformat avcodec
EBUR128LIBS-$(CONFIG_SWRESAMPLE) = swresample
FFLIBS-$(CONFIG_EBUR128_FILTER) += $(EBUR128LIBS-yes)
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 457a69f914..00358e771b 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -1,7 +1,6 @@
include $(SUBDIR)../config.mak
NAME = avformat
-FFLIBS = avcodec avutil
HEADERS = avformat.h \
avio.h \
diff --git a/libavresample/Makefile b/libavresample/Makefile
index bca23a9844..7d857a0e36 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 ca6e27d1f0..e96837f064 100644
--- a/libswscale/Makefile
+++ b/libswscale/Makefile
@@ -1,7 +1,6 @@
include $(SUBDIR)../config.mak
NAME = swscale
-FFLIBS = avutil
HEADERS = swscale.h \
version.h \