[FFmpeg-cvslog] build: Store library version numbers in .version files
Diego Biurrun
git at videolan.org
Fri May 5 02:05:35 EEST 2017
ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Sat Dec 17 20:01:07 2016 +0100| [edb434873238876790f6a17bb65490cc29a1d176] | committer: Diego Biurrun
build: Store library version numbers in .version files
This moves work from the configure to the Make stage where it can
be parallelized and ensures that shared libraries are built with
the right version number in the filename.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=edb434873238876790f6a17bb65490cc29a1d176
---
Makefile | 2 +-
avbuild/common.mak | 2 +-
avbuild/library.mak | 5 +++++
avbuild/libversion.sh | 15 +++++++++++++++
configure | 13 -------------
5 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/Makefile b/Makefile
index c9fa162d8d..6036e447db 100644
--- a/Makefile
+++ b/Makefile
@@ -67,7 +67,7 @@ COMPILE_HOSTC = $(call COMPILE,HOSTCC)
%.h.c:
$(Q)echo '#include "$*.h"' >$@
-%.c %.h %.ver: TAG = GEN
+%.c %.h %.ver %.version: TAG = GEN
AVPROGS-$(CONFIG_AVCONV) += avconv
AVPROGS-$(CONFIG_AVPLAY) += avplay
diff --git a/avbuild/common.mak b/avbuild/common.mak
index 96762949cc..236380effc 100644
--- a/avbuild/common.mak
+++ b/avbuild/common.mak
@@ -49,7 +49,7 @@ $(TOOLOBJS): | tools
OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(TESTOBJS))
-CLEANSUFFIXES = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver
+CLEANSUFFIXES = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver *.version
DISTCLEANSUFFIXES = *.pc
LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a
diff --git a/avbuild/library.mak b/avbuild/library.mak
index 9215a93a2c..45152bebe8 100644
--- a/avbuild/library.mak
+++ b/avbuild/library.mak
@@ -1,5 +1,7 @@
include $(SRC_PATH)/avbuild/common.mak
+-include $(SUBDIR)lib$(NAME).version
+
LIBVERSION := $(lib$(NAME)_VERSION)
LIBMAJOR := $(lib$(NAME)_VERSION_MAJOR)
LIBMINOR := $(lib$(NAME)_VERSION_MINOR)
@@ -30,6 +32,9 @@ $(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)/avbuild/libversion.sh $(NAME) $$< > $$@
+
$(SUBDIR)lib$(NAME).ver: $(SUBDIR)lib$(NAME).v $(OBJS)
$$(M)sed 's/MAJOR/$(lib$(NAME)_VERSION_MAJOR)/' $$< | $(VERSION_SCRIPT_POSTPROCESS_CMD) > $$@
diff --git a/avbuild/libversion.sh b/avbuild/libversion.sh
new file mode 100755
index 0000000000..30046b1d25
--- /dev/null
+++ b/avbuild/libversion.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+toupper(){
+ echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+}
+
+name=lib$1
+ucname=$(toupper ${name})
+file=$2
+
+eval $(awk "/#define ${ucname}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
+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/configure b/configure
index bcc5f6ec72..2671b5a02b 100755
--- a/configure
+++ b/configure
@@ -5318,19 +5318,6 @@ VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
SAMPLES:=${samples:-\$(LIBAV_SAMPLES)}
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")
- eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
- eval echo "${lcname}_VERSION=\$${name}_VERSION" >> avbuild/config.mak
- eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> avbuild/config.mak
- eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> avbuild/config.mak
-}
-
-map 'get_version $v' $LIBRARY_LIST
-
map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> avbuild/config.mak' $LIBRARY_LIST
print_program_extralibs(){
More information about the ffmpeg-cvslog
mailing list