12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685 |
- # Open Asset Import Library (assimp)
- # ----------------------------------------------------------------------
- # Copyright (c) 2006-2025, assimp team
- #
- # All rights reserved.
- #
- # Redistribution and use of this software in source and binary forms,
- # with or without modification, are permitted provided that the
- # following conditions are met:
- #
- # * Redistributions of source code must retain the above
- # copyright notice, this list of conditions and the
- # following disclaimer.
- #
- # * Redistributions in binary form must reproduce the above
- # copyright notice, this list of conditions and the
- # following disclaimer in the documentation and/or other
- # materials provided with the distribution.
- #
- # * Neither the name of the assimp team, nor the names of its
- # contributors may be used to endorse or promote products
- # derived from this software without specific prior
- # written permission of the assimp team.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
- #----------------------------------------------------------------------
- # Listing and grouping of all the source files.
- # 1) Set the file lists for each component
- # 2) Create a Source Group for each component, for IDE project orginization
- # 3) Add libassimp using the file lists (eliminates duplication of file names between
- # source groups and library command)
- #
- cmake_minimum_required( VERSION 3.22 )
- SET( HEADER_PATH ../include/assimp )
- if(NOT ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)
- message(WARNING "Requesting Android JNI I/O-System in non-Android toolchain. Resetting ASSIMP_ANDROID_JNIIOSYSTEM to OFF.")
- set(ASSIMP_ANDROID_JNIIOSYSTEM OFF)
- endif()
- SET( COMPILER_HEADERS
- ${HEADER_PATH}/Compiler/pushpack1.h
- ${HEADER_PATH}/Compiler/poppack1.h
- ${HEADER_PATH}/Compiler/pstdint.h
- )
- SOURCE_GROUP( Compiler FILES ${COMPILER_HEADERS})
- SET( PUBLIC_HEADERS
- ${HEADER_PATH}/anim.h
- ${HEADER_PATH}/aabb.h
- ${HEADER_PATH}/ai_assert.h
- ${HEADER_PATH}/camera.h
- ${HEADER_PATH}/color4.h
- ${HEADER_PATH}/color4.inl
- ${CMAKE_CURRENT_BINARY_DIR}/../include/assimp/config.h
- ${HEADER_PATH}/ColladaMetaData.h
- ${HEADER_PATH}/commonMetaData.h
- ${HEADER_PATH}/defs.h
- ${HEADER_PATH}/cfileio.h
- ${HEADER_PATH}/light.h
- ${HEADER_PATH}/material.h
- ${HEADER_PATH}/material.inl
- ${HEADER_PATH}/matrix3x3.h
- ${HEADER_PATH}/matrix3x3.inl
- ${HEADER_PATH}/matrix4x4.h
- ${HEADER_PATH}/matrix4x4.inl
- ${HEADER_PATH}/mesh.h
- ${HEADER_PATH}/ObjMaterial.h
- ${HEADER_PATH}/pbrmaterial.h
- ${HEADER_PATH}/GltfMaterial.h
- ${HEADER_PATH}/postprocess.h
- ${HEADER_PATH}/quaternion.h
- ${HEADER_PATH}/quaternion.inl
- ${HEADER_PATH}/scene.h
- ${HEADER_PATH}/metadata.h
- ${HEADER_PATH}/texture.h
- ${HEADER_PATH}/types.h
- ${HEADER_PATH}/vector2.h
- ${HEADER_PATH}/vector2.inl
- ${HEADER_PATH}/vector3.h
- ${HEADER_PATH}/vector3.inl
- ${HEADER_PATH}/version.h
- ${HEADER_PATH}/cimport.h
- ${HEADER_PATH}/AssertHandler.h
- ${HEADER_PATH}/importerdesc.h
- ${HEADER_PATH}/Importer.hpp
- ${HEADER_PATH}/DefaultLogger.hpp
- ${HEADER_PATH}/ProgressHandler.hpp
- ${HEADER_PATH}/IOStream.hpp
- ${HEADER_PATH}/IOSystem.hpp
- ${HEADER_PATH}/Logger.hpp
- ${HEADER_PATH}/LogStream.hpp
- ${HEADER_PATH}/NullLogger.hpp
- ${HEADER_PATH}/cexport.h
- ${HEADER_PATH}/Exporter.hpp
- ${HEADER_PATH}/DefaultIOStream.h
- ${HEADER_PATH}/DefaultIOSystem.h
- ${HEADER_PATH}/ZipArchiveIOSystem.h
- ${HEADER_PATH}/SceneCombiner.h
- ${HEADER_PATH}/fast_atof.h
- ${HEADER_PATH}/qnan.h
- ${HEADER_PATH}/BaseImporter.h
- ${HEADER_PATH}/Hash.h
- ${HEADER_PATH}/MemoryIOWrapper.h
- ${HEADER_PATH}/ParsingUtils.h
- ${HEADER_PATH}/StreamReader.h
- ${HEADER_PATH}/StreamWriter.h
- ${HEADER_PATH}/StringComparison.h
- ${HEADER_PATH}/StringUtils.h
- ${HEADER_PATH}/SGSpatialSort.h
- ${HEADER_PATH}/GenericProperty.h
- ${HEADER_PATH}/SpatialSort.h
- ${HEADER_PATH}/SkeletonMeshBuilder.h
- ${HEADER_PATH}/SmallVector.h
- ${HEADER_PATH}/SmoothingGroups.h
- ${HEADER_PATH}/SmoothingGroups.inl
- ${HEADER_PATH}/StandardShapes.h
- ${HEADER_PATH}/RemoveComments.h
- ${HEADER_PATH}/Subdivision.h
- ${HEADER_PATH}/Vertex.h
- ${HEADER_PATH}/LineSplitter.h
- ${HEADER_PATH}/TinyFormatter.h
- ${HEADER_PATH}/Profiler.h
- ${HEADER_PATH}/LogAux.h
- ${HEADER_PATH}/Bitmap.h
- ${HEADER_PATH}/XMLTools.h
- ${HEADER_PATH}/IOStreamBuffer.h
- ${HEADER_PATH}/CreateAnimMesh.h
- ${HEADER_PATH}/XmlParser.h
- ${HEADER_PATH}/BlobIOSystem.h
- ${HEADER_PATH}/MathFunctions.h
- ${HEADER_PATH}/Exceptional.h
- ${HEADER_PATH}/ByteSwapper.h
- ${HEADER_PATH}/Base64.hpp
- )
- SET( Core_SRCS
- Common/Assimp.cpp
- )
- IF(MSVC OR (MINGW AND BUILD_SHARED_LIBS))
- list(APPEND Core_SRCS "res/assimp.rc")
- ENDIF()
- SET( Logging_SRCS
- ${HEADER_PATH}/DefaultLogger.hpp
- ${HEADER_PATH}/LogStream.hpp
- ${HEADER_PATH}/Logger.hpp
- ${HEADER_PATH}/NullLogger.hpp
- Common/Win32DebugLogStream.h
- Common/DefaultLogger.cpp
- Common/FileLogStream.h
- Common/StdOStreamLogStream.h
- )
- SOURCE_GROUP(Logging FILES ${Logging_SRCS})
- SET( Common_SRCS
- Common/StbCommon.h
- Common/Compression.cpp
- Common/Compression.h
- Common/BaseImporter.cpp
- Common/BaseProcess.cpp
- Common/BaseProcess.h
- Common/Importer.h
- Common/ScenePrivate.h
- Common/PostStepRegistry.cpp
- Common/ImporterRegistry.cpp
- Common/DefaultProgressHandler.h
- Common/DefaultIOStream.cpp
- Common/IOSystem.cpp
- Common/DefaultIOSystem.cpp
- Common/ZipArchiveIOSystem.cpp
- Common/PolyTools.h
- Common/Maybe.h
- Common/Importer.cpp
- Common/IFF.h
- Common/SGSpatialSort.cpp
- Common/VertexTriangleAdjacency.cpp
- Common/VertexTriangleAdjacency.h
- Common/SpatialSort.cpp
- Common/SceneCombiner.cpp
- Common/ScenePreprocessor.cpp
- Common/ScenePreprocessor.h
- Common/SkeletonMeshBuilder.cpp
- Common/StackAllocator.h
- Common/StackAllocator.inl
- Common/StandardShapes.cpp
- Common/TargetAnimation.cpp
- Common/TargetAnimation.h
- Common/RemoveComments.cpp
- Common/Subdivision.cpp
- Common/scene.cpp
- Common/Bitmap.cpp
- Common/Version.cpp
- Common/CreateAnimMesh.cpp
- Common/simd.h
- Common/simd.cpp
- Common/material.cpp
- Common/AssertHandler.cpp
- Common/Exceptional.cpp
- Common/Base64.cpp
- )
- SOURCE_GROUP(Common FILES ${Common_SRCS})
- SET( CApi_SRCS
- CApi/CInterfaceIOWrapper.cpp
- CApi/CInterfaceIOWrapper.h
- )
- SOURCE_GROUP(CApi FILES ${CApi_SRCS})
- SET(Geometry_SRCS
- Geometry/GeometryUtils.h
- Geometry/GeometryUtils.cpp
- )
- SOURCE_GROUP(Geometry FILES ${Geometry_SRCS})
- SET( STEPParser_SRCS
- AssetLib/STEPParser/STEPFileReader.h
- AssetLib/STEPParser/STEPFileReader.cpp
- AssetLib/STEPParser/STEPFileEncoding.cpp
- AssetLib/STEPParser/STEPFileEncoding.h
- )
- SOURCE_GROUP(STEPParser FILES ${STEPParser_SRCS})
- IF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER )
- SET( C4D_SRCS
- AssetLib/C4D/C4DImporter.cpp
- AssetLib/C4D/C4DImporter.h
- )
- SOURCE_GROUP( C4D FILES ${C4D_SRCS})
- ENDIF ()
- # if this variable is set to TRUE, the user can manually disable importers by setting
- # ASSIMP_BUILD_XXX_IMPORTER to FALSE for each importer
- # if this variable is set to FALSE, the user can manually enable importers by setting
- # ASSIMP_BUILD_XXX_IMPORTER to TRUE for each importer
- OPTION(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_IMPORTER values" TRUE)
- # macro to add the CMake Option ADD_ASSIMP_IMPORTER_<name> which enables compile of loader
- # this way selective loaders can be compiled (reduces filesize + compile time)
- MACRO(ADD_ASSIMP_IMPORTER name)
- IF (ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT)
- set(ASSIMP_IMPORTER_ENABLED TRUE)
- IF (DEFINED ASSIMP_BUILD_${name}_IMPORTER AND NOT ASSIMP_BUILD_${name}_IMPORTER)
- set(ASSIMP_IMPORTER_ENABLED FALSE)
- ENDIF ()
- ELSE ()
- set(ASSIMP_IMPORTER_ENABLED ${ASSIMP_BUILD_${name}_IMPORTER})
- ENDIF ()
- IF (ASSIMP_IMPORTER_ENABLED)
- LIST(APPEND ASSIMP_LOADER_SRCS ${ARGN})
- SET(ASSIMP_IMPORTERS_ENABLED "${ASSIMP_IMPORTERS_ENABLED} ${name}")
- SOURCE_GROUP(AssetLib\\${name} FILES ${ARGN})
- ELSE()
- SET(${name}_SRC "")
- SET(ASSIMP_IMPORTERS_DISABLED "${ASSIMP_IMPORTERS_DISABLED} ${name}")
- add_definitions(-DASSIMP_BUILD_NO_${name}_IMPORTER)
- ENDIF()
- ENDMACRO()
- if (NOT ASSIMP_NO_EXPORT)
- # if this variable is set to TRUE, the user can manually disable exporters by setting
- # ASSIMP_BUILD_XXX_EXPORTER to FALSE for each exporter
- # if this variable is set to FALSE, the user can manually enable exporters by setting
- # ASSIMP_BUILD_XXX_EXPORTER to TRUE for each exporter
- OPTION(ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT "default value of all ASSIMP_BUILD_XXX_EXPORTER values" TRUE)
- # macro to add the CMake Option ADD_ASSIMP_EXPORTER_<name> which enables compilation of an exporter
- # this way selective exporters can be compiled (reduces filesize + compile time)
- MACRO(ADD_ASSIMP_EXPORTER name)
- IF (ASSIMP_NO_EXPORT)
- set(ASSIMP_EXPORTER_ENABLED FALSE)
- ELSEIF (ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT)
- set(ASSIMP_EXPORTER_ENABLED TRUE)
- IF (DEFINED ASSIMP_BUILD_${name}_EXPORTER AND NOT ASSIMP_BUILD_${name}_EXPORTER)
- set(ASSIMP_EXPORTER_ENABLED FALSE)
- ENDIF ()
- ELSE ()
- set(ASSIMP_EXPORTER_ENABLED ${ASSIMP_BUILD_${name}_EXPORTER})
- ENDIF ()
- IF (ASSIMP_EXPORTER_ENABLED)
- SET(ASSIMP_EXPORTERS_ENABLED "${ASSIMP_EXPORTERS_ENABLED} ${name}")
- LIST(APPEND ASSIMP_EXPORTER_SRCS ${ARGN})
- SOURCE_GROUP(AssetLib\\${name} FILES ${ARGN})
- ELSE()
- SET(ASSIMP_EXPORTERS_DISABLED "${ASSIMP_EXPORTERS_DISABLED} ${name}")
- add_definitions(-DASSIMP_BUILD_NO_${name}_EXPORTER)
- ENDIF()
- ENDMACRO()
- endif()
- SET(ASSIMP_LOADER_SRCS "")
- SET(ASSIMP_IMPORTERS_ENABLED "") # list of enabled importers
- SET(ASSIMP_IMPORTERS_DISABLED "") # disabled importers list (used to print)
- SET(ASSIMP_EXPORTER_SRCS "")
- SET(ASSIMP_EXPORTERS_ENABLED "") # list of enabled exporters
- SET(ASSIMP_EXPORTERS_DISABLED "") # disabled exporters list (used to print)
- ADD_ASSIMP_IMPORTER( AMF
- AssetLib/AMF/AMFImporter.hpp
- AssetLib/AMF/AMFImporter_Node.hpp
- AssetLib/AMF/AMFImporter.cpp
- AssetLib/AMF/AMFImporter_Geometry.cpp
- AssetLib/AMF/AMFImporter_Material.cpp
- AssetLib/AMF/AMFImporter_Postprocess.cpp
- )
- ADD_ASSIMP_IMPORTER( 3DS
- AssetLib/3DS/3DSConverter.cpp
- AssetLib/3DS/3DSHelper.h
- AssetLib/3DS/3DSLoader.cpp
- AssetLib/3DS/3DSLoader.h
- )
- ADD_ASSIMP_IMPORTER( AC
- AssetLib/AC/ACLoader.cpp
- AssetLib/AC/ACLoader.h
- )
- ADD_ASSIMP_IMPORTER( ASE
- AssetLib/ASE/ASELoader.cpp
- AssetLib/ASE/ASELoader.h
- AssetLib/ASE/ASEParser.cpp
- AssetLib/ASE/ASEParser.h
- )
- ADD_ASSIMP_IMPORTER( ASSBIN
- AssetLib/Assbin/AssbinLoader.h
- AssetLib/Assbin/AssbinLoader.cpp
- )
- ADD_ASSIMP_IMPORTER( B3D
- AssetLib/B3D/B3DImporter.cpp
- AssetLib/B3D/B3DImporter.h
- )
- ADD_ASSIMP_IMPORTER( BVH
- AssetLib/BVH/BVHLoader.cpp
- AssetLib/BVH/BVHLoader.h
- )
- ADD_ASSIMP_IMPORTER( COLLADA
- AssetLib/Collada/ColladaHelper.cpp
- AssetLib/Collada/ColladaHelper.h
- AssetLib/Collada/ColladaLoader.cpp
- AssetLib/Collada/ColladaLoader.h
- AssetLib/Collada/ColladaParser.cpp
- AssetLib/Collada/ColladaParser.h
- )
- ADD_ASSIMP_IMPORTER( DXF
- AssetLib/DXF/DXFLoader.cpp
- AssetLib/DXF/DXFLoader.h
- AssetLib/DXF/DXFHelper.h
- )
- ADD_ASSIMP_IMPORTER( CSM
- AssetLib/CSM/CSMLoader.cpp
- AssetLib/CSM/CSMLoader.h
- )
- ADD_ASSIMP_IMPORTER( HMP
- AssetLib/HMP/HMPFileData.h
- AssetLib/HMP/HMPLoader.cpp
- AssetLib/HMP/HMPLoader.h
- AssetLib/HMP/HalfLifeFileData.h
- )
- ADD_ASSIMP_IMPORTER( IRRMESH
- AssetLib/Irr/IRRMeshLoader.cpp
- AssetLib/Irr/IRRMeshLoader.h
- AssetLib/Irr/IRRShared.cpp
- AssetLib/Irr/IRRShared.h
- )
- ADD_ASSIMP_IMPORTER( IQM
- AssetLib/IQM/IQMImporter.cpp
- AssetLib/IQM/iqm.h
- AssetLib/IQM/IQMImporter.h
- )
- ADD_ASSIMP_IMPORTER( IRR
- AssetLib/Irr/IRRLoader.cpp
- AssetLib/Irr/IRRLoader.h
- AssetLib/Irr/IRRShared.cpp
- AssetLib/Irr/IRRShared.h
- )
- ADD_ASSIMP_IMPORTER( LWO
- AssetLib/LWO/LWOAnimation.cpp
- AssetLib/LWO/LWOAnimation.h
- AssetLib/LWO/LWOBLoader.cpp
- AssetLib/LWO/LWOFileData.h
- AssetLib/LWO/LWOLoader.cpp
- AssetLib/LWO/LWOLoader.h
- AssetLib/LWO/LWOMaterial.cpp
- )
- ADD_ASSIMP_IMPORTER( LWS
- AssetLib/LWS/LWSLoader.cpp
- AssetLib/LWS/LWSLoader.h
- )
- if (ASSIMP_BUILD_M3D_IMPORTER)
- ADD_ASSIMP_IMPORTER( M3D
- AssetLib/M3D/M3DImporter.cpp
- AssetLib/M3D/M3DWrapper.cpp
- )
- endif () # if (ASSIMP_BUILD_M3D_IMPORTER)
- ADD_ASSIMP_IMPORTER( MD2
- AssetLib/MD2/MD2FileData.h
- AssetLib/MD2/MD2Loader.cpp
- AssetLib/MD2/MD2Loader.h
- AssetLib/MD2/MD2NormalTable.h
- )
- ADD_ASSIMP_IMPORTER( MD3
- AssetLib/MD3/MD3FileData.h
- AssetLib/MD3/MD3Loader.cpp
- AssetLib/MD3/MD3Loader.h
- )
- ADD_ASSIMP_IMPORTER( MD5
- AssetLib/MD5/MD5Loader.cpp
- AssetLib/MD5/MD5Loader.h
- AssetLib/MD5/MD5Parser.cpp
- AssetLib/MD5/MD5Parser.h
- )
- ADD_ASSIMP_IMPORTER( MDC
- AssetLib/MDC/MDCFileData.h
- AssetLib/MDC/MDCLoader.cpp
- AssetLib/MDC/MDCLoader.h
- AssetLib/MDC/MDCNormalTable.h
- )
- ADD_ASSIMP_IMPORTER( MDL
- AssetLib/MDL/MDLDefaultColorMap.h
- AssetLib/MDL/MDLFileData.h
- AssetLib/MDL/MDLLoader.cpp
- AssetLib/MDL/MDLLoader.h
- AssetLib/MDL/MDLMaterialLoader.cpp
- AssetLib/MDL/HalfLife/HalfLifeMDLBaseHeader.h
- AssetLib/MDL/HalfLife/HL1FileData.h
- AssetLib/MDL/HalfLife/HL1MDLLoader.cpp
- AssetLib/MDL/HalfLife/HL1MDLLoader.h
- AssetLib/MDL/HalfLife/HL1ImportDefinitions.h
- AssetLib/MDL/HalfLife/HL1ImportSettings.h
- AssetLib/MDL/HalfLife/HL1MeshTrivert.h
- AssetLib/MDL/HalfLife/LogFunctions.h
- AssetLib/MDL/HalfLife/UniqueNameGenerator.cpp
- AssetLib/MDL/HalfLife/UniqueNameGenerator.h
- )
- IF(((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND NOT MINGW AND NOT HAIKU) AND CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 13)
- message(STATUS "GCC13 detected disabling \"-Warray-bounds and -Wstringop-overflow\" for"
- " AssetLib/MDL/MDLLoader.cpp as it appears to be a false positive")
- set_source_files_properties(AssetLib/MDL/MDLLoader.cpp PROPERTIES
- COMPILE_FLAGS "-Wno-array-bounds -Wno-stringop-overflow"
- )
- endif()
- SET( MaterialSystem_SRCS
- Material/MaterialSystem.cpp
- Material/MaterialSystem.h
- )
- SOURCE_GROUP( MaterialSystem FILES ${MaterialSystem_SRCS})
- ADD_ASSIMP_IMPORTER( NFF
- AssetLib/NFF/NFFLoader.cpp
- AssetLib/NFF/NFFLoader.h
- )
- ADD_ASSIMP_IMPORTER( NDO
- AssetLib/NDO/NDOLoader.cpp
- AssetLib/NDO/NDOLoader.h
- )
- ADD_ASSIMP_IMPORTER( OFF
- AssetLib/OFF/OFFLoader.cpp
- AssetLib/OFF/OFFLoader.h
- )
- ADD_ASSIMP_IMPORTER( OBJ
- AssetLib/Obj/ObjFileData.h
- AssetLib/Obj/ObjFileImporter.cpp
- AssetLib/Obj/ObjFileImporter.h
- AssetLib/Obj/ObjFileMtlImporter.cpp
- AssetLib/Obj/ObjFileMtlImporter.h
- AssetLib/Obj/ObjFileParser.cpp
- AssetLib/Obj/ObjFileParser.h
- AssetLib/Obj/ObjTools.h
- )
- IF(((CMAKE_CXX_COMPILER_ID MATCHES "GNU") AND NOT MINGW AND NOT HAIKU) AND CMAKE_CXX_COMPILER_VERSION EQUAL 14)
- message(STATUS "GCC14 detected disabling \"-Wmaybe-uninitialized\" for"
- " AssetLib/Obj/ObjFileParser.cpp as it appears to be a false positive")
- set_source_files_properties(AssetLib/Obj/ObjFileParser.cpp PROPERTIES
- COMPILE_FLAGS "-Wno-maybe-uninitialized"
- )
- endif()
- ADD_ASSIMP_IMPORTER( OGRE
- AssetLib/Ogre/OgreImporter.h
- AssetLib/Ogre/OgreStructs.h
- AssetLib/Ogre/OgreParsingUtils.h
- AssetLib/Ogre/OgreBinarySerializer.h
- AssetLib/Ogre/OgreXmlSerializer.h
- AssetLib/Ogre/OgreImporter.cpp
- AssetLib/Ogre/OgreStructs.cpp
- AssetLib/Ogre/OgreBinarySerializer.cpp
- AssetLib/Ogre/OgreXmlSerializer.cpp
- AssetLib/Ogre/OgreMaterial.cpp
- )
- ADD_ASSIMP_IMPORTER( OPENGEX
- AssetLib/OpenGEX/OpenGEXImporter.cpp
- AssetLib/OpenGEX/OpenGEXImporter.h
- AssetLib/OpenGEX/OpenGEXStructs.h
- )
- ADD_ASSIMP_IMPORTER( PLY
- AssetLib/Ply/PlyLoader.cpp
- AssetLib/Ply/PlyLoader.h
- AssetLib/Ply/PlyParser.cpp
- AssetLib/Ply/PlyParser.h
- )
- ADD_ASSIMP_IMPORTER( MS3D
- AssetLib/MS3D/MS3DLoader.cpp
- AssetLib/MS3D/MS3DLoader.h
- )
- ADD_ASSIMP_IMPORTER( COB
- AssetLib/COB/COBLoader.cpp
- AssetLib/COB/COBLoader.h
- AssetLib/COB/COBScene.h
- )
- ADD_ASSIMP_IMPORTER( BLEND
- AssetLib/Blender/BlenderLoader.cpp
- AssetLib/Blender/BlenderLoader.h
- AssetLib/Blender/BlenderDNA.cpp
- AssetLib/Blender/BlenderDNA.h
- AssetLib/Blender/BlenderDNA.inl
- AssetLib/Blender/BlenderScene.cpp
- AssetLib/Blender/BlenderScene.h
- AssetLib/Blender/BlenderSceneGen.h
- AssetLib/Blender/BlenderIntermediate.h
- AssetLib/Blender/BlenderModifier.h
- AssetLib/Blender/BlenderModifier.cpp
- AssetLib/Blender/BlenderBMesh.h
- AssetLib/Blender/BlenderBMesh.cpp
- AssetLib/Blender/BlenderTessellator.h
- AssetLib/Blender/BlenderTessellator.cpp
- AssetLib/Blender/BlenderCustomData.h
- AssetLib/Blender/BlenderCustomData.cpp
- )
- ADD_ASSIMP_IMPORTER( IFC
- AssetLib/IFC/IFCLoader.cpp
- AssetLib/IFC/IFCLoader.h
- AssetLib/IFC/IFCReaderGen1_2x3.cpp
- AssetLib/IFC/IFCReaderGen2_2x3.cpp
- AssetLib/IFC/IFCReaderGen_2x3.h
- AssetLib/IFC/IFCUtil.h
- AssetLib/IFC/IFCUtil.cpp
- AssetLib/IFC/IFCGeometry.cpp
- AssetLib/IFC/IFCMaterial.cpp
- AssetLib/IFC/IFCProfile.cpp
- AssetLib/IFC/IFCCurve.cpp
- AssetLib/IFC/IFCBoolean.cpp
- AssetLib/IFC/IFCOpenings.cpp
- )
- if (ASSIMP_BUILD_IFC_IMPORTER)
- if (MSVC)
- set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "/bigobj")
- elseif(MINGW)
- set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "-O2 -Wa,-mbig-obj")
- endif()
- endif ()
- ADD_ASSIMP_IMPORTER( XGL
- AssetLib/XGL/XGLLoader.cpp
- AssetLib/XGL/XGLLoader.h
- )
- ADD_ASSIMP_IMPORTER( FBX
- AssetLib/FBX/FBXImporter.cpp
- AssetLib/FBX/FBXCompileConfig.h
- AssetLib/FBX/FBXImporter.h
- AssetLib/FBX/FBXParser.cpp
- AssetLib/FBX/FBXParser.h
- AssetLib/FBX/FBXTokenizer.cpp
- AssetLib/FBX/FBXTokenizer.h
- AssetLib/FBX/FBXImportSettings.h
- AssetLib/FBX/FBXConverter.h
- AssetLib/FBX/FBXConverter.cpp
- AssetLib/FBX/FBXUtil.h
- AssetLib/FBX/FBXUtil.cpp
- AssetLib/FBX/FBXDocument.h
- AssetLib/FBX/FBXDocument.cpp
- AssetLib/FBX/FBXProperties.h
- AssetLib/FBX/FBXProperties.cpp
- AssetLib/FBX/FBXMeshGeometry.h
- AssetLib/FBX/FBXMeshGeometry.cpp
- AssetLib/FBX/FBXMaterial.cpp
- AssetLib/FBX/FBXModel.cpp
- AssetLib/FBX/FBXAnimation.cpp
- AssetLib/FBX/FBXNodeAttribute.cpp
- AssetLib/FBX/FBXDeformer.cpp
- AssetLib/FBX/FBXBinaryTokenizer.cpp
- AssetLib/FBX/FBXDocumentUtil.cpp
- AssetLib/FBX/FBXCommon.h
- )
- if (NOT ASSIMP_NO_EXPORT)
- ADD_ASSIMP_EXPORTER( OBJ
- AssetLib/Obj/ObjExporter.h
- AssetLib/Obj/ObjExporter.cpp)
- ADD_ASSIMP_EXPORTER( OPENGEX
- AssetLib/OpenGEX/OpenGEXExporter.cpp
- AssetLib/OpenGEX/OpenGEXExporter.h)
- ADD_ASSIMP_EXPORTER( PLY
- AssetLib/Ply/PlyExporter.cpp
- AssetLib/Ply/PlyExporter.h)
- ADD_ASSIMP_EXPORTER( 3DS
- AssetLib/3DS/3DSExporter.h
- AssetLib/3DS/3DSExporter.cpp)
- ADD_ASSIMP_EXPORTER( ASSBIN
- AssetLib/Assbin/AssbinExporter.h
- AssetLib/Assbin/AssbinExporter.cpp
- AssetLib/Assbin/AssbinFileWriter.h
- AssetLib/Assbin/AssbinFileWriter.cpp)
- ADD_ASSIMP_EXPORTER( ASSXML
- AssetLib/Assxml/AssxmlExporter.h
- AssetLib/Assxml/AssxmlExporter.cpp
- AssetLib/Assxml/AssxmlFileWriter.h
- AssetLib/Assxml/AssxmlFileWriter.cpp)
- if ((NOT ASSIMP_NO_EXPORT) AND ASSIMP_BUILD_M3D_EXPORTER)
- ADD_ASSIMP_EXPORTER(M3D
- AssetLib/M3D/M3DExporter.cpp)
- endif () # if (ASSIMP_BUILD_M3D_EXPORTER)
- ADD_ASSIMP_EXPORTER(COLLADA
- AssetLib/Collada/ColladaExporter.h
- AssetLib/Collada/ColladaExporter.cpp)
- ADD_ASSIMP_EXPORTER( FBX
- AssetLib/FBX/FBXExporter.h
- AssetLib/FBX/FBXExporter.cpp
- AssetLib/FBX/FBXExportNode.h
- AssetLib/FBX/FBXExportNode.cpp
- AssetLib/FBX/FBXExportProperty.h
- AssetLib/FBX/FBXExportProperty.cpp)
- ADD_ASSIMP_EXPORTER( STL
- AssetLib/STL/STLExporter.h
- AssetLib/STL/STLExporter.cpp)
- ADD_ASSIMP_EXPORTER( X
- AssetLib/X/XFileExporter.h
- AssetLib/X/XFileExporter.cpp)
- ADD_ASSIMP_EXPORTER( X3D
- AssetLib/X3D/X3DExporter.cpp
- AssetLib/X3D/X3DExporter.hpp)
- ADD_ASSIMP_EXPORTER( GLTF
- AssetLib/glTF/glTFExporter.h
- AssetLib/glTF/glTFExporter.cpp
- AssetLib/glTF2/glTF2Exporter.h
- AssetLib/glTF2/glTF2Exporter.cpp)
- ADD_ASSIMP_EXPORTER( 3MF
- AssetLib/3MF/D3MFExporter.h
- AssetLib/3MF/D3MFExporter.cpp)
- ADD_ASSIMP_EXPORTER( PBRT
- Pbrt/PbrtExporter.h
- Pbrt/PbrtExporter.cpp)
- ADD_ASSIMP_EXPORTER( ASSJSON
- AssetLib/Assjson/cencode.c
- AssetLib/Assjson/cencode.h
- AssetLib/Assjson/json_exporter.cpp
- AssetLib/Assjson/mesh_splitter.cpp
- AssetLib/Assjson/mesh_splitter.h)
- ADD_ASSIMP_EXPORTER( STEP
- AssetLib/Step/StepExporter.h
- AssetLib/Step/StepExporter.cpp)
- endif()
- SET( PostProcessing_SRCS
- PostProcessing/CalcTangentsProcess.cpp
- PostProcessing/CalcTangentsProcess.h
- PostProcessing/ComputeUVMappingProcess.cpp
- PostProcessing/ComputeUVMappingProcess.h
- PostProcessing/ConvertToLHProcess.cpp
- PostProcessing/ConvertToLHProcess.h
- PostProcessing/EmbedTexturesProcess.cpp
- PostProcessing/EmbedTexturesProcess.h
- PostProcessing/FindDegenerates.cpp
- PostProcessing/FindDegenerates.h
- PostProcessing/FindInstancesProcess.cpp
- PostProcessing/FindInstancesProcess.h
- PostProcessing/FindInvalidDataProcess.cpp
- PostProcessing/FindInvalidDataProcess.h
- PostProcessing/FixNormalsStep.cpp
- PostProcessing/FixNormalsStep.h
- PostProcessing/DropFaceNormalsProcess.cpp
- PostProcessing/DropFaceNormalsProcess.h
- PostProcessing/GenFaceNormalsProcess.cpp
- PostProcessing/GenFaceNormalsProcess.h
- PostProcessing/GenVertexNormalsProcess.cpp
- PostProcessing/GenVertexNormalsProcess.h
- PostProcessing/PretransformVertices.cpp
- PostProcessing/PretransformVertices.h
- PostProcessing/ImproveCacheLocality.cpp
- PostProcessing/ImproveCacheLocality.h
- PostProcessing/JoinVerticesProcess.cpp
- PostProcessing/JoinVerticesProcess.h
- PostProcessing/LimitBoneWeightsProcess.cpp
- PostProcessing/LimitBoneWeightsProcess.h
- PostProcessing/RemoveRedundantMaterials.cpp
- PostProcessing/RemoveRedundantMaterials.h
- PostProcessing/RemoveVCProcess.cpp
- PostProcessing/RemoveVCProcess.h
- PostProcessing/SortByPTypeProcess.cpp
- PostProcessing/SortByPTypeProcess.h
- PostProcessing/SplitLargeMeshes.cpp
- PostProcessing/SplitLargeMeshes.h
- PostProcessing/TextureTransform.cpp
- PostProcessing/TextureTransform.h
- PostProcessing/TriangulateProcess.cpp
- PostProcessing/TriangulateProcess.h
- PostProcessing/ValidateDataStructure.cpp
- PostProcessing/ValidateDataStructure.h
- PostProcessing/OptimizeGraph.cpp
- PostProcessing/OptimizeGraph.h
- PostProcessing/OptimizeMeshes.cpp
- PostProcessing/OptimizeMeshes.h
- PostProcessing/DeboneProcess.cpp
- PostProcessing/DeboneProcess.h
- PostProcessing/ProcessHelper.h
- PostProcessing/ProcessHelper.cpp
- PostProcessing/MakeVerboseFormat.cpp
- PostProcessing/MakeVerboseFormat.h
- PostProcessing/ScaleProcess.cpp
- PostProcessing/ScaleProcess.h
- PostProcessing/ArmaturePopulate.cpp
- PostProcessing/ArmaturePopulate.h
- PostProcessing/GenBoundingBoxesProcess.cpp
- PostProcessing/GenBoundingBoxesProcess.h
- PostProcessing/SplitByBoneCountProcess.cpp
- PostProcessing/SplitByBoneCountProcess.h
- )
- SOURCE_GROUP( PostProcessing FILES ${PostProcessing_SRCS})
- ADD_ASSIMP_IMPORTER( Q3D
- AssetLib/Q3D/Q3DLoader.cpp
- AssetLib/Q3D/Q3DLoader.h
- )
- ADD_ASSIMP_IMPORTER( Q3BSP
- AssetLib/Q3BSP/Q3BSPFileData.h
- AssetLib/Q3BSP/Q3BSPFileParser.h
- AssetLib/Q3BSP/Q3BSPFileParser.cpp
- AssetLib/Q3BSP/Q3BSPFileImporter.h
- AssetLib/Q3BSP/Q3BSPFileImporter.cpp
- )
- ADD_ASSIMP_IMPORTER( RAW
- AssetLib/Raw/RawLoader.cpp
- AssetLib/Raw/RawLoader.h
- )
- ADD_ASSIMP_IMPORTER( SIB
- AssetLib/SIB/SIBImporter.cpp
- AssetLib/SIB/SIBImporter.h
- )
- ADD_ASSIMP_IMPORTER( SMD
- AssetLib/SMD/SMDLoader.cpp
- AssetLib/SMD/SMDLoader.h
- )
- ADD_ASSIMP_IMPORTER( STL
- AssetLib/STL/STLLoader.cpp
- AssetLib/STL/STLLoader.h
- )
- ADD_ASSIMP_IMPORTER( TERRAGEN
- AssetLib/Terragen/TerragenLoader.cpp
- AssetLib/Terragen/TerragenLoader.h
- )
- ADD_ASSIMP_IMPORTER( 3D
- AssetLib/Unreal/UnrealLoader.cpp
- AssetLib/Unreal/UnrealLoader.h
- )
- ADD_ASSIMP_IMPORTER( USD
- AssetLib/USD/USDLoader.cpp
- AssetLib/USD/USDLoader.h
- AssetLib/USD/USDLoaderImplTinyusdz.cpp
- AssetLib/USD/USDLoaderImplTinyusdz.h
- AssetLib/USD/USDLoaderImplTinyusdzHelper.cpp
- AssetLib/USD/USDLoaderImplTinyusdzHelper.h
- AssetLib/USD/USDLoaderUtil.cpp
- AssetLib/USD/USDLoaderUtil.h
- )
- ADD_ASSIMP_IMPORTER( X
- AssetLib/X/XFileHelper.h
- AssetLib/X/XFileImporter.cpp
- AssetLib/X/XFileImporter.h
- AssetLib/X/XFileParser.cpp
- AssetLib/X/XFileParser.h
- )
- ADD_ASSIMP_IMPORTER( X3D
- AssetLib/X3D/X3DImporter.cpp
- AssetLib/X3D/X3DImporter_Geometry2D.cpp
- AssetLib/X3D/X3DImporter_Geometry3D.cpp
- AssetLib/X3D/X3DImporter_Group.cpp
- AssetLib/X3D/X3DImporter_Light.cpp
- AssetLib/X3D/X3DImporter_Metadata.cpp
- AssetLib/X3D/X3DImporter_Networking.cpp
- AssetLib/X3D/X3DImporter_Postprocess.cpp
- AssetLib/X3D/X3DImporter_Rendering.cpp
- AssetLib/X3D/X3DImporter_Shape.cpp
- AssetLib/X3D/X3DImporter_Texturing.cpp
- AssetLib/X3D/X3DImporter.hpp
- AssetLib/X3D/X3DImporter_Macro.hpp
- AssetLib/X3D/X3DImporter_Node.hpp
- AssetLib/X3D/X3DGeoHelper.cpp
- AssetLib/X3D/X3DGeoHelper.h
- AssetLib/X3D/X3DXmlHelper.cpp
- AssetLib/X3D/X3DXmlHelper.h
- AssetLib/VRML/VrmlConverter.cpp
- )
- SET(glTFCommon_src
- AssetLib/glTFCommon/glTFCommon.h
- AssetLib/glTFCommon/glTFCommon.cpp
- )
- SOURCE_GROUP( glTFCommon FILES ${glTFCommon_src})
- ADD_ASSIMP_IMPORTER( GLTF
- AssetLib/glTF/glTFAsset.h
- AssetLib/glTF/glTFAsset.inl
- AssetLib/glTF/glTFAssetWriter.h
- AssetLib/glTF/glTFAssetWriter.inl
- AssetLib/glTF/glTFImporter.cpp
- AssetLib/glTF/glTFImporter.h
- AssetLib/glTF2/glTF2Asset.h
- AssetLib/glTF2/glTF2Asset.inl
- AssetLib/glTF2/glTF2AssetWriter.h
- AssetLib/glTF2/glTF2AssetWriter.inl
- AssetLib/glTF2/glTF2Importer.cpp
- AssetLib/glTF2/glTF2Importer.h
- )
- ADD_ASSIMP_IMPORTER(3MF
- AssetLib/3MF/3MFTypes.h
- AssetLib/3MF/XmlSerializer.h
- AssetLib/3MF/XmlSerializer.cpp
- AssetLib/3MF/D3MFImporter.h
- AssetLib/3MF/D3MFImporter.cpp
- AssetLib/3MF/D3MFOpcPackage.h
- AssetLib/3MF/D3MFOpcPackage.cpp
- AssetLib/3MF/3MFXmlTags.h
- )
- ADD_ASSIMP_IMPORTER( MMD
- AssetLib/MMD/MMDCpp14.h
- AssetLib/MMD/MMDImporter.cpp
- AssetLib/MMD/MMDImporter.h
- AssetLib/MMD/MMDPmdParser.h
- AssetLib/MMD/MMDPmxParser.h
- AssetLib/MMD/MMDPmxParser.cpp
- AssetLib/MMD/MMDVmdParser.h
- )
- # Workaround for issue #2406 - force problematic large file to be optimized to prevent string table overflow error
- # Used -Os instead of -O2 as previous issues had mentioned, since -Os is roughly speaking -O2, excluding any
- # optimizations that take up extra space. Given that the issue is a string table overflowing, -Os seemed appropriate
- # Also, I'm not positive if both link & compile flags are needed, but this hopefully ensures that the issue should not
- # recur for edge cases such as static builds.
- if ((MINGW) AND (CMAKE_BUILD_TYPE MATCHES Debug))
- message("-- Applying MinGW StepFileGen1.cpp Debug Workaround")
- SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES COMPILE_FLAGS -Os )
- SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES LINK_FLAGS -Os )
- SET_SOURCE_FILES_PROPERTIES(Importer/StepFile/StepFileGen1.cpp PROPERTIES STATIC_LIBRARY_FLAGS -Os )
- endif()
- if ((NOT ASSIMP_NO_EXPORT) OR (NOT ASSIMP_EXPORTERS_ENABLED STREQUAL ""))
- SET( Exporter_SRCS
- Common/Exporter.cpp
- CApi/AssimpCExport.cpp
- ${HEADER_PATH}/BlobIOSystem.h
- )
- SOURCE_GROUP( Exporter FILES ${Exporter_SRCS})
- endif()
- SET( Extra_SRCS
- MD4FileData.h
- )
- SOURCE_GROUP( Extra FILES ${Extra_SRCS})
- # VRML (.wrl/.x3dv) support
- IF (ASSIMP_BUILD_VRML_IMPORTER)
- # Note: ALWAYS specify a git commit hash (or tag) instead of a branch name; using a branch name
- # can lead to non-deterministic (unpredictable) results since the code is potentially in flux
- # "main" branch, 18 Nov 2024
- set(Meshlab_GIT_TAG "ad55b47a9b0700e7b427db6db287bb3a39aa31e7")
- message("****")
- message("\n\n**** Cloning meshlab repo, git tag ${Meshlab_GIT_TAG}\n\n")
- # Use CMAKE_CURRENT_SOURCE_DIR which provides assimp-local path (CMAKE_SOURCE_DIR is
- # relative to top-level/main project)
- set(Meshlab_BASE_ABSPATH "${CMAKE_CURRENT_SOURCE_DIR}/../contrib/meshlab")
- # Note: Depending on user's OS, build environment etc it may be necessary to change line endings of
- # "patches/meshlab.patch" file from CRLF to LF in order for patch operation to succeed
- # Patch required to
- # - replace QtXml w/pugixml
- # - disable meshlab cmake scripts to prevent breaking assimp build
- # - address compiler warnings to avoid breaking build for users who wisely treat warnings-as-errors
- set(Meshlab_PATCH_CMD git apply ${Meshlab_BASE_ABSPATH}/patches/meshlab.patch)
- # Note: cloning entire meshlab repo is wasteful since we require literally only two source files.
- # There is a technique using "git archive" e.g.
- # execute_process(
- # COMMAND git archive --remote=${Meshlab_GIT_REPO} ${Meshlab_GIT_TAG} <files> | \
- # tar -x -C ${Meshlab_BASE_ABSPATH}
- # RESULT_VARIABLE result
- # )
- # But this doesn't work with git "https" protocol so not a viable solution
- # Note: CMake's "FetchContent" (which executes at configure time) is much better for this use case
- # than "ExternalProject" (which executes at build time); we just want to clone a repo and
- # block (wait) as long as necessary until cloning is complete, so we immediately have full
- # access to the cloned source files
- include(FetchContent)
- set(Meshlab_REPO_ABSPATH "${Meshlab_BASE_ABSPATH}/autoclone")
- # Only want to clone once (on Android, using SOURCE_DIR will clone per-ABI (x86, x86_64 etc))
- set(FETCHCONTENT_BASE_DIR ${Meshlab_REPO_ABSPATH})
- set(FETCHCONTENT_QUIET on) # Turn off to troubleshoot repo clone problems
- set(FETCHCONTENT_UPDATES_DISCONNECTED on) # Prevent other ABIs from re-cloning/re-patching etc
- set(Meshlab_GIT_REPO "https://github.com/cnr-isti-vclab/meshlab")
- FetchContent_Declare(
- meshlab_repo
- GIT_REPOSITORY ${Meshlab_GIT_REPO}
- GIT_TAG ${Meshlab_GIT_TAG}
- PATCH_COMMAND ${Meshlab_PATCH_CMD}
- )
- FetchContent_MakeAvailable(meshlab_repo)
- message("**** Finished cloning meshlab repo")
- message("****")
- set(Meshlab_SRC_ABSPATH "${Meshlab_REPO_ABSPATH}/meshlab_repo-src/src/meshlabplugins/io_x3d/vrml")
- set(Meshlab_SRCS
- ${Meshlab_SRC_ABSPATH}/Parser.cpp
- ${Meshlab_SRC_ABSPATH}/Scanner.cpp
- )
- set(Meshlab_INCLUDE_DIRS "${Meshlab_SRC_ABSPATH}")
- INCLUDE_DIRECTORIES(${Meshlab_INCLUDE_DIRS})
- MESSAGE(STATUS "VRML enabled")
- ELSE() # IF (ASSIMP_BUILD_VRML_IMPORTER)
- set(Meshlab_SRCS "")
- MESSAGE(STATUS "VRML disabled")
- ENDIF() # IF (ASSIMP_BUILD_VRML_IMPORTER)
- # USD/USDA/USDC/USDZ support
- # tinyusdz
- IF (ASSIMP_BUILD_USD_IMPORTER)
- if (ASSIMP_BUILD_USD_VERBOSE_LOGS)
- ADD_DEFINITIONS( -DASSIMP_USD_VERBOSE_LOGS)
- endif ()
- # Use CMAKE_CURRENT_SOURCE_DIR which provides assimp-local path (CMAKE_SOURCE_DIR is
- # relative to top-level/main project)
- set(Tinyusdz_BASE_ABSPATH "${CMAKE_CURRENT_SOURCE_DIR}/../contrib/tinyusdz")
- set(Tinyusdz_REPO_ABSPATH "${Tinyusdz_BASE_ABSPATH}/autoclone")
- # Note: ALWAYS specify a git commit hash (or tag) instead of a branch name; using a branch
- # name can lead to non-deterministic (unpredictable) results since the code is potentially
- # in flux
- # "dev" branch, 14 Mar 2025
- set(TINYUSDZ_GIT_TAG "6050eef932f7d2788656d63297aa488fb0961ed1")
- message("****")
- message("\n\n**** Cloning tinyusdz repo, git tag ${TINYUSDZ_GIT_TAG}\n\n")
- # Patch required to build arm32 on android
- set(TINYUSDZ_PATCH_CMD git apply ${Tinyusdz_BASE_ABSPATH}/patches/tinyusdz.patch)
- # Note: CMake's "FetchContent" (which executes at configure time) is much better for this use case
- # than "ExternalProject" (which executes at build time); we just want to clone a repo and
- # block (wait) as long as necessary until cloning is complete, so we immediately have full
- # access to the cloned source files
- include(FetchContent)
- # Only want to clone once (on Android, using SOURCE_DIR will clone per-ABI (x86, x86_64 etc))
- set(FETCHCONTENT_BASE_DIR ${Tinyusdz_REPO_ABSPATH})
- set(FETCHCONTENT_QUIET on) # Turn off to troubleshoot repo clone problems
- set(FETCHCONTENT_UPDATES_DISCONNECTED on) # Prevent other ABIs from re-cloning/re-patching etc
- FetchContent_Declare(
- tinyusdz_repo
- EXCLUDE_FROM_ALL TRUE
- GIT_REPOSITORY "https://github.com/lighttransport/tinyusdz"
- GIT_TAG ${TINYUSDZ_GIT_TAG}
- PATCH_COMMAND ${TINYUSDZ_PATCH_CMD}
- )
- FetchContent_MakeAvailable(tinyusdz_repo)
- message("**** Finished cloning tinyusdz repo")
- message("****")
- set(Tinyusdz_SRC_ABSPATH "${Tinyusdz_REPO_ABSPATH}/tinyusdz_repo-src/src")
- set(Tinyusdz_SRCS
- ${Tinyusdz_SRC_ABSPATH}/ascii-parser.cc
- ${Tinyusdz_SRC_ABSPATH}/ascii-parser-basetype.cc
- ${Tinyusdz_SRC_ABSPATH}/ascii-parser-timesamples.cc
- ${Tinyusdz_SRC_ABSPATH}/ascii-parser-timesamples-array.cc
- ${Tinyusdz_SRC_ABSPATH}/asset-resolution.cc
- ${Tinyusdz_SRC_ABSPATH}/composition.cc
- ${Tinyusdz_SRC_ABSPATH}/crate-format.cc
- ${Tinyusdz_SRC_ABSPATH}/crate-pprint.cc
- ${Tinyusdz_SRC_ABSPATH}/crate-reader.cc
- ${Tinyusdz_SRC_ABSPATH}/image-loader.cc
- ${Tinyusdz_SRC_ABSPATH}/image-util.cc
- ${Tinyusdz_SRC_ABSPATH}/image-writer.cc
- ${Tinyusdz_SRC_ABSPATH}/io-util.cc
- ${Tinyusdz_SRC_ABSPATH}/linear-algebra.cc
- ${Tinyusdz_SRC_ABSPATH}/path-util.cc
- ${Tinyusdz_SRC_ABSPATH}/pprinter.cc
- ${Tinyusdz_SRC_ABSPATH}/prim-composition.cc
- ${Tinyusdz_SRC_ABSPATH}/prim-reconstruct.cc
- ${Tinyusdz_SRC_ABSPATH}/prim-types.cc
- ${Tinyusdz_SRC_ABSPATH}/primvar.cc
- ${Tinyusdz_SRC_ABSPATH}/stage.cc
- ${Tinyusdz_SRC_ABSPATH}/str-util.cc
- ${Tinyusdz_SRC_ABSPATH}/tiny-format.cc
- ${Tinyusdz_SRC_ABSPATH}/tinyusdz.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed-animatable.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed-animatable-fallback.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/attribute-eval-typed-fallback.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/facial.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/prim-apply.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/render-data.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/scene-access.cc
- ${Tinyusdz_SRC_ABSPATH}/tydra/shader-network.cc
- ${Tinyusdz_SRC_ABSPATH}/usda-reader.cc
- ${Tinyusdz_SRC_ABSPATH}/usda-writer.cc
- ${Tinyusdz_SRC_ABSPATH}/usdc-reader.cc
- ${Tinyusdz_SRC_ABSPATH}/usdc-writer.cc
- ${Tinyusdz_SRC_ABSPATH}/usdGeom.cc
- ${Tinyusdz_SRC_ABSPATH}/usdLux.cc
- ${Tinyusdz_SRC_ABSPATH}/usdMtlx.cc
- ${Tinyusdz_SRC_ABSPATH}/usdShade.cc
- ${Tinyusdz_SRC_ABSPATH}/usdSkel.cc
- ${Tinyusdz_SRC_ABSPATH}/value-pprint.cc
- ${Tinyusdz_SRC_ABSPATH}/value-types.cc
- ${Tinyusdz_SRC_ABSPATH}/xform.cc
- )
- set(Tinyusdz_DEP_SOURCES
- ${Tinyusdz_SRC_ABSPATH}/external/fpng.cpp
- #${Tinyusdz_SRC_ABSPATH}/external/staticstruct.cc
- #${Tinyusdz_SRC_ABSPATH}/external/string_id/database.cpp
- #${Tinyusdz_SRC_ABSPATH}/external/string_id/error.cpp
- #${Tinyusdz_SRC_ABSPATH}/external/string_id/string_id.cpp
- #${Tinyusdz_SRC_ABSPATH}/external/tinyxml2/tinyxml2.cpp
- ${Tinyusdz_SRC_ABSPATH}/integerCoding.cpp
- ${Tinyusdz_SRC_ABSPATH}/lz4-compression.cc
- ${Tinyusdz_SRC_ABSPATH}/lz4/lz4.c
- )
- set(tinyusdz_INCLUDE_DIRS "${Tinyusdz_SRC_ABSPATH}")
- INCLUDE_DIRECTORIES(${tinyusdz_INCLUDE_DIRS})
- SOURCE_GROUP( Contrib\\Tinyusdz
- FILES
- ${Tinyusdz_SRCS}
- ${Tinyusdz_DEP_SOURCES}
- )
- MESSAGE(STATUS "tinyusdz enabled")
- ELSE() # IF (ASSIMP_BUILD_USD_IMPORTER)
- set(Tinyusdz_SRCS "")
- set(Tinyusdz_DEP_SOURCES "")
- MESSAGE(STATUS "tinyusdz disabled")
- ENDIF() # IF (ASSIMP_BUILD_USD_IMPORTER)
- # pugixml
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(pugixml)
- find_package(pugixml CONFIG REQUIRED)
- ELSEIF(NOT TARGET pugixml::pugixml)
- SET( Pugixml_SRCS
- ../contrib/pugixml/src/pugiconfig.hpp
- ../contrib/pugixml/src/pugixml.hpp
- )
- INCLUDE_DIRECTORIES("../contrib/pugixml/src")
- SOURCE_GROUP( Contrib\\Pugixml FILES ${Pugixml_SRCS})
- ENDIF()
- # utf8
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(utf8)
- find_package(utf8cpp CONFIG REQUIRED)
- ELSE()
- INCLUDE_DIRECTORIES("../contrib/utf8cpp/source")
- ENDIF()
- # polyclipping
- #IF(ASSIMP_HUNTER_ENABLED)
- # hunter_add_package(polyclipping)
- # find_package(polyclipping CONFIG REQUIRED)
- #ELSE()
- SET( Clipper_SRCS
- ../contrib/clipper/clipper.hpp
- ../contrib/clipper/clipper.cpp
- )
- SOURCE_GROUP( Contrib\\Clipper FILES ${Clipper_SRCS})
- #ENDIF()
- # poly2tri
- #IF(ASSIMP_HUNTER_ENABLED)
- # hunter_add_package(poly2tri)
- # find_package(poly2tri CONFIG REQUIRED)
- #ELSE()
- SET( Poly2Tri_SRCS
- ../contrib/poly2tri/poly2tri/common/shapes.cc
- ../contrib/poly2tri/poly2tri/common/shapes.h
- ../contrib/poly2tri/poly2tri/common/utils.h
- ../contrib/poly2tri/poly2tri/sweep/advancing_front.h
- ../contrib/poly2tri/poly2tri/sweep/advancing_front.cc
- ../contrib/poly2tri/poly2tri/sweep/cdt.cc
- ../contrib/poly2tri/poly2tri/sweep/cdt.h
- ../contrib/poly2tri/poly2tri/sweep/sweep.cc
- ../contrib/poly2tri/poly2tri/sweep/sweep.h
- ../contrib/poly2tri/poly2tri/sweep/sweep_context.cc
- ../contrib/poly2tri/poly2tri/sweep/sweep_context.h
- )
- SOURCE_GROUP( Contrib\\Poly2Tri FILES ${Poly2Tri_SRCS})
- #ENDIF()
- # minizip/unzip
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(minizip)
- find_package(minizip CONFIG REQUIRED)
- ELSE()
- SET( unzip_SRCS
- ../contrib/unzip/crypt.h
- ../contrib/unzip/ioapi.c
- ../contrib/unzip/ioapi.h
- ../contrib/unzip/unzip.c
- ../contrib/unzip/unzip.h
- )
- SOURCE_GROUP(Contrib\\unzip FILES ${unzip_SRCS})
- ENDIF()
- # zip (https://github.com/kuba--/zip)
- separate_arguments(ASSIMP_EXPORTERS_LIST UNIX_COMMAND ${ASSIMP_EXPORTERS_ENABLED})
- IF(3MF IN_LIST ASSIMP_EXPORTERS_LIST)
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(zip)
- find_package(zip CONFIG REQUIRED)
- ELSE()
- SET( ziplib_SRCS
- ../contrib/zip/src/miniz.h
- ../contrib/zip/src/zip.c
- ../contrib/zip/src/zip.h
- )
- # TODO if cmake required version has been updated to >3.12.0, collapse this to the second case only
- if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
- add_definitions(-DMINIZ_USE_UNALIGNED_LOADS_AND_STORES=0)
- else()
- add_compile_definitions(MINIZ_USE_UNALIGNED_LOADS_AND_STORES=0)
- endif()
- SOURCE_GROUP( ziplib FILES ${ziplib_SRCS} )
- ENDIF()
- ENDIF()
- # openddlparser
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(openddlparser)
- find_package(openddlparser CONFIG REQUIRED)
- ELSE()
- SET ( openddl_parser_SRCS
- ../contrib/openddlparser/code/OpenDDLParser.cpp
- ../contrib/openddlparser/code/DDLNode.cpp
- ../contrib/openddlparser/code/OpenDDLCommon.cpp
- ../contrib/openddlparser/code/OpenDDLExport.cpp
- ../contrib/openddlparser/code/Value.cpp
- ../contrib/openddlparser/code/OpenDDLStream.cpp
- ../contrib/openddlparser/include/openddlparser/OpenDDLParser.h
- ../contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h
- ../contrib/openddlparser/include/openddlparser/OpenDDLCommon.h
- ../contrib/openddlparser/include/openddlparser/OpenDDLExport.h
- ../contrib/openddlparser/include/openddlparser/OpenDDLStream.h
- ../contrib/openddlparser/include/openddlparser/DDLNode.h
- ../contrib/openddlparser/include/openddlparser/Value.h
- )
- SOURCE_GROUP( Contrib\\openddl_parser FILES ${openddl_parser_SRCS})
- ENDIF()
- # Open3DGC
- IF(ASSIMP_HUNTER_ENABLED)
- # Nothing to do, not available in Hunter yet.
- ELSE()
- SET ( open3dgc_SRCS
- ../contrib/Open3DGC/o3dgcAdjacencyInfo.h
- ../contrib/Open3DGC/o3dgcArithmeticCodec.cpp
- ../contrib/Open3DGC/o3dgcArithmeticCodec.h
- ../contrib/Open3DGC/o3dgcBinaryStream.h
- ../contrib/Open3DGC/o3dgcCommon.h
- ../contrib/Open3DGC/o3dgcDVEncodeParams.h
- ../contrib/Open3DGC/o3dgcDynamicVectorDecoder.cpp
- ../contrib/Open3DGC/o3dgcDynamicVectorDecoder.h
- ../contrib/Open3DGC/o3dgcDynamicVectorEncoder.cpp
- ../contrib/Open3DGC/o3dgcDynamicVectorEncoder.h
- ../contrib/Open3DGC/o3dgcDynamicVector.h
- ../contrib/Open3DGC/o3dgcFIFO.h
- ../contrib/Open3DGC/o3dgcIndexedFaceSet.h
- ../contrib/Open3DGC/o3dgcIndexedFaceSet.inl
- ../contrib/Open3DGC/o3dgcSC3DMCDecoder.h
- ../contrib/Open3DGC/o3dgcSC3DMCDecoder.inl
- ../contrib/Open3DGC/o3dgcSC3DMCEncodeParams.h
- ../contrib/Open3DGC/o3dgcSC3DMCEncoder.h
- ../contrib/Open3DGC/o3dgcSC3DMCEncoder.inl
- ../contrib/Open3DGC/o3dgcTimer.h
- ../contrib/Open3DGC/o3dgcTools.cpp
- ../contrib/Open3DGC/o3dgcTriangleFans.cpp
- ../contrib/Open3DGC/o3dgcTriangleFans.h
- ../contrib/Open3DGC/o3dgcTriangleListDecoder.h
- ../contrib/Open3DGC/o3dgcTriangleListDecoder.inl
- ../contrib/Open3DGC/o3dgcTriangleListEncoder.h
- ../contrib/Open3DGC/o3dgcTriangleListEncoder.inl
- ../contrib/Open3DGC/o3dgcVector.h
- ../contrib/Open3DGC/o3dgcVector.inl
- )
- SOURCE_GROUP( Contrib\\open3dgc FILES ${open3dgc_SRCS})
- ENDIF()
- # Check dependencies for glTF importer with Open3DGC-compression.
- # RT-extensions is used in "contrib/Open3DGC/o3dgcTimer.h" for collecting statistics. Pointed file
- # has implementation for different platforms: WIN32, __MACH__ and other ("else" block).
- IF (NOT WIN32)
- FIND_PACKAGE(RT QUIET)
- ENDIF ()
- IF (NOT ASSIMP_HUNTER_ENABLED AND (RT_FOUND OR WIN32))
- SET( ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC 1 )
- ADD_DEFINITIONS( -DASSIMP_IMPORTER_GLTF_USE_OPEN3DGC=1 )
- ELSE ()
- SET (open3dgc_SRCS "")
- MESSAGE (INFO " Hunter enabled or RT-extension not found. glTF import/export will be built without Open3DGC-compression.")
- #!TODO: off course is better to remove statistics timers from o3dgc codec. Or propose to choose what to use.
- ENDIF ()
- # RapidJSON
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(RapidJSON)
- find_package(RapidJSON CONFIG REQUIRED)
- ELSE()
- INCLUDE_DIRECTORIES("../contrib/rapidjson/include")
- ADD_DEFINITIONS( -DRAPIDJSON_HAS_STDSTRING=1)
- option( ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR "Suppress rapidjson warning on MSVC (NOTE: breaks android build)" ON )
- if(ASSIMP_RAPIDJSON_NO_MEMBER_ITERATOR)
- ADD_DEFINITIONS( -DRAPIDJSON_NOMEMBERITERATORCLASS )
- endif()
- ENDIF()
- # stb
- IF(ASSIMP_HUNTER_ENABLED)
- hunter_add_package(stb)
- find_package(stb CONFIG REQUIRED)
- ELSE()
- SET( stb_SRCS
- ../contrib/stb/stb_image.h
- )
- INCLUDE_DIRECTORIES("../contrib")
- SOURCE_GROUP( Contrib\\stb FILES ${stb_SRCS})
- ENDIF()
- # VC2010 fixes
- if(MSVC10)
- option( VC10_STDINT_FIX "Fix for VC10 Compiler regarding pstdint.h redefinition errors" OFF )
- if( VC10_STDINT_FIX )
- ADD_DEFINITIONS( -D_STDINT )
- endif()
- endif()
- IF( MSVC OR "${CMAKE_CXX_SIMULATE_ID}" MATCHES "MSVC") # clang with MSVC ABI
- ADD_DEFINITIONS( -D_SCL_SECURE_NO_WARNINGS )
- ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
- endif ()
- IF(NOT ASSIMP_HUNTER_ENABLED)
- if (UNZIP_FOUND)
- SET (unzip_compile_SRCS "")
- else ()
- SET (unzip_compile_SRCS ${unzip_SRCS})
- INCLUDE_DIRECTORIES( "../contrib/unzip/" )
- endif ()
- ENDIF()
- MESSAGE(STATUS "Enabled importer formats:${ASSIMP_IMPORTERS_ENABLED}")
- MESSAGE(STATUS "Disabled importer formats:${ASSIMP_IMPORTERS_DISABLED}")
- if (NOT ASSIMP_NO_EXPORT)
- MESSAGE(STATUS "Enabled exporter formats:${ASSIMP_EXPORTERS_ENABLED}")
- MESSAGE(STATUS "Disabled exporter formats:${ASSIMP_EXPORTERS_DISABLED}")
- endif()
- SOURCE_GROUP( include\\assimp FILES ${PUBLIC_HEADERS} )
- SET( assimp_src
- # Assimp Files
- ${Core_SRCS}
- ${CApi_SRCS}
- ${Common_SRCS}
- ${Geometry_SRCS}
- ${Logging_SRCS}
- ${Exporter_SRCS}
- ${PostProcessing_SRCS}
- ${MaterialSystem_SRCS}
- ${STEPParser_SRCS}
- ${glTFCommon_src}
- # ${Step_SRCS} check if we need a different approach
- # Model Support
- ${ASSIMP_LOADER_SRCS}
- ${ASSIMP_EXPORTER_SRCS}
- # Third-party libraries
- ${unzip_compile_SRCS}
- ${Poly2Tri_SRCS}
- ${Clipper_SRCS}
- ${openddl_parser_SRCS}
- ${open3dgc_SRCS}
- ${ziplib_SRCS}
- ${Meshlab_SRCS}
- ${Tinyusdz_SRCS}
- ${Tinyusdz_DEP_SOURCES}
- ${Pugixml_SRCS}
- ${stb_SRCS}
- # Necessary to show the headers in the project when using the VC++ generator:
- ${PUBLIC_HEADERS}
- ${COMPILER_HEADERS}
- )
- ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD )
- IF(NOT ASSIMP_HUNTER_ENABLED)
- INCLUDE_DIRECTORIES(
- ${IRRXML_INCLUDE_DIR}
- ../contrib/openddlparser/include
- )
- ENDIF()
- IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
- SET( assimp_src ${assimp_src} ${C4D_SRCS})
- INCLUDE_DIRECTORIES(${C4D_INCLUDES})
- ENDIF ()
- IF (ASSIMP_BUILD_DRACO)
- INCLUDE_DIRECTORIES(${draco_INCLUDE_DIRS})
- ADD_DEFINITIONS( -DASSIMP_ENABLE_DRACO )
- ENDIF()
- ADD_LIBRARY( assimp ${assimp_src} )
- ADD_LIBRARY(assimp::assimp ALIAS assimp)
- # Add or remove dllexport tags depending on the library type.
- IF (BUILD_SHARED_LIBS)
- TARGET_COMPILE_DEFINITIONS(assimp PRIVATE ASSIMP_BUILD_DLL_EXPORT)
- ELSE ()
- TARGET_COMPILE_DEFINITIONS(assimp PRIVATE OPENDDL_STATIC_LIBARY P2T_STATIC_EXPORTS)
- ENDIF ()
- TARGET_USE_COMMON_OUTPUT_DIRECTORY(assimp)
- add_compile_options(
- "$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb>"
- )
- IF (ASSIMP_WARNINGS_AS_ERRORS)
- MESSAGE(STATUS "Treating all warnings as errors (for assimp library only)")
- IF (MSVC)
- IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) # clang-cl
- TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror
- -Wno-microsoft-enum-value
- -Wno-switch-enum
- -Wno-covered-switch-default
- -Wno-reserved-identifier
- -Wno-c++98-compat-pedantic
- -Wno-c++98-compat
- -Wno-documentation
- -Wno-documentation-unknown-command
- -Wno-deprecated-dynamic-exception-spec
- -Wno-undef
- -Wno-suggest-destructor-override
- -Wno-suggest-override
- -Wno-zero-as-null-pointer-constant
- -Wno-global-constructors
- -Wno-exit-time-destructors
- -Wno-extra-semi-stmt
- -Wno-missing-prototypes
- -Wno-old-style-cast
- -Wno-cast-align
- -Wno-cast-qual
- -Wno-float-equal
- -Wno-implicit-int-float-conversion
- -Wno-sign-conversion
- -Wno-implicit-float-conversion
- -Wno-implicit-int-conversion
- -Wno-float-conversion
- -Wno-double-promotion
- -Wno-unused-macros
- -Wno-disabled-macro-expansion
- -Wno-shadow-field
- -Wno-shadow
- -Wno-language-extension-token
- -Wno-header-hygiene
- -Wno-tautological-value-range-compare
- -Wno-tautological-type-limit-compare
- -Wno-missing-variable-declarations
- -Wno-extra-semi
- -Wno-nonportable-system-include-path
- -Wno-undefined-reinterpret-cast
- -Wno-shift-sign-overflow
- -Wno-deprecated
- -Wno-format-nonliteral
- -Wno-comma
- -Wno-implicit-fallthrough
- -Wno-unused-template
- -Wno-undefined-func-template
- -Wno-declaration-after-statement
- -Wno-deprecated-declarations
- -Wno-deprecated-non-prototype
- )
- ELSE()
- TARGET_COMPILE_OPTIONS(assimp PRIVATE /W4 /WX)
- ENDIF()
- ELSE()
- TARGET_COMPILE_OPTIONS(assimp PRIVATE -Wall -Werror)
- ENDIF()
- ENDIF()
- # adds C_FLAGS required to compile zip.c on old GCC 4.x compiler
- TARGET_COMPILE_FEATURES(assimp PRIVATE c_std_99)
- TARGET_INCLUDE_DIRECTORIES ( assimp PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
- $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>
- $<INSTALL_INTERFACE:${ASSIMP_INCLUDE_INSTALL_DIR}>
- )
- IF(ASSIMP_HUNTER_ENABLED)
- TARGET_LINK_LIBRARIES(assimp
- PUBLIC
- openddlparser::openddl_parser
- minizip::minizip
- ZLIB::zlib
- RapidJSON::rapidjson
- utf8cpp
- pugixml
- stb::stb
- )
- if(TARGET zip::zip)
- target_link_libraries(assimp PUBLIC zip::zip)
- endif()
- if (ASSIMP_BUILD_DRACO)
- target_link_libraries(assimp PRIVATE ${draco_LIBRARIES})
- endif()
- ELSE()
- TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES})
- if (ASSIMP_BUILD_DRACO)
- target_link_libraries(assimp ${draco_LIBRARIES})
- endif()
- if(TARGET pugixml::pugixml)
- target_link_libraries(assimp pugixml::pugixml)
- endif()
- ENDIF()
- if(ASSIMP_ANDROID_JNIIOSYSTEM)
- set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI)
- add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/ ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/)
- target_link_libraries(assimp android_jniiosystem)
- endif()
- IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
- TARGET_LINK_LIBRARIES(assimp optimized ${C4D_RELEASE_LIBRARIES})
- TARGET_LINK_LIBRARIES(assimp debug ${C4D_DEBUG_LIBRARIES})
- TARGET_LINK_LIBRARIES(assimp ${C4D_EXTRA_LIBRARIES})
- ENDIF ()
- if( MSVC )
- # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix
- # CMake 3.12 added a variable for this
- if(MSVC_TOOLSET_VERSION)
- set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}")
- else()
- if( MSVC70 OR MSVC71 )
- set(MSVC_PREFIX "vc70")
- elseif( MSVC80 )
- set(MSVC_PREFIX "vc80")
- elseif( MSVC90 )
- set(MSVC_PREFIX "vc90")
- elseif( MSVC10 )
- set(MSVC_PREFIX "vc100")
- elseif( MSVC11 )
- set(MSVC_PREFIX "vc110")
- elseif( MSVC12 )
- set(MSVC_PREFIX "vc120")
- elseif( MSVC_VERSION LESS 1910)
- set(MSVC_PREFIX "vc140")
- elseif( MSVC_VERSION LESS 1920)
- set(MSVC_PREFIX "vc141")
- elseif( MSVC_VERSION LESS 1930)
- set(MSVC_PREFIX "vc142")
- else()
- MESSAGE(WARNING "unknown msvc version ${MSVC_VERSION}")
- set(MSVC_PREFIX "vc150")
- endif()
- endif()
- set(LIBRARY_SUFFIX "${ASSIMP_LIBRARY_SUFFIX}-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library")
- endif()
- if (MINGW)
- set(LIBRARY_SUFFIX "-${ASSIMP_SOVERSION}" CACHE STRING "the suffix for the assimp MinGW shared library")
- SET_TARGET_PROPERTIES( assimp PROPERTIES
- ARCHIVE_OUTPUT_NAME assimp
- )
- if (NOT BUILD_SHARED_LIBS)
- TARGET_LINK_LIBRARIES ( assimp -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lwinpthread ) # winpthread is for libminizip.
- endif ()
- endif()
- if (${CMAKE_SYSTEM_NAME} MATCHES "WindowsStore")
- target_compile_definitions(assimp PUBLIC WindowsStore)
- TARGET_LINK_LIBRARIES(assimp advapi32)
- endif()
- SET_TARGET_PROPERTIES( assimp PROPERTIES
- VERSION ${ASSIMP_VERSION}
- SOVERSION ${ASSIMP_SOVERSION} # use full version
- OUTPUT_NAME assimp${LIBRARY_SUFFIX}
- )
- if (APPLE)
- if (ASSIMP_BUILD_FRAMEWORK)
- SET_TARGET_PROPERTIES( assimp PROPERTIES
- FRAMEWORK TRUE
- FRAMEWORK_VERSION C
- MACOSX_FRAMEWORK_IDENTIFIER net.sf.assimp
- PUBLIC_HEADER "${PUBLIC_HEADERS}"
- )
- # PUBLIC_HEADER option does not support directory structure creation
- # add ./Compiler/*.h to assimp.framework via copy command
- ADD_CUSTOM_COMMAND(TARGET assimp POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy_directory
- "${HEADER_PATH}/Compiler"
- assimp.framework/Headers/Compiler
- COMMENT "Copying public ./Compiler/ header files to framework bundle's Headers/Compiler/")
- ENDIF()
- ENDIF()
- # Build against external unzip, or add ../contrib/unzip so
- # assimp can #include "unzip.h"
- IF(NOT ASSIMP_HUNTER_ENABLED)
- if (UNZIP_FOUND)
- INCLUDE_DIRECTORIES(${UNZIP_INCLUDE_DIRS})
- # TODO if cmake required version has been updated to >3.12.0, collapse this to the second case only
- if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
- TARGET_LINK_LIBRARIES(assimp ${UNZIP_LIBRARIES})
- else()
- TARGET_LINK_LIBRARIES(assimp ${UNZIP_LINK_LIBRARIES})
- endif()
- else ()
- INCLUDE_DIRECTORIES("../")
- endif ()
- ENDIF()
- # Add RT-extension library for glTF importer with Open3DGC-compression.
- IF (RT_FOUND AND ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC)
- TARGET_LINK_LIBRARIES(assimp rt)
- ENDIF ()
- IF(ASSIMP_INSTALL)
- INSTALL( TARGETS assimp
- EXPORT "${TARGETS_EXPORT_NAME}"
- LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}
- ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP-DEV_COMPONENT}
- RUNTIME DESTINATION ${ASSIMP_BIN_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}
- FRAMEWORK DESTINATION ${ASSIMP_LIB_INSTALL_DIR} COMPONENT ${LIBASSIMP_COMPONENT}
- INCLUDES DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}
- )
- INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp COMPONENT assimp-dev)
- INSTALL( FILES ${COMPILER_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/Compiler COMPONENT assimp-dev)
- ENDIF()
- if (ASSIMP_ANDROID_JNIIOSYSTEM AND ASSIMP_INSTALL)
- INSTALL(FILES ${HEADER_PATH}/${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/AndroidJNIIOSystem.h
- DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}
- COMPONENT assimp-dev)
- ENDIF()
- if(MSVC AND ASSIMP_INSTALL_PDB)
- # When only the static library is built, these properties must
- # be set to ensure the static lib .pdb is staged for installation.
- IF(NOT BUILD_SHARED_LIBS)
- SET_TARGET_PROPERTIES( assimp PROPERTIES
- COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMPILE_PDB_NAME assimp${LIBRARY_SUFFIX}
- COMPILE_PDB_NAME_DEBUG assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}
- )
- IF(is_multi_config)
- install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
- DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
- CONFIGURATIONS Debug
- )
- install(FILES ${Assimp_BINARY_DIR}/code/RelWithDebInfo/assimp${LIBRARY_SUFFIX}.pdb
- DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
- CONFIGURATIONS RelWithDebInfo
- )
- ELSE()
- install(FILES ${Assimp_BINARY_DIR}/code/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
- DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
- CONFIGURATIONS Debug
- )
- install(FILES ${Assimp_BINARY_DIR}/code/assimp${LIBRARY_SUFFIX}.pdb
- DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
- CONFIGURATIONS RelWithDebInfo
- )
- ENDIF()
- ELSE()
- install(FILES $<TARGET_PDB_FILE:assimp>
- DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
- )
- ENDIF()
- ENDIF ()
- if (ASSIMP_COVERALLS)
- include(Coveralls)
- set(COVERAGE_SRCS ${assimp_src} ${TEST_SRCS} )
- # Create the coveralls target.
- coveralls_setup(
- "${COVERAGE_SRCS}" # The source files.
- ON # If we should upload.
- "${PROJECT_SOURCE_DIR}/cmake-modules/") # (Optional) Alternate project cmake module path.
- ENDIF()
|