diff options
Diffstat (limited to 'libs/assimp/code/CMakeLists.txt')
-rw-r--r-- | libs/assimp/code/CMakeLists.txt | 1377 |
1 files changed, 1377 insertions, 0 deletions
diff --git a/libs/assimp/code/CMakeLists.txt b/libs/assimp/code/CMakeLists.txt new file mode 100644 index 0000000..7a2f8a1 --- /dev/null +++ b/libs/assimp/code/CMakeLists.txt @@ -0,0 +1,1377 @@ +# Open Asset Import Library (assimp) +# ---------------------------------------------------------------------- +# +# Copyright (c) 2006-2022, 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.10 ) +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}/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}/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) + 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/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/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/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( 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_IMPORTER_<name> which enables compile of loader + # this way selective loaders 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 +) + +ADD_ASSIMP_IMPORTER( M3D + AssetLib/M3D/M3DMaterials.h + AssetLib/M3D/M3DImporter.h + AssetLib/M3D/M3DImporter.cpp + AssetLib/M3D/M3DWrapper.h + AssetLib/M3D/M3DWrapper.cpp + AssetLib/M3D/m3d.h +) + +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 +) + +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 +) + +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) + + ADD_ASSIMP_EXPORTER(M3D + AssetLib/M3D/M3DExporter.h + AssetLib/M3D/M3DExporter.cpp) + + 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( 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 +) + +ADD_ASSIMP_IMPORTER( GLTF + AssetLib/glTF/glTFCommon.h + AssetLib/glTF/glTFCommon.cpp + 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}) + +# pugixml +IF(ASSIMP_HUNTER_ENABLED) + hunter_add_package(pugixml) + find_package(pugixml CONFIG REQUIRED) +ELSE() + 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() + # utf8 is header-only, so Assimp doesn't need to do anything. +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.c + ../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). +FIND_PACKAGE(RT QUIET) +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() + +ADD_DEFINITIONS( -DASSIMP_BUILD_DLL_EXPORT ) + +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} + ${Logging_SRCS} + ${Exporter_SRCS} + ${PostProcessing_SRCS} + ${MaterialSystem_SRCS} + ${STEPParser_SRCS} +# ${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} + ${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) + +TARGET_USE_COMMON_OUTPUT_DIRECTORY(assimp) + +# enable warnings as errors ######################################## +IF (MSVC) + TARGET_COMPILE_OPTIONS(assimp PRIVATE /WX) +ELSE() + TARGET_COMPILE_OPTIONS(assimp PRIVATE -Werror) +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 + polyclipping::polyclipping + openddlparser::openddl_parser + poly2tri::poly2tri + 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 PUBLIC ${draco_LIBRARIES}) + endif() +ELSE() + TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES}) + if (ASSIMP_BUILD_DRACO) + target_link_libraries(assimp ${draco_LIBRARIES}) + 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 (${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 (WIN32 AND CMAKE_COMPILER_IS_GNUCXX AND BUILD_SHARED_LIBS) + set_target_properties(assimp PROPERTIES + SUFFIX "-${ASSIMP_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}" + ) +endif() + +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}) + TARGET_LINK_LIBRARIES(assimp ${UNZIP_LIBRARIES}) + 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_LIBRARY}) +ENDIF () + + +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) + +if (ASSIMP_ANDROID_JNIIOSYSTEM) + 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} + ) + ENDIF() + + IF(CMAKE_GENERATOR MATCHES "^Visual Studio") + 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() +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() |