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
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)
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
"${ZLIB_INCLUDE_DIR}"
"${JPEG_INCLUDE_DIR}"
"${PNG_INCLUDE_DIR}"
+ "${SDL2_INCLUDE_DIRS}"
${OPENGL_INCLUDE_DIR}
${OPENGLES2_INCLUDE_DIR}
"${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}
# 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
CBoneSceneNode.cpp
CMeshSceneNode.cpp
CAnimatedMeshSceneNode.cpp
- CAnimatedMeshMD2.cpp
- CAnimatedMeshMD3.cpp
- CQ3LevelMesh.cpp
- CQuake3ShaderSceneNode.cpp
- CAnimatedMeshHalfLife.cpp
${IRRMESHLOADER}
- ${IRRMESHWRITER}
)
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
${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
CMemoryFile.cpp
CReadFile.cpp
CWriteFile.cpp
- CWADReader.cpp
CZipReader.cpp
- CPakReader.cpp
- CNPKReader.cpp
- CTarReader.cpp
CMountPointReader.cpp
CAttributes.cpp
)
os.cpp
leakHunter.cpp
CProfiler.cpp
- utf8.cpp
)
if(ANDROID)
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})