libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libtool versioning and ABI


From: Michel Briand
Subject: Re: libtool versioning and ABI
Date: Tue, 11 Aug 2009 19:53:50 +0200

Ralf Wildenhues <address@hidden> - Tue, 11 Aug 2009 19:34:09
+0200

>Hello Michel,
>
>* Michel Briand wrote on Thu, Aug 06, 2009 at 12:46:00AM CEST:
>> Personally I've always seen interface as a contract.
>> A contract between a library writer and library user.
>
>Yes.
>
>> Why does libtool want to interfere with this ... has always made me
>> scratching my head....
>
>libtool allows you to exploit the versioning capabilities of the runtime
>linkers on different systems.  Not all the world is a GNU/Linux box, and
>some non-glibc runtime linkers have different versioning semantics.
>
>> Since it's a contract, ABI changes fall into the contract agreement. So
>> why bother with complex versionning and error-prone version
>> manipulations with substraction
>
>*You* the developer that uses libtool shouldn't ever need to use
>subtraction.  libtool does that for you.
>
>> The difficult, and somehow messy, scheme of libtool versioning is
>> boring and uneasy : developers do not understand this different way
>> that overlap with the classical, natural and contractual scheme (X.Y.Z
>> that one can still use with the -release flag) ; and this create
>> additional work to handle package version (official, classical) in
>> parallel with libtool -version-info scheme.
>> 
>> Or I'm completely wrong.... but the documentation lacks some clues
>> about what is this all about ;)))
>
>Yes, you are wrong.  You are simply doing non-GNU/Linux users a
>disservice, by effectively disabling library versioning capabilities for
>them.  I'm not sure how to best explain that to you.
>

Hum... ^^

Yes non-Linux system will have a different scheme. But if libtool wants
to help I'm sure a little more documentation could easier the task :).

Currently I use on some projects the following Makefile.am snippet:

MYLIB_VERSION=$(...)
MYLIB_LTVERSION=$(...)

# update .c file with MYLIB_VERSION for runtime checking...

# create shared lib
mylib_la_LDFLAGS = -version-info $(MYLIB_LTVERSION)

This last variable is crafted to reflect the usual versioning. I.e. if
I want the version to 1.22.5, I must put 23:5:22 in the _LTVERSION
variable (effectively doing substractions ;^^).

Any way more simple ?

Cheers,
Michel






reply via email to

[Prev in Thread] Current Thread [Next in Thread]