[FFmpeg-devel] [PATCH][0.5] enable symbol versioning
Reinhard Tartler
siretart
Mon Feb 1 15:42:16 CET 2010
As discussed on irc, I propse to backport r21235-21236 to the 0.5
release branch. I don't understand why 'svn diff' doesn't show the added
files. My working copy contains the .v files as found in trunk, with the
exception of libswscale. There I propose to not hide all symbols as in
trunk to avoid breaking linking of mplayer. This needs to be
discussed and fixed in the mplayer release branch.
This change has already been deployed and tested in the debian&ubuntu
distro packages.
please approve.
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Merged /trunk:r21235-21236
Index: configure
===================================================================
--- configure (revision 21593)
+++ configure (working copy)
@@ -566,13 +566,18 @@
EOF
}
-check_ldflags(){
- log check_ldflags "$@"
- check_ld "$@" <<EOF && add_ldflags "$@"
+test_ldflags(){
+ log test_ldflags "$@"
+ check_ld "$@" <<EOF
int main(void){ return 0; }
EOF
}
+check_ldflags(){
+ log check_ldflags "$@"
+ test_ldflags "$@" && add_ldflags "$@"
+}
+
check_header(){
log check_header "$@"
header=$1
@@ -1356,6 +1361,7 @@
TMPH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
TMPO="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
TMPS="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
+TMPV="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.ver"
TMPSH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
# make sure we can execute files in $TMPDIR
@@ -2160,6 +2166,10 @@
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"
Index: subdir.mak
===================================================================
--- subdir.mak (revision 21593)
+++ subdir.mak (working copy)
@@ -27,7 +27,7 @@
$(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)
$(CC) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$(filter-out $(DEP_LIBS),$$^) $(FFEXTRALIBS) $(EXTRAOBJS)
$(SLIB_EXTRA_CMD)
Index: common.mak
===================================================================
--- common.mak (revision 21593)
+++ common.mak (working copy)
@@ -9,6 +9,7 @@
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 = .
@@ -43,6 +44,9 @@
%$(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 @@
DEPS := $(OBJS:.o=.d)
depend dep: $(DEPS)
-CLEANSUFFIXES = *.o *~ *.ho
+CLEANSUFFIXES = *.o *~ *.ho *.ver
LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp *.map
DISTCLEANSUFFIXES = *.d *.pc
--
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4
More information about the ffmpeg-devel
mailing list