CMakeLists.txt 54 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685
  1. # Open Asset Import Library (assimp)
  2. # ----------------------------------------------------------------------
  3. # Copyright (c) 2006-2025, assimp team
  4. #
  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 3.22 )
  45. SET( HEADER_PATH ../include/assimp )
  46. if(NOT ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)
  47. message(WARNING "Requesting Android JNI I/O-System in non-Android toolchain. Resetting ASSIMP_ANDROID_JNIIOSYSTEM to OFF.")
  48. set(ASSIMP_ANDROID_JNIIOSYSTEM OFF)
  49. endif()
  50. SET( COMPILER_HEADERS
  51. ${HEADER_PATH}/Compiler/pushpack1.h
  52. ${HEADER_PATH}/Compiler/poppack1.h
  53. ${HEADER_PATH}/Compiler/pstdint.h
  54. )
  55. SOURCE_GROUP( Compiler FILES ${COMPILER_HEADERS})
  56. SET( PUBLIC_HEADERS
  57. ${HEADER_PATH}/anim.h
  58. ${HEADER_PATH}/aabb.h
  59. ${HEADER_PATH}/ai_assert.h
  60. ${HEADER_PATH}/camera.h
  61. ${HEADER_PATH}/color4.h
  62. ${HEADER_PATH}/color4.inl
  63. ${CMAKE_CURRENT_BINARY_DIR}/../include/assimp/config.h
  64. ${HEADER_PATH}/ColladaMetaData.h
  65. ${HEADER_PATH}/commonMetaData.h
  66. ${HEADER_PATH}/defs.h
  67. ${HEADER_PATH}/cfileio.h
  68. ${HEADER_PATH}/light.h
  69. ${HEADER_PATH}/material.h
  70. ${HEADER_PATH}/material.inl
  71. ${HEADER_PATH}/matrix3x3.h
  72. ${HEADER_PATH}/matrix3x3.inl
  73. ${HEADER_PATH}/matrix4x4.h
  74. ${HEADER_PATH}/matrix4x4.inl
  75. ${HEADER_PATH}/mesh.h
  76. ${HEADER_PATH}/ObjMaterial.h
  77. ${HEADER_PATH}/pbrmaterial.h
  78. ${HEADER_PATH}/GltfMaterial.h
  79. ${HEADER_PATH}/postprocess.h
  80. ${HEADER_PATH}/quaternion.h
  81. ${HEADER_PATH}/quaternion.inl
  82. ${HEADER_PATH}/scene.h
  83. ${HEADER_PATH}/metadata.h
  84. ${HEADER_PATH}/texture.h
  85. ${HEADER_PATH}/types.h
  86. ${HEADER_PATH}/vector2.h
  87. ${HEADER_PATH}/vector2.inl
  88. ${HEADER_PATH}/vector3.h
  89. ${HEADER_PATH}/vector3.inl
  90. ${HEADER_PATH}/version.h
  91. ${HEADER_PATH}/cimport.h
  92. ${HEADER_PATH}/AssertHandler.h
  93. ${HEADER_PATH}/importerdesc.h
  94. ${HEADER_PATH}/Importer.hpp
  95. ${HEADER_PATH}/DefaultLogger.hpp
  96. ${HEADER_PATH}/ProgressHandler.hpp
  97. ${HEADER_PATH}/IOStream.hpp
  98. ${HEADER_PATH}/IOSystem.hpp
  99. ${HEADER_PATH}/Logger.hpp
  100. ${HEADER_PATH}/LogStream.hpp
  101. ${HEADER_PATH}/NullLogger.hpp
  102. ${HEADER_PATH}/cexport.h
  103. ${HEADER_PATH}/Exporter.hpp
  104. ${HEADER_PATH}/DefaultIOStream.h
  105. ${HEADER_PATH}/DefaultIOSystem.h
  106. ${HEADER_PATH}/ZipArchiveIOSystem.h
  107. ${HEADER_PATH}/SceneCombiner.h
  108. ${HEADER_PATH}/fast_atof.h
  109. ${HEADER_PATH}/qnan.h
  110. ${HEADER_PATH}/BaseImporter.h
  111. ${HEADER_PATH}/Hash.h
  112. ${HEADER_PATH}/MemoryIOWrapper.h
  113. ${HEADER_PATH}/ParsingUtils.h
  114. ${HEADER_PATH}/StreamReader.h
  115. ${HEADER_PATH}/StreamWriter.h
  116. ${HEADER_PATH}/StringComparison.h
  117. ${HEADER_PATH}/StringUtils.h
  118. ${HEADER_PATH}/SGSpatialSort.h
  119. ${HEADER_PATH}/GenericProperty.h
  120. ${HEADER_PATH}/SpatialSort.h
  121. ${HEADER_PATH}/SkeletonMeshBuilder.h
  122. ${HEADER_PATH}/SmallVector.h
  123. ${HEADER_PATH}/SmoothingGroups.h
  124. ${HEADER_PATH}/SmoothingGroups.inl
  125. ${HEADER_PATH}/StandardShapes.h
  126. ${HEADER_PATH}/RemoveComments.h
  127. ${HEADER_PATH}/Subdivision.h
  128. ${HEADER_PATH}/Vertex.h
  129. ${HEADER_PATH}/LineSplitter.h
  130. ${HEADER_PATH}/TinyFormatter.h
  131. ${HEADER_PATH}/Profiler.h
  132. ${HEADER_PATH}/LogAux.h
  133. ${HEADER_PATH}/Bitmap.h
  134. ${HEADER_PATH}/XMLTools.h
  135. ${HEADER_PATH}/IOStreamBuffer.h
  136. ${HEADER_PATH}/CreateAnimMesh.h
  137. ${HEADER_PATH}/XmlParser.h
  138. ${HEADER_PATH}/BlobIOSystem.h
  139. ${HEADER_PATH}/MathFunctions.h
  140. ${HEADER_PATH}/Exceptional.h
  141. ${HEADER_PATH}/ByteSwapper.h
  142. ${HEADER_PATH}/Base64.hpp
  143. )
  144. SET( Core_SRCS
  145. Common/Assimp.cpp
  146. )
  147. IF(MSVC OR (MINGW AND BUILD_SHARED_LIBS))
  148. list(APPEND Core_SRCS "res/assimp.rc")
  149. ENDIF()
  150. SET( Logging_SRCS
  151. ${HEADER_PATH}/DefaultLogger.hpp
  152. ${HEADER_PATH}/LogStream.hpp
  153. ${HEADER_PATH}/Logger.hpp
  154. ${HEADER_PATH}/NullLogger.hpp
  155. Common/Win32DebugLogStream.h
  156. Common/DefaultLogger.cpp
  157. Common/FileLogStream.h
  158. Common/StdOStreamLogStream.h
  159. )
  160. SOURCE_GROUP(Logging FILES ${Logging_SRCS})
  161. SET( Common_SRCS
  162. Common/StbCommon.h
  163. Common/Compression.cpp
  164. Common/Compression.h
  165. Common/BaseImporter.cpp
  166. Common/BaseProcess.cpp
  167. Common/BaseProcess.h
  168. Common/Importer.h
  169. Common/ScenePrivate.h
  170. Common/PostStepRegistry.cpp
  171. Common/ImporterRegistry.cpp
  172. Common/DefaultProgressHandler.h
  173. Common/DefaultIOStream.cpp
  174. Common/IOSystem.cpp
  175. Common/DefaultIOSystem.cpp
  176. Common/ZipArchiveIOSystem.cpp
  177. Common/PolyTools.h
  178. Common/Maybe.h
  179. Common/Importer.cpp
  180. Common/IFF.h
  181. Common/SGSpatialSort.cpp
  182. Common/VertexTriangleAdjacency.cpp
  183. Common/VertexTriangleAdjacency.h
  184. Common/SpatialSort.cpp
  185. Common/SceneCombiner.cpp
  186. Common/ScenePreprocessor.cpp
  187. Common/ScenePreprocessor.h
  188. Common/SkeletonMeshBuilder.cpp
  189. Common/StackAllocator.h
  190. Common/StackAllocator.inl
  191. Common/StandardShapes.cpp
  192. Common/TargetAnimation.cpp
  193. Common/TargetAnimation.h
  194. Common/RemoveComments.cpp
  195. Common/Subdivision.cpp
  196. Common/scene.cpp
  197. Common/Bitmap.cpp
  198. Common/Version.cpp
  199. Common/CreateAnimMesh.cpp
  200. Common/simd.h
  201. Common/simd.cpp
  202. Common/material.cpp
  203. Common/AssertHandler.cpp
  204. Common/Exceptional.cpp
  205. Common/Base64.cpp
  206. )
  207. SOURCE_GROUP(Common FILES ${Common_SRCS})
  208. SET( CApi_SRCS
  209. CApi/CInterfaceIOWrapper.cpp
  210. CApi/CInterfaceIOWrapper.h
  211. )
  212. SOURCE_GROUP(CApi FILES ${CApi_SRCS})
  213. SET(Geometry_SRCS
  214. Geometry/GeometryUtils.h
  215. Geometry/GeometryUtils.cpp
  216. )
  217. SOURCE_GROUP(Geometry FILES ${Geometry_SRCS})
  218. SET( STEPParser_SRCS
  219. AssetLib/STEPParser/STEPFileReader.h
  220. AssetLib/STEPParser/STEPFileReader.cpp
  221. AssetLib/STEPParser/STEPFileEncoding.cpp
  222. AssetLib/STEPParser/STEPFileEncoding.h
  223. )
  224. SOURCE_GROUP(STEPParser FILES ${STEPParser_SRCS})
  225. IF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER )
  226. SET( C4D_SRCS
  227. AssetLib/C4D/C4DImporter.cpp
  228. AssetLib/C4D/C4DImporter.h
  229. )
  230. SOURCE_GROUP( C4D FILES ${C4D_SRCS})
  231. ENDIF ()
  232. # if this variable is set to TRUE, the user can manually disable importers by setting
  233. # ASSIMP_BUILD_XXX_IMPORTER to FALSE for each importer
  234. # if this variable is set to FALSE, the user can manually enable importers by setting
  235. # ASSIMP_BUILD_XXX_IMPORTER to TRUE for each importer
  236. OPTION(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_IMPORTER values" TRUE)
  237. # macro to add the CMake Option ADD_ASSIMP_IMPORTER_<name> which enables compile of loader
  238. # this way selective loaders can be compiled (reduces filesize + compile time)
  239. MACRO(ADD_ASSIMP_IMPORTER name)
  240. IF (ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT)
  241. set(ASSIMP_IMPORTER_ENABLED TRUE)
  242. IF (DEFINED ASSIMP_BUILD_${name}_IMPORTER AND NOT ASSIMP_BUILD_${name}_IMPORTER)
  243. set(ASSIMP_IMPORTER_ENABLED FALSE)
  244. ENDIF ()
  245. ELSE ()
  246. set(ASSIMP_IMPORTER_ENABLED ${ASSIMP_BUILD_${name}_IMPORTER})
  247. ENDIF ()
  248. IF (ASSIMP_IMPORTER_ENABLED)
  249. LIST(APPEND ASSIMP_LOADER_SRCS ${ARGN})
  250. SET(ASSIMP_IMPORTERS_ENABLED "${ASSIMP_IMPORTERS_ENABLED} ${name}")
  251. SOURCE_GROUP(AssetLib\\${name} FILES ${ARGN})
  252. ELSE()
  253. SET(${name}_SRC "")
  254. SET(ASSIMP_IMPORTERS_DISABLED "${ASSIMP_IMPORTERS_DISABLED} ${name}")
  255. add_definitions(-DASSIMP_BUILD_NO_${name}_IMPORTER)
  256. ENDIF()
  257. ENDMACRO()
  258. if (NOT ASSIMP_NO_EXPORT)
  259. # if this variable is set to TRUE, the user can manually disable exporters by setting
  260. # ASSIMP_BUILD_XXX_EXPORTER to FALSE for each exporter
  261. # if this variable is set to FALSE, the user can manually enable exporters by setting
  262. # ASSIMP_BUILD_XXX_EXPORTER to TRUE for each exporter
  263. OPTION(ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_EXPORTER values" TRUE)
  264. # macro to add the CMake Option ADD_ASSIMP_EXPORTER_<name> which enables compilation of an exporter
  265. # this way selective exporters can be compiled (reduces filesize + compile time)
  266. MACRO(ADD_ASSIMP_EXPORTER name)
  267. IF (ASSIMP_NO_EXPORT)
  268. set(ASSIMP_EXPORTER_ENABLED FALSE)
  269. ELSEIF (ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT)
  270. set(ASSIMP_EXPORTER_ENABLED TRUE)
  271. IF (DEFINED ASSIMP_BUILD_${name}_EXPORTER AND NOT ASSIMP_BUILD_${name}_EXPORTER)
  272. set(ASSIMP_EXPORTER_ENABLED FALSE)
  273. ENDIF ()
  274. ELSE ()
  275. set(ASSIMP_EXPORTER_ENABLED ${ASSIMP_BUILD_${name}_EXPORTER})
  276. ENDIF ()
  277. IF (ASSIMP_EXPORTER_ENABLED)
  278. SET(ASSIMP_EXPORTERS_ENABLED "${ASSIMP_EXPORTERS_ENABLED} ${name}")
  279. LIST(APPEND ASSIMP_EXPORTER_SRCS ${ARGN})
  280. SOURCE_GROUP(AssetLib\\${name} FILES ${ARGN})
  281. ELSE()
  282. SET(ASSIMP_EXPORTERS_DISABLED "${ASSIMP_EXPORTERS_DISABLED} ${name}")
  283. add_definitions(-DASSIMP_BUILD_NO_${name}_EXPORTER)
  284. ENDIF()
  285. ENDMACRO()
  286. endif()
  287. SET(ASSIMP_LOADER_SRCS "")
  288. SET(ASSIMP_IMPORTERS_ENABLED "") # list of enabled importers
  289. SET(ASSIMP_IMPORTERS_DISABLED "") # disabled importers list (used to print)
  290. SET(ASSIMP_EXPORTER_SRCS "")
  291. SET(ASSIMP_EXPORTERS_ENABLED "") # list of enabled exporters
  292. SET(ASSIMP_EXPORTERS_DISABLED "") # disabled exporters list (used to print)
  293. ADD_ASSIMP_IMPORTER( AMF
  294. AssetLib/AMF/AMFImporter.hpp
  295. AssetLib/AMF/AMFImporter_Node.hpp
  296. AssetLib/AMF/AMFImporter.cpp
  297. AssetLib/AMF/AMFImporter_Geometry.cpp
  298. AssetLib/AMF/AMFImporter_Material.cpp
  299. AssetLib/AMF/AMFImporter_Postprocess.cpp
  300. )
  301. ADD_ASSIMP_IMPORTER( 3DS
  302. AssetLib/3DS/3DSConverter.cpp
  303. AssetLib/3DS/3DSHelper.h
  304. AssetLib/3DS/3DSLoader.cpp
  305. AssetLib/3DS/3DSLoader.h
  306. )
  307. ADD_ASSIMP_IMPORTER( AC
  308. AssetLib/AC/ACLoader.cpp
  309. AssetLib/AC/ACLoader.h
  310. )
  311. ADD_ASSIMP_IMPORTER( ASE
  312. AssetLib/ASE/ASELoader.cpp
  313. AssetLib/ASE/ASELoader.h
  314. AssetLib/ASE/ASEParser.cpp
  315. AssetLib/ASE/ASEParser.h
  316. )
  317. ADD_ASSIMP_IMPORTER( ASSBIN
  318. AssetLib/Assbin/AssbinLoader.h
  319. AssetLib/Assbin/AssbinLoader.cpp
  320. )
  321. ADD_ASSIMP_IMPORTER( B3D
  322. AssetLib/B3D/B3DImporter.cpp
  323. AssetLib/B3D/B3DImporter.h
  324. )
  325. ADD_ASSIMP_IMPORTER( BVH
  326. AssetLib/BVH/BVHLoader.cpp
  327. AssetLib/BVH/BVHLoader.h
  328. )
  329. ADD_ASSIMP_IMPORTER( COLLADA
  330. AssetLib/Collada/ColladaHelper.cpp
  331. AssetLib/Collada/ColladaHelper.h
  332. AssetLib/Collada/ColladaLoader.cpp
  333. AssetLib/Collada/ColladaLoader.h
  334. AssetLib/Collada/ColladaParser.cpp
  335. AssetLib/Collada/ColladaParser.h
  336. )
  337. ADD_ASSIMP_IMPORTER( DXF
  338. AssetLib/DXF/DXFLoader.cpp
  339. AssetLib/DXF/DXFLoader.h
  340. AssetLib/DXF/DXFHelper.h
  341. )
  342. ADD_ASSIMP_IMPORTER( CSM
  343. AssetLib/CSM/CSMLoader.cpp
  344. AssetLib/CSM/CSMLoader.h
  345. )
  346. ADD_ASSIMP_IMPORTER( HMP
  347. AssetLib/HMP/HMPFileData.h
  348. AssetLib/HMP/HMPLoader.cpp
  349. AssetLib/HMP/HMPLoader.h
  350. AssetLib/HMP/HalfLifeFileData.h
  351. )
  352. ADD_ASSIMP_IMPORTER( IRRMESH
  353. AssetLib/Irr/IRRMeshLoader.cpp
  354. AssetLib/Irr/IRRMeshLoader.h
  355. AssetLib/Irr/IRRShared.cpp
  356. AssetLib/Irr/IRRShared.h
  357. )
  358. ADD_ASSIMP_IMPORTER( IQM
  359. AssetLib/IQM/IQMImporter.cpp
  360. AssetLib/IQM/iqm.h
  361. AssetLib/IQM/IQMImporter.h
  362. )
  363. ADD_ASSIMP_IMPORTER( IRR
  364. AssetLib/Irr/IRRLoader.cpp
  365. AssetLib/Irr/IRRLoader.h
  366. AssetLib/Irr/IRRShared.cpp
  367. AssetLib/Irr/IRRShared.h
  368. )
  369. ADD_ASSIMP_IMPORTER( LWO
  370. AssetLib/LWO/LWOAnimation.cpp
  371. AssetLib/LWO/LWOAnimation.h
  372. AssetLib/LWO/LWOBLoader.cpp
  373. AssetLib/LWO/LWOFileData.h
  374. AssetLib/LWO/LWOLoader.cpp
  375. AssetLib/LWO/LWOLoader.h
  376. AssetLib/LWO/LWOMaterial.cpp
  377. )
  378. ADD_ASSIMP_IMPORTER( LWS
  379. AssetLib/LWS/LWSLoader.cpp
  380. AssetLib/LWS/LWSLoader.h
  381. )
  382. if (ASSIMP_BUILD_M3D_IMPORTER)
  383. ADD_ASSIMP_IMPORTER( M3D
  384. AssetLib/M3D/M3DImporter.cpp
  385. AssetLib/M3D/M3DWrapper.cpp
  386. )
  387. endif () # if (ASSIMP_BUILD_M3D_IMPORTER)
  388. ADD_ASSIMP_IMPORTER( MD2
  389. AssetLib/MD2/MD2FileData.h
  390. AssetLib/MD2/MD2Loader.cpp
  391. AssetLib/MD2/MD2Loader.h
  392. AssetLib/MD2/MD2NormalTable.h
  393. )
  394. ADD_ASSIMP_IMPORTER( MD3
  395. AssetLib/MD3/MD3FileData.h
  396. AssetLib/MD3/MD3Loader.cpp
  397. AssetLib/MD3/MD3Loader.h
  398. )
  399. ADD_ASSIMP_IMPORTER( MD5
  400. AssetLib/MD5/MD5Loader.cpp
  401. AssetLib/MD5/MD5Loader.h
  402. AssetLib/MD5/MD5Parser.cpp
  403. AssetLib/MD5/MD5Parser.h
  404. )
  405. ADD_ASSIMP_IMPORTER( MDC
  406. AssetLib/MDC/MDCFileData.h
  407. AssetLib/MDC/MDCLoader.cpp
  408. AssetLib/MDC/MDCLoader.h
  409. AssetLib/MDC/MDCNormalTable.h
  410. )
  411. ADD_ASSIMP_IMPORTER( MDL
  412. AssetLib/MDL/MDLDefaultColorMap.h
  413. AssetLib/MDL/MDLFileData.h
  414. AssetLib/MDL/MDLLoader.cpp
  415. AssetLib/MDL/MDLLoader.h
  416. AssetLib/MDL/MDLMaterialLoader.cpp
  417. AssetLib/MDL/HalfLife/HalfLifeMDLBaseHeader.h
  418. AssetLib/MDL/HalfLife/HL1FileData.h
  419. AssetLib/MDL/HalfLife/HL1MDLLoader.cpp
  420. AssetLib/MDL/HalfLife/HL1MDLLoader.h
  421. AssetLib/MDL/HalfLife/HL1ImportDefinitions.h
  422. AssetLib/MDL/HalfLife/HL1ImportSettings.h
  423. AssetLib/MDL/HalfLife/HL1MeshTrivert.h
  424. AssetLib/MDL/HalfLife/LogFunctions.h
  425. AssetLib/MDL/HalfLife/UniqueNameGenerator.cpp
  426. AssetLib/MDL/HalfLife/UniqueNameGenerator.h
  427. )
  428. IF(((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND NOT MINGW AND NOT HAIKU) AND CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 13)
  429. message(STATUS "GCC13 detected disabling \"-Warray-bounds and -Wstringop-overflow\" for"
  430. " AssetLib/MDL/MDLLoader.cpp as it appears to be a false positive")
  431. set_source_files_properties(AssetLib/MDL/MDLLoader.cpp PROPERTIES
  432. COMPILE_FLAGS "-Wno-array-bounds -Wno-stringop-overflow"
  433. )
  434. endif()
  435. SET( MaterialSystem_SRCS
  436. Material/MaterialSystem.cpp
  437. Material/MaterialSystem.h
  438. )
  439. SOURCE_GROUP( MaterialSystem FILES ${MaterialSystem_SRCS})
  440. ADD_ASSIMP_IMPORTER( NFF
  441. AssetLib/NFF/NFFLoader.cpp
  442. AssetLib/NFF/NFFLoader.h
  443. )
  444. ADD_ASSIMP_IMPORTER( NDO
  445. AssetLib/NDO/NDOLoader.cpp
  446. AssetLib/NDO/NDOLoader.h
  447. )
  448. ADD_ASSIMP_IMPORTER( OFF
  449. AssetLib/OFF/OFFLoader.cpp
  450. AssetLib/OFF/OFFLoader.h
  451. )
  452. ADD_ASSIMP_IMPORTER( OBJ
  453. AssetLib/Obj/ObjFileData.h
  454. AssetLib/Obj/ObjFileImporter.cpp
  455. AssetLib/Obj/ObjFileImporter.h
  456. AssetLib/Obj/ObjFileMtlImporter.cpp
  457. AssetLib/Obj/ObjFileMtlImporter.h
  458. AssetLib/Obj/ObjFileParser.cpp
  459. AssetLib/Obj/ObjFileParser.h
  460. AssetLib/Obj/ObjTools.h
  461. )
  462. IF(((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND NOT MINGW AND NOT HAIKU) AND CMAKE_CXX_COMPILER_VERSION EQUAL 14)
  463. message(STATUS "GCC14 detected disabling \"-Wmaybe-uninitialized\" for"
  464. " AssetLib/Obj/ObjFileParser.cpp as it appears to be a false positive")
  465. set_source_files_properties(AssetLib/Obj/ObjFileParser.cpp PROPERTIES
  466. COMPILE_FLAGS "-Wno-maybe-uninitialized"
  467. )
  468. endif()
  469. ADD_ASSIMP_IMPORTER( OGRE
  470. AssetLib/Ogre/OgreImporter.h
  471. AssetLib/Ogre/OgreStructs.h
  472. AssetLib/Ogre/OgreParsingUtils.h
  473. AssetLib/Ogre/OgreBinarySerializer.h
  474. AssetLib/Ogre/OgreXmlSerializer.h
  475. AssetLib/Ogre/OgreImporter.cpp
  476. AssetLib/Ogre/OgreStructs.cpp
  477. AssetLib/Ogre/OgreBinarySerializer.cpp
  478. AssetLib/Ogre/OgreXmlSerializer.cpp
  479. AssetLib/Ogre/OgreMaterial.cpp
  480. )
  481. ADD_ASSIMP_IMPORTER( OPENGEX
  482. AssetLib/OpenGEX/OpenGEXImporter.cpp
  483. AssetLib/OpenGEX/OpenGEXImporter.h
  484. AssetLib/OpenGEX/OpenGEXStructs.h
  485. )
  486. ADD_ASSIMP_IMPORTER( PLY
  487. AssetLib/Ply/PlyLoader.cpp
  488. AssetLib/Ply/PlyLoader.h
  489. AssetLib/Ply/PlyParser.cpp
  490. AssetLib/Ply/PlyParser.h
  491. )
  492. ADD_ASSIMP_IMPORTER( MS3D
  493. AssetLib/MS3D/MS3DLoader.cpp
  494. AssetLib/MS3D/MS3DLoader.h
  495. )
  496. ADD_ASSIMP_IMPORTER( COB
  497. AssetLib/COB/COBLoader.cpp
  498. AssetLib/COB/COBLoader.h
  499. AssetLib/COB/COBScene.h
  500. )
  501. ADD_ASSIMP_IMPORTER( BLEND
  502. AssetLib/Blender/BlenderLoader.cpp
  503. AssetLib/Blender/BlenderLoader.h
  504. AssetLib/Blender/BlenderDNA.cpp
  505. AssetLib/Blender/BlenderDNA.h
  506. AssetLib/Blender/BlenderDNA.inl
  507. AssetLib/Blender/BlenderScene.cpp
  508. AssetLib/Blender/BlenderScene.h
  509. AssetLib/Blender/BlenderSceneGen.h
  510. AssetLib/Blender/BlenderIntermediate.h
  511. AssetLib/Blender/BlenderModifier.h
  512. AssetLib/Blender/BlenderModifier.cpp
  513. AssetLib/Blender/BlenderBMesh.h
  514. AssetLib/Blender/BlenderBMesh.cpp
  515. AssetLib/Blender/BlenderTessellator.h
  516. AssetLib/Blender/BlenderTessellator.cpp
  517. AssetLib/Blender/BlenderCustomData.h
  518. AssetLib/Blender/BlenderCustomData.cpp
  519. )
  520. ADD_ASSIMP_IMPORTER( IFC
  521. AssetLib/IFC/IFCLoader.cpp
  522. AssetLib/IFC/IFCLoader.h
  523. AssetLib/IFC/IFCReaderGen1_2x3.cpp
  524. AssetLib/IFC/IFCReaderGen2_2x3.cpp
  525. AssetLib/IFC/IFCReaderGen_2x3.h
  526. AssetLib/IFC/IFCUtil.h
  527. AssetLib/IFC/IFCUtil.cpp
  528. AssetLib/IFC/IFCGeometry.cpp
  529. AssetLib/IFC/IFCMaterial.cpp
  530. AssetLib/IFC/IFCProfile.cpp
  531. AssetLib/IFC/IFCCurve.cpp
  532. AssetLib/IFC/IFCBoolean.cpp
  533. AssetLib/IFC/IFCOpenings.cpp
  534. )
  535. if (ASSIMP_BUILD_IFC_IMPORTER)
  536. if (MSVC)
  537. set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "/bigobj")
  538. elseif(MINGW)
  539. set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "-O2 -Wa,-mbig-obj")
  540. endif()
  541. endif ()
  542. ADD_ASSIMP_IMPORTER( XGL
  543. AssetLib/XGL/XGLLoader.cpp
  544. AssetLib/XGL/XGLLoader.h
  545. )
  546. ADD_ASSIMP_IMPORTER( FBX
  547. AssetLib/FBX/FBXImporter.cpp
  548. AssetLib/FBX/FBXCompileConfig.h
  549. AssetLib/FBX/FBXImporter.h
  550. AssetLib/FBX/FBXParser.cpp
  551. AssetLib/FBX/FBXParser.h
  552. AssetLib/FBX/FBXTokenizer.cpp
  553. AssetLib/FBX/FBXTokenizer.h
  554. AssetLib/FBX/FBXImportSettings.h
  555. AssetLib/FBX/FBXConverter.h
  556. AssetLib/FBX/FBXConverter.cpp
  557. AssetLib/FBX/FBXUtil.h
  558. AssetLib/FBX/FBXUtil.cpp
  559. AssetLib/FBX/FBXDocument.h
  560. AssetLib/FBX/FBXDocument.cpp
  561. AssetLib/FBX/FBXProperties.h
  562. AssetLib/FBX/FBXProperties.cpp
  563. AssetLib/FBX/FBXMeshGeometry.h
  564. AssetLib/FBX/FBXMeshGeometry.cpp
  565. AssetLib/FBX/FBXMaterial.cpp
  566. AssetLib/FBX/FBXModel.cpp
  567. AssetLib/FBX/FBXAnimation.cpp
  568. AssetLib/FBX/FBXNodeAttribute.cpp
  569. AssetLib/FBX/FBXDeformer.cpp
  570. AssetLib/FBX/FBXBinaryTokenizer.cpp
  571. AssetLib/FBX/FBXDocumentUtil.cpp
  572. AssetLib/FBX/FBXCommon.h
  573. )
  574. if (NOT ASSIMP_NO_EXPORT)
  575. ADD_ASSIMP_EXPORTER( OBJ
  576. AssetLib/Obj/ObjExporter.h
  577. AssetLib/Obj/ObjExporter.cpp)
  578. ADD_ASSIMP_EXPORTER( OPENGEX
  579. AssetLib/OpenGEX/OpenGEXExporter.cpp
  580. AssetLib/OpenGEX/OpenGEXExporter.h)
  581. ADD_ASSIMP_EXPORTER( PLY
  582. AssetLib/Ply/PlyExporter.cpp
  583. AssetLib/Ply/PlyExporter.h)
  584. ADD_ASSIMP_EXPORTER( 3DS
  585. AssetLib/3DS/3DSExporter.h
  586. AssetLib/3DS/3DSExporter.cpp)
  587. ADD_ASSIMP_EXPORTER( ASSBIN
  588. AssetLib/Assbin/AssbinExporter.h
  589. AssetLib/Assbin/AssbinExporter.cpp
  590. AssetLib/Assbin/AssbinFileWriter.h
  591. AssetLib/Assbin/AssbinFileWriter.cpp)
  592. ADD_ASSIMP_EXPORTER( ASSXML
  593. AssetLib/Assxml/AssxmlExporter.h
  594. AssetLib/Assxml/AssxmlExporter.cpp
  595. AssetLib/Assxml/AssxmlFileWriter.h
  596. AssetLib/Assxml/AssxmlFileWriter.cpp)
  597. if ((NOT ASSIMP_NO_EXPORT) AND ASSIMP_BUILD_M3D_EXPORTER)
  598. ADD_ASSIMP_EXPORTER(M3D
  599. AssetLib/M3D/M3DExporter.cpp)
  600. endif () # if (ASSIMP_BUILD_M3D_EXPORTER)
  601. ADD_ASSIMP_EXPORTER(COLLADA
  602. AssetLib/Collada/ColladaExporter.h
  603. AssetLib/Collada/ColladaExporter.cpp)
  604. ADD_ASSIMP_EXPORTER( FBX
  605. AssetLib/FBX/FBXExporter.h
  606. AssetLib/FBX/FBXExporter.cpp
  607. AssetLib/FBX/FBXExportNode.h
  608. AssetLib/FBX/FBXExportNode.cpp
  609. AssetLib/FBX/FBXExportProperty.h
  610. AssetLib/FBX/FBXExportProperty.cpp)
  611. ADD_ASSIMP_EXPORTER( STL
  612. AssetLib/STL/STLExporter.h
  613. AssetLib/STL/STLExporter.cpp)
  614. ADD_ASSIMP_EXPORTER( X
  615. AssetLib/X/XFileExporter.h
  616. AssetLib/X/XFileExporter.cpp)
  617. ADD_ASSIMP_EXPORTER( X3D
  618. AssetLib/X3D/X3DExporter.cpp
  619. AssetLib/X3D/X3DExporter.hpp)
  620. ADD_ASSIMP_EXPORTER( GLTF
  621. AssetLib/glTF/glTFExporter.h
  622. AssetLib/glTF/glTFExporter.cpp
  623. AssetLib/glTF2/glTF2Exporter.h
  624. AssetLib/glTF2/glTF2Exporter.cpp)
  625. ADD_ASSIMP_EXPORTER( 3MF
  626. AssetLib/3MF/D3MFExporter.h
  627. AssetLib/3MF/D3MFExporter.cpp)
  628. ADD_ASSIMP_EXPORTER( PBRT
  629. Pbrt/PbrtExporter.h
  630. Pbrt/PbrtExporter.cpp)
  631. ADD_ASSIMP_EXPORTER( ASSJSON
  632. AssetLib/Assjson/cencode.c
  633. AssetLib/Assjson/cencode.h
  634. AssetLib/Assjson/json_exporter.cpp
  635. AssetLib/Assjson/mesh_splitter.cpp
  636. AssetLib/Assjson/mesh_splitter.h)
  637. ADD_ASSIMP_EXPORTER( STEP
  638. AssetLib/Step/StepExporter.h
  639. AssetLib/Step/StepExporter.cpp)
  640. endif()
  641. SET( PostProcessing_SRCS
  642. PostProcessing/CalcTangentsProcess.cpp
  643. PostProcessing/CalcTangentsProcess.h
  644. PostProcessing/ComputeUVMappingProcess.cpp
  645. PostProcessing/ComputeUVMappingProcess.h
  646. PostProcessing/ConvertToLHProcess.cpp
  647. PostProcessing/ConvertToLHProcess.h
  648. PostProcessing/EmbedTexturesProcess.cpp
  649. PostProcessing/EmbedTexturesProcess.h
  650. PostProcessing/FindDegenerates.cpp
  651. PostProcessing/FindDegenerates.h
  652. PostProcessing/FindInstancesProcess.cpp
  653. PostProcessing/FindInstancesProcess.h
  654. PostProcessing/FindInvalidDataProcess.cpp
  655. PostProcessing/FindInvalidDataProcess.h
  656. PostProcessing/FixNormalsStep.cpp
  657. PostProcessing/FixNormalsStep.h
  658. PostProcessing/DropFaceNormalsProcess.cpp
  659. PostProcessing/DropFaceNormalsProcess.h
  660. PostProcessing/GenFaceNormalsProcess.cpp
  661. PostProcessing/GenFaceNormalsProcess.h
  662. PostProcessing/GenVertexNormalsProcess.cpp
  663. PostProcessing/GenVertexNormalsProcess.h
  664. PostProcessing/PretransformVertices.cpp
  665. PostProcessing/PretransformVertices.h
  666. PostProcessing/ImproveCacheLocality.cpp
  667. PostProcessing/ImproveCacheLocality.h
  668. PostProcessing/JoinVerticesProcess.cpp
  669. PostProcessing/JoinVerticesProcess.h
  670. PostProcessing/LimitBoneWeightsProcess.cpp
  671. PostProcessing/LimitBoneWeightsProcess.h
  672. PostProcessing/RemoveRedundantMaterials.cpp
  673. PostProcessing/RemoveRedundantMaterials.h
  674. PostProcessing/RemoveVCProcess.cpp
  675. PostProcessing/RemoveVCProcess.h
  676. PostProcessing/SortByPTypeProcess.cpp
  677. PostProcessing/SortByPTypeProcess.h
  678. PostProcessing/SplitLargeMeshes.cpp
  679. PostProcessing/SplitLargeMeshes.h
  680. PostProcessing/TextureTransform.cpp
  681. PostProcessing/TextureTransform.h
  682. PostProcessing/TriangulateProcess.cpp
  683. PostProcessing/TriangulateProcess.h
  684. PostProcessing/ValidateDataStructure.cpp
  685. PostProcessing/ValidateDataStructure.h
  686. PostProcessing/OptimizeGraph.cpp
  687. PostProcessing/OptimizeGraph.h
  688. PostProcessing/OptimizeMeshes.cpp
  689. PostProcessing/OptimizeMeshes.h
  690. PostProcessing/DeboneProcess.cpp
  691. PostProcessing/DeboneProcess.h
  692. PostProcessing/ProcessHelper.h
  693. PostProcessing/ProcessHelper.cpp
  694. PostProcessing/MakeVerboseFormat.cpp
  695. PostProcessing/MakeVerboseFormat.h
  696. PostProcessing/ScaleProcess.cpp
  697. PostProcessing/ScaleProcess.h
  698. PostProcessing/ArmaturePopulate.cpp
  699. PostProcessing/ArmaturePopulate.h
  700. PostProcessing/GenBoundingBoxesProcess.cpp
  701. PostProcessing/GenBoundingBoxesProcess.h
  702. PostProcessing/SplitByBoneCountProcess.cpp
  703. PostProcessing/SplitByBoneCountProcess.h
  704. )
  705. SOURCE_GROUP( PostProcessing FILES ${PostProcessing_SRCS})
  706. ADD_ASSIMP_IMPORTER( Q3D
  707. AssetLib/Q3D/Q3DLoader.cpp
  708. AssetLib/Q3D/Q3DLoader.h
  709. )
  710. ADD_ASSIMP_IMPORTER( Q3BSP
  711. AssetLib/Q3BSP/Q3BSPFileData.h
  712. AssetLib/Q3BSP/Q3BSPFileParser.h
  713. AssetLib/Q3BSP/Q3BSPFileParser.cpp
  714. AssetLib/Q3BSP/Q3BSPFileImporter.h
  715. AssetLib/Q3BSP/Q3BSPFileImporter.cpp
  716. )
  717. ADD_ASSIMP_IMPORTER( RAW
  718. AssetLib/Raw/RawLoader.cpp
  719. AssetLib/Raw/RawLoader.h
  720. )
  721. ADD_ASSIMP_IMPORTER( SIB
  722. AssetLib/SIB/SIBImporter.cpp
  723. AssetLib/SIB/SIBImporter.h
  724. )
  725. ADD_ASSIMP_IMPORTER( SMD
  726. AssetLib/SMD/SMDLoader.cpp
  727. AssetLib/SMD/SMDLoader.h
  728. )
  729. ADD_ASSIMP_IMPORTER( STL
  730. AssetLib/STL/STLLoader.cpp
  731. AssetLib/STL/STLLoader.h
  732. )
  733. ADD_ASSIMP_IMPORTER( TERRAGEN
  734. AssetLib/Terragen/TerragenLoader.cpp
  735. AssetLib/Terragen/TerragenLoader.h
  736. )
  737. ADD_ASSIMP_IMPORTER( 3D
  738. AssetLib/Unreal/UnrealLoader.cpp
  739. AssetLib/Unreal/UnrealLoader.h
  740. )
  741. ADD_ASSIMP_IMPORTER( USD
  742. AssetLib/USD/USDLoader.cpp
  743. AssetLib/USD/USDLoader.h
  744. AssetLib/USD/USDLoaderImplTinyusdz.cpp
  745. AssetLib/USD/USDLoaderImplTinyusdz.h
  746. AssetLib/USD/USDLoaderImplTinyusdzHelper.cpp
  747. AssetLib/USD/USDLoaderImplTinyusdzHelper.h
  748. AssetLib/USD/USDLoaderUtil.cpp
  749. AssetLib/USD/USDLoaderUtil.h
  750. )
  751. ADD_ASSIMP_IMPORTER( X
  752. AssetLib/X/XFileHelper.h
  753. AssetLib/X/XFileImporter.cpp
  754. AssetLib/X/XFileImporter.h
  755. AssetLib/X/XFileParser.cpp
  756. AssetLib/X/XFileParser.h
  757. )
  758. ADD_ASSIMP_IMPORTER( X3D
  759. AssetLib/X3D/X3DImporter.cpp
  760. AssetLib/X3D/X3DImporter_Geometry2D.cpp
  761. AssetLib/X3D/X3DImporter_Geometry3D.cpp
  762. AssetLib/X3D/X3DImporter_Group.cpp
  763. AssetLib/X3D/X3DImporter_Light.cpp
  764. AssetLib/X3D/X3DImporter_Metadata.cpp
  765. AssetLib/X3D/X3DImporter_Networking.cpp
  766. AssetLib/X3D/X3DImporter_Postprocess.cpp
  767. AssetLib/X3D/X3DImporter_Rendering.cpp
  768. AssetLib/X3D/X3DImporter_Shape.cpp
  769. AssetLib/X3D/X3DImporter_Texturing.cpp
  770. AssetLib/X3D/X3DImporter.hpp
  771. AssetLib/X3D/X3DImporter_Macro.hpp
  772. AssetLib/X3D/X3DImporter_Node.hpp
  773. AssetLib/X3D/X3DGeoHelper.cpp
  774. AssetLib/X3D/X3DGeoHelper.h
  775. AssetLib/X3D/X3DXmlHelper.cpp
  776. AssetLib/X3D/X3DXmlHelper.h
  777. AssetLib/VRML/VrmlConverter.cpp
  778. )
  779. SET(glTFCommon_src
  780. AssetLib/glTFCommon/glTFCommon.h
  781. AssetLib/glTFCommon/glTFCommon.cpp
  782. )
  783. SOURCE_GROUP( glTFCommon FILES ${glTFCommon_src})
  784. ADD_ASSIMP_IMPORTER( GLTF
  785. AssetLib/glTF/glTFAsset.h
  786. AssetLib/glTF/glTFAsset.inl
  787. AssetLib/glTF/glTFAssetWriter.h
  788. AssetLib/glTF/glTFAssetWriter.inl
  789. AssetLib/glTF/glTFImporter.cpp
  790. AssetLib/glTF/glTFImporter.h
  791. AssetLib/glTF2/glTF2Asset.h
  792. AssetLib/glTF2/glTF2Asset.inl
  793. AssetLib/glTF2/glTF2AssetWriter.h
  794. AssetLib/glTF2/glTF2AssetWriter.inl
  795. AssetLib/glTF2/glTF2Importer.cpp
  796. AssetLib/glTF2/glTF2Importer.h
  797. )
  798. ADD_ASSIMP_IMPORTER(3MF
  799. AssetLib/3MF/3MFTypes.h
  800. AssetLib/3MF/XmlSerializer.h
  801. AssetLib/3MF/XmlSerializer.cpp
  802. AssetLib/3MF/D3MFImporter.h
  803. AssetLib/3MF/D3MFImporter.cpp
  804. AssetLib/3MF/D3MFOpcPackage.h
  805. AssetLib/3MF/D3MFOpcPackage.cpp
  806. AssetLib/3MF/3MFXmlTags.h
  807. )
  808. ADD_ASSIMP_IMPORTER( MMD
  809. AssetLib/MMD/MMDCpp14.h
  810. AssetLib/MMD/MMDImporter.cpp
  811. AssetLib/MMD/MMDImporter.h
  812. AssetLib/MMD/MMDPmdParser.h
  813. AssetLib/MMD/MMDPmxParser.h
  814. AssetLib/MMD/MMDPmxParser.cpp
  815. AssetLib/MMD/MMDVmdParser.h
  816. )
  817. # Workaround for issue #2406 - force problematic large file to be optimized to prevent string table overflow error
  818. # Used -Os instead of -O2 as previous issues had mentioned, since -Os is roughly speaking -O2, excluding any
  819. # optimizations that take up extra space. Given that the issue is a string table overflowing, -Os seemed appropriate
  820. # Also, I'm not positive if both link & compile flags are needed, but this hopefully ensures that the issue should not
  821. # recur for edge cases such as static builds.
  822. if ((MINGW) AND (CMAKE_BUILD_TYPE MATCHES Debug))
  823. message("-- Applying MinGW StepFileGen1.cpp Debug Workaround")
  824. SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES COMPILE_FLAGS -Os )
  825. SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES LINK_FLAGS -Os )
  826. SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES STATIC_LIBRARY_FLAGS -Os )
  827. endif()
  828. if ((NOT ASSIMP_NO_EXPORT) OR (NOT ASSIMP_EXPORTERS_ENABLED STREQUAL ""))
  829. SET( Exporter_SRCS
  830. Common/Exporter.cpp
  831. CApi/AssimpCExport.cpp
  832. ${HEADER_PATH}/BlobIOSystem.h
  833. )
  834. SOURCE_GROUP( Exporter FILES ${Exporter_SRCS})
  835. endif()
  836. SET( Extra_SRCS
  837. MD4FileData.h
  838. )
  839. SOURCE_GROUP( Extra FILES ${Extra_SRCS})
  840. # VRML (.wrl/.x3dv) support
  841. IF (ASSIMP_BUILD_VRML_IMPORTER)
  842. # Note: ALWAYS specify a git commit hash (or tag) instead of a branch name; using a branch name
  843. # can lead to non-deterministic (unpredictable) results since the code is potentially in flux
  844. # "main" branch, 18 Nov 2024
  845. set(Meshlab_GIT_TAG "ad55b47a9b0700e7b427db6db287bb3a39aa31e7")
  846. message("****")
  847. message("\n\n**** Cloning meshlab repo, git tag ${Meshlab_GIT_TAG}\n\n")
  848. # Use CMAKE_CURRENT_SOURCE_DIR which provides assimp-local path (CMAKE_SOURCE_DIR is
  849. # relative to top-level/main project)
  850. set(Meshlab_BASE_ABSPATH "${CMAKE_CURRENT_SOURCE_DIR}/../contrib/meshlab")
  851. # Note: Depending on user's OS, build environment etc it may be necessary to change line endings of
  852. # "patches/meshlab.patch" file from CRLF to LF in order for patch operation to succeed
  853. # Patch required to
  854. # - replace QtXml w/pugixml
  855. # - disable meshlab cmake scripts to prevent breaking assimp build
  856. # - address compiler warnings to avoid breaking build for users who wisely treat warnings-as-errors
  857. set(Meshlab_PATCH_CMD git apply ${Meshlab_BASE_ABSPATH}/patches/meshlab.patch)
  858. # Note: cloning entire meshlab repo is wasteful since we require literally only two source files.
  859. # There is a technique using "git archive" e.g.
  860. # execute_process(
  861. # COMMAND git archive --remote=${Meshlab_GIT_REPO} ${Meshlab_GIT_TAG} <files> | \
  862. # tar -x -C ${Meshlab_BASE_ABSPATH}
  863. # RESULT_VARIABLE result
  864. # )
  865. # But this doesn't work with git "https" protocol so not a viable solution
  866. # Note: CMake's "FetchContent" (which executes at configure time) is much better for this use case
  867. # than "ExternalProject" (which executes at build time); we just want to clone a repo and
  868. # block (wait) as long as necessary until cloning is complete, so we immediately have full
  869. # access to the cloned source files
  870. include(FetchContent)
  871. set(Meshlab_REPO_ABSPATH "${Meshlab_BASE_ABSPATH}/autoclone")
  872. # Only want to clone once (on Android, using SOURCE_DIR will clone per-ABI (x86, x86_64 etc))
  873. set(FETCHCONTENT_BASE_DIR ${Meshlab_REPO_ABSPATH})
  874. set(FETCHCONTENT_QUIET on) # Turn off to troubleshoot repo clone problems
  875. set(FETCHCONTENT_UPDATES_DISCONNECTED on) # Prevent other ABIs from re-cloning/re-patching etc
  876. set(Meshlab_GIT_REPO "https://github.com/cnr-isti-vclab/meshlab")
  877. FetchContent_Declare(
  878. meshlab_repo
  879. GIT_REPOSITORY ${Meshlab_GIT_REPO}
  880. GIT_TAG ${Meshlab_GIT_TAG}
  881. PATCH_COMMAND ${Meshlab_PATCH_CMD}
  882. )
  883. FetchContent_MakeAvailable(meshlab_repo)
  884. message("**** Finished cloning meshlab repo")
  885. message("****")
  886. set(Meshlab_SRC_ABSPATH "${Meshlab_REPO_ABSPATH}/meshlab_repo-src/src/meshlabplugins/io_x3d/vrml")
  887. set(Meshlab_SRCS
  888. ${Meshlab_SRC_ABSPATH}/Parser.cpp
  889. ${Meshlab_SRC_ABSPATH}/Scanner.cpp
  890. )
  891. set(Meshlab_INCLUDE_DIRS "${Meshlab_SRC_ABSPATH}")
  892. INCLUDE_DIRECTORIES(${Meshlab_INCLUDE_DIRS})
  893. MESSAGE(STATUS "VRML enabled")
  894. ELSE() # IF (ASSIMP_BUILD_VRML_IMPORTER)
  895. set(Meshlab_SRCS "")
  896. MESSAGE(STATUS "VRML disabled")
  897. ENDIF() # IF (ASSIMP_BUILD_VRML_IMPORTER)
  898. # USD/USDA/USDC/USDZ support
  899. # tinyusdz
  900. IF (ASSIMP_BUILD_USD_IMPORTER)
  901. if (ASSIMP_BUILD_USD_VERBOSE_LOGS)
  902. ADD_DEFINITIONS( -DASSIMP_USD_VERBOSE_LOGS)
  903. endif ()
  904. # Use CMAKE_CURRENT_SOURCE_DIR which provides assimp-local path (CMAKE_SOURCE_DIR is
  905. # relative to top-level/main project)
  906. set(Tinyusdz_BASE_ABSPATH "${CMAKE_CURRENT_SOURCE_DIR}/../contrib/tinyusdz")
  907. set(Tinyusdz_REPO_ABSPATH "${Tinyusdz_BASE_ABSPATH}/autoclone")
  908. # Note: ALWAYS specify a git commit hash (or tag) instead of a branch name; using a branch
  909. # name can lead to non-deterministic (unpredictable) results since the code is potentially
  910. # in flux
  911. # "dev" branch, 14 Mar 2025
  912. set(TINYUSDZ_GIT_TAG "6050eef932f7d2788656d63297aa488fb0961ed1")
  913. message("****")
  914. message("\n\n**** Cloning tinyusdz repo, git tag ${TINYUSDZ_GIT_TAG}\n\n")
  915. # Patch required to build arm32 on android
  916. set(TINYUSDZ_PATCH_CMD git apply ${Tinyusdz_BASE_ABSPATH}/patches/tinyusdz.patch)
  917. # Note: CMake's "FetchContent" (which executes at configure time) is much better for this use case
  918. # than "ExternalProject" (which executes at build time); we just want to clone a repo and
  919. # block (wait) as long as necessary until cloning is complete, so we immediately have full
  920. # access to the cloned source files
  921. include(FetchContent)
  922. # Only want to clone once (on Android, using SOURCE_DIR will clone per-ABI (x86, x86_64 etc))
  923. set(FETCHCONTENT_BASE_DIR ${Tinyusdz_REPO_ABSPATH})
  924. set(FETCHCONTENT_QUIET on) # Turn off to troubleshoot repo clone problems
  925. set(FETCHCONTENT_UPDATES_DISCONNECTED on) # Prevent other ABIs from re-cloning/re-patching etc
  926. FetchContent_Declare(
  927. tinyusdz_repo
  928. EXCLUDE_FROM_ALL TRUE
  929. GIT_REPOSITORY "https://github.com/lighttransport/tinyusdz"
  930. GIT_TAG ${TINYUSDZ_GIT_TAG}
  931. PATCH_COMMAND ${TINYUSDZ_PATCH_CMD}
  932. )
  933. FetchContent_MakeAvailable(tinyusdz_repo)
  934. message("**** Finished cloning tinyusdz repo")
  935. message("****")
  936. set(Tinyusdz_SRC_ABSPATH "${Tinyusdz_REPO_ABSPATH}/tinyusdz_repo-src/src")
  937. set(Tinyusdz_SRCS
  938. ${Tinyusdz_SRC_ABSPATH}/ascii-parser.cc
  939. ${Tinyusdz_SRC_ABSPATH}/ascii-parser-basetype.cc
  940. ${Tinyusdz_SRC_ABSPATH}/ascii-parser-timesamples.cc
  941. ${Tinyusdz_SRC_ABSPATH}/ascii-parser-timesamples-array.cc
  942. ${Tinyusdz_SRC_ABSPATH}/asset-resolution.cc
  943. ${Tinyusdz_SRC_ABSPATH}/composition.cc
  944. ${Tinyusdz_SRC_ABSPATH}/crate-format.cc
  945. ${Tinyusdz_SRC_ABSPATH}/crate-pprint.cc
  946. ${Tinyusdz_SRC_ABSPATH}/crate-reader.cc
  947. ${Tinyusdz_SRC_ABSPATH}/image-loader.cc
  948. ${Tinyusdz_SRC_ABSPATH}/image-util.cc
  949. ${Tinyusdz_SRC_ABSPATH}/image-writer.cc
  950. ${Tinyusdz_SRC_ABSPATH}/io-util.cc
  951. ${Tinyusdz_SRC_ABSPATH}/linear-algebra.cc
  952. ${Tinyusdz_SRC_ABSPATH}/path-util.cc
  953. ${Tinyusdz_SRC_ABSPATH}/pprinter.cc
  954. ${Tinyusdz_SRC_ABSPATH}/prim-composition.cc
  955. ${Tinyusdz_SRC_ABSPATH}/prim-reconstruct.cc
  956. ${Tinyusdz_SRC_ABSPATH}/prim-types.cc
  957. ${Tinyusdz_SRC_ABSPATH}/primvar.cc
  958. ${Tinyusdz_SRC_ABSPATH}/stage.cc
  959. ${Tinyusdz_SRC_ABSPATH}/str-util.cc
  960. ${Tinyusdz_SRC_ABSPATH}/tiny-format.cc
  961. ${Tinyusdz_SRC_ABSPATH}/tinyusdz.cc
  962. ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval.cc
  963. ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed.cc
  964. ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed-animatable.cc
  965. ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed-animatable-fallback.cc
  966. ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed-fallback.cc
  967. ${Tinyusdz_SRC_ABSPATH}/tydra/facial.cc
  968. ${Tinyusdz_SRC_ABSPATH}/tydra/prim-apply.cc
  969. ${Tinyusdz_SRC_ABSPATH}/tydra/render-data.cc
  970. ${Tinyusdz_SRC_ABSPATH}/tydra/scene-access.cc
  971. ${Tinyusdz_SRC_ABSPATH}/tydra/shader-network.cc
  972. ${Tinyusdz_SRC_ABSPATH}/usda-reader.cc
  973. ${Tinyusdz_SRC_ABSPATH}/usda-writer.cc
  974. ${Tinyusdz_SRC_ABSPATH}/usdc-reader.cc
  975. ${Tinyusdz_SRC_ABSPATH}/usdc-writer.cc
  976. ${Tinyusdz_SRC_ABSPATH}/usdGeom.cc
  977. ${Tinyusdz_SRC_ABSPATH}/usdLux.cc
  978. ${Tinyusdz_SRC_ABSPATH}/usdMtlx.cc
  979. ${Tinyusdz_SRC_ABSPATH}/usdShade.cc
  980. ${Tinyusdz_SRC_ABSPATH}/usdSkel.cc
  981. ${Tinyusdz_SRC_ABSPATH}/value-pprint.cc
  982. ${Tinyusdz_SRC_ABSPATH}/value-types.cc
  983. ${Tinyusdz_SRC_ABSPATH}/xform.cc
  984. )
  985. set(Tinyusdz_DEP_SOURCES
  986. ${Tinyusdz_SRC_ABSPATH}/external/fpng.cpp
  987. #${Tinyusdz_SRC_ABSPATH}/external/staticstruct.cc
  988. #${Tinyusdz_SRC_ABSPATH}/external/string_id/database.cpp
  989. #${Tinyusdz_SRC_ABSPATH}/external/string_id/error.cpp
  990. #${Tinyusdz_SRC_ABSPATH}/external/string_id/string_id.cpp
  991. #${Tinyusdz_SRC_ABSPATH}/external/tinyxml2/tinyxml2.cpp
  992. ${Tinyusdz_SRC_ABSPATH}/integerCoding.cpp
  993. ${Tinyusdz_SRC_ABSPATH}/lz4-compression.cc
  994. ${Tinyusdz_SRC_ABSPATH}/lz4/lz4.c
  995. )
  996. set(tinyusdz_INCLUDE_DIRS "${Tinyusdz_SRC_ABSPATH}")
  997. INCLUDE_DIRECTORIES(${tinyusdz_INCLUDE_DIRS})
  998. SOURCE_GROUP( Contrib\\Tinyusdz
  999. FILES
  1000. ${Tinyusdz_SRCS}
  1001. ${Tinyusdz_DEP_SOURCES}
  1002. )
  1003. MESSAGE(STATUS "tinyusdz enabled")
  1004. ELSE() # IF (ASSIMP_BUILD_USD_IMPORTER)
  1005. set(Tinyusdz_SRCS "")
  1006. set(Tinyusdz_DEP_SOURCES "")
  1007. MESSAGE(STATUS "tinyusdz disabled")
  1008. ENDIF() # IF (ASSIMP_BUILD_USD_IMPORTER)
  1009. # pugixml
  1010. IF(ASSIMP_HUNTER_ENABLED)
  1011. hunter_add_package(pugixml)
  1012. find_package(pugixml CONFIG REQUIRED)
  1013. ELSEIF(NOT TARGET pugixml::pugixml)
  1014. SET( Pugixml_SRCS
  1015. ../contrib/pugixml/src/pugiconfig.hpp
  1016. ../contrib/pugixml/src/pugixml.hpp
  1017. )
  1018. INCLUDE_DIRECTORIES("../contrib/pugixml/src")
  1019. SOURCE_GROUP( Contrib\\Pugixml FILES ${Pugixml_SRCS})
  1020. ENDIF()
  1021. # utf8
  1022. IF(ASSIMP_HUNTER_ENABLED)
  1023. hunter_add_package(utf8)
  1024. find_package(utf8cpp CONFIG REQUIRED)
  1025. ELSE()
  1026. INCLUDE_DIRECTORIES("../contrib/utf8cpp/source")
  1027. ENDIF()
  1028. # polyclipping
  1029. #IF(ASSIMP_HUNTER_ENABLED)
  1030. # hunter_add_package(polyclipping)
  1031. # find_package(polyclipping CONFIG REQUIRED)
  1032. #ELSE()
  1033. SET( Clipper_SRCS
  1034. ../contrib/clipper/clipper.hpp
  1035. ../contrib/clipper/clipper.cpp
  1036. )
  1037. SOURCE_GROUP( Contrib\\Clipper FILES ${Clipper_SRCS})
  1038. #ENDIF()
  1039. # poly2tri
  1040. #IF(ASSIMP_HUNTER_ENABLED)
  1041. # hunter_add_package(poly2tri)
  1042. # find_package(poly2tri CONFIG REQUIRED)
  1043. #ELSE()
  1044. SET( Poly2Tri_SRCS
  1045. ../contrib/poly2tri/poly2tri/common/shapes.cc
  1046. ../contrib/poly2tri/poly2tri/common/shapes.h
  1047. ../contrib/poly2tri/poly2tri/common/utils.h
  1048. ../contrib/poly2tri/poly2tri/sweep/advancing_front.h
  1049. ../contrib/poly2tri/poly2tri/sweep/advancing_front.cc
  1050. ../contrib/poly2tri/poly2tri/sweep/cdt.cc
  1051. ../contrib/poly2tri/poly2tri/sweep/cdt.h
  1052. ../contrib/poly2tri/poly2tri/sweep/sweep.cc
  1053. ../contrib/poly2tri/poly2tri/sweep/sweep.h
  1054. ../contrib/poly2tri/poly2tri/sweep/sweep_context.cc
  1055. ../contrib/poly2tri/poly2tri/sweep/sweep_context.h
  1056. )
  1057. SOURCE_GROUP( Contrib\\Poly2Tri FILES ${Poly2Tri_SRCS})
  1058. #ENDIF()
  1059. # minizip/unzip
  1060. IF(ASSIMP_HUNTER_ENABLED)
  1061. hunter_add_package(minizip)
  1062. find_package(minizip CONFIG REQUIRED)
  1063. ELSE()
  1064. SET( unzip_SRCS
  1065. ../contrib/unzip/crypt.h
  1066. ../contrib/unzip/ioapi.c
  1067. ../contrib/unzip/ioapi.h
  1068. ../contrib/unzip/unzip.c
  1069. ../contrib/unzip/unzip.h
  1070. )
  1071. SOURCE_GROUP(Contrib\\unzip FILES ${unzip_SRCS})
  1072. ENDIF()
  1073. # zip (https://github.com/kuba--/zip)
  1074. separate_arguments(ASSIMP_EXPORTERS_LIST UNIX_COMMAND ${ASSIMP_EXPORTERS_ENABLED})
  1075. IF(3MF IN_LIST ASSIMP_EXPORTERS_LIST)
  1076. IF(ASSIMP_HUNTER_ENABLED)
  1077. hunter_add_package(zip)
  1078. find_package(zip CONFIG REQUIRED)
  1079. ELSE()
  1080. SET( ziplib_SRCS
  1081. ../contrib/zip/src/miniz.h
  1082. ../contrib/zip/src/zip.c
  1083. ../contrib/zip/src/zip.h
  1084. )
  1085. # TODO if cmake required version has been updated to >3.12.0, collapse this to the second case only
  1086. if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
  1087. add_definitions(-DMINIZ_USE_UNALIGNED_LOADS_AND_STORES=0)
  1088. else()
  1089. add_compile_definitions(MINIZ_USE_UNALIGNED_LOADS_AND_STORES=0)
  1090. endif()
  1091. SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} )
  1092. ENDIF()
  1093. ENDIF()
  1094. # openddlparser
  1095. IF(ASSIMP_HUNTER_ENABLED)
  1096. hunter_add_package(openddlparser)
  1097. find_package(openddlparser CONFIG REQUIRED)
  1098. ELSE()
  1099. SET ( openddl_parser_SRCS
  1100. ../contrib/openddlparser/code/OpenDDLParser.cpp
  1101. ../contrib/openddlparser/code/DDLNode.cpp
  1102. ../contrib/openddlparser/code/OpenDDLCommon.cpp
  1103. ../contrib/openddlparser/code/OpenDDLExport.cpp
  1104. ../contrib/openddlparser/code/Value.cpp
  1105. ../contrib/openddlparser/code/OpenDDLStream.cpp
  1106. ../contrib/openddlparser/include/openddlparser/OpenDDLParser.h
  1107. ../contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h
  1108. ../contrib/openddlparser/include/openddlparser/OpenDDLCommon.h
  1109. ../contrib/openddlparser/include/openddlparser/OpenDDLExport.h
  1110. ../contrib/openddlparser/include/openddlparser/OpenDDLStream.h
  1111. ../contrib/openddlparser/include/openddlparser/DDLNode.h
  1112. ../contrib/openddlparser/include/openddlparser/Value.h
  1113. )
  1114. SOURCE_GROUP( Contrib\\openddl_parser FILES ${openddl_parser_SRCS})
  1115. ENDIF()
  1116. # Open3DGC
  1117. IF(ASSIMP_HUNTER_ENABLED)
  1118. # Nothing to do, not available in Hunter yet.
  1119. ELSE()
  1120. SET ( open3dgc_SRCS
  1121. ../contrib/Open3DGC/o3dgcAdjacencyInfo.h
  1122. ../contrib/Open3DGC/o3dgcArithmeticCodec.cpp
  1123. ../contrib/Open3DGC/o3dgcArithmeticCodec.h
  1124. ../contrib/Open3DGC/o3dgcBinaryStream.h
  1125. ../contrib/Open3DGC/o3dgcCommon.h
  1126. ../contrib/Open3DGC/o3dgcDVEncodeParams.h
  1127. ../contrib/Open3DGC/o3dgcDynamicVectorDecoder.cpp
  1128. ../contrib/Open3DGC/o3dgcDynamicVectorDecoder.h
  1129. ../contrib/Open3DGC/o3dgcDynamicVectorEncoder.cpp
  1130. ../contrib/Open3DGC/o3dgcDynamicVectorEncoder.h
  1131. ../contrib/Open3DGC/o3dgcDynamicVector.h
  1132. ../contrib/Open3DGC/o3dgcFIFO.h
  1133. ../contrib/Open3DGC/o3dgcIndexedFaceSet.h
  1134. ../contrib/Open3DGC/o3dgcIndexedFaceSet.inl
  1135. ../contrib/Open3DGC/o3dgcSC3DMCDecoder.h
  1136. ../contrib/Open3DGC/o3dgcSC3DMCDecoder.inl
  1137. ../contrib/Open3DGC/o3dgcSC3DMCEncodeParams.h
  1138. ../contrib/Open3DGC/o3dgcSC3DMCEncoder.h
  1139. ../contrib/Open3DGC/o3dgcSC3DMCEncoder.inl
  1140. ../contrib/Open3DGC/o3dgcTimer.h
  1141. ../contrib/Open3DGC/o3dgcTools.cpp
  1142. ../contrib/Open3DGC/o3dgcTriangleFans.cpp
  1143. ../contrib/Open3DGC/o3dgcTriangleFans.h
  1144. ../contrib/Open3DGC/o3dgcTriangleListDecoder.h
  1145. ../contrib/Open3DGC/o3dgcTriangleListDecoder.inl
  1146. ../contrib/Open3DGC/o3dgcTriangleListEncoder.h
  1147. ../contrib/Open3DGC/o3dgcTriangleListEncoder.inl
  1148. ../contrib/Open3DGC/o3dgcVector.h
  1149. ../contrib/Open3DGC/o3dgcVector.inl
  1150. )
  1151. SOURCE_GROUP( Contrib\\open3dgc FILES ${open3dgc_SRCS})
  1152. ENDIF()
  1153. # Check dependencies for glTF importer with Open3DGC-compression.
  1154. # RT-extensions is used in "contrib/Open3DGC/o3dgcTimer.h" for collecting statistics. Pointed file
  1155. # has implementation for different platforms: WIN32, __MACH__ and other ("else" block).
  1156. IF (NOT WIN32)
  1157. FIND_PACKAGE(RT QUIET)
  1158. ENDIF ()
  1159. IF (NOT ASSIMP_HUNTER_ENABLED AND (RT_FOUND OR WIN32))
  1160. SET( ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC 1 )
  1161. ADD_DEFINITIONS( -DASSIMP_IMPORTER_GLTF_USE_OPEN3DGC=1 )
  1162. ELSE ()
  1163. SET (open3dgc_SRCS "")
  1164. MESSAGE (INFO " Hunter enabled or RT-extension not found. glTF import/export will be built without Open3DGC-compression.")
  1165. #!TODO: off course is better to remove statistics timers from o3dgc codec. Or propose to choose what to use.
  1166. ENDIF ()
  1167. # RapidJSON
  1168. IF(ASSIMP_HUNTER_ENABLED)
  1169. hunter_add_package(RapidJSON)
  1170. find_package(RapidJSON CONFIG REQUIRED)
  1171. ELSE()
  1172. INCLUDE_DIRECTORIES("../contrib/rapidjson/include")
  1173. ADD_DEFINITIONS( -DRAPIDJSON_HAS_STDSTRING=1)
  1174. option( ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR "Suppress rapidjson warning on MSVC (NOTE: breaks android build)" ON )
  1175. if(ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR)
  1176. ADD_DEFINITIONS( -DRAPIDJSON_NOMEMBERITERATORCLASS )
  1177. endif()
  1178. ENDIF()
  1179. # stb
  1180. IF(ASSIMP_HUNTER_ENABLED)
  1181. hunter_add_package(stb)
  1182. find_package(stb CONFIG REQUIRED)
  1183. ELSE()
  1184. SET( stb_SRCS
  1185. ../contrib/stb/stb_image.h
  1186. )
  1187. INCLUDE_DIRECTORIES("../contrib")
  1188. SOURCE_GROUP( Contrib\\stb FILES ${stb_SRCS})
  1189. ENDIF()
  1190. # VC2010 fixes
  1191. if(MSVC10)
  1192. option( VC10_STDINT_FIX "Fix for VC10 Compiler regarding pstdint.h redefinition errors" OFF )
  1193. if( VC10_STDINT_FIX )
  1194. ADD_DEFINITIONS( -D_STDINT )
  1195. endif()
  1196. endif()
  1197. IF( MSVC OR "${CMAKE_CXX_SIMULATE_ID}" MATCHES "MSVC") # clang with MSVC ABI
  1198. ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
  1199. ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
  1200. endif ()
  1201. IF(NOT ASSIMP_HUNTER_ENABLED)
  1202. if (UNZIP_FOUND)
  1203. SET (unzip_compile_SRCS "")
  1204. else ()
  1205. SET (unzip_compile_SRCS ${unzip_SRCS})
  1206. INCLUDE_DIRECTORIES( "../contrib/unzip/" )
  1207. endif ()
  1208. ENDIF()
  1209. MESSAGE(STATUS "Enabled importer formats:${ASSIMP_IMPORTERS_ENABLED}")
  1210. MESSAGE(STATUS "Disabled importer formats:${ASSIMP_IMPORTERS_DISABLED}")
  1211. if (NOT ASSIMP_NO_EXPORT)
  1212. MESSAGE(STATUS "Enabled exporter formats:${ASSIMP_EXPORTERS_ENABLED}")
  1213. MESSAGE(STATUS "Disabled exporter formats:${ASSIMP_EXPORTERS_DISABLED}")
  1214. endif()
  1215. SOURCE_GROUP( include\\assimp FILES ${PUBLIC_HEADERS} )
  1216. SET( assimp_src
  1217. # Assimp Files
  1218. ${Core_SRCS}
  1219. ${CApi_SRCS}
  1220. ${Common_SRCS}
  1221. ${Geometry_SRCS}
  1222. ${Logging_SRCS}
  1223. ${Exporter_SRCS}
  1224. ${PostProcessing_SRCS}
  1225. ${MaterialSystem_SRCS}
  1226. ${STEPParser_SRCS}
  1227. ${glTFCommon_src}
  1228. # ${Step_SRCS} check if we need a different approach
  1229. # Model Support
  1230. ${ASSIMP_LOADER_SRCS}
  1231. ${ASSIMP_EXPORTER_SRCS}
  1232. # Third-party libraries
  1233. ${unzip_compile_SRCS}
  1234. ${Poly2Tri_SRCS}
  1235. ${Clipper_SRCS}
  1236. ${openddl_parser_SRCS}
  1237. ${open3dgc_SRCS}
  1238. ${ziplib_SRCS}
  1239. ${Meshlab_SRCS}
  1240. ${Tinyusdz_SRCS}
  1241. ${Tinyusdz_DEP_SOURCES}
  1242. ${Pugixml_SRCS}
  1243. ${stb_SRCS}
  1244. # Necessary to show the headers in the project when using the VC++ generator:
  1245. ${PUBLIC_HEADERS}
  1246. ${COMPILER_HEADERS}
  1247. )
  1248. ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD )
  1249. IF(NOT ASSIMP_HUNTER_ENABLED)
  1250. INCLUDE_DIRECTORIES(
  1251. ${IRRXML_INCLUDE_DIR}
  1252. ../contrib/openddlparser/include
  1253. )
  1254. ENDIF()
  1255. IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
  1256. SET( assimp_src ${assimp_src} ${C4D_SRCS})
  1257. INCLUDE_DIRECTORIES(${C4D_INCLUDES})
  1258. ENDIF ()
  1259. IF (ASSIMP_BUILD_DRACO)
  1260. INCLUDE_DIRECTORIES(${draco_INCLUDE_DIRS})
  1261. ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO )
  1262. ENDIF()
  1263. ADD_LIBRARY( assimp ${assimp_src} )
  1264. ADD_LIBRARY(assimp::assimp ALIAS assimp)
  1265. # Add or remove dllexport tags depending on the library type.
  1266. IF (BUILD_SHARED_LIBS)
  1267. TARGET_COMPILE_DEFINITIONS(assimp PRIVATE ASSIMP_BUILD_DLL_EXPORT)
  1268. ELSE ()
  1269. TARGET_COMPILE_DEFINITIONS(assimp PRIVATE OPENDDL_STATIC_LIBARY P2T_STATIC_EXPORTS)
  1270. ENDIF ()
  1271. TARGET_USE_COMMON_OUTPUT_DIRECTORY(assimp)
  1272. add_compile_options(
  1273. "$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb>"
  1274. )
  1275. IF (ASSIMP_WARNINGS_AS_ERRORS)
  1276. MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)")
  1277. IF (MSVC)
  1278. IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) # clang-cl
  1279. TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror
  1280. -Wno-microsoft-enum-value
  1281. -Wno-switch-enum
  1282. -Wno-covered-switch-default
  1283. -Wno-reserved-identifier
  1284. -Wno-c++98-compat-pedantic
  1285. -Wno-c++98-compat
  1286. -Wno-documentation
  1287. -Wno-documentation-unknown-command
  1288. -Wno-deprecated-dynamic-exception-spec
  1289. -Wno-undef
  1290. -Wno-suggest-destructor-override
  1291. -Wno-suggest-override
  1292. -Wno-zero-as-null-pointer-constant
  1293. -Wno-global-constructors
  1294. -Wno-exit-time-destructors
  1295. -Wno-extra-semi-stmt
  1296. -Wno-missing-prototypes
  1297. -Wno-old-style-cast
  1298. -Wno-cast-align
  1299. -Wno-cast-qual
  1300. -Wno-float-equal
  1301. -Wno-implicit-int-float-conversion
  1302. -Wno-sign-conversion
  1303. -Wno-implicit-float-conversion
  1304. -Wno-implicit-int-conversion
  1305. -Wno-float-conversion
  1306. -Wno-double-promotion
  1307. -Wno-unused-macros
  1308. -Wno-disabled-macro-expansion
  1309. -Wno-shadow-field
  1310. -Wno-shadow
  1311. -Wno-language-extension-token
  1312. -Wno-header-hygiene
  1313. -Wno-tautological-value-range-compare
  1314. -Wno-tautological-type-limit-compare
  1315. -Wno-missing-variable-declarations
  1316. -Wno-extra-semi
  1317. -Wno-nonportable-system-include-path
  1318. -Wno-undefined-reinterpret-cast
  1319. -Wno-shift-sign-overflow
  1320. -Wno-deprecated
  1321. -Wno-format-nonliteral
  1322. -Wno-comma
  1323. -Wno-implicit-fallthrough
  1324. -Wno-unused-template
  1325. -Wno-undefined-func-template
  1326. -Wno-declaration-after-statement
  1327. -Wno-deprecated-declarations
  1328. -Wno-deprecated-non-prototype
  1329. )
  1330. ELSE()
  1331. TARGET_COMPILE_OPTIONS(assimp PRIVATE /W4 /WX)
  1332. ENDIF()
  1333. ELSE()
  1334. TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror)
  1335. ENDIF()
  1336. ENDIF()
  1337. # adds C_FLAGS required to compile zip.c on old GCC 4.x compiler
  1338. TARGET_COMPILE_FEATURES(assimp PRIVATE c_std_99)
  1339. TARGET_INCLUDE_DIRECTORIES ( assimp PUBLIC
  1340. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
  1341. $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>
  1342. $<INSTALL_INTERFACE:${ASSIMP_INCLUDE_INSTALL_DIR}>
  1343. )
  1344. IF(ASSIMP_HUNTER_ENABLED)
  1345. TARGET_LINK_LIBRARIES(assimp
  1346. PUBLIC
  1347. openddlparser::openddl_parser
  1348. minizip::minizip
  1349. ZLIB::zlib
  1350. RapidJSON::rapidjson
  1351. utf8cpp
  1352. pugixml
  1353. stb::stb
  1354. )
  1355. if(TARGET zip::zip)
  1356. target_link_libraries(assimp PUBLIC zip::zip)
  1357. endif()
  1358. if (ASSIMP_BUILD_DRACO)
  1359. target_link_libraries(assimp PRIVATE ${draco_LIBRARIES})
  1360. endif()
  1361. ELSE()
  1362. TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES})
  1363. if (ASSIMP_BUILD_DRACO)
  1364. target_link_libraries(assimp ${draco_LIBRARIES})
  1365. endif()
  1366. if(TARGET pugixml::pugixml)
  1367. target_link_libraries(assimp pugixml::pugixml)
  1368. endif()
  1369. ENDIF()
  1370. if(ASSIMP_ANDROID_JNIIOSYSTEM)
  1371. set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI)
  1372. add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/ ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/)
  1373. target_link_libraries(assimp android_jniiosystem)
  1374. endif()
  1375. IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
  1376. TARGET_LINK_LIBRARIES(assimp optimized ${C4D_RELEASE_LIBRARIES})
  1377. TARGET_LINK_LIBRARIES(assimp debug ${C4D_DEBUG_LIBRARIES})
  1378. TARGET_LINK_LIBRARIES(assimp ${C4D_EXTRA_LIBRARIES})
  1379. ENDIF ()
  1380. if( MSVC )
  1381. # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix
  1382. # CMake 3.12 added a variable for this
  1383. if(MSVC_TOOLSET_VERSION)
  1384. set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}")
  1385. else()
  1386. if( MSVC70 OR MSVC71 )
  1387. set(MSVC_PREFIX "vc70")
  1388. elseif( MSVC80 )
  1389. set(MSVC_PREFIX "vc80")
  1390. elseif( MSVC90 )
  1391. set(MSVC_PREFIX "vc90")
  1392. elseif( MSVC10 )
  1393. set(MSVC_PREFIX "vc100")
  1394. elseif( MSVC11 )
  1395. set(MSVC_PREFIX "vc110")
  1396. elseif( MSVC12 )
  1397. set(MSVC_PREFIX "vc120")
  1398. elseif( MSVC_VERSION LESS 1910)
  1399. set(MSVC_PREFIX "vc140")
  1400. elseif( MSVC_VERSION LESS 1920)
  1401. set(MSVC_PREFIX "vc141")
  1402. elseif( MSVC_VERSION LESS 1930)
  1403. set(MSVC_PREFIX "vc142")
  1404. else()
  1405. MESSAGE(WARNING "unknown msvc version ${MSVC_VERSION}")
  1406. set(MSVC_PREFIX "vc150")
  1407. endif()
  1408. endif()
  1409. set(LIBRARY_SUFFIX "${ASSIMP_LIBRARY_SUFFIX}-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library")
  1410. endif()
  1411. if (MINGW)
  1412. set(LIBRARY_SUFFIX "-${ASSIMP_SOVERSION}" CACHE STRING "the suffix for the assimp MinGW shared library")
  1413. SET_TARGET_PROPERTIES( assimp PROPERTIES
  1414. ARCHIVE_OUTPUT_NAME assimp
  1415. )
  1416. if (NOT BUILD_SHARED_LIBS)
  1417. TARGET_LINK_LIBRARIES ( assimp -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lwinpthread ) # winpthread is for libminizip.
  1418. endif ()
  1419. endif()
  1420. if (${CMAKE_SYSTEM_NAME} MATCHES "WindowsStore")
  1421. target_compile_definitions(assimp PUBLIC WindowsStore)
  1422. TARGET_LINK_LIBRARIES(assimp advapi32)
  1423. endif()
  1424. SET_TARGET_PROPERTIES( assimp PROPERTIES
  1425. VERSION ${ASSIMP_VERSION}
  1426. SOVERSION ${ASSIMP_SOVERSION} # use full version
  1427. OUTPUT_NAME assimp${LIBRARY_SUFFIX}
  1428. )
  1429. if (APPLE)
  1430. if (ASSIMP_BUILD_FRAMEWORK)
  1431. SET_TARGET_PROPERTIES( assimp PROPERTIES
  1432. FRAMEWORK TRUE
  1433. FRAMEWORK_VERSION C
  1434. MACOSX_FRAMEWORK_IDENTIFIER net.sf.assimp
  1435. PUBLIC_HEADER "${PUBLIC_HEADERS}"
  1436. )
  1437. # PUBLIC_HEADER option does not support directory structure creation
  1438. # add ./Compiler/*.h to assimp.framework via copy command
  1439. ADD_CUSTOM_COMMAND(TARGET assimp POST_BUILD
  1440. COMMAND "${CMAKE_COMMAND}" -E copy_directory
  1441. "${HEADER_PATH}/Compiler"
  1442. assimp.framework/Headers/Compiler
  1443. COMMENT "Copying public ./Compiler/ header files to framework bundle's Headers/Compiler/")
  1444. ENDIF()
  1445. ENDIF()
  1446. # Build against external unzip, or add ../contrib/unzip so
  1447. # assimp can #include "unzip.h"
  1448. IF(NOT ASSIMP_HUNTER_ENABLED)
  1449. if (UNZIP_FOUND)
  1450. INCLUDE_DIRECTORIES(${UNZIP_INCLUDE_DIRS})
  1451. # TODO if cmake required version has been updated to >3.12.0, collapse this to the second case only
  1452. if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
  1453. TARGET_LINK_LIBRARIES(assimp ${UNZIP_LIBRARIES})
  1454. else()
  1455. TARGET_LINK_LIBRARIES(assimp ${UNZIP_LINK_LIBRARIES})
  1456. endif()
  1457. else ()
  1458. INCLUDE_DIRECTORIES("../")
  1459. endif ()
  1460. ENDIF()
  1461. # Add RT-extension library for glTF importer with Open3DGC-compression.
  1462. IF (RT_FOUND AND ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC)
  1463. TARGET_LINK_LIBRARIES(assimp rt)
  1464. ENDIF ()
  1465. IF(ASSIMP_INSTALL)
  1466. INSTALL( TARGETS assimp
  1467. EXPORT "${TARGETS_EXPORT_NAME}"
  1468. LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}
  1469. ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP-DEV_COMPONENT}
  1470. RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}
  1471. FRAMEWORK DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}
  1472. INCLUDES DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}
  1473. )
  1474. INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp COMPONENT assimp-dev)
  1475. INSTALL( FILES ${COMPILER_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/Compiler COMPONENT assimp-dev)
  1476. ENDIF()
  1477. if (ASSIMP_ANDROID_JNIIOSYSTEM AND ASSIMP_INSTALL)
  1478. INSTALL(FILES ${HEADER_PATH}/${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/AndroidJNIIOSystem.h
  1479. DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}
  1480. COMPONENT assimp-dev)
  1481. ENDIF()
  1482. if(MSVC AND ASSIMP_INSTALL_PDB)
  1483. # When only the static library is built, these properties must
  1484. # be set to ensure the static lib .pdb is staged for installation.
  1485. IF(NOT BUILD_SHARED_LIBS)
  1486. SET_TARGET_PROPERTIES( assimp PROPERTIES
  1487. COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  1488. COMPILE_PDB_NAME assimp${LIBRARY_SUFFIX}
  1489. COMPILE_PDB_NAME_DEBUG assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}
  1490. )
  1491. IF(is_multi_config)
  1492. install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
  1493. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  1494. CONFIGURATIONS Debug
  1495. )
  1496. install(FILES ${Assimp_BINARY_DIR}/code/RelWithDebInfo/assimp${LIBRARY_SUFFIX}.pdb
  1497. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  1498. CONFIGURATIONS RelWithDebInfo
  1499. )
  1500. ELSE()
  1501. install(FILES ${Assimp_BINARY_DIR}/code/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
  1502. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  1503. CONFIGURATIONS Debug
  1504. )
  1505. install(FILES ${Assimp_BINARY_DIR}/code/assimp${LIBRARY_SUFFIX}.pdb
  1506. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  1507. CONFIGURATIONS RelWithDebInfo
  1508. )
  1509. ENDIF()
  1510. ELSE()
  1511. install(FILES $<TARGET_PDB_FILE:assimp>
  1512. DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
  1513. )
  1514. ENDIF()
  1515. ENDIF ()
  1516. if (ASSIMP_COVERALLS)
  1517. include(Coveralls)
  1518. set(COVERAGE_SRCS ${assimp_src} ${TEST_SRCS} )
  1519. # Create the coveralls target.
  1520. coveralls_setup(
  1521. "${COVERAGE_SRCS}" # The source files.
  1522. ON # If we should upload.
  1523. "${PROJECT_SOURCE_DIR}/cmake-modules/") # (Optional) Alternate project cmake module path.
  1524. ENDIF()