X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=source%2FIrrlicht%2FCMakeLists.txt;h=fa345cadd46871b6912ac393ede037caf4dc5df5;hb=ba77d01c91a363ad932ecd26c3eaba82ddf7a6f0;hp=7a29d37841d2adb767fc6c56af4d3e51c0c66774;hpb=a6d062ebd9513db64a9fb5e1ba7864319905c62c;p=irrlicht.git diff --git a/source/Irrlicht/CMakeLists.txt b/source/Irrlicht/CMakeLists.txt index 7a29d37..fa345ca 100644 --- a/source/Irrlicht/CMakeLists.txt +++ b/source/Irrlicht/CMakeLists.txt @@ -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() @@ -86,8 +89,7 @@ if(WIN32) 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) + message(SEND_ERROR "SDL2 backend is not supported on iOS") endif() set(DEVICE "IOS") elseif(OSX) @@ -96,8 +98,7 @@ elseif(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 +114,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,6 +148,8 @@ endif() # OpenGL +option(ENABLE_OPENGL3 "Enable OpenGL 3+" FALSE) + if(IOS OR ANDROID OR EMSCRIPTEN) set(ENABLE_OPENGL FALSE) else() @@ -198,7 +195,18 @@ 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_) @@ -213,6 +221,9 @@ if(ENABLE_GLES2) 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 +243,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 +365,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 +389,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 +442,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 +462,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 +519,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()