summaryrefslogtreecommitdiffstats
path: root/avbuild
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2016-12-17 20:01:07 +0100
committerDiego Biurrun <diego@biurrun.de>2016-12-22 12:17:37 +0100
commitedb434873238876790f6a17bb65490cc29a1d176 (patch)
treeccf95adc42317493c5056ff77a682da44b6daf31 /avbuild
parent11a9320de54759340531177c9f2b1e31e6112cc2 (diff)
downloadffmpeg-streaming-edb434873238876790f6a17bb65490cc29a1d176.zip
ffmpeg-streaming-edb434873238876790f6a17bb65490cc29a1d176.tar.gz
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.
Diffstat (limited to 'avbuild')
-rw-r--r--avbuild/common.mak2
-rw-r--r--avbuild/library.mak5
-rwxr-xr-xavbuild/libversion.sh15
3 files changed, 21 insertions, 1 deletions
diff --git a/avbuild/common.mak b/avbuild/common.mak
index 9676294..236380e 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 9215a93..45152be 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 0000000..30046b1
--- /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"
OpenPOWER on IntegriCloud