From 34e1a2ae5680b9dad24b153a5ed36c813ae946e6 Mon Sep 17 00:00:00 2001 From: Benjamin Eikel Date: Tue, 4 Sep 2012 11:40:06 +0200 Subject: [PATCH] FindSDL: Version support for FindSDL_image --- Modules/FindSDL_image.cmake | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Modules/FindSDL_image.cmake b/Modules/FindSDL_image.cmake index 8c9e89153..ae2bc69ad 100644 --- a/Modules/FindSDL_image.cmake +++ b/Modules/FindSDL_image.cmake @@ -3,6 +3,7 @@ # SDLIMAGE_LIBRARY, the name of the library to link against # SDLIMAGE_FOUND, if false, do not try to link to SDL # SDLIMAGE_INCLUDE_DIR, where to find SDL/SDL.h +# SDLIMAGE_VERSION_STRING - human-readable string containing the version of SDL_image # # $SDLDIR is an environment variable that would # correspond to the ./configure --prefix=$SDLDIR @@ -58,7 +59,24 @@ find_library(SDLIMAGE_LIBRARY /opt ) +if(SDLIMAGE_INCLUDE_DIR AND EXISTS "${SDLIMAGE_INCLUDE_DIR}/SDL_image.h") + file(STRINGS "${SDLIMAGE_INCLUDE_DIR}/SDL_image.h" SDLIMAGE_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDLIMAGE_INCLUDE_DIR}/SDL_image.h" SDLIMAGE_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDLIMAGE_INCLUDE_DIR}/SDL_image.h" SDLIMAGE_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+[0-9]+$") + string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDLIMAGE_VERSION_MAJOR "${SDLIMAGE_VERSION_MAJOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDLIMAGE_VERSION_MINOR "${SDLIMAGE_VERSION_MINOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDLIMAGE_VERSION_PATCH "${SDLIMAGE_VERSION_PATCH_LINE}") + set(SDLIMAGE_VERSION_STRING ${SDLIMAGE_VERSION_MAJOR}.${SDLIMAGE_VERSION_MINOR}.${SDLIMAGE_VERSION_PATCH}) + unset(SDLIMAGE_VERSION_MAJOR_LINE) + unset(SDLIMAGE_VERSION_MINOR_LINE) + unset(SDLIMAGE_VERSION_PATCH_LINE) + unset(SDLIMAGE_VERSION_MAJOR) + unset(SDLIMAGE_VERSION_MINOR) + unset(SDLIMAGE_VERSION_PATCH) +endif() + include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDLIMAGE - REQUIRED_VARS SDLIMAGE_LIBRARY SDLIMAGE_INCLUDE_DIR) + REQUIRED_VARS SDLIMAGE_LIBRARY SDLIMAGE_INCLUDE_DIR + VERSION_VAR SDLIMAGE_VERSION_STRING)