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.
---
 Makefile            |  2 +-
 build/common.mak    |  2 +-
 build/library.mak   |  5 +++++
 build/libversion.sh | 15 +++++++++++++++
 configure           | 13 -------------
 5 files changed, 22 insertions(+), 15 deletions(-)
 create mode 100755 build/libversion.sh

diff --git a/Makefile b/Makefile
index f1f0b93..a5609b0 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/build/common.mak b/build/common.mak
index efbf4a2..f6aecbd 100644
--- a/build/common.mak
+++ b/build/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/build/library.mak b/build/library.mak
index 692b6fb..0d39e02 100644
--- a/build/library.mak
+++ b/build/library.mak
@@ -1,5 +1,7 @@
 include $(SRC_PATH)/build/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) $$(EXTRALIBS-$$(*F)) $$(ELIBS)
 
+$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
+       $$(M) $$(SRC_PATH)/build/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/build/libversion.sh b/build/libversion.sh
new file mode 100755
index 0000000..30046b1
--- /dev/null
+++ b/build/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 0a8cb4a..d8e6b7f 100755
--- a/configure
+++ b/configure
@@ -5505,19 +5505,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" >> build/config.mak
-    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> 
build/config.mak
-    eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> 
build/config.mak
-}
-
-map 'get_version $v' $LIBRARY_LIST
-
 map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> build/config.mak' $LIBRARY_LIST
 
 for entry in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
-- 
2.1.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to