From 8dabd34432bc77408c58bdfb575510f671e5ed26 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Sun, 24 Aug 2008 21:26:42 +0000
Subject: [PATCH] Introduced the configure option --enable-soname-bump that
 lets a user enforce an SONAME bump.

---
 configure.ac          | 23 +++++++++++++++++++++++
 lib/Makefile.am       | 17 +++++++++++++++--
 lib/README.curl_off_t | 15 +++++++++++----
 3 files changed, 49 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2959b68c83..d2bd200435 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2492,6 +2492,29 @@ AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibi
        AC_MSG_RESULT(no)
 )
 
+dnl ************************************************************
+dnl enforce SONAME bump
+dnl 
+
+soname_bump=no
+
+AC_MSG_CHECKING([whether to enforce SONAME bump])
+AC_ARG_ENABLE(soname-bump,
+AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
+AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
+[ case "$enableval" in
+  yes)   AC_MSG_RESULT(yes)
+         soname_bump=yes
+         ;;
+  *)
+         AC_MSG_RESULT(nope: $enableval)
+         ;;
+  esac ],
+        AC_MSG_RESULT(nono)
+)
+AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
+
+
 dnl ************************************************************
 if test ! -z "$winsock_LIB"; then
 
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 903e1a9599..ff974f4d46 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -58,7 +58,20 @@ INCLUDES = -I$(top_builddir)/include \
            -I$(top_builddir)/lib     \
            -I$(top_srcdir)/lib
 
-VERSION=-version-info 5:0:1
+if SONAME_BUMP
+#
+# Bumping of SONAME conditionally may seem like a weird thing to do, and yeah
+# it is. The problem is that we try to avoid the bump as hard as possible, but
+# yet it is still necessary for a few rare situations. The configure script will
+# attempt to figure out these situations, and it can be forced to consider this
+# to be such a case! See README.curl_off_t for further details.
+#
+# This conditional soname bump SHOULD be removed at next "proper" bump.
+#
+VERSIONINFO=-version-info 6:0:1
+else
+VERSIONINFO=-version-info 5:0:1
+endif
 
 # This flag accepts an argument of the form current[:revision[:age]]. So,
 # passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
@@ -99,7 +112,7 @@ if MIMPURE
 MIMPURE = -mimpure-text
 endif
 
-libcurl_la_LDFLAGS = $(UNDEF) $(VERSION) $(MIMPURE) $(LIBCURL_LIBS)
+libcurl_la_LDFLAGS = $(UNDEF) $(VERSIONINFO) $(MIMPURE) $(LIBCURL_LIBS)
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
 include Makefile.inc
diff --git a/lib/README.curl_off_t b/lib/README.curl_off_t
index fa687c67b1..b60179da04 100644
--- a/lib/README.curl_off_t
+++ b/lib/README.curl_off_t
@@ -42,7 +42,14 @@ track and detect by users of libcurl.
 SONAME
 ------
 
-We opted to not bump the soname for the library, simply because soname bumping
-is causing a lot of grief and moaning all over the community so we try to keep
-that at minimum. Also, our selected design path should be 100% backwards
-compatible for the vast majority of all libcurl users.
+We opted to not bump the soname for the library unconditionally, simply
+because soname bumping is causing a lot of grief and moaning all over the
+community so we try to keep that at minimum. Also, our selected design path
+should be 100% backwards compatible for the vast majority of all libcurl
+users.
+
+Enforce SONAME bump
+-------------------
+
+If configure doesn't detect your case where a bump is necessary, re-run it
+with the --enable-soname-bump command line option!
-- 
GitLab