add_definitions(-DIRRLICHT_EXPORTS)
if(BUILD_SHARED_LIBS)
if(WIN32)
- add_definitions("-DIRRLICHT_API=__declspec(dllexport)")
+ set(API_IMPORT "__declspec(dllimport)")
+ set(API_EXPORT "__declspec(dllexport)")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$")
- add_definitions("-DIRRLICHT_API=__attribute__ ((visibility(\"default\")))")
+ set(API_EXPORT "__attribute__ ((visibility(\"default\")))") # only necessary if default visibility is set to hidden
endif()
else()
add_definitions(-D_IRR_STATIC_LIB_)
endif()
+add_definitions("-DIRRLICHT_API=${API_EXPORT}")
+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-D_DEBUG)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
set(SOLARIS TRUE)
endif()
-if(APPLE AND NOT IOS)
- set(OSX TRUE)
-endif()
# Device
if(WIN32)
add_definitions(-D_IRR_WINDOWS_ -D_IRR_WINDOWS_API_)
set(DEVICE "WINDOWS")
-elseif(IOS)
- add_definitions(-D_IRR_IOS_PLATFORM_ -D_IRR_COMPILE_WITH_IOS_BUILTIN_MAIN_)
- if(USE_SDL2)
- message(WARNING "SDL2 backend is not supported on iOS")
- set(USE_SDL2 FALSE)
- endif()
- set(DEVICE "IOS")
-elseif(OSX)
+elseif(APPLE)
add_definitions(-D_IRR_OSX_PLATFORM_)
set(DEVICE "OSX")
elseif(ANDROID)
add_definitions(-D_IRR_ANDROID_PLATFORM_ -D_IRR_COMPILE_ANDROID_ASSET_READER_)
if(USE_SDL2)
- message(WARNING "SDL2 backend is not supported on Android")
- set(USE_SDL2 FALSE)
+ message(SEND_ERROR "SDL2 backend is not supported on Android")
endif()
set(DEVICE "Android")
elseif(EMSCRIPTEN)
set(DEVICE "X11")
endif()
+if(LINUX_PLATFORM)
+ add_definitions(-D_IRR_LINUX_PLATFORM_)
+endif()
+
if(USE_SDL2)
set(DEVICE "SDL")
endif()
-option(USE_X11 "Use X11" TRUE)
-if(USE_X11)
- add_definitions(-D_IRR_COMPILE_WITH_X11_)
-endif()
+add_definitions("-D_IRR_COMPILE_WITH_${DEVICE}_DEVICE_")
-if(LINUX_PLATFORM)
- add_definitions(-D_IRR_LINUX_PLATFORM_)
+# X11
+
+if(DEVICE STREQUAL "X11")
+ option(USE_X11 "Use X11" TRUE)
+else()
+ set(USE_X11 FALSE)
endif()
if(LINUX_PLATFORM AND USE_X11)
- add_definitions(-D_IRR_COMPILE_WITH_X11_)
-
option(USE_XINPUT2 "Use XInput2" TRUE)
- if(USE_XINPUT2)
- add_definitions(-D_IRR_LINUX_X11_XINPUT2_)
- endif()
-
option(USE_XCURSOR "Use XCursor" FALSE)
- if(USE_XCURSOR)
- add_definitions(-D_IRR_LINUX_XCURSOR_)
- endif()
else()
set(USE_XINPUT2 FALSE)
set(USE_XCURSOR FALSE)
endif()
-add_definitions("-D_IRR_COMPILE_WITH_${DEVICE}_DEVICE_")
-
# Joystick
if(NOT (BSD OR SOLARIS OR EMSCRIPTEN))
# OpenGL
-if(IOS OR ANDROID OR EMSCRIPTEN)
+option(ENABLE_OPENGL3 "Enable OpenGL 3+" FALSE)
+
+if(ANDROID OR EMSCRIPTEN)
set(ENABLE_OPENGL FALSE)
else()
option(ENABLE_OPENGL "Enable OpenGL" TRUE)
endif()
-if(EMSCRIPTEN OR OSX)
+if(EMSCRIPTEN OR APPLE)
set(ENABLE_GLES1 FALSE)
else()
- if(ANDROID OR IOS)
+ if(ANDROID)
set(DEFAULT_GLES1 TRUE)
endif()
option(ENABLE_GLES1 "Enable OpenGL ES" ${DEFAULT_GLES1})
endif()
-if(OSX)
+if(APPLE)
set(ENABLE_GLES2 FALSE)
set(ENABLE_WEBGL1 FALSE)
else()
- if(ANDROID OR IOS OR EMSCRIPTEN)
+ if(ANDROID OR EMSCRIPTEN)
set(DEFAULT_GLES2 TRUE)
endif()
if(EMSCRIPTEN)
endif()
endif()
+if(ENABLE_OPENGL3)
+ if (NOT USE_SDL2)
+ message(SEND_ERROR "OpenGL3 support requires SDL2")
+ endif()
+ set(USE_SDLGL ON)
+ set(USE_SDLGL3 ON)
+endif()
+
if(ENABLE_GLES1)
+ if (USE_SDL2)
+ message(SEND_ERROR "OpenGL ES 1 is not supported with SDL2")
+ endif()
add_definitions(-D_IRR_COMPILE_WITH_OGLES1_)
if(DEVICE MATCHES "^(WINDOWS|X11|ANDROID)$")
add_definitions(-D_IRR_COMPILE_WITH_EGL_MANAGER_ -D_IRR_OGLES1_USE_EXTPOINTER_)
- elseif(DEVICE STREQUAL "IOS")
- add_definitions(-D_IRR_COMPILE_WITH_EAGL_MANAGER_)
endif()
endif()
add_definitions(-D_IRR_COMPILE_WITH_OGLES2_)
if(DEVICE MATCHES "^(WINDOWS|X11|ANDROID)$" OR EMSCRIPTEN)
add_definitions(-D_IRR_COMPILE_WITH_EGL_MANAGER_ -D_IRR_OGLES2_USE_EXTPOINTER_)
- elseif(DEVICE STREQUAL "IOS")
- add_definitions(-D_IRR_COMPILE_WITH_EAGL_MANAGER_)
+ elseif(DEVICE STREQUAL "SDL")
+ set(USE_SDLGL ON)
+ set(USE_SDLGLES2 ON)
endif()
endif()
message(STATUS "Device: ${DEVICE}")
message(STATUS "OpenGL: ${ENABLE_OPENGL}")
+message(STATUS "OpenGL 3: ${ENABLE_OPENGL3}")
message(STATUS "OpenGL ES: ${ENABLE_GLES1}")
message(STATUS "OpenGL ES 2: ${ENABLE_GLES2}")
message(STATUS "WebGL: ${ENABLE_WEBGL1}")
COpenGLExtensionHandler.cpp
COGLESDriver.cpp
COGLESExtensionHandler.cpp
- COGLES2Driver.cpp
- COGLES2ExtensionHandler.cpp
- COGLES2FixedPipelineRenderer.cpp
- COGLES2MaterialRenderer.cpp
- COGLES2Renderer2D.cpp
- CWebGL1Driver.cpp
CGLXManager.cpp
CWGLManager.cpp
CEGLManager.cpp
${IRRIMAGEOBJ}
)
+if(USE_SDLGL)
+ target_sources(IRRVIDEOOBJ PUBLIC
+ OpenGL/Driver.cpp
+ OpenGL/ExtensionHandler.cpp
+ OpenGL/FixedPipelineRenderer.cpp
+ OpenGL/MaterialRenderer.cpp
+ OpenGL/Renderer2D.cpp
+ )
+endif()
+
+if(USE_SDLGL3)
+ target_sources(IRRVIDEOOBJ PUBLIC
+ OpenGL3/Driver.cpp
+ )
+endif()
+
+if(USE_SDLGLES2)
+ target_sources(IRRVIDEOOBJ PUBLIC
+ OpenGLES2/Driver.cpp
+ )
+else()
+ target_sources(IRRVIDEOOBJ PUBLIC
+ COGLES2Driver.cpp
+ COGLES2ExtensionHandler.cpp
+ COGLES2FixedPipelineRenderer.cpp
+ COGLES2MaterialRenderer.cpp
+ COGLES2Renderer2D.cpp
+ CWebGL1Driver.cpp
+ )
+endif()
+
add_library(IRRIOOBJ OBJECT
CFileList.cpp
CFileSystem.cpp
os.cpp
)
+if(ENABLE_OPENGL3)
+ target_compile_definitions(IRROTHEROBJ PRIVATE ENABLE_OPENGL3)
+endif()
+
if(ANDROID)
target_sources(IRROTHEROBJ PRIVATE
Android/CIrrDeviceAndroid.cpp
)
endif()
+if(USE_X11)
+ target_compile_definitions(IRROTHEROBJ PRIVATE _IRR_COMPILE_WITH_X11_)
+endif()
+
+if(USE_XINPUT2)
+ target_compile_definitions(IRROTHEROBJ PRIVATE _IRR_LINUX_X11_XINPUT2_)
+endif()
+
+if(USE_XCURSOR)
+ target_compile_definitions(IRROTHEROBJ PRIVATE _IRR_LINUX_XCURSOR_)
+endif()
+
add_library(IRRGUIOBJ OBJECT
CGUIButton.cpp
CGUICheckBox.cpp
target_link_libraries(IrrlichtMt PRIVATE ${link_libs})
if(WIN32)
- target_compile_definitions(IrrlichtMt INTERFACE _IRR_WINDOWS_API_)
-endif()
-if(WIN32 AND BUILD_SHARED_LIBS)
- target_compile_definitions(IrrlichtMt INTERFACE IRRLICHT_API=__declspec(dllimport))
+ target_compile_definitions(IrrlichtMt INTERFACE _IRR_WINDOWS_API_) # used in _IRR_DEBUG_BREAK_IF definition in a public header
endif()
+target_compile_definitions(IrrlichtMt INTERFACE "IRRLICHT_API=${API_IMPORT}")
if(APPLE OR ANDROID OR EMSCRIPTEN)
target_compile_definitions(IrrlichtMt PUBLIC IRR_MOBILE_PATHS)
endif()