mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 19:05:59 -04:00
114 lines
3.1 KiB
CMake
114 lines
3.1 KiB
CMake
PROJECT(libSDL2pp)
|
|
|
|
# meta
|
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
|
|
|
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
|
|
|
# there are functions present on wiki, but not yet in stable SDL2 releases;
|
|
# we hide these under following options
|
|
OPTION(SDL2PP_NEW_2_0_4 "Enable new SDL2 functions present since SDL2 2.0.4" OFF)
|
|
OPTION(SDL2PP_WITH_WERROR "Make warnings fatal" OFF)
|
|
|
|
IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|
OPTION(SDL2PP_WITH_IMAGE "Enable SDL2_image support" ON)
|
|
ELSE(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|
# please set SDL2PP_WITH_IMAGE in parent project as needed
|
|
ENDIF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|
|
|
# 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)
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
|
|
SET(WERROR_FLAG "/WX")
|
|
ELSE(MSVC)
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic")
|
|
SET(WERROR_FLAG "-Werror")
|
|
ENDIF(MSVC)
|
|
|
|
INCLUDE_DIRECTORIES(BEFORE ${PROJECT_SOURCE_DIR})
|
|
INCLUDE_DIRECTORIES(${SDL2_ALL_INCLUDE_DIRS})
|
|
|
|
IF(SDL2PP_WITH_WERROR)
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WERROR_FLAG}")
|
|
ENDIF(SDL2PP_WITH_WERROR)
|
|
|
|
# config.h
|
|
CONFIGURE_FILE(
|
|
SDL2pp/Config.hh.in
|
|
SDL2pp/Config.hh
|
|
)
|
|
|
|
INCLUDE_DIRECTORIES(BEFORE ${PROJECT_BINARY_DIR})
|
|
|
|
# sources
|
|
SET(LIBRARY_SOURCES
|
|
SDL2pp/AudioDevice.cc
|
|
SDL2pp/AudioLock.cc
|
|
SDL2pp/AudioSpec.cc
|
|
SDL2pp/Exception.cc
|
|
SDL2pp/Point.cc
|
|
SDL2pp/RWops.cc
|
|
SDL2pp/Rect.cc
|
|
SDL2pp/Renderer.cc
|
|
SDL2pp/SDL.cc
|
|
SDL2pp/Texture.cc
|
|
SDL2pp/TextureLock.cc
|
|
SDL2pp/Wav.cc
|
|
SDL2pp/Window.cc
|
|
)
|
|
|
|
SET(LIBRARY_HEADERS
|
|
SDL2pp/Audio.hh
|
|
SDL2pp/Exception.hh
|
|
SDL2pp/ExtraRWops.hh
|
|
SDL2pp/Point.hh
|
|
SDL2pp/RWops.hh
|
|
SDL2pp/Rect.hh
|
|
SDL2pp/Renderer.hh
|
|
SDL2pp/SDL.hh
|
|
SDL2pp/SDL2pp.hh
|
|
SDL2pp/Texture.hh
|
|
SDL2pp/Wav.hh
|
|
SDL2pp/Window.hh
|
|
)
|
|
|
|
IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|
MESSAGE(STATUS "libSDL2pp standalone build")
|
|
|
|
# library
|
|
ADD_LIBRARY(SDL2pp SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
|
TARGET_LINK_LIBRARIES(SDL2pp ${SDL2_ALL_LIBRARIES})
|
|
SET_TARGET_PROPERTIES(SDL2pp PROPERTIES VERSION 0.0.0 SOVERSION 0)
|
|
|
|
# demos and tests
|
|
OPTION(RUN_GUI_TESTS "Run GUI tests (requires X11 display)" ON)
|
|
ENABLE_TESTING()
|
|
|
|
ADD_SUBDIRECTORY(demos)
|
|
ADD_SUBDIRECTORY(tests)
|
|
|
|
INSTALL(FILES ${LIBRARY_HEADERS} ${PROJECT_BINARY_DIR}/SDL2pp/Config.hh DESTINATION include/SDL2pp)
|
|
INSTALL(TARGETS SDL2pp LIBRARY DESTINATION lib)
|
|
ELSE(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|
MESSAGE(STATUS "libSDL2pp bundled build")
|
|
|
|
# library
|
|
ADD_LIBRARY(SDL2pp STATIC ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
|
|
|
# provide variables to parent
|
|
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)
|