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 and Release numbers ------------------------------ For each new public release of FreeType 2, there are generally *three* distinct `version' numbers to consider: * The official FreeType 2 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' returns. * 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.4.0 11.0.5 6.5.0 2.3.12 10.0.4 6.4.0 2.3.11 9.22.3 6.3.22 2.3.10 9.21.3 6.3.21 2.3.9 9.20.3 6.3.20 2.3.8 9.19.3 6.3.19 2.3.7 9.18.3 6.3.18 2.3.6 9.17.3 6.3.17 2.3.5 9.16.3 6.3.16 2.3.4 9.15.3 6.3.15 2.3.3 9.14.3 6.3.14 2.3.2 9.13.3 6.3.13 2.3.1 9.12.3 6.3.12 2.3.0 9.11.3 6.3.11 2.2.1 9.10.3 6.3.10 2.2.0 9.9.3 6.3.9 2.1.10 9.8.3 6.3.8 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 was a development version, however it was stable enough to be the basis of the 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])]) ------------------------------------------------------------------------ Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, and distributed under the terms of the FreeType project license, LICENSE.TXT. By continuing to use, modify, or distribute this file you indicate that you have read the license and understand and accept it fully. --- end of VERSION.DLL ---