+ string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " msvcrt.lib") # ???? fuck off
+
+ add_compile_options(/GR- /Zl)
+
+ # Enable SSE for floating point math on 32-bit x86 by default
+ # reasoning see minetest issue #11810 and https://gcc.gnu.org/wiki/FloatingPointMath
+ if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+ add_compile_options(/arch:SSE)
+ endif()
+endif()
+
+# Sanity-check version
+
+include(CheckCXXSourceCompiles)
+set(CMAKE_REQUIRED_INCLUDES ${PROJECT_SOURCE_DIR}/include)
+unset(REVISION_SANITY_CHECK CACHE)
+check_cxx_source_compiles("#include <IrrCompileConfig.h>\n\
+#if IRRLICHT_VERSION_MT_REVISION != ${IRRLICHTMT_REVISION}\n\
+#error\n\
+#endif\n\
+int main() {}" REVISION_SANITY_CHECK)
+if(NOT REVISION_SANITY_CHECK)
+ message(FATAL_ERROR "IrrlichtMt revision number mismatches between CMake and headers.")
+endif()
+
+# Platform-independent configuration (hard-coded currently)
+add_definitions(
+ -DIRR_ENABLE_BUILTIN_FONT
+ -D_IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_
+ )
+
+# Platform-specific configuration
+
+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(SEND_ERROR "SDL2 backend is not supported on iOS")
+ endif()
+ set(DEVICE "IOS")
+elseif(OSX)
+ 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(SEND_ERROR "SDL2 backend is not supported on Android")
+ endif()
+ set(DEVICE "Android")
+elseif(EMSCRIPTEN)
+ add_definitions(-D_IRR_EMSCRIPTEN_PLATFORM_ -D_IRR_COMPILE_WITH_EGL_MANAGER_)
+ set(LINUX_PLATFORM TRUE)
+ set(DEVICE "SDL")
+elseif(SOLARIS)
+ add_definitions(-D_IRR_SOLARIS_PLATFORM_ -D_IRR_POSIX_API_)
+ set(DEVICE "X11")
+else()
+ add_definitions(-D_IRR_POSIX_API_)
+ set(LINUX_PLATFORM TRUE)
+ set(DEVICE "X11")
+endif()
+
+if(LINUX_PLATFORM)
+ add_definitions(-D_IRR_LINUX_PLATFORM_)
+endif()
+
+if(USE_SDL2)
+ set(DEVICE "SDL")
+endif()
+
+add_definitions("-D_IRR_COMPILE_WITH_${DEVICE}_DEVICE_")
+
+# X11
+
+if(DEVICE STREQUAL "X11")
+ option(USE_X11 "Use X11" TRUE)
+else()
+ set(USE_X11 FALSE)
+endif()
+
+if(LINUX_PLATFORM AND USE_X11)
+ option(USE_XINPUT2 "Use XInput2" TRUE)
+ option(USE_XCURSOR "Use XCursor" FALSE)
+else()
+ set(USE_XINPUT2 FALSE)
+ set(USE_XCURSOR FALSE)
+endif()
+
+# Joystick
+
+if(NOT (BSD OR SOLARIS OR EMSCRIPTEN))
+ add_definitions(-D_IRR_COMPILE_WITH_JOYSTICK_EVENTS_)
+endif()
+
+# OpenGL
+
+option(ENABLE_OPENGL3 "Enable OpenGL 3+" FALSE)
+
+if(IOS OR ANDROID OR EMSCRIPTEN)
+ set(ENABLE_OPENGL FALSE)
+else()
+ option(ENABLE_OPENGL "Enable OpenGL" TRUE)
+endif()
+
+if(EMSCRIPTEN OR OSX)
+ set(ENABLE_GLES1 FALSE)
+else()
+ if(ANDROID OR IOS)
+ set(DEFAULT_GLES1 TRUE)
+ endif()
+ option(ENABLE_GLES1 "Enable OpenGL ES" ${DEFAULT_GLES1})
+endif()
+
+if(OSX)
+ set(ENABLE_GLES2 FALSE)
+ set(ENABLE_WEBGL1 FALSE)
+else()
+ if(ANDROID OR IOS OR EMSCRIPTEN)
+ set(DEFAULT_GLES2 TRUE)
+ endif()
+ if(EMSCRIPTEN)
+ set(DEFAULT_WEBGL1 TRUE)
+ endif()
+ option(ENABLE_GLES2 "Enable OpenGL ES 2+" ${DEFAULT_GLES2})
+ option(ENABLE_WEBGL1 "Enable WebGL (requires GLES2)" ${DEFAULT_WEBGL1})
+ if(ENABLE_WEBGL1)
+ set(ENABLE_GLES2 TRUE)
+ endif()
+endif()
+
+if(ENABLE_OPENGL)
+ add_definitions(-D_IRR_COMPILE_WITH_OPENGL_)
+ if(DEVICE STREQUAL "WINDOWS")
+ add_definitions(-D_IRR_COMPILE_WITH_WGL_MANAGER_ -D_IRR_OPENGL_USE_EXTPOINTER_)
+ elseif(DEVICE STREQUAL "X11")
+ add_definitions(-D_IRR_COMPILE_WITH_GLX_MANAGER_ -D_IRR_OPENGL_USE_EXTPOINTER_)
+ elseif(DEVICE STREQUAL "OSX")
+ add_definitions(-D_IRR_COMPILE_WITH_NSOGL_MANAGER_)
+ elseif(DEVICE STREQUAL "SDL")
+ add_definitions(-D_IRR_OPENGL_USE_EXTPOINTER_)
+ 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()
+
+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()
+
+if(ENABLE_WEBGL1)
+ add_definitions(-D_IRR_COMPILE_WITH_WEBGL1_)
+endif()