]> git.lizzy.rs Git - irrlicht.git/blobdiff - source/Irrlicht/CMakeLists.txt
Resolve conflicts with master
[irrlicht.git] / source / Irrlicht / CMakeLists.txt
index 7a29d37841d2adb767fc6c56af4d3e51c0c66774..ad11dd45aa46adfc4aace25eee6cabf6cd3b4ce3 100644 (file)
@@ -6,13 +6,16 @@ option(USE_SDL2 "Use the SDL2 backend" FALSE)
 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()
@@ -74,30 +77,19 @@ add_definitions(
 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)
@@ -113,38 +105,32 @@ else()
        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))
@@ -153,26 +139,28 @@ endif()
 
 # 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)
@@ -198,12 +186,21 @@ if(ENABLE_OPENGL)
        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()
 
@@ -211,8 +208,9 @@ if(ENABLE_GLES2)
        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()
 
@@ -232,6 +230,7 @@ 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}")
@@ -353,12 +352,6 @@ set(IRRDRVROBJ
        COpenGLExtensionHandler.cpp
        COGLESDriver.cpp
        COGLESExtensionHandler.cpp
-       COGLES2Driver.cpp
-       COGLES2ExtensionHandler.cpp
-       COGLES2FixedPipelineRenderer.cpp
-       COGLES2MaterialRenderer.cpp
-       COGLES2Renderer2D.cpp
-       CWebGL1Driver.cpp
        CGLXManager.cpp
        CWGLManager.cpp
        CEGLManager.cpp
@@ -383,6 +376,37 @@ add_library(IRRVIDEOOBJ OBJECT
        ${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
@@ -405,6 +429,10 @@ add_library(IRROTHEROBJ OBJECT
        os.cpp
 )
 
+if(ENABLE_OPENGL3)
+       target_compile_definitions(IRROTHEROBJ PRIVATE ENABLE_OPENGL3)
+endif()
+
 if(ANDROID)
        target_sources(IRROTHEROBJ PRIVATE
                Android/CIrrDeviceAndroid.cpp
@@ -421,6 +449,18 @@ elseif(APPLE)
        )
 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
@@ -466,11 +506,9 @@ target_include_directories(IrrlichtMt
 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()