serf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Branko Čibej <br...@apache.org>
Subject Shared library version on macOS [was: Time for 1.4.0?]
Date Tue, 08 May 2018 15:34:59 GMT
On 08.05.2018 17:18, Branko Čibej wrote:
> On 07.05.2018 15:11, Ryan Schmidt wrote:
>> On May 3, 2018, at 15:11, Branko Čibej wrote:
>>
>>> I think there are more than enough improvements on trunk[1] to warrant a
>>> new release; whether that's called 1.4.0 or 2.0 (which is the current
>>> trunk version) doesn't really matter; but more than a year and a half
>>> since the last release, it really is time for a new one.
>>>
>>> I'd be happy to do the RM tasks if necessary.
>>>
>>> Thoughts?
>>>
>>> -- Brane
>>>
>>> [1] I'm aware of:
>>>
>>>  * HTTP/2
>>>  * OCSP client request and response handling
>>>  * Brotli compression
>>>  * Better support for building with OpenSSL 1.0.x/1.1.x and LibreSSL
>> It would be great if libserf could get its library versioning information back on
macOS with scons 2.4.1 and later. It's been missing for over 2 years already.
>>
>> http://mail-archives.apache.org/mod_mbox/serf-dev/201709.mbox/%3cB86D4FE3-0129-4AA7-A03C-A478AF41E4AF@ryandesign.com%3e
> I appreciate your fiery passionate hatred for scons, but someone has to
> step up with a fix to our build scripts or cross-platform replacement
> (which these days would mean cmake, which I have a fiery passionate
> hatred for ... go figure).


Does this fix the problem for you? It looks like a bit of a horrible
hack to me, but appears to work:


Index: SConstruct
===================================================================
--- SConstruct	(revision 1830991)
+++ SConstruct	(working copy)
@@ -236,8 +236,13 @@ incdir = '$PREFIX/include/serf-$MAJOR'
 # Unfortunately we can't set the .dylib compatibility_version option separately
 # from current_version, so don't use the PATCH level to avoid that build and
 # runtime patch levels have to be identical.
+current_version = '%d.%d.%d' % (MAJOR, MINOR, PATCH)
+compat_version = '%d.%d.%d' % (MAJOR, MINOR, 0)
 if sys.platform != 'sunos5':
-  env['SHLIBVERSION'] = '%d.%d.%d' % (MAJOR, MINOR, 0)
+  env['SHLIBVERSION'] = compat_version
+if sys.platform == 'darwin':
+  env.Append(LINKFLAGS=['-Wl,-current_version,' + current_version,
+                        '-Wl,-compatibility_version,' + compat_version])
 
 LIBNAME   = '%sserf-%d' % (env['LIBPREFIX'], MAJOR)
 if sys.platform == 'win32':


Mime
View raw message