Browse code

backport symbol versioning patch

Originally committed as revision 21595 to svn://svn.ffmpeg.org/ffmpeg/branches/0.5

Reinhard Tartler authored on 2010/02/02 01:00:09
Showing 10 changed files
... ...
@@ -9,6 +9,7 @@ vpath %.c $(SRC_DIR)
9 9
 vpath %.h $(SRC_DIR)
10 10
 vpath %.S $(SRC_DIR)
11 11
 vpath %.asm $(SRC_DIR)
12
+vpath %.v   $(SRC_DIR)
12 13
 
13 14
 ifeq ($(SRC_DIR),$(SRC_PATH_BARE))
14 15
 BUILD_ROOT_REL = .
... ...
@@ -43,6 +44,9 @@ CFLAGS := -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
43 43
 
44 44
 %$(EXESUF): %.c
45 45
 
46
+%.ver: %.v
47
+	sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@
48
+
46 49
 SVN_ENTRIES = $(SRC_PATH_BARE)/.svn/entries
47 50
 ifeq ($(wildcard $(SVN_ENTRIES)),$(SVN_ENTRIES))
48 51
 $(BUILD_ROOT_REL)/version.h: $(SVN_ENTRIES)
... ...
@@ -77,7 +81,7 @@ checkheaders: $(filter-out %_template.ho,$(ALLHEADERS:.h=.ho))
77 77
 DEPS := $(OBJS:.o=.d)
78 78
 depend dep: $(DEPS)
79 79
 
80
-CLEANSUFFIXES = *.o *~ *.ho
80
+CLEANSUFFIXES = *.o *~ *.ho *.ver
81 81
 LIBSUFFIXES   = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp *.map
82 82
 DISTCLEANSUFFIXES = *.d *.pc
83 83
 
... ...
@@ -566,13 +566,18 @@ int x;
566 566
 EOF
567 567
 }
568 568
 
569
-check_ldflags(){
570
-    log check_ldflags "$@"
571
-    check_ld "$@" <<EOF && add_ldflags "$@"
569
+test_ldflags(){
570
+    log test_ldflags "$@"
571
+    check_ld "$@" <<EOF
572 572
 int main(void){ return 0; }
573 573
 EOF
574 574
 }
575 575
 
576
+check_ldflags(){
577
+    log check_ldflags "$@"
578
+    test_ldflags "$@" && add_ldflags "$@"
579
+}
580
+
576 581
 check_header(){
577 582
     log check_header "$@"
578 583
     header=$1
... ...
@@ -1356,6 +1361,7 @@ TMPE="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}"
1356 1356
 TMPH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
1357 1357
 TMPO="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
1358 1358
 TMPS="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
1359
+TMPV="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.ver"
1359 1360
 TMPSH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
1360 1361
 
1361 1362
 # make sure we can execute files in $TMPDIR
... ...
@@ -2160,6 +2166,10 @@ check_ldflags -Wl,--as-needed
2160 2160
 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'
2161 2161
 check_ldflags -Wl,-Bsymbolic
2162 2162
 
2163
+echo "X{};" > $TMPV
2164
+test_ldflags -Wl,--version-script,$TMPV &&
2165
+    append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
2166
+
2163 2167
 if enabled small; then
2164 2168
     check_cflags -Os            # not all compilers support -Os
2165 2169
     optimizations="small"
2166 2170
new file mode 100644
... ...
@@ -0,0 +1,3 @@
0
+LIBAVCODEC_$MAJOR {
1
+        global: *;
2
+};
0 3
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+LIBAVDEVICE_$MAJOR {
1
+        global: avdevice_*;
2
+        local: *;
3
+};
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+LIBAVFILTER_$MAJOR {
1
+        global: avfilter_*; av_*;
2
+        local: *;
3
+};
0 4
new file mode 100644
... ...
@@ -0,0 +1,3 @@
0
+LIBAVFORMAT_$MAJOR {
1
+        global: *;
2
+};
0 3
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+LIBAVUTIL_$MAJOR {
1
+        global: av_*; ff_*; avutil_*;
2
+        local: *;
3
+};
0 4
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+LIBPOSTPROC_$MAJOR {
1
+        global: postproc_*; pp_*;
2
+        local: *;
3
+};
0 4
new file mode 100644
... ...
@@ -0,0 +1,3 @@
0
+LIBSWSCALE_%MAJOR% {
1
+        global: *;
2
+};
... ...
@@ -27,7 +27,7 @@ install-libs: install-lib$(NAME)-shared
27 27
 $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR)
28 28
 	cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME)
29 29
 
30
-$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS)
30
+$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SUBDIR)lib$(NAME).ver
31 31
 	$(SLIB_CREATE_DEF_CMD)
32 32
 	$(CC) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$(filter-out $(DEP_LIBS),$$^) $(FFEXTRALIBS) $(EXTRAOBJS)
33 33
 	$(SLIB_EXTRA_CMD)