diff options
author | David Cole <david.cole@kitware.com> | 2011-08-02 19:11:53 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2011-08-02 19:11:53 (GMT) |
commit | 6a117271545d40b7d9615e840ba89d959e0b758d (patch) | |
tree | d365d2664ccffbc74dda43cc9e5840993bceb382 | |
parent | 737be8f6f65007bcc8cd3fa6d72288264d05e1ba (diff) | |
parent | 81a70c6ad2b13b6a196330767316d1aac5d3ece6 (diff) | |
download | CMake-6a117271545d40b7d9615e840ba89d959e0b758d.zip CMake-6a117271545d40b7d9615e840ba89d959e0b758d.tar.gz CMake-6a117271545d40b7d9615e840ba89d959e0b758d.tar.bz2 |
Merge topic 'FindGIFAndFreetypeCleanupAndEnhancements'
81a70c6 Add basic version check for giflib
2462f65 FindGif: add giflib4 as one more name for the library under Windows
f97620e FindGIF/FindFreetype.cmake: remove standard search paths from find-calls
7c38523 Strip trailing whitespace
-rw-r--r-- | Modules/FindFreetype.cmake | 25 | ||||
-rw-r--r-- | Modules/FindGIF.cmake | 52 |
2 files changed, 41 insertions, 36 deletions
diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake index 8957b64..6251805 100644 --- a/Modules/FindFreetype.cmake +++ b/Modules/FindFreetype.cmake @@ -24,45 +24,38 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) -# Created by Eric Wing. +# Created by Eric Wing. # Modifications by Alexander Neundorf. # This file has been renamed to "FindFreetype.cmake" instead of the correct # "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex. -# Ugh, FreeType seems to use some #include trickery which +# Ugh, FreeType seems to use some #include trickery which # makes this harder than it should be. It looks like they # put ft2build.h in a common/easier-to-find location which -# then contains a #include to a more specific header in a +# then contains a #include to a more specific header in a # more specific location (#include <freetype/config/ftheader.h>). -# Then from there, they need to set a bunch of #define's +# Then from there, they need to set a bunch of #define's # so you can do something like: # #include FT_FREETYPE_H # Unfortunately, using CMake's mechanisms like INCLUDE_DIRECTORIES() # wants explicit full paths and this trickery doesn't work too well. -# I'm going to attempt to cut out the middleman and hope +# I'm going to attempt to cut out the middleman and hope # everything still works. -FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h +FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h HINTS $ENV{FREETYPE_DIR} - PATH_SUFFIXES include PATHS /usr/local/X11R6/include /usr/local/X11/include - /usr/X11/include - /sw/include - /opt/local/include /usr/freeware/include ) -FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h +FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h HINTS $ENV{FREETYPE_DIR}/include/freetype2 PATHS /usr/local/X11R6/include /usr/local/X11/include - /usr/X11/include - /sw/include - /opt/local/include /usr/freeware/include PATH_SUFFIXES freetype2 ) @@ -75,8 +68,6 @@ FIND_LIBRARY(FREETYPE_LIBRARY PATHS /usr/local/X11R6 /usr/local/X11 - /usr/X11 - /sw /usr/freeware ) @@ -86,7 +77,7 @@ 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}") -# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if +# 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) diff --git a/Modules/FindGIF.cmake b/Modules/FindGIF.cmake index 1fad07d..41e9098 100644 --- a/Modules/FindGIF.cmake +++ b/Modules/FindGIF.cmake @@ -1,7 +1,11 @@ -# This module defines +# This module searches giflib and defines # GIF_LIBRARIES - libraries to link to in order to use GIF -# GIF_FOUND, if false, do not try to link +# GIF_FOUND, if false, do not try to link # GIF_INCLUDE_DIR, where to find the headers +# GIF_VERSION, reports either version 4 or 3 (for everything before version 4) +# +# The minimum required version of giflib can be specified using the +# standard syntax, e.g. FIND_PACKAGE(GIF 4) # # $GIF_DIR is an environment variable that would # correspond to the ./configure --prefix=$GIF_DIR @@ -19,7 +23,7 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) -# Created by Eric Wing. +# Created by Eric Wing. # Modifications by Alexander Neundorf FIND_PATH(GIF_INCLUDE_DIR gif_lib.h @@ -28,39 +32,49 @@ FIND_PATH(GIF_INCLUDE_DIR gif_lib.h PATH_SUFFIXES include PATHS ~/Library/Frameworks - /Library/Frameworks - /sw/include # Fink - [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/include - /usr/freeware/include + /usr/freeware ) # the gif library can have many names :-/ -SET(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib) +SET(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib giflib4) -FIND_LIBRARY(GIF_LIBRARY +FIND_LIBRARY(GIF_LIBRARY NAMES ${POTENTIAL_GIF_LIBS} HINTS $ENV{GIF_DIR} PATH_SUFFIXES lib64 lib PATHS ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /sw - /opt/local - /opt/csw - /opt - [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT] /usr/freeware ) # see readme.txt SET(GIF_LIBRARIES ${GIF_LIBRARY}) -# handle the QUIETLY and REQUIRED arguments and set GIF_FOUND to TRUE if +# Very basic version detection. +# The GIF_LIB_VERSION string in gif_lib.h seems to be unreliable, since it seems +# to be always " Version 2.0, " in versions 3.x of giflib. +# In version 4 the member UserData was added to GifFileType, so we check for this +# one. +# http://giflib.sourcearchive.com/documentation/4.1.4/files.html +IF(GIF_INCLUDE_DIR) + INCLUDE(CMakePushCheckState) + INCLUDE(CheckStructHasMember) + CMAKE_PUSH_CHECK_STATE() + SET(GIF_VERSION 3) + SET(CMAKE_REQUIRED_INCLUDES "${GIF_INCLUDE_DIR}") + CHECK_STRUCT_HAS_MEMBER(GifFileType UserData gif_lib.h GIF_GifFileType_UserData ) + IF(GIF_GifFileType_UserData) + SET(GIF_VERSION 4) + ENDIF() + CMAKE_POP_CHECK_STATE() +ENDIF() + + +# handle the QUIETLY and REQUIRED arguments and set GIF_FOUND to TRUE if # all listed variables are TRUE INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIF DEFAULT_MSG GIF_LIBRARY GIF_INCLUDE_DIR) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIF REQUIRED_VARS GIF_LIBRARY GIF_INCLUDE_DIR + VERSION_VAR GIF_VERSION ) MARK_AS_ADVANCED(GIF_INCLUDE_DIR GIF_LIBRARY) |