Attaching patch to make fontconfig use libtool to build shared libraries.
Created attachment 20 [details] [review] Update fontconfig to use libtool to build shared libraries
I'd like to try and make the major/minor library versions the same with libtool as they are without it at first; is that true for all of the operating systems supported by fontconfig? I'm not really happy with libtool's '-version-info' mangling of version numbers.
I just build fontconfig without the libtool patches on Redhat Linux and see that the following is created: libfontconfig.so -> libfontconfig.so.1 libfontconfig.so.1 -> libfontconfig.so.1.0 libfontconfig.so.1.0 If you use the -release mode for libtool, -release 1.0, then you get: libfontconfig-1.0.so libfontconfig.so -> libfontconfig-1.0.so Obviously this is not what you want. What's worse about the -release switch is that it sets SONAME to libfontconfig-1.0.so. So, with every versions bump, you produce an incompatible release. This is noted in the libtool documentation. I'll ask on the libtool mailing list but I don't think libtool will create backward-compatible version numbers. Note that with -version-info 1:0:0, then you get: libfontconfig-1.0.so libfontconfig.so -> libfontconfig.so.1.0.0 libfontconfig.so.1 -> libfontconfig.so.1.0.0 libfontconfig.so.1.0.0 SONAME: libfontconfig.so.1 If -version-info 1:0:0 forces an SONAME of libfontconfig.so.1 on all platforms, are you ok with using the libtool -version-info command for future versions?
I think we may be in luck transitioning to libtool at version 1.0. I'd like to start moving other libraries that aren't at version 1.0 and I'm wondering how we can make those work. It seems that libtool refuses to cooperate with more traditional library versioning schemes; is there no option to force it to behave?
I posted a message to the libtool mailing list. However, I don't think we can force libtool to do what you want. The library versions that are not at 1.0, what library version are they at? I'll do a build on the machines we have here with -version-info 1:0:0 and see how libtool creates the versioned fontconfig library.
My goal is to also transition the X libraries to automake. As automake essentially requires libtool, this goal can only be realized if I can force libtool to generate version numbers that match the existing X library version numbers. I'm much less concerned about fontconfig which (at version 1.0) seems easy enough to match now and in the future.
I've switched fontconfig to automake and libtool; libtool has a new -version-number flag that allows explicit specification of libary version numbers which makes it possible to transition the other libraries to automake shortly.
Any plans to do this for Xrender and Xft? Maybe a top-level makefile to build everything and a top-level configure to optionally select which to build?
Yes, I'll be migrating Xft and Xrender to automake soon; I'd like to see how fontconfig works in a variety of environments before doing that so I can fix bugs in one place instead of three.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.