summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRolf Eike Beer <eike@sf-mail.de>2012-02-17 17:31:23 (GMT)
committerRolf Eike Beer <eike@sf-mail.de>2012-02-17 17:31:23 (GMT)
commitf58cce031e7c641c0ae216a66595837eb1b4dee7 (patch)
tree70019d7e80d88a2acc27085ce4c1c8133bdd5938
parentd03606a19cc05872baf23269ae8ec61d2e0719e8 (diff)
downloadCMake-f58cce031e7c641c0ae216a66595837eb1b4dee7.zip
CMake-f58cce031e7c641c0ae216a66595837eb1b4dee7.tar.gz
CMake-f58cce031e7c641c0ae216a66595837eb1b4dee7.tar.bz2
FindFreetype: support version selection
-rw-r--r--Modules/FindFreetype.cmake28
1 files changed, 26 insertions, 2 deletions
diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake
index 6251805..e6f6702 100644
--- a/Modules/FindFreetype.cmake
+++ b/Modules/FindFreetype.cmake
@@ -3,6 +3,7 @@
# FREETYPE_LIBRARIES, the library to link against
# FREETYPE_FOUND, if false, do not try to link to FREETYPE
# FREETYPE_INCLUDE_DIRS, where to find headers.
+# FREETYPE_VERSION_STRING, the version of freetype found (since CMake 2.8.8)
# This is the concatenation of the paths:
# FREETYPE_INCLUDE_DIR_ft2build
# FREETYPE_INCLUDE_DIR_freetype2
@@ -77,10 +78,33 @@ IF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
ENDIF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
SET(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
+IF(FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
+ FILE(STRINGS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h" freetype_version_str
+ REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$")
+
+ UNSET(FREETYPE_VERSION_STRING)
+ FOREACH(VPART MAJOR MINOR PATCH)
+ FOREACH(VLINE ${freetype_version_str})
+ IF(VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}")
+ STRING(REGEX REPLACE "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$" "\\1"
+ FREETYPE_VERSION_PART "${VLINE}")
+ IF(FREETYPE_VERSION_STRING)
+ SET(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_STRING}.${FREETYPE_VERSION_PART}")
+ ELSE(FREETYPE_VERSION_STRING)
+ SET(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_PART}")
+ ENDIF(FREETYPE_VERSION_STRING)
+ UNSET(FREETYPE_VERSION_PART)
+ ENDIF()
+ ENDFOREACH(VLINE)
+ ENDFOREACH(VPART)
+ENDIF(FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h")
+
+
# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype DEFAULT_MSG FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
-
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype
+ REQUIRED_VARS FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS
+ VERSION_VAR FREETYPE_VERSION_STRING)
MARK_AS_ADVANCED(FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build)