1 add_definitions(-DIRRLICHT_EXPORTS=1)
2 if(CMAKE_BUILD_TYPE STREQUAL "Debug")
3 add_definitions(-D_DEBUG)
5 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
9 if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang|AppleClang)$")
10 set(CMAKE_CXX_FLAGS_RELEASE "-O3")
11 set(CMAKE_CXX_FLAGS_DEBUG "-g")
13 add_compile_options(-Wall -pipe -fno-exceptions -fno-rtti)
15 string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " msvcrt.lib") # ???? fuck off
17 add_compile_options(/GR- /Zl)
22 find_package(ZLIB REQUIRED)
23 find_package(JPEG REQUIRED)
24 find_package(PNG REQUIRED)
26 # To configure the features available in this Irrlicht build please edit
27 # include/IrrCompileConfig.h and re-run CMake from a clean state
28 include(CheckSymbolExists)
29 set(CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/include)
30 unset(OGLES1_ENABLED CACHE)
31 unset(OGLES2_ENABLED CACHE)
32 unset(OGL_ENABLED CACHE)
34 check_symbol_exists(_IRR_COMPILE_WITH_OGLES1_ "IrrCompileConfig.h" OGLES1_ENABLED)
36 # only tested on Android, probably works on Linux (is this needed anywhere else?)
37 find_library(OPENGLES_LIBRARY NAMES GLESv1_CM REQUIRED)
38 find_library(EGL_LIBRARY NAMES EGL REQUIRED)
40 message(STATUS "Found OpenGLES: ${OPENGLES_LIBRARY}")
42 check_symbol_exists(_IRR_COMPILE_WITH_OGLES2_ "IrrCompileConfig.h" OGLES2_ENABLED)
44 find_package(OpenGLES2 REQUIRED)
46 check_symbol_exists(_IRR_COMPILE_WITH_OPENGL_ "IrrCompileConfig.h" OGL_ENABLED)
48 set(OpenGL_GL_PREFERENCE "LEGACY")
49 find_package(OpenGL REQUIRED)
52 # Platform-specific libs
56 add_library(native_app_glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
58 find_library(COCOA_LIB Cocoa REQUIRED)
59 find_library(IOKIT_LIB IOKit REQUIRED)
61 add_definitions(-DGL_SILENCE_DEPRECATION)
64 find_package(X11 REQUIRED)
67 # Includes for object libraries.
69 "${PROJECT_SOURCE_DIR}/include"
70 "${CMAKE_CURRENT_SOURCE_DIR}"
77 ${OPENGLES2_INCLUDE_DIR}
80 "$<$<PLATFORM_ID:Android>:${ANDROID_NDK}/sources/android/native_app_glue>"
84 # Libraries for object libraries.
92 ${OPENGLES2_LIBRARIES}
95 "$<$<PLATFORM_ID:Android>:native_app_glue -landroid -llog>"
98 "$<$<PLATFORM_ID:Windows>:gdi32>"
99 "$<$<PLATFORM_ID:Windows>:winmm>"
103 link_libraries(${link_libs})
108 CBSPMeshFileLoader.cpp
109 CMD2MeshFileLoader.cpp
110 CMD3MeshFileLoader.cpp
111 CMS3DMeshFileLoader.cpp
112 CB3DMeshFileLoader.cpp
113 C3DSMeshFileLoader.cpp
114 COgreMeshFileLoader.cpp
115 COBJMeshFileLoader.cpp
116 CColladaFileLoader.cpp
119 CLMTSMeshFileLoader.cpp
120 CMY3DMeshFileLoader.cpp
123 CIrrMeshFileLoader.cpp
124 CSTLMeshFileLoader.cpp
125 CLWOMeshFileLoader.cpp
126 CPLYMeshFileLoader.cpp
127 CSMFMeshFileLoader.cpp
128 CMeshTextureLoader.cpp
132 CColladaMeshWriter.cpp
140 add_library(IRRMESHOBJ OBJECT
144 CAnimatedMeshSceneNode.cpp
148 CQuake3ShaderSceneNode.cpp
149 CAnimatedMeshHalfLife.cpp
154 add_library(IRROBJ OBJECT
155 CBillboardSceneNode.cpp
157 CDummyTransformationSceneNode.cpp
162 CMetaTriangleSelector.cpp
164 COctreeTriangleSelector.cpp
165 CSceneCollisionManager.cpp
167 CShadowVolumeSceneNode.cpp
169 CSkyDomeSceneNode.cpp
170 CTerrainSceneNode.cpp
171 CTerrainTriangleSelector.cpp
172 CVolumeLightSceneNode.cpp
176 CTriangleBBSelector.cpp
177 CTriangleSelector.cpp
178 CWaterSurfaceSceneNode.cpp
180 CDefaultSceneNodeAnimatorFactory.cpp
181 CDefaultSceneNodeFactory.cpp
185 add_library(IRRPARTICLEOBJ OBJECT
186 CParticleAnimatedMeshSceneNodeEmitter.cpp
187 CParticleBoxEmitter.cpp
188 CParticleCylinderEmitter.cpp
189 CParticleMeshEmitter.cpp
190 CParticlePointEmitter.cpp
191 CParticleRingEmitter.cpp
192 CParticleSphereEmitter.cpp
193 CParticleAttractionAffector.cpp
194 CParticleFadeOutAffector.cpp
195 CParticleGravityAffector.cpp
196 CParticleRotationAffector.cpp
197 CParticleSystemSceneNode.cpp
198 CParticleScaleAffector.cpp
201 add_library(IRRANIMOBJ OBJECT
202 CSceneNodeAnimatorCameraFPS.cpp
203 CSceneNodeAnimatorCameraMaya.cpp
204 CSceneNodeAnimatorCollisionResponse.cpp
205 CSceneNodeAnimatorDelete.cpp
206 CSceneNodeAnimatorFlyCircle.cpp
207 CSceneNodeAnimatorFlyStraight.cpp
208 CSceneNodeAnimatorFollowSpline.cpp
209 CSceneNodeAnimatorRotation.cpp
210 CSceneNodeAnimatorTexture.cpp
215 COpenGLCacheHandler.cpp
217 COpenGLNormalMapRenderer.cpp
218 COpenGLParallaxMapRenderer.cpp
219 COpenGLShaderMaterialRenderer.cpp
220 COpenGLSLMaterialRenderer.cpp
221 COpenGLExtensionHandler.cpp
223 CD3D9HLSLMaterialRenderer.cpp
224 CD3D9NormalMapRenderer.cpp
225 CD3D9ParallaxMapRenderer.cpp
226 CD3D9ShaderMaterialRenderer.cpp
229 COGLESExtensionHandler.cpp
231 COGLES2ExtensionHandler.cpp
232 COGLES2FixedPipelineRenderer.cpp
233 COGLES2MaterialRenderer.cpp
234 COGLES2NormalMapRenderer.cpp
235 COGLES2ParallaxMapRenderer.cpp
236 COGLES2Renderer2D.cpp
266 add_library(IRRVIDEOOBJ OBJECT
273 add_library(IRRSWRENDEROBJ OBJECT
283 CTRTextureFlatWire.cpp
284 CTRTextureGouraud.cpp
285 CTRTextureGouraudAdd.cpp
286 CTRTextureGouraudNoZ.cpp
287 CTRTextureGouraudWire.cpp
289 CTRTextureGouraudVertexAlpha2.cpp
290 CTRTextureGouraudNoZ2.cpp
291 CTRTextureLightMap2_M2.cpp
292 CTRTextureLightMap2_M4.cpp
293 CTRTextureLightMap2_M1.cpp
295 CSoftwareTexture2.cpp
296 CTRTextureGouraud2.cpp
299 CTRGouraudAlphaNoZ2.cpp
300 CTRTextureDetailMap2.cpp
301 CTRTextureGouraudAdd2.cpp
302 CTRTextureGouraudAddNoZ2.cpp
304 CTRTextureLightMap2_Add.cpp
305 CTRTextureLightMapGouraud2_M4.cpp
308 CTRTextureGouraudAlpha.cpp
309 CTRTextureGouraudAlphaNoZ.cpp
311 CBurningShader_Raster_Reference.cpp
312 CTR_transparent_reflection_2_layer.cpp
314 burning_shader_color.cpp
317 add_library(IRRIOOBJ OBJECT
331 CMountPointReader.cpp
336 add_library(IRROTHEROBJ OBJECT
339 CIrrDeviceConsole.cpp
353 target_sources(IRROTHEROBJ PRIVATE
354 Android/CIrrDeviceAndroid.cpp
355 Android/CAndroidAssetReader.cpp
356 Android/CAndroidAssetFileArchive.cpp
357 Android/CKeyEventWrapper.cpp
360 # Build all IRROTHEROBJ sources as objc++, including the .cpp's
361 set_target_properties(IRROTHEROBJ PROPERTIES COMPILE_OPTIONS "-xobjective-c++")
362 target_sources(IRROTHEROBJ PRIVATE
368 add_library(IRRGUIOBJ OBJECT
375 CGUIFileOpenDialog.cpp
392 CGUIColorSelectDialog.cpp
393 CDefaultGUIElementFactory.cpp
402 option(BUILD_SHARED_LIBS "Build shared library" TRUE)
405 add_library(IrrlichtMt
406 $<TARGET_OBJECTS:IRRMESHOBJ>
407 $<TARGET_OBJECTS:IRROBJ>
408 $<TARGET_OBJECTS:IRRPARTICLEOBJ>
409 $<TARGET_OBJECTS:IRRANIMOBJ>
410 $<TARGET_OBJECTS:IRRVIDEOOBJ>
411 $<TARGET_OBJECTS:IRRSWRENDEROBJ>
412 $<TARGET_OBJECTS:IRRIOOBJ>
413 $<TARGET_OBJECTS:IRROTHEROBJ>
414 $<TARGET_OBJECTS:IRRGUIOBJ>
417 # Alias target provides add_submodule compatibility
418 add_library(IrrlichtMt::IrrlichtMt ALIAS IrrlichtMt)
420 target_include_directories(IrrlichtMt
422 "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/>"
423 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
424 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/irrlichtmt>"
426 "${ZLIB_INCLUDE_DIR}"
427 "${JPEG_INCLUDE_DIR}"
430 ${OPENGL_INCLUDE_DIR}
431 ${OPENGLES2_INCLUDE_DIR}
434 "$<$<PLATFORM_ID:Android>:${ANDROID_NDK}/sources/android/native_app_glue>"
438 target_link_libraries(IrrlichtMt PRIVATE ${link_libs})
440 set_target_properties(IrrlichtMt PROPERTIES
441 VERSION ${PROJECT_VERSION}
442 SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
446 set_target_properties(IrrlichtMt PROPERTIES PREFIX "") # for DLL name
449 # Installation of library
451 set(INSTALL_TARGETS IrrlichtMt native_app_glue)
453 set(INSTALL_TARGETS IrrlichtMt)
456 install(TARGETS ${INSTALL_TARGETS}
457 EXPORT IrrlichtMt-export
458 DESTINATION "${CMAKE_INSTALL_LIBDIR}"