aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2017-05-04 19:59:30 -0300
committerJames Almer <jamrial@gmail.com>2017-05-04 19:59:30 -0300
commit6fdd35a3126f6ecbe4ebab12bdf8867e4f544958 (patch)
tree7e0a89ba5a5e99377ec5461e9946ff1a0003a545
parentc0f17a905f3588bf61ba6d86a83c6835d431ed3d (diff)
parent92db5083077a8b0f8e1050507671b456fd155125 (diff)
downloadffmpeg-6fdd35a3126f6ecbe4ebab12bdf8867e4f544958.tar.gz
Merge commit '92db5083077a8b0f8e1050507671b456fd155125'
* commit '92db5083077a8b0f8e1050507671b456fd155125': build: Generate pkg-config files from Make and not from configure build: Store library version numbers in .version files Includes cherry-picked commits 8a34f3659371680ca523aecfd9098c28f0f809eb and ee164727dd64c199b87118917e674b17c25e0da3 to fix issues. Changes were also made to retain support for raise_major and build_suffix. Reviewed-by: ubitux Merged-by: James Almer <jamrial@gmail.com>
-rw-r--r--Makefile7
-rwxr-xr-xconfigure94
-rw-r--r--ffbuild/.gitignore1
-rw-r--r--ffbuild/common.mak4
-rw-r--r--ffbuild/library.mak12
-rwxr-xr-xffbuild/libversion.sh15
-rwxr-xr-xffbuild/pkgconfig_generate.sh62
-rw-r--r--libavcodec/Makefile3
-rw-r--r--libavdevice/Makefile3
-rw-r--r--libavfilter/Makefile3
-rw-r--r--libavformat/Makefile3
-rw-r--r--libavresample/Makefile1
-rw-r--r--libavutil/Makefile3
-rw-r--r--libpostproc/Makefile3
-rw-r--r--libswresample/Makefile3
-rw-r--r--libswscale/Makefile3
16 files changed, 129 insertions, 91 deletions
diff --git a/Makefile b/Makefile
index 8731d3b6ba..0122e1628f 100644
--- a/Makefile
+++ b/Makefile
@@ -87,7 +87,6 @@ tools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
CONFIGURABLE_COMPONENTS = \
$(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) \
- $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/version.h)) \
$(SRC_PATH)/libavcodec/bitstream_filters.c \
$(SRC_PATH)/libavformat/protocols.c \
@@ -109,6 +108,12 @@ $(1) :=
$(1)-yes :=
endef
+ifdef CONFIG_RAISE_MAJOR
+RAISE_MAJOR = 100
+else
+RAISE_MAJOR = 0
+endif
+
define DOSUBDIR
$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
SUBDIR := $(1)/
diff --git a/configure b/configure
index 804b0ce347..96a5e98330 100755
--- a/configure
+++ b/configure
@@ -6756,20 +6756,6 @@ NOREDZONE_FLAGS=$noredzone_flags
LIBFUZZER_PATH=$libfuzzer_path
EOF
-get_version(){
- lcname=lib${1}
- name=$(toupper $lcname)
- file=$source_path/$lcname/version.h
- eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
- enabled raise_major && eval ${name}_VERSION_MAJOR=$((${name}_VERSION_MAJOR+100))
- eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
- eval echo "${lcname}_VERSION=\$${name}_VERSION" >> ffbuild/config.mak
- eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> ffbuild/config.mak
- eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> ffbuild/config.mak
-}
-
-map 'get_version $v' $LIBRARY_LIST
-
map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
print_program_extralibs(){
@@ -6866,64 +6852,32 @@ if test -n "$WARNINGS"; then
enabled fatal_warnings && exit 1
fi
-# build pkg-config files
+# Settings for 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=$(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
+cat > ffbuild/config.sh <<EOF
+# Automatically generated by configure - do not modify!
+shared=$shared
+build_suffix=$build_suffix
prefix=$prefix
-exec_prefix=\${prefix}
libdir=$libdir
-includedir=$incdir
-
-Name: $name
-Description: $comment
-Version: $version
-Requires: $(enabled shared || echo $requires)
-Requires.private: $(enabled shared && echo $requires)
-Conflicts:
-Libs: -L\${libdir} $(enabled rpath && echo "-Wl,-rpath,\${libdir}") -l${shortname} $(enabled shared || echo $libs)
-Libs.private: $(enabled shared && echo $libs)
-Cflags: -I\${includedir}
+incdir=$incdir
+rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
+source_path=${source_path}
+LIBPREF=${LIBPREF}
+LIBSUF=${LIBSUF}
+
+extralibs_avutil="$LIBRT $LIBM"
+extralibs_avcodec="$extralibs"
+extralibs_avformat="$extralibs"
+extralibs_avdevice="$extralibs"
+extralibs_avfilter="$extralibs"
+extralibs_avresample="$LIBM"
+extralibs_postproc=""
+extralibs_swscale="$LIBM"
+extralibs_swresample="$LIBM $LIBSOXR"
EOF
-mkdir -p doc/examples/pc-uninstalled
-includedir=${source_path}
-[ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
- cat <<EOF > doc/examples/pc-uninstalled/${name}-uninstalled.pc
-prefix=
-exec_prefix=
-libdir=\${pcfiledir}/../../../$name
-includedir=${includedir}
-
-Name: $name
-Description: $comment
-Version: $version
-Requires: $requires
-Conflicts:
-Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${shortname} $(enabled shared || echo $libs)
-Cflags: -I\${includedir}
-EOF
-}
-
-pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBRT $LIBM"
-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" "$LIBM"
-pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM"
-pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM $LIBSOXR"
+for lib in $LIBRARY_LIST; do
+ lib_deps="$(eval echo \$${lib}_deps)"
+ echo ${lib}_deps=\"$lib_deps\" >> ffbuild/config.sh
+done
diff --git a/ffbuild/.gitignore b/ffbuild/.gitignore
index 693b7aa0d3..38ed170752 100644
--- a/ffbuild/.gitignore
+++ b/ffbuild/.gitignore
@@ -2,3 +2,4 @@
/config.fate
/config.log
/config.mak
+/config.sh
diff --git a/ffbuild/common.mak b/ffbuild/common.mak
index 195737028a..e61f853ebb 100644
--- a/ffbuild/common.mak
+++ b/ffbuild/common.mak
@@ -89,7 +89,7 @@ COMPILE_HOSTC = $(call COMPILE,HOSTCC)
%.h.c:
$(Q)echo '#include "$*.h"' >$@
-%.c %.h %.ver: TAG = GEN
+%.c %.h %.pc %.ver %.version: TAG = GEN
# Dummy rule to stop make trying to rebuild removed or renamed headers
%.h:
@@ -154,7 +154,7 @@ $(TOOLOBJS): | tools
OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(TESTOBJS))
-CLEANSUFFIXES = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver *.ho *$(DEFAULT_YASMD).asm
+CLEANSUFFIXES = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver *.version *.ho *$(DEFAULT_YASMD).asm
DISTCLEANSUFFIXES = *.pc
LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a
diff --git a/ffbuild/library.mak b/ffbuild/library.mak
index 5e576d18cd..addc945168 100644
--- a/ffbuild/library.mak
+++ b/ffbuild/library.mak
@@ -1,5 +1,7 @@
include $(SRC_PATH)/ffbuild/common.mak
+-include $(SUBDIR)lib$(NAME).version
+
LIBVERSION := $(lib$(NAME)_VERSION)
LIBMAJOR := $(lib$(NAME)_VERSION_MAJOR)
LIBMINOR := $(lib$(NAME)_VERSION_MINOR)
@@ -7,8 +9,8 @@ INCINSTDIR := $(INCDIR)/lib$(NAME)
INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%)
-all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME)
-all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME)
+all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME) $(SUBDIR)lib$(NAME).pc
+all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) $(SUBDIR)lib$(NAME).pc
LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
$(LIBOBJS) $(LIBOBJS:.o=.s) $(LIBOBJS:.o=.i): CPPFLAGS += -DHAVE_AV_CONFIG_H
@@ -31,6 +33,12 @@ $(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME)
$(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
$$(LD) $(LDFLAGS) $(LDEXEFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(ELIBS)
+$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
+ $$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$< $(RAISE_MAJOR) > $$@
+
+$(SUBDIR)lib$(FULLNAME).pc: $(SUBDIR)version.h | $(SUBDIR)
+ $$(M) $$(SRC_PATH)/ffbuild/pkgconfig_generate.sh $(NAME) "$(DESC)"
+
$(SUBDIR)lib$(NAME).ver: $(SUBDIR)lib$(NAME).v $(OBJS)
$$(M)sed 's/MAJOR/$(lib$(NAME)_VERSION_MAJOR)/' $$< | $(VERSION_SCRIPT_POSTPROCESS_CMD) > $$@
diff --git a/ffbuild/libversion.sh b/ffbuild/libversion.sh
new file mode 100755
index 0000000000..687adf28bc
--- /dev/null
+++ b/ffbuild/libversion.sh
@@ -0,0 +1,15 @@
+toupper(){
+ echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+
+name=lib$1
+ucname=$(toupper ${name})
+file=$2
+raise_major=$3
+
+eval $(awk "/#define ${ucname}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
+eval ${ucname}_VERSION_MAJOR=$((${ucname}_VERSION_MAJOR+${raise_major}))
+eval ${ucname}_VERSION=\$${ucname}_VERSION_MAJOR.\$${ucname}_VERSION_MINOR.\$${ucname}_VERSION_MICRO
+eval echo "${name}_VERSION=\$${ucname}_VERSION"
+eval echo "${name}_VERSION_MAJOR=\$${ucname}_VERSION_MAJOR"
+eval echo "${name}_VERSION_MINOR=\$${ucname}_VERSION_MINOR"
diff --git a/ffbuild/pkgconfig_generate.sh b/ffbuild/pkgconfig_generate.sh
new file mode 100755
index 0000000000..e5de6716d2
--- /dev/null
+++ b/ffbuild/pkgconfig_generate.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+. ffbuild/config.sh
+
+if test "$shared" = "yes"; then
+ shared=true
+else
+ shared=false
+fi
+
+shortname=$1
+name=lib${shortname}
+fullname=${name}${build_suffix}
+comment=$2
+libs=$(eval echo \$extralibs_${shortname})
+deps=$(eval echo \$${shortname}_deps)
+
+for dep in $deps; do
+ depname=lib${dep}
+ fulldepname=${depname}${build_suffix}
+ . ${depname}/${depname}.version
+ depversion=$(eval echo \$${depname}_VERSION)
+ requires="$requires ${fulldepname} >= ${depversion}, "
+done
+requires=${requires%, }
+
+version=$(grep ${name}_VERSION= $name/${name}.version | cut -d= -f2)
+
+cat <<EOF > $name/$fullname.pc
+prefix=$prefix
+exec_prefix=\${prefix}
+libdir=$libdir
+includedir=$incdir
+
+Name: $fullname
+Description: $comment
+Version: $version
+Requires: $($shared || echo $requires)
+Requires.private: $($shared && echo $requires)
+Conflicts:
+Libs: -L\${libdir} $rpath -l${fullname#lib} $($shared || echo $libs)
+Libs.private: $($shared && echo $libs)
+Cflags: -I\${includedir}
+EOF
+
+mkdir -p doc/examples/pc-uninstalled
+includedir=${source_path}
+[ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
+ cat <<EOF > doc/examples/pc-uninstalled/${name}-uninstalled.pc
+prefix=
+exec_prefix=
+libdir=\${pcfiledir}/../../../$name
+includedir=${source_path}
+
+Name: $fullname
+Description: $comment
+Version: $version
+Requires: $requires
+Conflicts:
+Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${fullname#lib} $($shared || echo $libs)
+Cflags: -I\${includedir}
+EOF
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 66d7587fb0..e3221184d1 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = avcodec
+DESC = FFmpeg codec library
HEADERS = avcodec.h \
avdct.h \
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index fb7623f713..c055d6718d 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = avdevice
+DESC = FFmpeg device handling library
HEADERS = avdevice.h \
version.h \
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index d19c555c91..0f990866e8 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = avfilter
+DESC = FFmpeg audio/video filtering library
HEADERS = avfilter.h \
avfiltergraph.h \
diff --git a/libavformat/Makefile b/libavformat/Makefile
index d82639d123..4e169fdce5 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = avformat
+DESC = FFmpeg container format library
HEADERS = avformat.h \
avio.h \
diff --git a/libavresample/Makefile b/libavresample/Makefile
index 7d857a0e36..90f025a9f9 100644
--- a/libavresample/Makefile
+++ b/libavresample/Makefile
@@ -1,4 +1,5 @@
NAME = avresample
+DESC = Libav audio resampling library
HEADERS = avresample.h \
version.h \
diff --git a/libavutil/Makefile b/libavutil/Makefile
index 0239c499f3..1fd8dca54b 100644
--- a/libavutil/Makefile
+++ b/libavutil/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = avutil
+DESC = FFmpeg utility library
HEADERS = adler32.h \
aes.h \
diff --git a/libpostproc/Makefile b/libpostproc/Makefile
index 3c21f00a21..34317193a8 100644
--- a/libpostproc/Makefile
+++ b/libpostproc/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = postproc
+DESC = FFmpeg postprocessing library
FFLIBS = avutil
HEADERS = postprocess.h \
diff --git a/libswresample/Makefile b/libswresample/Makefile
index f50ee0d5a0..42666e4dd2 100644
--- a/libswresample/Makefile
+++ b/libswresample/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = swresample
+DESC = FFmpeg audio resampling library
FFLIBS = avutil
HEADERS = swresample.h \
diff --git a/libswscale/Makefile b/libswscale/Makefile
index 19182b370e..5e03e6fa0a 100644
--- a/libswscale/Makefile
+++ b/libswscale/Makefile
@@ -1,6 +1,5 @@
-include $(SUBDIR)../ffbuild/config.mak
-
NAME = swscale
+DESC = FFmpeg image rescaling library
HEADERS = swscale.h \
version.h \