summaryrefslogtreecommitdiff
path: root/ACE/debian/patches/20-versioned_libs.diff
blob: bbb934a26888e75cbfa8937665f91cace6ca082b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Description: Change versioning from libACE.so.x.y.z to libACE-x.y.z.so
 ACE+TAO library names (and SONAMEs) default to libfoo.so.x.y.z. Since no
 ABI/API is guaranteed between ACE+TAO versions, this patch implements
 recommended (e.g. libtool) naming in these cases, i.e. libfoo-x.y.z.so.
Forwarded: submitted, more work needed before acceptance
Author: Thomas Girard <thomas.g.girard@free.fr>
Last-Update: 2010-12-26

--- pkg-ace.orig/include/makeinclude/wrapper_macros.GNU
+++ pkg-ace/include/makeinclude/wrapper_macros.GNU
@@ -78,7 +78,10 @@
 #                   If versioned_so is 1 (enabled), the SOVERSION make
 #                   variable can also be set to specify the version info
 #                   to append to the name - it should have a leading '.' -
-#                   else it defaults to .ACE_MAJOR.ACE_MINOR.ACE_BETA.
+#                   else it defaults to .ACE_MAJOR.ACE_MINOR.ACE_BETA. If 2,
+#                   the version will be appended to the name but *before* the
+#                   $(SOEXT) - it should have a lead '-' - else it defaults to
+#                   -ACE_MAJOR.ACE_MINOR.ACE_BETA.
 #  wfmo             Build with wfmo support (Win32 only)
 #  winregistry      Build with windows registry support (Win32 only)
 #  winnt            Build WinNT-specific projects (Win32 only)
