summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt82
1 files changed, 75 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 168f85f..a55d9cf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,8 @@ ENDIF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
PROJECT(avp)
# required dependencies
+INCLUDE(FindOpenGLES.cmake)
+INCLUDE(FindOpenGLES2.cmake)
INCLUDE(FindSDL2.cmake)
INCLUDE(FindSDL)
INCLUDE(FindOpenGL)
@@ -27,6 +29,18 @@ IF(NOT SDL_TYPE STREQUAL "AUTO" AND NOT SDL_TYPE STREQUAL "SDL" AND NOT SDL_TYPE
MESSAGE(FATAL_ERROR "Invalid SDL_TYPE setting ${SDL_TYPE}; must be one of AUTO SDL SDL2")
ENDIF(NOT SDL_TYPE STREQUAL "AUTO" AND NOT SDL_TYPE STREQUAL "SDL" AND NOT SDL_TYPE STREQUAL "SDL2")
+IF(SDL_FOUND)
+ IF(SDL_VERSION_STRING VERSION_LESS "1.2.0")
+ MESSAGE(WARNING "SDL 1.2 was claimed to be found with version ${SDL_VERSION_STRING}, ignoring...")
+ UNSET(SDL_FOUND)
+ ENDIF(SDL_VERSION_STRING VERSION_LESS "1.2.0")
+
+ IF(SDL_VERSION_STRING VERSION_GREATER "1.2.99")
+ MESSAGE(WARNING "SDL 1.2 was claimed to be found with version ${SDL_VERSION_STRING}, ignoring...")
+ UNSET(SDL_FOUND)
+ ENDIF(SDL_VERSION_STRING VERSION_GREATER "1.2.99")
+ENDIF(SDL_FOUND)
+
IF(SDL_TYPE STREQUAL "AUTO")
IF(SDL_FOUND)
MESSAGE(STATUS "SDL 1.2 found; using that.")
@@ -58,12 +72,49 @@ IF(SDL_TYPE STREQUAL "SDL2")
MESSAGE(WARNING "SDL 2.0 support is EXPERIMENTAL and INCOMPLETE.")
ENDIF(SDL_TYPE STREQUAL "SDL2")
-IF(NOT OPENGL_FOUND)
- MESSAGE(FATAL_ERROR "OpenGL is required but CMake couldn't find it")
-ENDIF(NOT OPENGL_FOUND)
+# Use Desktop OpenGL if it is available, else try OpenGL ES.
+IF(NOT OPENGL_TYPE)
+ SET(OPENGL_TYPE AUTO CACHE STRING "OpenGL Version; one of: AUTO OPENGL OPENGLES")
+ SET_PROPERTY(CACHE OPENGL_TYPE PROPERTY STRINGS "AUTO" "OPENGL" "OPENGLES")
+ENDIF(NOT OPENGL_TYPE)
+
+IF(NOT OPENGL_TYPE STREQUAL "AUTO" AND NOT OPENGL_TYPE STREQUAL "OPENGL" AND NOT OPENGL_TYPE STREQUAL "OPENGLES")
+ MESSAGE(FATAL_ERROR "Invalid OPENGL_TYPE setting ${OPENGL_TYPE}; must be one of AUTO OPENGL OPENGLES")
+ENDIF(NOT OPENGL_TYPE STREQUAL "AUTO" AND NOT OPENGL_TYPE STREQUAL "OPENGL" AND NOT OPENGL_TYPE STREQUAL "OPENGLES")
+
+IF(OPENGL_TYPE STREQUAL "AUTO")
+ IF(OPENGL_FOUND)
+ MESSAGE(STATUS "OpenGL found; using that.")
+ SET(OPENGL_TYPE "OPENGL")
+ ENDIF(OPENGL_FOUND)
+ENDIF(OPENGL_TYPE STREQUAL "AUTO")
+
+IF(OPENGL_TYPE STREQUAL "AUTO")
+ IF(OPENGLES_FOUND)
+ MESSAGE(STATUS "OpenGL ES found; using that.")
+ SET(OPENGL_TYPE "OPENGLES")
+ ENDIF(OPENGLES_FOUND)
+ENDIF(OPENGL_TYPE STREQUAL "AUTO")
+
+IF(OPENGL_TYPE STREQUAL "AUTO")
+ MESSAGE(FATAL_ERROR "OpenGL is required but CMake couldn't find it.")
+ENDIF(OPENGL_TYPE STREQUAL "AUTO")
+IF(OPENGL_TYPE STREQUAL "OPENGL")
+ IF(NOT OPENGL_FOUND)
+ MESAGE(FATAL_ERROR "OpenGL was requested but CMake couldn't find it.")
+ ENDIF(NOT OPENGL_FOUND)
+ENDIF(OPENGL_TYPE STREQUAL "OPENGL")
+
+IF(OPENGL_TYPE STREQUAL "OPENGLES")
+ IF(NOT OPENGLES_FOUND)
+ MESSAGE(FATAL_ERROR "OpenGL ES was requested but CMake couldn't find it.")
+ ENDIF(NOT OPENGLES_FOUND)
+ENDIF(OPENGL_TYPE STREQUAL "OPENGLES")
+
+# OpenAL
IF(NOT OPENAL_FOUND)
- MESSAGE(FATAL_ERROR "OpenAL is required but CMake couldn't find it")
+ MESSAGE(FATAL_ERROR "OpenAL is required but CMake couldn't find it.")
ENDIF(NOT OPENAL_FOUND)
# required source files
@@ -307,7 +358,7 @@ ENDIF(SDL_TYPE STREQUAL "SDL2")
# auto-include directories with source files
FOREACH(sourcefile IN LISTS source)
- GET_FILENAME_COMPONENT(includedir ${sourcefile} DIRECTORY)
+ GET_FILENAME_COMPONENT(includedir ${sourcefile} PATH) # newer CMake uses DIRECTORY
LIST(APPEND include ${includedir})
ENDFOREACH(sourcefile)
INCLUDE_DIRECTORIES(${include})
@@ -326,7 +377,16 @@ IF(SDL_TYPE STREQUAL "SDL2")
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR})
ENDIF(SDL_TYPE STREQUAL "SDL2")
-INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
+IF(OPENGL_TYPE STREQUAL "OPENGL")
+ INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
+ENDIF(OPENGL_TYPE STREQUAL "OPENGL")
+
+IF(OPENGL_TYPE STREQUAL "OPENGLES")
+ ADD_DEFINITIONS(-DUSE_OPENGL_ES=1)
+ INCLUDE_DIRECTORIES(${OPENGLES_INCLUDE_DIR})
+ INCLUDE_DIRECTORIES(${EGL_INCLUDE_DIR})
+ENDIF(OPENGL_TYPE STREQUAL "OPENGLES")
+
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
IF(SDL_TYPE STREQUAL "SDL")
@@ -337,5 +397,13 @@ IF(SDL_TYPE STREQUAL "SDL2")
TARGET_LINK_LIBRARIES(avp ${SDL2_LIBRARY})
ENDIF(SDL_TYPE STREQUAL "SDL2")
-TARGET_LINK_LIBRARIES(avp ${OPENGL_gl_LIBRARY})
+IF(OPENGL_TYPE STREQUAL "OPENGL")
+ TARGET_LINK_LIBRARIES(avp ${OPENGL_gl_LIBRARY})
+ENDIF(OPENGL_TYPE STREQUAL "OPENGL")
+
+IF(OPENGL_TYPE STREQUAL "OPENGLES")
+ TARGET_LINK_LIBRARIES(avp ${OPENGLES_gl_LIBRARY})
+ TARGET_LINK_LIBRARIES(avp ${EGL_LIBRARIES})
+ENDIF(OPENGL_TYPE STREQUAL "OPENGLES")
+
TARGET_LINK_LIBRARIES(avp ${OPENAL_LIBRARY})