2 ${CMAKE_SOURCE_DIR}/include
3 ${CMAKE_CURRENT_SOURCE_DIR}
5 add_definitions(-DIRRLICHT_EXPORTS=1)
6 if(CMAKE_BUILD_TYPE STREQUAL "Debug")
7 add_definitions(-D_DEBUG)
9 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
13 if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$")
14 set(CMAKE_CXX_FLAGS_RELEASE "-O3")
15 set(CMAKE_CXX_FLAGS_DEBUG "-g")
17 add_compile_options(-Wall -pipe -fno-exceptions -fno-rtti)
19 string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " msvcrt.lib") # ???? fuck off
21 add_compile_options(/GR- /Zl)
26 find_package(ZLIB REQUIRED)
27 find_package(JPEG REQUIRED)
28 find_package(PNG REQUIRED)
29 include_directories(${ZLIB_INCLUDE_DIR} ${JPEG_INCLUDE_DIR} ${PNG_INCLUDE_DIR})
30 link_libraries(${ZLIB_LIBRARY} ${JPEG_LIBRARY} ${PNG_LIBRARY})
32 # To configure the features available in this Irrlicht build please edit
33 # include/IrrCompileConfig.h and re-run CMake from a clean state
34 include(CheckSymbolExists)
35 set(CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/include)
36 unset(OGLES1_ENABLED CACHE)
37 unset(OGLES2_ENABLED CACHE)
38 unset(OGL_ENABLED CACHE)
40 check_symbol_exists(_IRR_COMPILE_WITH_OGLES1_ "IrrCompileConfig.h" OGLES1_ENABLED)
42 # only tested on Android, probably works on Linux (is this needed anywhere else?)
43 find_library(OPENGLES_LIBRARY NAMES GLESv1_CM REQUIRED)
44 find_library(EGL_LIBRARY NAMES EGL REQUIRED)
46 message(STATUS "Found OpenGLES: ${OPENGLES_LIBRARY}")
47 link_libraries(${OPENGLES_LIBRARY} ${EGL_LIBRARY})
49 check_symbol_exists(_IRR_COMPILE_WITH_OGLES2_ "IrrCompileConfig.h" OGLES2_ENABLED)
51 find_package(OpenGLES2 REQUIRED)
52 include_directories(${OPENGLES2_INCLUDE_DIR} ${EGL_INCLUDE_DIR})
53 link_libraries(${OPENGLES2_LIBRARIES})
55 check_symbol_exists(_IRR_COMPILE_WITH_OPENGL_ "IrrCompileConfig.h" OGL_ENABLED)
57 set(OpenGL_GL_PREFERENCE "LEGACY")
58 find_package(OpenGL REQUIRED)
59 include_directories(${OPENGL_INCLUDE_DIR})
60 link_libraries(${OPENGL_LIBRARIES})
63 # Platform-specific libs
67 add_library(native_app_glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
68 include_directories(${ANDROID_NDK}/sources/android/native_app_glue)
69 link_libraries(native_app_glue -landroid -llog)
71 find_library(COCOA_LIB Cocoa REQUIRED)
72 find_library(IOKIT_LIB IOKit REQUIRED)
73 link_libraries(${COCOA_LIB} ${IOKIT_LIB})
75 add_definitions(-DGL_SILENCE_DEPRECATION)
77 link_libraries(gdi32 winmm)
80 find_package(X11 REQUIRED)
81 include_directories(${X11_INCLUDE_DIR})
82 link_libraries(${X11_X11_LIB} ${X11_Xxf86vm_LIB})
88 CBSPMeshFileLoader.cpp
89 CMD2MeshFileLoader.cpp
90 CMD3MeshFileLoader.cpp
91 CMS3DMeshFileLoader.cpp
92 CB3DMeshFileLoader.cpp
93 C3DSMeshFileLoader.cpp
94 COgreMeshFileLoader.cpp
95 COBJMeshFileLoader.cpp
96 CColladaFileLoader.cpp
99 CLMTSMeshFileLoader.cpp
100 CMY3DMeshFileLoader.cpp
103 CIrrMeshFileLoader.cpp
104 CSTLMeshFileLoader.cpp
105 CLWOMeshFileLoader.cpp
106 CPLYMeshFileLoader.cpp
107 CSMFMeshFileLoader.cpp
108 CMeshTextureLoader.cpp
112 CColladaMeshWriter.cpp
120 add_library(IRRMESHOBJ OBJECT
124 CAnimatedMeshSceneNode.cpp
128 CQuake3ShaderSceneNode.cpp
129 CAnimatedMeshHalfLife.cpp
134 add_library(IRROBJ OBJECT
135 CBillboardSceneNode.cpp
137 CDummyTransformationSceneNode.cpp
142 CMetaTriangleSelector.cpp
144 COctreeTriangleSelector.cpp
145 CSceneCollisionManager.cpp
147 CShadowVolumeSceneNode.cpp
149 CSkyDomeSceneNode.cpp
150 CTerrainSceneNode.cpp
151 CTerrainTriangleSelector.cpp
152 CVolumeLightSceneNode.cpp
156 CTriangleBBSelector.cpp
157 CTriangleSelector.cpp
158 CWaterSurfaceSceneNode.cpp
160 CDefaultSceneNodeAnimatorFactory.cpp
161 CDefaultSceneNodeFactory.cpp
165 add_library(IRRPARTICLEOBJ OBJECT
166 CParticleAnimatedMeshSceneNodeEmitter.cpp
167 CParticleBoxEmitter.cpp
168 CParticleCylinderEmitter.cpp
169 CParticleMeshEmitter.cpp
170 CParticlePointEmitter.cpp
171 CParticleRingEmitter.cpp
172 CParticleSphereEmitter.cpp
173 CParticleAttractionAffector.cpp
174 CParticleFadeOutAffector.cpp
175 CParticleGravityAffector.cpp
176 CParticleRotationAffector.cpp
177 CParticleSystemSceneNode.cpp
178 CParticleScaleAffector.cpp
181 add_library(IRRANIMOBJ OBJECT
182 CSceneNodeAnimatorCameraFPS.cpp
183 CSceneNodeAnimatorCameraMaya.cpp
184 CSceneNodeAnimatorCollisionResponse.cpp
185 CSceneNodeAnimatorDelete.cpp
186 CSceneNodeAnimatorFlyCircle.cpp
187 CSceneNodeAnimatorFlyStraight.cpp
188 CSceneNodeAnimatorFollowSpline.cpp
189 CSceneNodeAnimatorRotation.cpp
190 CSceneNodeAnimatorTexture.cpp
195 COpenGLCacheHandler.cpp
197 COpenGLNormalMapRenderer.cpp
198 COpenGLParallaxMapRenderer.cpp
199 COpenGLShaderMaterialRenderer.cpp
200 COpenGLSLMaterialRenderer.cpp
201 COpenGLExtensionHandler.cpp
203 CD3D9HLSLMaterialRenderer.cpp
204 CD3D9NormalMapRenderer.cpp
205 CD3D9ParallaxMapRenderer.cpp
206 CD3D9ShaderMaterialRenderer.cpp
209 COGLESExtensionHandler.cpp
211 COGLES2ExtensionHandler.cpp
212 COGLES2FixedPipelineRenderer.cpp
213 COGLES2MaterialRenderer.cpp
214 COGLES2NormalMapRenderer.cpp
215 COGLES2ParallaxMapRenderer.cpp
216 COGLES2Renderer2D.cpp
246 add_library(IRRVIDEOOBJ OBJECT
253 add_library(IRRSWRENDEROBJ OBJECT
263 CTRTextureFlatWire.cpp
264 CTRTextureGouraud.cpp
265 CTRTextureGouraudAdd.cpp
266 CTRTextureGouraudNoZ.cpp
267 CTRTextureGouraudWire.cpp
269 CTRTextureGouraudVertexAlpha2.cpp
270 CTRTextureGouraudNoZ2.cpp
271 CTRTextureLightMap2_M2.cpp
272 CTRTextureLightMap2_M4.cpp
273 CTRTextureLightMap2_M1.cpp
275 CSoftwareTexture2.cpp
276 CTRTextureGouraud2.cpp
279 CTRGouraudAlphaNoZ2.cpp
280 CTRTextureDetailMap2.cpp
281 CTRTextureGouraudAdd2.cpp
282 CTRTextureGouraudAddNoZ2.cpp
284 CTRTextureLightMap2_Add.cpp
285 CTRTextureLightMapGouraud2_M4.cpp
288 CTRTextureGouraudAlpha.cpp
289 CTRTextureGouraudAlphaNoZ.cpp
291 CBurningShader_Raster_Reference.cpp
292 CTR_transparent_reflection_2_layer.cpp
294 burning_shader_color.cpp
297 add_library(IRRIOOBJ OBJECT
311 CMountPointReader.cpp
316 add_library(IRROTHEROBJ OBJECT
319 CIrrDeviceConsole.cpp
333 target_sources(IRROTHEROBJ PRIVATE
334 Android/CIrrDeviceAndroid.cpp
335 Android/CAndroidAssetReader.cpp
336 Android/CAndroidAssetFileArchive.cpp
337 Android/CKeyEventWrapper.cpp
340 # Build all IRROTHEROBJ sources as objc++, including the .cpp's
341 set_target_properties(IRROTHEROBJ PROPERTIES COMPILE_OPTIONS "-xobjective-c++")
342 target_sources(IRROTHEROBJ PRIVATE
348 add_library(IRRGUIOBJ OBJECT
355 CGUIFileOpenDialog.cpp
372 CGUIColorSelectDialog.cpp
373 CDefaultGUIElementFactory.cpp
382 option(BUILD_SHARED_LIBS "Build shared library" TRUE)
384 add_library(IrrlichtMt
385 $<TARGET_OBJECTS:IRRMESHOBJ>
386 $<TARGET_OBJECTS:IRROBJ>
387 $<TARGET_OBJECTS:IRRPARTICLEOBJ>
388 $<TARGET_OBJECTS:IRRANIMOBJ>
389 $<TARGET_OBJECTS:IRRVIDEOOBJ>
390 $<TARGET_OBJECTS:IRRSWRENDEROBJ>
391 $<TARGET_OBJECTS:IRRIOOBJ>
392 $<TARGET_OBJECTS:IRROTHEROBJ>
393 $<TARGET_OBJECTS:IRRGUIOBJ>
396 set_target_properties(IrrlichtMt PROPERTIES
397 VERSION ${PROJECT_VERSION}
398 SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
402 set_target_properties(IrrlichtMt PROPERTIES PREFIX "") # for DLL name