Ralf Wildenhues <ralf.wildenh...@gmx.de> - 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 _______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool