CMakeLists.txt 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. # Open Asset Import Library (assimp)
  2. # ----------------------------------------------------------------------
  3. #
  4. # Copyright (c) 2006-2017, assimp team
  5. # All rights reserved.
  6. #
  7. # Redistribution and use of this software in source and binary forms,
  8. # with or without modification, are permitted provided that the
  9. # following conditions are met:
  10. #
  11. # * Redistributions of source code must retain the above
  12. # copyright notice, this list of conditions and the
  13. # following disclaimer.
  14. #
  15. # * Redistributions in binary form must reproduce the above
  16. # copyright notice, this list of conditions and the
  17. # following disclaimer in the documentation and/or other
  18. # materials provided with the distribution.
  19. #
  20. # * Neither the name of the assimp team, nor the names of its
  21. # contributors may be used to endorse or promote products
  22. # derived from this software without specific prior
  23. # written permission of the assimp team.
  24. #
  25. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  26. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  27. # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  28. # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  29. # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  30. # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  31. # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  32. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  33. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  34. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  35. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  36. #
  37. #----------------------------------------------------------------------
  38. # Listing and grouping of all the source files.
  39. # 1) Set the file lists for each component
  40. # 2) Create a Source Group for each component, for IDE project orginization
  41. # 3) Add libassimp using the file lists (eliminates duplication of file names between
  42. # source groups and library command)
  43. #
  44. cmake_minimum_required( VERSION 2.6 )
  45. SET( HEADER_PATH ../include/assimp )
  46. SET( COMPILER_HEADERS
  47. ${HEADER_PATH}/Compiler/pushpack1.h
  48. ${HEADER_PATH}/Compiler/poppack1.h
  49. ${HEADER_PATH}/Compiler/pstdint.h
  50. )
  51. SOURCE_GROUP( Compiler FILES ${COMPILER_HEADERS})
  52. SET( PUBLIC_HEADERS
  53. ${HEADER_PATH}/anim.h
  54. ${HEADER_PATH}/ai_assert.h
  55. ${HEADER_PATH}/camera.h
  56. ${HEADER_PATH}/color4.h
  57. ${HEADER_PATH}/color4.inl
  58. ${CMAKE_CURRENT_BINARY_DIR}/../include/assimp/config.h
  59. ${HEADER_PATH}/defs.h
  60. ${HEADER_PATH}/Defines.h
  61. ${HEADER_PATH}/cfileio.h
  62. ${HEADER_PATH}/light.h
  63. ${HEADER_PATH}/material.h
  64. ${HEADER_PATH}/material.inl
  65. ${HEADER_PATH}/matrix3x3.h
  66. ${HEADER_PATH}/matrix3x3.inl
  67. ${HEADER_PATH}/matrix4x4.h
  68. ${HEADER_PATH}/matrix4x4.inl
  69. ${HEADER_PATH}/mesh.h
  70. ${HEADER_PATH}/postprocess.h
  71. ${HEADER_PATH}/quaternion.h
  72. ${HEADER_PATH}/quaternion.inl
  73. ${HEADER_PATH}/scene.h
  74. ${HEADER_PATH}/metadata.h
  75. ${HEADER_PATH}/texture.h
  76. ${HEADER_PATH}/types.h
  77. ${HEADER_PATH}/vector2.h
  78. ${HEADER_PATH}/vector2.inl
  79. ${HEADER_PATH}/vector3.h
  80. ${HEADER_PATH}/vector3.inl
  81. ${HEADER_PATH}/version.h
  82. ${HEADER_PATH}/cimport.h
  83. ${HEADER_PATH}/importerdesc.h
  84. ${HEADER_PATH}/Importer.hpp
  85. ${HEADER_PATH}/DefaultLogger.hpp
  86. ${HEADER_PATH}/ProgressHandler.hpp
  87. ${HEADER_PATH}/IOStream.hpp
  88. ${HEADER_PATH}/IOSystem.hpp
  89. ${HEADER_PATH}/Logger.hpp
  90. ${HEADER_PATH}/LogStream.hpp
  91. ${HEADER_PATH}/NullLogger.hpp
  92. ${HEADER_PATH}/cexport.h
  93. ${HEADER_PATH}/Exporter.hpp
  94. ${HEADER_PATH}/DefaultIOStream.h
  95. ${HEADER_PATH}/DefaultIOSystem.h
  96. ${HEADER_PATH}/SceneCombiner.h
  97. )
  98. SET( Core_SRCS
  99. Assimp.cpp
  100. )
  101. SET( Logging_SRCS
  102. ${HEADER_PATH}/DefaultLogger.hpp
  103. ${HEADER_PATH}/LogStream.hpp
  104. ${HEADER_PATH}/Logger.hpp
  105. ${HEADER_PATH}/NullLogger.hpp
  106. Win32DebugLogStream.h
  107. DefaultLogger.cpp
  108. FileLogStream.h
  109. StdOStreamLogStream.h
  110. )
  111. SOURCE_GROUP(Logging FILES ${Logging_SRCS})
  112. SET( Common_SRCS
  113. fast_atof.h
  114. qnan.h
  115. BaseImporter.cpp
  116. BaseImporter.h
  117. BaseProcess.cpp
  118. BaseProcess.h
  119. Importer.h
  120. ScenePrivate.h
  121. PostStepRegistry.cpp
  122. ImporterRegistry.cpp
  123. ByteSwapper.h
  124. DefaultProgressHandler.h
  125. DefaultIOStream.cpp
  126. DefaultIOSystem.cpp
  127. CInterfaceIOWrapper.cpp
  128. CInterfaceIOWrapper.h
  129. Hash.h
  130. Importer.cpp
  131. IFF.h
  132. MemoryIOWrapper.h
  133. ParsingUtils.h
  134. StreamReader.h
  135. StreamWriter.h
  136. StringComparison.h
  137. StringUtils.h
  138. SGSpatialSort.cpp
  139. SGSpatialSort.h
  140. VertexTriangleAdjacency.cpp
  141. VertexTriangleAdjacency.h
  142. GenericProperty.h
  143. SpatialSort.cpp
  144. SpatialSort.h
  145. SceneCombiner.cpp
  146. ScenePreprocessor.cpp
  147. ScenePreprocessor.h
  148. SkeletonMeshBuilder.cpp
  149. SkeletonMeshBuilder.h
  150. SplitByBoneCountProcess.cpp
  151. SplitByBoneCountProcess.h
  152. ScaleProcess.cpp
  153. ScaleProcess.h
  154. SmoothingGroups.h
  155. StandardShapes.cpp
  156. StandardShapes.h
  157. TargetAnimation.cpp
  158. TargetAnimation.h
  159. RemoveComments.cpp
  160. RemoveComments.h
  161. Subdivision.cpp
  162. Subdivision.h
  163. scene.cpp
  164. Vertex.h
  165. LineSplitter.h
  166. TinyFormatter.h
  167. Profiler.h
  168. LogAux.h
  169. Bitmap.cpp
  170. Bitmap.h
  171. XMLTools.h
  172. Version.cpp
  173. IOStreamBuffer.h
  174. CreateAnimMesh.h
  175. CreateAnimMesh.cpp
  176. )
  177. SOURCE_GROUP(Common FILES ${Common_SRCS})
  178. IF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER )
  179. SET( C4D_SRCS
  180. C4DImporter.cpp
  181. C4DImporter.h
  182. )
  183. SOURCE_GROUP( C4D FILES ${C4D_SRCS})
  184. ENDIF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER )
  185. # if this variable is set to TRUE, the user can manually disable importers by setting
  186. # ASSIMP_BUILD_XXX_IMPORTER to FALSE for each importer
  187. # if this variable is set to FALSE, the user can manually enable importers by setting
  188. # ASSIMP_BUILD_XXX_IMPORTER to TRUE for each importer
  189. OPTION(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_IMPORTER value" TRUE)
  190. # macro to add the CMake Option ADD_ASSIMP_IMPORTER_<name> which enables compile of loader
  191. # this way selective loaders can be compiled (reduces filesize + compile time)
  192. MACRO(ADD_ASSIMP_IMPORTER name)
  193. OPTION(ASSIMP_BUILD_${name}_IMPORTER "build the ${name} importer" ${ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT})
  194. IF(ASSIMP_BUILD_${name}_IMPORTER)
  195. LIST(APPEND ASSIMP_LOADER_SRCS ${ARGN})
  196. SET(ASSIMP_IMPORTERS_ENABLED "${ASSIMP_IMPORTERS_ENABLED} ${name}")
  197. SET(${name}_SRCS ${ARGN})
  198. SOURCE_GROUP(${name} FILES ${ARGN})
  199. ELSE()
  200. SET(${name}_SRC "")
  201. SET(ASSIMP_IMPORTERS_DISABLED "${ASSIMP_IMPORTERS_DISABLED} ${name}")
  202. add_definitions(-DASSIMP_BUILD_NO_${name}_IMPORTER)
  203. add_definitions(-DASSIMP_BUILD_NO_${name}_EXPORTER)
  204. ENDIF()
  205. ENDMACRO()
  206. SET(ASSIMP_LOADER_SRCS "")
  207. SET(ASSIMP_IMPORTERS_ENABLED "") # list of enabled importers
  208. SET(ASSIMP_IMPORTERS_DISABLED "") # disabled list (used to print)
  209. ADD_ASSIMP_IMPORTER( AMF
  210. AMFImporter.hpp
  211. AMFImporter_Macro.hpp
  212. AMFImporter_Node.hpp
  213. AMFImporter.cpp
  214. AMFImporter_Geometry.cpp
  215. AMFImporter_Material.cpp
  216. AMFImporter_Postprocess.cpp
  217. )
  218. ADD_ASSIMP_IMPORTER( 3DS
  219. 3DSConverter.cpp
  220. 3DSHelper.h
  221. 3DSLoader.cpp
  222. 3DSLoader.h
  223. 3DSExporter.h
  224. 3DSExporter.cpp
  225. )
  226. ADD_ASSIMP_IMPORTER( AC
  227. ACLoader.cpp
  228. ACLoader.h
  229. )
  230. ADD_ASSIMP_IMPORTER( ASE
  231. ASELoader.cpp
  232. ASELoader.h
  233. ASEParser.cpp
  234. ASEParser.h
  235. )
  236. ADD_ASSIMP_IMPORTER( ASSBIN
  237. AssbinExporter.h
  238. AssbinExporter.cpp
  239. AssbinLoader.h
  240. AssbinLoader.cpp
  241. )
  242. ADD_ASSIMP_IMPORTER( ASSXML
  243. AssxmlExporter.h
  244. AssxmlExporter.cpp
  245. )
  246. ADD_ASSIMP_IMPORTER( B3D
  247. B3DImporter.cpp
  248. B3DImporter.h
  249. )
  250. ADD_ASSIMP_IMPORTER( BVH
  251. BVHLoader.cpp
  252. BVHLoader.h
  253. )
  254. ADD_ASSIMP_IMPORTER( COLLADA
  255. ColladaHelper.h
  256. ColladaLoader.cpp
  257. ColladaLoader.h
  258. ColladaParser.cpp
  259. ColladaParser.h
  260. ColladaExporter.h
  261. ColladaExporter.cpp
  262. )
  263. ADD_ASSIMP_IMPORTER( DXF
  264. DXFLoader.cpp
  265. DXFLoader.h
  266. DXFHelper.h
  267. )
  268. ADD_ASSIMP_IMPORTER( CSM
  269. CSMLoader.cpp
  270. CSMLoader.h
  271. )
  272. ADD_ASSIMP_IMPORTER( HMP
  273. HMPFileData.h
  274. HMPLoader.cpp
  275. HMPLoader.h
  276. HalfLifeFileData.h
  277. )
  278. ADD_ASSIMP_IMPORTER( IRRMESH
  279. IRRMeshLoader.cpp
  280. IRRMeshLoader.h
  281. IRRShared.cpp
  282. IRRShared.h
  283. )
  284. ADD_ASSIMP_IMPORTER( IRR
  285. IRRLoader.cpp
  286. IRRLoader.h
  287. IRRShared.cpp
  288. IRRShared.h
  289. )
  290. ADD_ASSIMP_IMPORTER( LWO
  291. LWOAnimation.cpp
  292. LWOAnimation.h
  293. LWOBLoader.cpp
  294. LWOFileData.h
  295. LWOLoader.cpp
  296. LWOLoader.h
  297. LWOMaterial.cpp
  298. )
  299. ADD_ASSIMP_IMPORTER( LWS
  300. LWSLoader.cpp
  301. LWSLoader.h
  302. )
  303. ADD_ASSIMP_IMPORTER( MD2
  304. MD2FileData.h
  305. MD2Loader.cpp
  306. MD2Loader.h
  307. MD2NormalTable.h
  308. )
  309. ADD_ASSIMP_IMPORTER( MD3
  310. MD3FileData.h
  311. MD3Loader.cpp
  312. MD3Loader.h
  313. )
  314. ADD_ASSIMP_IMPORTER( MD5
  315. MD5Loader.cpp
  316. MD5Loader.h
  317. MD5Parser.cpp
  318. MD5Parser.h
  319. )
  320. ADD_ASSIMP_IMPORTER( MDC
  321. MDCFileData.h
  322. MDCLoader.cpp
  323. MDCLoader.h
  324. MDCNormalTable.h
  325. )
  326. ADD_ASSIMP_IMPORTER( MDL
  327. MDLDefaultColorMap.h
  328. MDLFileData.h
  329. MDLLoader.cpp
  330. MDLLoader.h
  331. MDLMaterialLoader.cpp
  332. )
  333. SET( MaterialSystem_SRCS
  334. MaterialSystem.cpp
  335. MaterialSystem.h
  336. )
  337. SOURCE_GROUP( MaterialSystem FILES ${MaterialSystem_SRCS})
  338. ADD_ASSIMP_IMPORTER( NFF
  339. NFFLoader.cpp
  340. NFFLoader.h
  341. )
  342. ADD_ASSIMP_IMPORTER( NDO
  343. NDOLoader.cpp
  344. NDOLoader.h
  345. )
  346. ADD_ASSIMP_IMPORTER( OFF
  347. OFFLoader.cpp
  348. OFFLoader.h
  349. )
  350. ADD_ASSIMP_IMPORTER( OBJ
  351. ObjFileData.h
  352. ObjFileImporter.cpp
  353. ObjFileImporter.h
  354. ObjFileMtlImporter.cpp
  355. ObjFileMtlImporter.h
  356. ObjFileParser.cpp
  357. ObjFileParser.h
  358. ObjTools.h
  359. ObjExporter.h
  360. ObjExporter.cpp
  361. )
  362. ADD_ASSIMP_IMPORTER( OGRE
  363. OgreImporter.h
  364. OgreStructs.h
  365. OgreParsingUtils.h
  366. OgreBinarySerializer.h
  367. OgreXmlSerializer.h
  368. OgreImporter.cpp
  369. OgreStructs.cpp
  370. OgreBinarySerializer.cpp
  371. OgreXmlSerializer.cpp
  372. OgreMaterial.cpp
  373. )
  374. ADD_ASSIMP_IMPORTER( OPENGEX
  375. OpenGEXExporter.cpp
  376. OpenGEXExporter.h
  377. OpenGEXImporter.cpp
  378. OpenGEXImporter.h
  379. OpenGEXStructs.h
  380. )
  381. ADD_ASSIMP_IMPORTER( PLY
  382. PlyLoader.cpp
  383. PlyLoader.h
  384. PlyParser.cpp
  385. PlyParser.h
  386. PlyExporter.cpp
  387. PlyExporter.h
  388. )
  389. ADD_ASSIMP_IMPORTER( MS3D
  390. MS3DLoader.cpp
  391. MS3DLoader.h
  392. )
  393. ADD_ASSIMP_IMPORTER( COB
  394. COBLoader.cpp
  395. COBLoader.h
  396. COBScene.h
  397. )
  398. ADD_ASSIMP_IMPORTER( BLEND
  399. BlenderLoader.cpp
  400. BlenderLoader.h
  401. BlenderDNA.cpp
  402. BlenderDNA.h
  403. BlenderDNA.inl
  404. BlenderScene.cpp
  405. BlenderScene.h
  406. BlenderSceneGen.h
  407. BlenderIntermediate.h
  408. BlenderModifier.h
  409. BlenderModifier.cpp
  410. BlenderBMesh.h
  411. BlenderBMesh.cpp
  412. BlenderTessellator.h
  413. BlenderTessellator.cpp
  414. )
  415. ADD_ASSIMP_IMPORTER( IFC
  416. IFCLoader.cpp
  417. IFCLoader.h
  418. IFCReaderGen1.cpp
  419. IFCReaderGen2.cpp
  420. IFCReaderGen.h
  421. IFCUtil.h
  422. IFCUtil.cpp
  423. IFCGeometry.cpp
  424. IFCMaterial.cpp
  425. IFCProfile.cpp
  426. IFCCurve.cpp
  427. IFCBoolean.cpp
  428. IFCOpenings.cpp
  429. STEPFile.h
  430. STEPFileReader.h
  431. STEPFileReader.cpp
  432. STEPFileEncoding.cpp
  433. STEPFileEncoding.h
  434. )
  435. if (ASSIMP_BUILD_IFC_IMPORTER)
  436. if (MSVC)
  437. set_source_files_properties(IFCReaderGen1.cpp IFCReaderGen2.cpp PROPERTIES COMPILE_FLAGS "/bigobj")
  438. elseif(CMAKE_COMPILER_IS_MINGW)
  439. set_source_files_properties(IFCReaderGen1.cpp IFCReaderGen2.cpp PROPERTIES COMPILE_FLAGS "-O2 -Wa,-mbig-obj")
  440. endif()
  441. endif (ASSIMP_BUILD_IFC_IMPORTER)
  442. ADD_ASSIMP_IMPORTER( XGL
  443. XGLLoader.cpp
  444. XGLLoader.h
  445. )
  446. ADD_ASSIMP_IMPORTER( FBX
  447. FBXImporter.cpp
  448. FBXCompileConfig.h
  449. FBXImporter.h
  450. FBXParser.cpp
  451. FBXParser.h
  452. FBXTokenizer.cpp
  453. FBXTokenizer.h
  454. FBXImportSettings.h
  455. FBXConverter.h
  456. FBXConverter.cpp
  457. FBXUtil.h
  458. FBXUtil.cpp
  459. FBXDocument.h
  460. FBXDocument.cpp
  461. FBXProperties.h
  462. FBXProperties.cpp
  463. FBXMeshGeometry.h
  464. FBXMeshGeometry.cpp
  465. FBXMaterial.cpp
  466. FBXModel.cpp
  467. FBXAnimation.cpp
  468. FBXNodeAttribute.cpp
  469. FBXDeformer.cpp
  470. FBXBinaryTokenizer.cpp
  471. FBXDocumentUtil.cpp
  472. )
  473. SET( PostProcessing_SRCS
  474. CalcTangentsProcess.cpp
  475. CalcTangentsProcess.h
  476. ComputeUVMappingProcess.cpp
  477. ComputeUVMappingProcess.h
  478. ConvertToLHProcess.cpp
  479. ConvertToLHProcess.h
  480. FindDegenerates.cpp
  481. FindDegenerates.h
  482. FindInstancesProcess.cpp
  483. FindInstancesProcess.h
  484. FindInvalidDataProcess.cpp
  485. FindInvalidDataProcess.h
  486. FixNormalsStep.cpp
  487. FixNormalsStep.h
  488. GenFaceNormalsProcess.cpp
  489. GenFaceNormalsProcess.h
  490. GenVertexNormalsProcess.cpp
  491. GenVertexNormalsProcess.h
  492. PretransformVertices.cpp
  493. PretransformVertices.h
  494. ImproveCacheLocality.cpp
  495. ImproveCacheLocality.h
  496. JoinVerticesProcess.cpp
  497. JoinVerticesProcess.h
  498. LimitBoneWeightsProcess.cpp
  499. LimitBoneWeightsProcess.h
  500. RemoveRedundantMaterials.cpp
  501. RemoveRedundantMaterials.h
  502. RemoveVCProcess.cpp
  503. RemoveVCProcess.h
  504. SortByPTypeProcess.cpp
  505. SortByPTypeProcess.h
  506. SplitLargeMeshes.cpp
  507. SplitLargeMeshes.h
  508. TextureTransform.cpp
  509. TextureTransform.h
  510. TriangulateProcess.cpp
  511. TriangulateProcess.h
  512. ValidateDataStructure.cpp
  513. ValidateDataStructure.h
  514. OptimizeGraph.cpp
  515. OptimizeGraph.h
  516. OptimizeMeshes.cpp
  517. OptimizeMeshes.h
  518. DeboneProcess.cpp
  519. DeboneProcess.h
  520. ProcessHelper.h
  521. ProcessHelper.cpp
  522. PolyTools.h
  523. MakeVerboseFormat.cpp
  524. MakeVerboseFormat.h
  525. )
  526. SOURCE_GROUP( PostProcessing FILES ${PostProcessing_SRCS})
  527. SET( IrrXML_SRCS irrXMLWrapper.h )
  528. SOURCE_GROUP( IrrXML FILES ${IrrXML_SRCS})
  529. ADD_ASSIMP_IMPORTER( Q3D
  530. Q3DLoader.cpp
  531. Q3DLoader.h
  532. )
  533. ADD_ASSIMP_IMPORTER( Q3BSP
  534. Q3BSPFileData.h
  535. Q3BSPFileParser.h
  536. Q3BSPFileParser.cpp
  537. Q3BSPFileImporter.h
  538. Q3BSPFileImporter.cpp
  539. Q3BSPZipArchive.h
  540. Q3BSPZipArchive.cpp
  541. )
  542. ADD_ASSIMP_IMPORTER( RAW
  543. RawLoader.cpp
  544. RawLoader.h
  545. )
  546. ADD_ASSIMP_IMPORTER( SIB
  547. SIBImporter.cpp
  548. SIBImporter.h
  549. )
  550. ADD_ASSIMP_IMPORTER( SMD
  551. SMDLoader.cpp
  552. SMDLoader.h
  553. )
  554. ADD_ASSIMP_IMPORTER( STL
  555. STLLoader.cpp
  556. STLLoader.h
  557. STLExporter.h
  558. STLExporter.cpp
  559. )
  560. ADD_ASSIMP_IMPORTER( TERRAGEN
  561. TerragenLoader.cpp
  562. TerragenLoader.h
  563. )
  564. ADD_ASSIMP_IMPORTER( 3D
  565. UnrealLoader.cpp
  566. UnrealLoader.h
  567. )
  568. ADD_ASSIMP_IMPORTER( X
  569. XFileHelper.h
  570. XFileImporter.cpp
  571. XFileImporter.h
  572. XFileParser.cpp
  573. XFileParser.h
  574. XFileExporter.h
  575. XFileExporter.cpp
  576. )
  577. ADD_ASSIMP_IMPORTER(X3D
  578. X3DExporter.cpp
  579. X3DExporter.hpp
  580. X3DImporter.cpp
  581. X3DImporter.hpp
  582. X3DImporter_Geometry2D.cpp
  583. X3DImporter_Geometry3D.cpp
  584. X3DImporter_Group.cpp
  585. X3DImporter_Light.cpp
  586. X3DImporter_Macro.hpp
  587. X3DImporter_Metadata.cpp
  588. X3DImporter_Networking.cpp
  589. X3DImporter_Node.hpp
  590. X3DImporter_Postprocess.cpp
  591. X3DImporter_Rendering.cpp
  592. X3DImporter_Shape.cpp
  593. X3DImporter_Texturing.cpp
  594. FIReader.hpp
  595. FIReader.cpp
  596. X3DVocabulary.cpp
  597. )
  598. ADD_ASSIMP_IMPORTER( GLTF
  599. glTFAsset.h
  600. glTFAsset.inl
  601. glTFAssetWriter.h
  602. glTFAssetWriter.inl
  603. glTFImporter.cpp
  604. glTFImporter.h
  605. glTFExporter.h
  606. glTFExporter.cpp
  607. glTF2Asset.h
  608. glTF2Asset.inl
  609. glTF2AssetWriter.h
  610. glTF2AssetWriter.inl
  611. glTF2Importer.cpp
  612. glTF2Importer.h
  613. glTF2Exporter.h
  614. glTF2Exporter.cpp
  615. )
  616. ADD_ASSIMP_IMPORTER( 3MF
  617. D3MFImporter.h
  618. D3MFImporter.cpp
  619. D3MFExporter.h
  620. D3MFExporter.cpp
  621. D3MFOpcPackage.h
  622. D3MFOpcPackage.cpp
  623. 3MFXmlTags.h
  624. )
  625. ADD_ASSIMP_IMPORTER( MMD
  626. MMDCpp14.h
  627. MMDImporter.cpp
  628. MMDImporter.h
  629. MMDPmdParser.h
  630. MMDPmxParser.h
  631. MMDPmxParser.cpp
  632. MMDVmdParser.h
  633. )
  634. SET( Step_SRCS
  635. StepExporter.h
  636. StepExporter.cpp
  637. )
  638. SOURCE_GROUP( Step FILES ${Step_SRCS})
  639. SET( Exporter_SRCS
  640. Exporter.cpp
  641. AssimpCExport.cpp
  642. BlobIOSystem.h
  643. )
  644. SOURCE_GROUP( Exporter FILES ${Exporter_SRCS})
  645. SET( Extra_SRCS
  646. MD4FileData.h
  647. )
  648. SOURCE_GROUP( Extra FILES ${Extra_SRCS})
  649. SET( Clipper_SRCS
  650. ../contrib/clipper/clipper.hpp
  651. ../contrib/clipper/clipper.cpp
  652. )
  653. SOURCE_GROUP( Clipper FILES ${Clipper_SRCS})
  654. SET( Poly2Tri_SRCS
  655. ../contrib/poly2tri/poly2tri/common/shapes.cc
  656. ../contrib/poly2tri/poly2tri/common/shapes.h
  657. ../contrib/poly2tri/poly2tri/common/utils.h
  658. ../contrib/poly2tri/poly2tri/sweep/advancing_front.h
  659. ../contrib/poly2tri/poly2tri/sweep/advancing_front.cc
  660. ../contrib/poly2tri/poly2tri/sweep/cdt.cc
  661. ../contrib/poly2tri/poly2tri/sweep/cdt.h
  662. ../contrib/poly2tri/poly2tri/sweep/sweep.cc
  663. ../contrib/poly2tri/poly2tri/sweep/sweep.h
  664. ../contrib/poly2tri/poly2tri/sweep/sweep_context.cc
  665. ../contrib/poly2tri/poly2tri/sweep/sweep_context.h
  666. )
  667. SOURCE_GROUP( Poly2Tri FILES ${Poly2Tri_SRCS})
  668. SET( unzip_SRCS
  669. ../contrib/unzip/crypt.h
  670. ../contrib/unzip/ioapi.c
  671. ../contrib/unzip/ioapi.h
  672. ../contrib/unzip/unzip.c
  673. ../contrib/unzip/unzip.h
  674. )
  675. SOURCE_GROUP( unzip FILES ${unzip_SRCS})
  676. SET( ziplib_SRCS
  677. ../contrib/zip/src/miniz.h
  678. ../contrib/zip/src/zip.c
  679. ../contrib/zip/src/zip.h
  680. )
  681. SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} )
  682. SET ( openddl_parser_SRCS
  683. ../contrib/openddlparser/code/OpenDDLParser.cpp
  684. ../contrib/openddlparser/code/DDLNode.cpp
  685. ../contrib/openddlparser/code/OpenDDLCommon.cpp
  686. ../contrib/openddlparser/code/OpenDDLExport.cpp
  687. ../contrib/openddlparser/code/Value.cpp
  688. ../contrib/openddlparser/code/OpenDDLStream.cpp
  689. ../contrib/openddlparser/include/openddlparser/OpenDDLParser.h
  690. ../contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h
  691. ../contrib/openddlparser/include/openddlparser/OpenDDLCommon.h
  692. ../contrib/openddlparser/include/openddlparser/OpenDDLExport.h
  693. ../contrib/openddlparser/include/openddlparser/OpenDDLStream.h
  694. ../contrib/openddlparser/include/openddlparser/DDLNode.h
  695. ../contrib/openddlparser/include/openddlparser/Value.h
  696. )
  697. SOURCE_GROUP( openddl_parser FILES ${openddl_parser_SRCS})
  698. SET ( open3dgc_SRCS
  699. ../contrib/Open3DGC/o3dgcAdjacencyInfo.h
  700. ../contrib/Open3DGC/o3dgcArithmeticCodec.cpp
  701. ../contrib/Open3DGC/o3dgcArithmeticCodec.h
  702. ../contrib/Open3DGC/o3dgcBinaryStream.h
  703. ../contrib/Open3DGC/o3dgcCommon.h
  704. ../contrib/Open3DGC/o3dgcDVEncodeParams.h
  705. ../contrib/Open3DGC/o3dgcDynamicVectorDecoder.cpp
  706. ../contrib/Open3DGC/o3dgcDynamicVectorDecoder.h
  707. ../contrib/Open3DGC/o3dgcDynamicVectorEncoder.cpp
  708. ../contrib/Open3DGC/o3dgcDynamicVectorEncoder.h
  709. ../contrib/Open3DGC/o3dgcDynamicVector.h
  710. ../contrib/Open3DGC/o3dgcFIFO.h
  711. ../contrib/Open3DGC/o3dgcIndexedFaceSet.h
  712. ../contrib/Open3DGC/o3dgcIndexedFaceSet.inl
  713. ../contrib/Open3DGC/o3dgcSC3DMCDecoder.h
  714. ../contrib/Open3DGC/o3dgcSC3DMCDecoder.inl
  715. ../contrib/Open3DGC/o3dgcSC3DMCEncodeParams.h
  716. ../contrib/Open3DGC/o3dgcSC3DMCEncoder.h
  717. ../contrib/Open3DGC/o3dgcSC3DMCEncoder.inl
  718. ../contrib/Open3DGC/o3dgcTimer.h
  719. ../contrib/Open3DGC/o3dgcTools.cpp
  720. ../contrib/Open3DGC/o3dgcTriangleFans.cpp
  721. ../contrib/Open3DGC/o3dgcTriangleFans.h
  722. ../contrib/Open3DGC/o3dgcTriangleListDecoder.h
  723. ../contrib/Open3DGC/o3dgcTriangleListDecoder.inl
  724. ../contrib/Open3DGC/o3dgcTriangleListEncoder.h
  725. ../contrib/Open3DGC/o3dgcTriangleListEncoder.inl
  726. ../contrib/Open3DGC/o3dgcVector.h
  727. ../contrib/Open3DGC/o3dgcVector.inl
  728. )
  729. SOURCE_GROUP( open3dgc FILES ${open3dgc_SRCS})
  730. # Check dependencies for glTF importer with Open3DGC-compression.
  731. # RT-extensions is used in "contrib/Open3DGC/o3dgcTimer.h" for collecting statistics. Pointed file
  732. # has implementation for different platforms: WIN32, __MACH__ and other ("else" block).
  733. FIND_PACKAGE(RT QUIET)
  734. IF (RT_FOUND OR MSVC)
  735. SET( ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC 1 )
  736. ADD_DEFINITIONS( -DASSIMP_IMPORTER_GLTF_USE_OPEN3DGC=1 )
  737. ELSE ()
  738. SET (open3dgc_SRCS "")
  739. MESSAGE (INFO " RT-extension not found. glTF import/export will be built without Open3DGC-compression.")
  740. #!TODO: off course is better to remove statistics timers from o3dgc codec. Or propose to choose what to use.
  741. ENDIF ()
  742. INCLUDE_DIRECTORIES( "../contrib/rapidjson/include" )
  743. INCLUDE_DIRECTORIES( "../contrib" )
  744. # VC2010 fixes
  745. if(MSVC10)
  746. option( VC10_STDINT_FIX "Fix for VC10 Compiler regarding pstdint.h redefinition errors" OFF )
  747. if( VC10_STDINT_FIX )
  748. ADD_DEFINITIONS( -D_STDINT )
  749. endif( VC10_STDINT_FIX )
  750. endif(MSVC10)
  751. ADD_DEFINITIONS( -DASSIMP_BUILD_DLL_EXPORT )
  752. if ( MSVC )
  753. ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
  754. ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
  755. endif ( MSVC )
  756. if (UNZIP_FOUND)
  757. SET (unzip_compile_SRCS "")
  758. else (UNZIP_FOUND)
  759. SET (unzip_compile_SRCS ${unzip_SRCS})
  760. INCLUDE_DIRECTORIES( "../contrib/unzip/" )
  761. endif (UNZIP_FOUND)
  762. MESSAGE(STATUS "Enabled formats:${ASSIMP_IMPORTERS_ENABLED}")
  763. MESSAGE(STATUS "Disabled formats:${ASSIMP_IMPORTERS_DISABLED}")
  764. SET( assimp_src
  765. # Assimp Files
  766. ${Core_SRCS}
  767. ${Common_SRCS}
  768. ${Logging_SRCS}
  769. ${Exporter_SRCS}
  770. ${PostProcessing_SRCS}
  771. ${MaterialSystem_SRCS}
  772. ${Step_SRCS}
  773. # Model Support
  774. ${ASSIMP_LOADER_SRCS}
  775. # Third-party libraries
  776. ${IrrXML_SRCS}
  777. ${unzip_compile_SRCS}
  778. ${Poly2Tri_SRCS}
  779. ${Clipper_SRCS}
  780. ${openddl_parser_SRCS}
  781. ${open3dgc_SRCS}
  782. ${ziplib_SRCS}
  783. # Necessary to show the headers in the project when using the VC++ generator:
  784. ${PUBLIC_HEADERS}
  785. ${COMPILER_HEADERS}
  786. )
  787. ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD )
  788. INCLUDE_DIRECTORIES(
  789. ${IRRXML_INCLUDE_DIR}
  790. ../contrib/openddlparser/include
  791. )
  792. IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
  793. SET( assimp_src ${assimp_src} ${C4D_SRCS})
  794. INCLUDE_DIRECTORIES(${C4D_INCLUDES})
  795. ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
  796. ADD_LIBRARY( assimp ${assimp_src} )
  797. TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} ${IRRXML_LIBRARY} )
  798. if(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)
  799. set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI)
  800. add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/ ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/)
  801. target_link_libraries(assimp android_jniiosystem)
  802. endif(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)
  803. IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
  804. TARGET_LINK_LIBRARIES(assimp optimized ${C4D_RELEASE_LIBRARIES})
  805. TARGET_LINK_LIBRARIES(assimp debug ${C4D_DEBUG_LIBRARIES})
  806. TARGET_LINK_LIBRARIES(assimp ${C4D_EXTRA_LIBRARIES})
  807. ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
  808. if( MSVC )
  809. # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix
  810. if( MSVC70 OR MSVC71 )
  811. set(MSVC_PREFIX "vc70")
  812. elseif( MSVC80 )
  813. set(MSVC_PREFIX "vc80")
  814. elseif( MSVC90 )
  815. set(MSVC_PREFIX "vc90")
  816. elseif( MSVC10 )
  817. set(MSVC_PREFIX "vc100")
  818. elseif( MSVC11 )
  819. set(MSVC_PREFIX "vc110")
  820. elseif( MSVC12 )
  821. set(MSVC_PREFIX "vc120")
  822. elseif( MSVC14 )
  823. set(MSVC_PREFIX "vc140")
  824. else()
  825. set(MSVC_PREFIX "vc150")
  826. endif()
  827. set(LIBRARY_SUFFIX "${ASSIMP_LIBRARY_SUFFIX}-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library")
  828. endif()
  829. SET_TARGET_PROPERTIES( assimp PROPERTIES
  830. VERSION ${ASSIMP_VERSION}
  831. SOVERSION ${ASSIMP_SOVERSION} # use full version
  832. OUTPUT_NAME assimp${LIBRARY_SUFFIX}
  833. )
  834. if (APPLE)
  835. SET_TARGET_PROPERTIES( assimp PROPERTIES
  836. INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${ASSIMP_LIB_INSTALL_DIR}"
  837. )
  838. if (BUILD_FRAMEWORK)
  839. SET_TARGET_PROPERTIES( assimp PROPERTIES
  840. FRAMEWORK TRUE
  841. FRAMEWORK_VERSION C
  842. MACOSX_FRAMEWORK_IDENTIFIER net.sf.assimp
  843. PUBLIC_HEADER "${PUBLIC_HEADERS}"
  844. )
  845. # PUBLIC_HEADER option does not support directory structure creation
  846. # add ./Compiler/*.h to assimp.framework via copy command
  847. ADD_CUSTOM_COMMAND(TARGET assimp POST_BUILD
  848. COMMAND "${CMAKE_COMMAND}" -E copy_directory
  849. "../${HEADER_PATH}/Compiler"
  850. assimp.framework/Headers/Compiler
  851. COMMENT "Copying public ./Compiler/ header files to framework bundle's Headers/Compiler/")
  852. endif(BUILD_FRAMEWORK)
  853. endif(APPLE)
  854. # Build against external unzip, or add ../contrib/unzip so
  855. # assimp can #include "unzip.h"
  856. if (UNZIP_FOUND)
  857. INCLUDE_DIRECTORIES(${UNZIP_INCLUDE_DIRS})
  858. TARGET_LINK_LIBRARIES(assimp ${UNZIP_LIBRARIES})
  859. else (UNZIP_FOUND)
  860. INCLUDE_DIRECTORIES("../")
  861. endif (UNZIP_FOUND)
  862. # Add RT-extension library for glTF importer with Open3DGC-compression.
  863. IF (RT_FOUND AND ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC)
  864. TARGET_LINK_LIBRARIES(assimp ${RT_LIBRARY})
  865. ENDIF (RT_FOUND AND ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC)
  866. INSTALL( TARGETS assimp
  867. LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  868. ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  869. RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR}
  870. FRAMEWORK DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  871. COMPONENT ${LIBASSIMP_COMPONENT})
  872. INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp COMPONENT assimp-dev)
  873. INSTALL( FILES ${COMPILER_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/Compiler COMPONENT assimp-dev)
  874. if (ASSIMP_ANDROID_JNIIOSYSTEM)
  875. INSTALL(FILES ${HEADER_PATH}/${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/AndroidJNIIOSystem.h
  876. DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}
  877. COMPONENT assimp-dev)
  878. endif(ASSIMP_ANDROID_JNIIOSYSTEM)
  879. if(MSVC AND ASSIMP_INSTALL_PDB)
  880. IF(CMAKE_GENERATOR MATCHES "^Visual Studio")
  881. install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
  882. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  883. CONFIGURATIONS Debug
  884. )
  885. install(FILES ${Assimp_BINARY_DIR}/code/RelWithDebInfo/assimp${LIBRARY_SUFFIX}.pdb
  886. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  887. CONFIGURATIONS RelWithDebInfo
  888. )
  889. ELSE()
  890. install(FILES ${Assimp_BINARY_DIR}/code/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
  891. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  892. CONFIGURATIONS Debug
  893. )
  894. install(FILES ${Assimp_BINARY_DIR}/code/assimp${LIBRARY_SUFFIX}.pdb
  895. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  896. CONFIGURATIONS RelWithDebInfo
  897. )
  898. ENDIF()
  899. endif ()
  900. if (ASSIMP_COVERALLS)
  901. include(Coveralls)
  902. set(COVERAGE_SRCS ${assimp_src} ${TEST_SRCS} )
  903. # Create the coveralls target.
  904. coveralls_setup(
  905. "${COVERAGE_SRCS}" # The source files.
  906. ON # If we should upload.
  907. "${PROJECT_SOURCE_DIR}/cmake-modules/") # (Optional) Alternate project cmake module path.
  908. endif()