]> git.lizzy.rs Git - irrlicht.git/blobdiff - source/Irrlicht/CMakeLists.txt
Update CIrrDeviceSDL to support SDL2 (#85)
[irrlicht.git] / source / Irrlicht / CMakeLists.txt
index 5d803f0dcd53f61fb3bb6239e6a60889bdc03687..b2e53eeececc900c3779e34726239bfe0fe58d6b 100644 (file)
@@ -10,16 +10,36 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
        add_definitions(-D_DEBUG)
 endif()
 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$")
        set(CMAKE_CXX_FLAGS_RELEASE "-O3")
        set(CMAKE_CXX_FLAGS_DEBUG "-g")
 
        add_compile_options(-Wall -pipe -fno-exceptions -fno-rtti)
+
+       # 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)
+               include(CheckCXXSourceCompiles)
+               check_cxx_source_compiles("#ifndef __i686__\n#error\n#endif\nint main(){}" IS_I686)
+               if(IS_I686)
+                       message(STATUS "Detected Intel x86: using SSE instead of x87 FPU")
+                       add_compile_options(-mfpmath=sse -msse)
+               endif()
+       endif()
+
 elseif(MSVC)
        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()
 
 # Required libs
@@ -35,6 +55,8 @@ set(CMAKE_REQUIRED_INCLUDES ${PROJECT_SOURCE_DIR}/include)
 unset(OGLES1_ENABLED CACHE)
 unset(OGLES2_ENABLED CACHE)
 unset(OGL_ENABLED CACHE)
+unset(XINPUT2_ENABLED CACHE)
+unset(SDL_ENABLED CACHE)
 
 check_symbol_exists(_IRR_COMPILE_WITH_OGLES1_ "IrrCompileConfig.h" OGLES1_ENABLED)
 if(OGLES1_ENABLED)
@@ -53,6 +75,16 @@ if(OGL_ENABLED)
        set(OpenGL_GL_PREFERENCE "LEGACY")
        find_package(OpenGL REQUIRED)
 endif()
+check_symbol_exists(_IRR_LINUX_X11_XINPUT2_ "IrrCompileConfig.h" XINPUT2_ENABLED)
+if(XINPUT2_ENABLED)
+       find_library(XINPUT_LIBRARY Xi REQUIRED)
+endif()
+
+check_symbol_exists(_IRR_COMPILE_WITH_SDL_DEVICE_ "IrrCompileConfig.h" SDL_ENABLED)
+if(SDL_ENABLED)
+       find_package(SDL2 CONFIG REQUIRED)
+       message(STATUS "Found SDL2: ${SDL2_LIBRARIES}")
+endif()
 
 # Platform-specific libs
 
@@ -76,6 +108,7 @@ set(link_includes
        "${ZLIB_INCLUDE_DIR}"
        "${JPEG_INCLUDE_DIR}"
        "${PNG_INCLUDE_DIR}"
+       "${SDL2_INCLUDE_DIRS}"
 
        ${OPENGL_INCLUDE_DIR}
        ${OPENGLES2_INCLUDE_DIR}
@@ -89,11 +122,13 @@ set(link_libs
        "${ZLIB_LIBRARY}"
        "${JPEG_LIBRARY}"
        "${PNG_LIBRARY}"
+       "${SDL2_LIBRARIES}"
 
        ${OPENGL_LIBRARIES}
        ${OPENGLES_LIBRARY}
        ${OPENGLES2_LIBRARIES}
        ${EGL_LIBRARY}
+       ${XINPUT_LIBRARY}
 
        "$<$<PLATFORM_ID:Android>:native_app_glue -landroid -llog>"
        ${COCOA_LIB}
@@ -107,32 +142,9 @@ set(link_libs
 # Source files
 
 set(IRRMESHLOADER
-       CBSPMeshFileLoader.cpp
-       CMD2MeshFileLoader.cpp
-       CMD3MeshFileLoader.cpp
-       CMS3DMeshFileLoader.cpp
        CB3DMeshFileLoader.cpp
-       C3DSMeshFileLoader.cpp
-       COgreMeshFileLoader.cpp
        COBJMeshFileLoader.cpp
-       CCSMLoader.cpp
-       CDMFLoader.cpp
-       CLMTSMeshFileLoader.cpp
-       CMY3DMeshFileLoader.cpp
-       COCTLoader.cpp
        CXMeshFileLoader.cpp
-       CSTLMeshFileLoader.cpp
-       CLWOMeshFileLoader.cpp
-       CPLYMeshFileLoader.cpp
-       CSMFMeshFileLoader.cpp
-       CMeshTextureLoader.cpp
-)
-
-set(IRRMESHWRITER
-       CSTLMeshWriter.cpp
-       COBJMeshWriter.cpp
-       CPLYMeshWriter.cpp
-       CB3DMeshWriter.cpp
 )
 
 add_library(IRRMESHOBJ OBJECT
@@ -140,13 +152,7 @@ add_library(IRRMESHOBJ OBJECT
        CBoneSceneNode.cpp
        CMeshSceneNode.cpp
        CAnimatedMeshSceneNode.cpp
-       CAnimatedMeshMD2.cpp
-       CAnimatedMeshMD3.cpp
-       CQ3LevelMesh.cpp
-       CQuake3ShaderSceneNode.cpp
-       CAnimatedMeshHalfLife.cpp
        ${IRRMESHLOADER}
-       ${IRRMESHWRITER}
 )
 
 add_library(IRROBJ OBJECT
@@ -154,110 +160,43 @@ add_library(IRROBJ OBJECT
        CCameraSceneNode.cpp
        CDummyTransformationSceneNode.cpp
        CEmptySceneNode.cpp
-       CGeometryCreator.cpp
-       CLightSceneNode.cpp
        CMeshManipulator.cpp
-       CMetaTriangleSelector.cpp
-       COctreeSceneNode.cpp
-       COctreeTriangleSelector.cpp
        CSceneCollisionManager.cpp
        CSceneManager.cpp
-       CShadowVolumeSceneNode.cpp
-       CSkyBoxSceneNode.cpp
-       CSkyDomeSceneNode.cpp
-       CTerrainSceneNode.cpp
-       CTerrainTriangleSelector.cpp
-       CVolumeLightSceneNode.cpp
-       CCubeSceneNode.cpp
-       CSphereSceneNode.cpp
-       CTextSceneNode.cpp
-       CTriangleBBSelector.cpp
-       CTriangleSelector.cpp
-       CWaterSurfaceSceneNode.cpp
        CMeshCache.cpp
-       CDefaultSceneNodeAnimatorFactory.cpp
        CDefaultSceneNodeFactory.cpp
 )
 
-add_library(IRRPARTICLEOBJ OBJECT
-       CParticleAnimatedMeshSceneNodeEmitter.cpp
-       CParticleBoxEmitter.cpp
-       CParticleCylinderEmitter.cpp
-       CParticleMeshEmitter.cpp
-       CParticlePointEmitter.cpp
-       CParticleRingEmitter.cpp
-       CParticleSphereEmitter.cpp
-       CParticleAttractionAffector.cpp
-       CParticleFadeOutAffector.cpp
-       CParticleGravityAffector.cpp
-       CParticleRotationAffector.cpp
-       CParticleSystemSceneNode.cpp
-       CParticleScaleAffector.cpp
-)
-
-add_library(IRRANIMOBJ OBJECT
-       CSceneNodeAnimatorCameraFPS.cpp
-       CSceneNodeAnimatorCameraMaya.cpp
-       CSceneNodeAnimatorCollisionResponse.cpp
-       CSceneNodeAnimatorDelete.cpp
-       CSceneNodeAnimatorFlyCircle.cpp
-       CSceneNodeAnimatorFlyStraight.cpp
-       CSceneNodeAnimatorFollowSpline.cpp
-       CSceneNodeAnimatorRotation.cpp
-       CSceneNodeAnimatorTexture.cpp
-)
-
 set(IRRDRVROBJ
        CNullDriver.cpp
        COpenGLCacheHandler.cpp
        COpenGLDriver.cpp
-       COpenGLNormalMapRenderer.cpp
-       COpenGLParallaxMapRenderer.cpp
        COpenGLShaderMaterialRenderer.cpp
        COpenGLSLMaterialRenderer.cpp
        COpenGLExtensionHandler.cpp
-       CD3D9Driver.cpp
-       CD3D9HLSLMaterialRenderer.cpp
-       CD3D9NormalMapRenderer.cpp
-       CD3D9ParallaxMapRenderer.cpp
-       CD3D9ShaderMaterialRenderer.cpp
-       CD3D9Texture.cpp
        COGLESDriver.cpp
        COGLESExtensionHandler.cpp
        COGLES2Driver.cpp
        COGLES2ExtensionHandler.cpp
        COGLES2FixedPipelineRenderer.cpp
        COGLES2MaterialRenderer.cpp
-       COGLES2NormalMapRenderer.cpp
-       COGLES2ParallaxMapRenderer.cpp
        COGLES2Renderer2D.cpp
        CWebGL1Driver.cpp
        CGLXManager.cpp
        CWGLManager.cpp
        CEGLManager.cpp
+       mt_opengl_loader.cpp
 )
 
 set(IRRIMAGEOBJ
        CColorConverter.cpp
        CImage.cpp
        CImageLoaderBMP.cpp
-       CImageLoaderDDS.cpp
        CImageLoaderJPG.cpp
-       CImageLoaderPCX.cpp
        CImageLoaderPNG.cpp
-       CImageLoaderPSD.cpp
-       CImageLoaderPVR.cpp
        CImageLoaderTGA.cpp
-       CImageLoaderPPM.cpp
-       CImageLoaderWAL.cpp
-       CImageLoaderRGB.cpp
-       CImageWriterBMP.cpp
        CImageWriterJPG.cpp
-       CImageWriterPCX.cpp
        CImageWriterPNG.cpp
-       CImageWriterPPM.cpp
-       CImageWriterPSD.cpp
-       CImageWriterTGA.cpp
 )
 
 add_library(IRRVIDEOOBJ OBJECT
@@ -267,50 +206,6 @@ add_library(IRRVIDEOOBJ OBJECT
        ${IRRIMAGEOBJ}
 )
 
-add_library(IRRSWRENDEROBJ OBJECT
-       CSoftwareDriver.cpp
-       CSoftwareTexture.cpp
-       CTRFlat.cpp
-       CTRFlatWire.cpp
-       CTRGouraud.cpp
-       CTRGouraudWire.cpp
-       CTRNormalMap.cpp
-       CTRStencilShadow.cpp
-       CTRTextureFlat.cpp
-       CTRTextureFlatWire.cpp
-       CTRTextureGouraud.cpp
-       CTRTextureGouraudAdd.cpp
-       CTRTextureGouraudNoZ.cpp
-       CTRTextureGouraudWire.cpp
-       CZBuffer.cpp
-       CTRTextureGouraudVertexAlpha2.cpp
-       CTRTextureGouraudNoZ2.cpp
-       CTRTextureLightMap2_M2.cpp
-       CTRTextureLightMap2_M4.cpp
-       CTRTextureLightMap2_M1.cpp
-       CSoftwareDriver2.cpp
-       CSoftwareTexture2.cpp
-       CTRTextureGouraud2.cpp
-       CTRGouraud2.cpp
-       CTRGouraudAlpha2.cpp
-       CTRGouraudAlphaNoZ2.cpp
-       CTRTextureDetailMap2.cpp
-       CTRTextureGouraudAdd2.cpp
-       CTRTextureGouraudAddNoZ2.cpp
-       CTRTextureWire2.cpp
-       CTRTextureLightMap2_Add.cpp
-       CTRTextureLightMapGouraud2_M4.cpp
-       IBurningShader.cpp
-       CTRTextureBlend.cpp
-       CTRTextureGouraudAlpha.cpp
-       CTRTextureGouraudAlphaNoZ.cpp
-       CDepthBuffer.cpp
-       CBurningShader_Raster_Reference.cpp
-       CTR_transparent_reflection_2_layer.cpp
-       CTRGouraudNoZ2.cpp
-       burning_shader_color.cpp
-)
-
 add_library(IRRIOOBJ OBJECT
        CFileList.cpp
        CFileSystem.cpp
@@ -318,11 +213,7 @@ add_library(IRRIOOBJ OBJECT
        CMemoryFile.cpp
        CReadFile.cpp
        CWriteFile.cpp
-       CWADReader.cpp
        CZipReader.cpp
-       CPakReader.cpp
-       CNPKReader.cpp
-       CTarReader.cpp
        CMountPointReader.cpp
        CAttributes.cpp
 )
@@ -340,7 +231,6 @@ add_library(IRROTHEROBJ OBJECT
        os.cpp
        leakHunter.cpp
        CProfiler.cpp
-       utf8.cpp
 )
 
 if(ANDROID)
@@ -395,7 +285,7 @@ add_library(IRRGUIOBJ OBJECT
 
 add_library(IrrlichtMt)
 foreach(object_lib
-       IRRMESHOBJ IRROBJ IRRPARTICLEOBJ IRRANIMOBJ IRRVIDEOOBJ IRRSWRENDEROBJ
+       IRRMESHOBJ IRROBJ IRRVIDEOOBJ
        IRRIOOBJ IRROTHEROBJ IRRGUIOBJ)
        # Set include directories for object library compilation
        target_include_directories(${object_lib} PRIVATE ${link_includes})