Browse Source

Ability to build Magnum for OpenGL ES emulated with desktop OpenGL.

pull/7/head
Vladimír Vondruš 14 years ago
parent
commit
3c347441e6
  1. 10
      CMakeLists.txt
  2. 3
      README.md
  3. 14
      doc/building.dox
  4. 22
      modules/FindMagnum.cmake
  5. 12
      src/CMakeLists.txt
  6. 3
      src/Platform/magnum-info.cpp
  7. 3
      src/magnumConfigure.h.cmake

10
CMakeLists.txt

@ -6,6 +6,7 @@ include(CMakeDependentOption)
option(TARGET_GLES "Build for OpenGL ES instead of desktop OpenGL" OFF)
cmake_dependent_option(TARGET_GLES2 "Build for OpenGL ES 2" ON "TARGET_GLES" OFF)
cmake_dependent_option(TARGET_DESKTOP_GLES "Build for OpenGL ES on desktop" OFF "TARGET_GLES" OFF)
# Parts of the library
option(WITH_EVERYTHING "Build everything (doesn't include *Application libraries)" ON)
@ -46,12 +47,14 @@ endif()
# Check dependencies
find_package(Corrade REQUIRED)
if(NOT TARGET_GLES)
if(NOT TARGET_GLES OR TARGET_DESKTOP_GLES)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
else()
find_package(OpenGLES2 REQUIRED)
endif()
if(NOT TARGET_GLES)
find_package(GLEW REQUIRED)
endif()
# Configuration variables (saved later to corradeConfigure.h)
if(TARGET_GLES)
@ -60,6 +63,9 @@ endif()
if(TARGET_GLES2)
set(MAGNUM_TARGET_GLES2 1)
endif()
if(TARGET_DESKTOP_GLES)
set(MAGNUM_TARGET_DESKTOP_GLES 1)
endif()
# Installation paths
set(MAGNUM_BINARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin)

3
README.md

@ -53,6 +53,9 @@ installed using these four commands:
make
make install
See Doxygen documentation for more information about enabling or disabling
additional features and targeting different platforms such as OpenGL ES.
Building and running unit tests
-------------------------------

14
doc/building.dox

@ -55,9 +55,17 @@ If you want to build with another compiler (e.g. Clang), pass
@subsection building-optional Enabling or disabling features
By default the engine is built for desktop OpenGL. If you want to target
OpenGL ES, set `TARGET_GLES` to `ON` or pass `-DTARGET_GLES=ON` to CMake. Note
that some features are available for desktop OpenGL only, see @ref requires-gl.
By default the engine is built for desktop OpenGL. Using `TARGET_*` CMake
parameters you can target other platforms:
- `TARGET_GLES` - Target OpenGL ES.
- `TARGET_GLES2` - Target OpenGL ES 2.0. Currently enabled by default when
`TARGET_GLES` is set, as no customer OpenGL ES 3.0 platform exists yet.
- `TARGET_DESKTOP_GLES` - Target OpenGL ES on desktop, i.e. use OpenGL ES
emulation in desktop OpenGL library. Might not be supported in all drivers.
Note that some features are available for desktop OpenGL only, see
@ref requires-gl.
By default the engine is built with everything except
@ref Platform "application libraries". Using `WITH_*` CMake parameters you can

22
modules/FindMagnum.cmake

@ -85,13 +85,19 @@ string(FIND "${_magnumConfigure}" "#define MAGNUM_TARGET_NACL" _TARGET_NACL)
if(NOT _TARGET_NACL EQUAL -1)
set(MAGNUM_TARGET_NACL 1)
endif()
string(FIND "${_magnumConfigure}" "#define MAGNUM_TARGET_DESKTOP_GLES" _TARGET_DESKTOP_GLES)
if(NOT _TARGET_DESKTOP_GLES EQUAL -1)
set(MAGNUM_TARGET_DESKTOP_GLES 1)
endif()
if(NOT MAGNUM_TARGET_GLES)
if(NOT MAGNUM_TARGET_GLES OR MAGNUM_TARGET_DESKTOP_GLES)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
else()
find_package(OpenGLES2 REQUIRED)
endif()
if(NOT MAGNUM_TARGET_GLES)
find_package(GLEW REQUIRED)
endif()
# On Windows, *Application libraries need to have ${MAGNUM_LIBRARY} listed
# in dependencies also after *Application.lib static library name to avoid
@ -242,13 +248,13 @@ set(MAGNUM_INCLUDE_DIRS ${MAGNUM_INCLUDE_DIR}
set(MAGNUM_LIBRARIES ${MAGNUM_LIBRARY}
${CORRADE_UTILITY_LIBRARY}
${CORRADE_PLUGINMANAGER_LIBRARY})
if(NOT MAGNUM_TARGET_GLES)
set(MAGNUM_LIBRARIES ${MAGNUM_LIBRARIES}
${OPENGL_gl_LIBRARY}
${GLEW_LIBRARY})
if(NOT MAGNUM_TARGET_GLES OR MAGNUM_TARGET_DESKTOP_GLES)
set(MAGNUM_LIBRARIES ${MAGNUM_LIBRARIES} ${OPENGL_gl_LIBRARY})
else()
set(MAGNUM_LIBRARIES ${MAGNUM_LIBRARIES}
${OPENGLES2_LIBRARY})
set(MAGNUM_LIBRARIES ${MAGNUM_LIBRARIES} ${OPENGLES2_LIBRARY})
endif()
if(NOT MAGNUM_TARGET_GLES)
set(MAGNUM_LIBRARIES ${MAGNUM_LIBRARIES} ${GLEW_LIBRARY})
endif()
# Installation dirs

12
src/CMakeLists.txt

@ -119,13 +119,13 @@ add_library(Magnum SHARED
set(Magnum_LIBS
${CORRADE_UTILITY_LIBRARY}
${CORRADE_PLUGINMANAGER_LIBRARY})
if(NOT TARGET_GLES)
set(Magnum_LIBS ${Magnum_LIBS}
${OPENGL_gl_LIBRARY}
${GLEW_LIBRARY})
if(NOT TARGET_GLES OR TARGET_DESKTOP_GLES)
set(Magnum_LIBS ${Magnum_LIBS} ${OPENGL_gl_LIBRARY})
else()
set(Magnum_LIBS ${Magnum_LIBS}
${OPENGLES2_LIBRARY})
set(Magnum_LIBS ${Magnum_LIBS} ${OPENGLES2_LIBRARY})
endif()
if(NOT TARGET_GLES)
set(Magnum_LIBS ${Magnum_LIBS} ${GLEW_LIBRARY})
endif()
target_link_libraries(Magnum ${Magnum_LIBS})

3
src/Platform/magnum-info.cpp

@ -47,6 +47,9 @@ MagnumInfo::MagnumInfo(int& argc, char** argv): WindowlessGlxApplication(argc, a
#ifdef MAGNUM_TARGET_GLES2
d << "MAGNUM_TARGET_GLES2";
#endif
#ifdef MAGNUM_TARGET_DESKTOP_GLES
d << "MAGNUM_TARGET_DESKTOP_GLES";
#endif
#ifdef MAGNUM_TARGET_NACL
d << "MAGNUM_TARGET_NACL";
#endif

3
src/magnumConfigure.h.cmake

@ -1,3 +1,4 @@
#cmakedefine MAGNUM_TARGET_NACL
#cmakedefine MAGNUM_TARGET_GLES
#cmakedefine MAGNUM_TARGET_GLES2
#cmakedefine MAGNUM_TARGET_DESKTOP_GLES
#cmakedefine MAGNUM_TARGET_NACL

Loading…
Cancel
Save