--- pkg-ace.orig/MPC/prj_install.pl
+++ pkg-ace/MPC/prj_install.pl
@@ -186,7 +186,7 @@
     my $fh   = new FileHandle();
     if (opendir($fh, $odir)) {
       foreach my $file (grep(!/^\.\.?$/, readdir($fh))) {
-        if ($file =~ /^lib$name\.(a|so|sl|dylib)/ ||
+        if ($file =~ /^lib$name(-[0-9]+(\.[0-9]+)*)?\.(a|so|sl|dylib)/ ||
             $file =~ /^(lib)?$name.*\.(dll|lib)$/i) {
           push(@libs, "$dir$insdir$binarydir$file");
         }
--- pkg-ace.orig/include/makeinclude/platform_g++_common.GNU
+++ pkg-ace/include/makeinclude/platform_g++_common.GNU
@@ -102,7 +102,7 @@
 # If the platform file didn't already set versioned_so, default to 1.
 versioned_so ?= 1
 with_ld ?=
-ifeq ($(versioned_so),1)
+ifneq ($(versioned_so),0)
   ifeq ($(with_ld),hpux)
     SOFLAGS += -Wl,+h -Wl,$(SONAME)
   else
--- pkg-ace.orig/include/makeinclude/rules.lib.GNU
+++ pkg-ace/include/makeinclude/rules.lib.GNU
@@ -11,7 +11,7 @@
 #       Library versioning
 #---------------------------------------------------------------------------
 
-ifeq ($(versioned_so),1)
+ifneq ($(versioned_so),0)
   # Turn on symbol versioning. The scheme that we follow is to allow
   # applications dependent on libraries, with same version numbers (major,
   # minor and beta) to run, but applications with dependencies on libraries
@@ -20,13 +20,23 @@
   # Version number of the libraries
   #
   ifeq ($(SOVERSION),)
-    SOVERSION = .$(GNUACE_PROJECT_VERSION)
+    ifeq ($(versioned_so),1)
+      SOVERSION = .$(GNUACE_PROJECT_VERSION)
+    else ifeq ($(versioned_so),2)
+      SOVERSION = -$(GNUACE_PROJECT_VERSION)
+    else
+      $(error unknown value for versioned_so: $(versioned_so))
+    endif
   endif # SOVERSION
 
   # Name that will be written into the dynamic library
   #
   ifeq ($(SONAME),)
-    SONAME = $(SHLIB)$(SOVERSION)
+    ifeq ($(versioned_so),1)
+      SONAME = $(SHLIB)$(SOVERSION)
+    else ifeq ($(versioned_so),2)
+      SONAME = $(patsubst %.$(SOEXT),%,$(SHLIB))$(SOVERSION).$(SOEXT)
+    endif
   endif # SONAME
 endif # versioned_so
 
@@ -47,9 +57,15 @@
 # Setup shared library variables, including versions.
 VSHLIB_NO_VER = $(ARCH_SHLIB:%.$(SOEXT)=%$(VAR).$(SOEXT))
 CLEANUP_VSHLIB_NO_VER = $(CLEANUP_SHLIB:%.$(SOEXT)=%$(VAR).$(SOEXT))
-VSHLIB = $(VSHLIB_NO_VER:%=%$(SOVERSION))
-CLEANUP_VSHLIB = $(CLEANUP_VSHLIB_NO_VER:%=%$(SOVERSION))
-SHLIB_WITH_VER = $(SHLIB:%=%$(SOVERSION))
+ifneq ($(versioned_so),2)
+  VSHLIB = $(VSHLIB_NO_VER:%=%$(SOVERSION))
+  CLEANUP_VSHLIB = $(CLEANUP_VSHLIB_NO_VER:%=%$(SOVERSION))
+  SHLIB_WITH_VER = $(SHLIB:%=%$(SOVERSION))
+else
+  VSHLIB = $(patsubst %.$(SOEXT),%,$(VSHLIB_NO_VER))$(SOVERSION).$(SOEXT)
+  CLEANUP_VSHLIB = $(patsubst %.$(SOEXT),%,$(CLEANUP_VSHLIB_NO_VER))$(SOVERSION).$(SOEXT)
+  SHLIB_WITH_VER = $(patsubst %.$(SOEXT),%,$(SHLIB))$(SOVERSION).$(SOEXT)
+endif
 
 SHLIBA ?=
 VSHLIBA = $(ARCH_SHLIBA:%.$(LIBEXT)=%$(VAR).$(LIBEXT))
--- pkg-ace.orig/include/makeinclude/rules.local.GNU
+++ pkg-ace/include/makeinclude/rules.local.GNU
@@ -312,13 +312,23 @@
 	fi
     else #firstword of LN_S is not cp, so we're using real symlinks
       ifneq ($(SOVERSION),)
-	@if test $(ARCH_SOURCE_DIR) != $(@D) ; then \
+       ifneq ($(versioned_so),2)
+	    @if test $(ARCH_SOURCE_DIR) != $(@D) ; then \
 		if test ! -s $@ ; then \
 			$(RM) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); \
 			echo $(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); \
 			$(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)); \
 		fi ; \
-	fi
+	    fi
+       else
+	    @if test $(ARCH_SOURCE_DIR) != $(@D) ; then \
+		if test ! -s $@ ; then \
+			$(RM) $(@:%$(SOVERSION).$(SOEXT)=%.$(SOEXT)); \
+			echo $(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $(@:%$(SOVERSION).$(SOEXT)=%.$(SOEXT)); \
+			$(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $(@:%$(SOVERSION).$(SOEXT)=%.$(SOEXT)); \
+		fi ; \
+	    fi
+        endif #versioned_so
       endif #SOVERSION
 	@if test $(ARCH_SOURCE_DIR) != $(@D) ; then \
 		if test ! -s $@ ; then \
@@ -351,6 +361,8 @@
 	-$(RM) $(SHLIB_UNCHECKED)
 ifeq ($(versioned_so),1)
 	-$(RM) $(SHLIB_UNCHECKED)$(SOVERSION)
+else ifeq ($(versioned_so),2)
+	-$(RM) $(SHLIB_UNCHECKED:.$(SOEXT)=$(SOVERSION).$(SOEXT))
 endif
 endif