Due to our use of "libtool" to generate and install the FreeType 2 libraries on Unix systems, as well as other historical events, it is generally very difficult to know precisely which release of the font engine is installed on a given system. This file tries to explain why and to document ways to properly detect FreeType on Unix. 1. Version & Release numbers ---------------------------- For each new public release of FreeType 2, there are generally *three* distinct "version" numbers to consider: * The official FT2 release number, like 2.0.9, or 2.1.3. * The libtool (and Unix) specific version number, like "9.2.3". This is what "freetype-config --version" will return. * The platform-specific shared object number, used for example when the library is installed as "/usr/lib/libfreetype.so.6.3.2". The platform-specific number is, unsurprisingly, platform-specific and varies with the operating system you are using (several variants of Linux, FreeBSD, Solaris, etc.). You should thus _never_ use it, even for simple tests. The libtool-specific number does not equal the release number but is tied to it. The release number is available at *compile* time through the following macros defined in FT_FREETYPE_H: - FREETYPE_MAJOR : major release number - FREETYPE_MINOR : minor release number - FREETYPE_PATCH : patch release number See below for a small autoconf fragment. The release number is also available at *runtime* through the "FT_Library_Version" API. Unfortunately, this one wasn't available or working correctly before the 2.1.3 official release. 2. History ---------- The following table gives, for each official release, the corresponding libtool number, as well as the shared object number found on _most_ systems, but not all of them: release libtool so ------------------------------- 2.1.9 9.7.3 6.3.7 2.1.8 9.6.3 6.3.6 2.1.7 9.5.3 6.3.5 2.1.6 9.5.3 6.3.5 2.1.5 9.4.3 6.3.4 2.1.4 9.3.3 6.3.3 2.1.3 9.2.3 6.3.2 2.1.2 9.1.3 6.3.1 2.1.1 9.0.3 ? 2.1.0 8.0.2 ? 2.0.9 9.0.3 ? 2.0.8 8.0.2 ? 2.0.4 7.0.1 ? 2.0.1 6.1.0 ? The libtool numbers are a bit inconsistent due to the library's history: - 2.1.0 was created as a development branch from 2.0.8 (hence the same libtool numbers). - 2.0.9 was a bug-fix release of the "stable" branch, and we incorrectly increased its libtool number. - 2.1.4 is still in the "development" branch, however it is stable enough to be the basis of an upcoming 2.2.0 release. 3. Autoconf Code Fragment ------------------------- Lars Clausen contributed the following autoconf fragment to detect which version of FreeType is installed on a system. This one tests for a version that is at least 2.0.9; you should change it to check against other release numbers. AC_MSG_CHECKING([whether FreeType version is 2.0.9 or higher]) old_CPPFLAGS="$CPPFLAGS" CPPFLAGS=`freetype-config --cflags` AC_TRY_CPP([ #include #include FT_FREETYPE_H #if (FREETYPE_MAJOR*1000 + FREETYPE_MINOR)*1000 + FREETYPE_PATCH < 2000009 #error Freetype version too low. #endif ], [AC_MSG_RESULT(yes) FREETYPE_LIBS=`freetype-config --libs` AC_SUBST(FREETYPE_LIBS) AC_DEFINE(HAVE_FREETYPE,1,[Define if you have the FreeType2 library]) CPPFLAGS="$old_CPPFLAGS"], [AC_MSG_ERROR([Need FreeType library version 2.0.9 or higher])]) --- end of VERSION.DLL ---