From 955d6f7bc1bfb154bac79d7357e55d720aa95e69 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Fri, 5 Sep 2014 04:57:32 +0400 Subject: [PATCH] Add SDL_image2 support to cmake --- CMakeLists.txt | 22 ++++++++++++++++------ cmake/FindSDL2_image.cmake | 27 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 cmake/FindSDL2_image.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index a2e3ffd..292a325 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,8 +5,19 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) +OPTION(SDL2PP_WITH_IMAGE "Enable SDL2_image support" ON) + # depends FIND_PACKAGE(SDL2 REQUIRED) +SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) +SET(SDL2_ALL_LIBRARIES ${SDL2_LIBRARY}) +IF(SDL2PP_WITH_IMAGE) + FIND_PACKAGE(SDL2_image REQUIRED) + SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIR}) + SET(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_IMAGE_LIBRARY}) +ELSE(SDL2PP_WITH_IMAGE) + MESSAGE(STATUS "SDL2_image support disabled") +ENDIF(SDL2PP_WITH_IMAGE) # compiler flags & definitions IF(MSVC) @@ -17,8 +28,8 @@ ELSE(MSVC) SET(WERROR_FLAG "-Werror") ENDIF(MSVC) -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}) -INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(BEFORE ${PROJECT_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${SDL2_ALL_INCLUDE_DIRS}) # sources SET(LIBRARY_SOURCES @@ -52,7 +63,7 @@ IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # library ADD_LIBRARY(SDL2pp SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS}) - TARGET_LINK_LIBRARIES(SDL2pp ${SDL2_LIBRARY}) + TARGET_LINK_LIBRARIES(SDL2pp ${SDL2_ALL_LIBRARIES}) # demos and tests OPTION(RUN_GUI_TESTS "Run GUI tests (requires X11 display)" ON) @@ -67,7 +78,6 @@ ELSE(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) ADD_LIBRARY(SDL2pp STATIC ${LIBRARY_SOURCES} ${LIBRARY_HEADERS}) # provide variables to parent - SET(SDL2PP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${SDL2_INCLUDE_DIR} PARENT_SCOPE) - SET(SDL2PP_LIBRARIES SDL2pp ${SDL2_LIBRARY} PARENT_SCOPE) + SET(SDL2PP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${SDL2_ALL_INCLUDE_DIRS} PARENT_SCOPE) + SET(SDL2PP_LIBRARIES SDL2pp ${SDL2_ALL_LIBRARIES} PARENT_SCOPE) ENDIF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) - diff --git a/cmake/FindSDL2_image.cmake b/cmake/FindSDL2_image.cmake new file mode 100644 index 0000000..ce91f56 --- /dev/null +++ b/cmake/FindSDL2_image.cmake @@ -0,0 +1,27 @@ +# - Try to locate SDL2_image +# This module defines: +# +# SDL2_IMAGE_INCLUDE_DIR +# SDL2_IMAGE_LIBRARY +# SDL2_IMAGE_FOUND +# + +FIND_PATH(SDL2_IMAGE_INCLUDE_DIR NAMES SDL2/SDL_image.h) + +FIND_LIBRARY(SDL2_IMAGE_LIBRARY NAMES SDL2_image) + +IF(SDL2_IMAGE_INCLUDE_DIR AND SDL2_IMAGE_LIBRARY) + SET(SDL2_IMAGE_FOUND TRUE) +ENDIF(SDL2_IMAGE_INCLUDE_DIR AND SDL2_IMAGE_LIBRARY) + +IF(SDL2_IMAGE_FOUND) + IF(NOT SDL2_IMAGE_FIND_QUIETLY) + MESSAGE(STATUS "Found SDL2_image: -I${SDL2_IMAGE_INCLUDE_DIR}, ${SDL2_IMAGE_LIBRARY}") + ENDIF(NOT SDL2_IMAGE_FIND_QUIETLY) +ELSE(SDL2_IMAGE_FOUND) + IF(SDL2_IMAGE_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find SDL2") + ENDIF(SDL2_IMAGE_FIND_REQUIRED) +ENDIF(SDL2_IMAGE_FOUND) + +MARK_AS_ADVANCED(SDL2_IMAGE_INCLUDE_DIR SDL2_IMAGE_LIBRARY SDL2_IMAGE_FOUND)