diff options
author | Måns Rullgård <mans@mansr.com> | 2010-01-16 04:49:02 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2010-01-16 04:49:02 +0000 |
commit | a482e61bd624c71e39c1a06367e303364b3ba153 (patch) | |
tree | bf44a006a8d66834106256afdf2af57c6aec413f | |
parent | 2ed46eeab33d30cdfb5adf97dd7266931acde0ed (diff) | |
download | ffmpeg-a482e61bd624c71e39c1a06367e303364b3ba153.tar.gz |
Add symbol versioning for shared libraries
Based on patch by Reinhard Tartler <siretart tauware de>
Originally committed as revision 21236 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | common.mak | 6 | ||||
-rwxr-xr-x | configure | 5 | ||||
-rw-r--r-- | libavcodec/libavcodec.v | 3 | ||||
-rw-r--r-- | libavdevice/libavdevice.v | 4 | ||||
-rw-r--r-- | libavfilter/libavfilter.v | 4 | ||||
-rw-r--r-- | libavformat/libavformat.v | 3 | ||||
-rw-r--r-- | libavutil/libavutil.v | 4 | ||||
-rw-r--r-- | libpostproc/libpostproc.v | 4 | ||||
-rw-r--r-- | subdir.mak | 2 |
9 files changed, 33 insertions, 2 deletions
diff --git a/common.mak b/common.mak index 8ce464827c..deb3e782c5 100644 --- a/common.mak +++ b/common.mak @@ -9,6 +9,7 @@ vpath %.c $(SRC_DIR) vpath %.h $(SRC_DIR) vpath %.S $(SRC_DIR) vpath %.asm $(SRC_DIR) +vpath %.v $(SRC_DIR) ifeq ($(SRC_DIR),$(SRC_PATH_BARE)) BUILD_ROOT_REL = . @@ -33,6 +34,9 @@ CPPFLAGS := -DHAVE_AV_CONFIG_H -I$(BUILD_ROOT_REL) -I$(SRC_PATH) $(CPPFLAGS) %$(EXESUF): %.c +%.ver: %.v + sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@ + SVN_ENTRIES = $(SRC_PATH_BARE)/.svn/entries ifeq ($(wildcard $(SVN_ENTRIES)),$(SVN_ENTRIES)) $(BUILD_ROOT_REL)/version.h: $(SVN_ENTRIES) @@ -77,7 +81,7 @@ $(HOSTPROGS): %$(HOSTEXESUF): %.o DEPS := $(OBJS:.o=.d) depend dep: $(DEPS) -CLEANSUFFIXES = *.d *.o *~ *.ho *.map +CLEANSUFFIXES = *.d *.o *~ *.ho *.map *.ver DISTCLEANSUFFIXES = *.pc LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp @@ -1561,6 +1561,7 @@ tmpfile TMPE $EXESUF tmpfile TMPH .h tmpfile TMPO .o tmpfile TMPS .S +tmpfile TMPV .ver tmpfile TMPSH .sh unset -f mktemp @@ -2568,6 +2569,10 @@ check_ldflags -Wl,--as-needed check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' check_ldflags -Wl,-Bsymbolic +echo "X{};" > $TMPV +test_ldflags -Wl,--version-script,$TMPV && + append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' + if enabled small; then check_cflags -Os # not all compilers support -Os optimizations="small" diff --git a/libavcodec/libavcodec.v b/libavcodec/libavcodec.v new file mode 100644 index 0000000000..561a42cd4f --- /dev/null +++ b/libavcodec/libavcodec.v @@ -0,0 +1,3 @@ +LIBAVCODEC_$MAJOR { + global: *; +}; diff --git a/libavdevice/libavdevice.v b/libavdevice/libavdevice.v new file mode 100644 index 0000000000..663af85ba8 --- /dev/null +++ b/libavdevice/libavdevice.v @@ -0,0 +1,4 @@ +LIBAVDEVICE_$MAJOR { + global: avdevice_*; + local: *; +}; diff --git a/libavfilter/libavfilter.v b/libavfilter/libavfilter.v new file mode 100644 index 0000000000..83e8887080 --- /dev/null +++ b/libavfilter/libavfilter.v @@ -0,0 +1,4 @@ +LIBAVFILTER_$MAJOR { + global: avfilter_*; av_*; + local: *; +}; diff --git a/libavformat/libavformat.v b/libavformat/libavformat.v new file mode 100644 index 0000000000..da2311eb36 --- /dev/null +++ b/libavformat/libavformat.v @@ -0,0 +1,3 @@ +LIBAVFORMAT_$MAJOR { + global: *; +}; diff --git a/libavutil/libavutil.v b/libavutil/libavutil.v new file mode 100644 index 0000000000..ec52f2be7a --- /dev/null +++ b/libavutil/libavutil.v @@ -0,0 +1,4 @@ +LIBAVUTIL_$MAJOR { + global: av_*; ff_*; avutil_*; + local: *; +}; diff --git a/libpostproc/libpostproc.v b/libpostproc/libpostproc.v new file mode 100644 index 0000000000..e65d76f4f6 --- /dev/null +++ b/libpostproc/libpostproc.v @@ -0,0 +1,4 @@ +LIBPOSTPROC_$MAJOR { + global: postproc_*; pp_*; + local: *; +}; diff --git a/subdir.mak b/subdir.mak index 6948211924..e0ac6810b6 100644 --- a/subdir.mak +++ b/subdir.mak @@ -51,7 +51,7 @@ install-libs: install-lib$(NAME)-shared $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME) -$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) +$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SUBDIR)lib$(NAME).ver $(SLIB_CREATE_DEF_CMD) $(LD) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$(filter %.o,$$^) $(FFEXTRALIBS) $(EXTRAOBJS) $(SLIB_EXTRA_CMD) |