Notification time stamped 2021-08-01 01:56:15 UTC
From ea127049212406ee1bbe38b056c3834967ecdf77 Mon Sep 17 00:00:00 2001
From: Rich Mattes <richmattes(a)gmail.com>
Date: Aug 01 2021 01:42:01 +0000
Subject: Merge branch 'epel8' into rawhide
---
diff --git a/.gitignore b/.gitignore
index 275c2b6..cba2394 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
/assimp-f849f6d9bd21efe802fa456184b1c3173e74a050-free.tar.bz2
/assimp-3.1.1_no_test_models.zip
/assimp-c318d648ff73aa2e32b783709d69740ac3e8c072-free.tar.bz2
+/assimp-5.0.1-free.tar.xz
diff --git a/0001-Apply-mechanism-to-decide-use-for-IrrXML-external-or.patch
b/0001-Apply-mechanism-to-decide-use-for-IrrXML-external-or.patch
deleted file mode 100644
index c3d7a9b..0000000
--- a/0001-Apply-mechanism-to-decide-use-for-IrrXML-external-or.patch
+++ /dev/null
@@ -1,286 +0,0 @@
-From a52bb1d9b030ee888ab44b8ad9a2a2b8ebb909a3 Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Thu, 27 Apr 2017 17:19:51 +0200
-Subject: [PATCH] - Apply mechanism to decide use for IrrXML external or
- internal
-
-Several distributions usually decide for shared external libraries
-instead of an usual embedded, for security reasons, duplicatiion issues.
-This change enable the possibility to set SYSTEM_IRRXML=ON for detect
-and build against a system installed irrxml.
-By default, the internal copy is compiled.
-
-Changes on build:
-- Added a FindIrrXML cmake module.
-- Moved the source recipe for proper CMakeLists inside contrib directory
-- Includes aren't path based anymore, using the provided INCLUDE_DIR
-- Compiler option are grouped in a singled entry on main CMakeLists
----
- CMakeLists.txt | 88 +++++++++++++++++++++++++++++++++++-------
- cmake-modules/FindIrrXML.cmake | 17 ++++++++
- code/CMakeLists.txt | 20 +++-------
- code/irrXMLWrapper.h | 6 +--
- contrib/CMakeLists.txt | 4 ++
- contrib/irrXML/CMakeLists.txt | 13 +++++++
- 6 files changed, 116 insertions(+), 32 deletions(-)
- create mode 100644 cmake-modules/FindIrrXML.cmake
- create mode 100644 contrib/CMakeLists.txt
- create mode 100644 contrib/irrXML/CMakeLists.txt
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6989510..c2b3faa 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -39,7 +39,65 @@ SET(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is
required
- cmake_minimum_required( VERSION 2.8 )
- PROJECT( Assimp )
-
--OPTION(BUILD_SHARED_LIBS "Build package with shared libraries." ON)
-+# All supported options ###############################################
-+OPTION( BUILD_SHARED_LIBS
-+ "Build package with shared libraries."
-+ ON
-+)
-+OPTION( ASSIMP_DOUBLE_PRECISION
-+ "Set to ON to enable double precision processing"
-+ OFF
-+)
-+OPTION( ASSIMP_OPT_BUILD_PACKAGES
-+ "Set to ON to generate CPack configuration files and packaging targets"
-+ OFF
-+)
-+OPTION( ASSIMP_ANDROID_JNIIOSYSTEM
-+ "Android JNI IOSystem support is active"
-+ OFF
-+)
-+OPTION( ASSIMP_NO_EXPORT
-+ "Disable Assimp's export functionality."
-+ OFF
-+)
-+OPTION( ASSIMP_BUILD_ZLIB
-+ "Build your own zlib"
-+ OFF
-+)
-+option( ASSIMP_BUILD_ASSIMP_TOOLS
-+ "If the supplementary tools for Assimp are built in addition to the
library."
-+ ON
-+)
-+option ( ASSIMP_BUILD_SAMPLES
-+ "If the official samples are built as well (needs Glut)."
-+ OFF
-+)
-+OPTION ( ASSIMP_BUILD_TESTS
-+ "If the test suite for Assimp is built in addition to the library."
-+ ON
-+)
-+OPTION ( ASSIMP_COVERALLS
-+ "Eańable this to measure test coverage."
-+ OFF
-+)
-+
-+option ( SYSTEM_IRRXML
-+ "Use system installed Irrlicht/IrrXML library."
-+ OFF
-+)
-+
-+#OPTION ( BUILD_DOCS
-+# "Build documentation using Doxygen."
-+# OFF
-+#)
-+
-+IF(MSVC)
-+ set (CMAKE_PREFIX_PATH "D:\\libs\\devil")
-+ OPTION( ASSIMP_INSTALL_PDB
-+ "Install MSVC debug files."
-+ ON
-+ )
-+ENDIF(MSVC)
-
- IF(NOT BUILD_SHARED_LIBS)
- SET(LINK_SEARCH_START_STATIC TRUE)
-@@ -116,17 +174,17 @@ IF( UNIX )
- include(GNUInstallDirs)
- ENDIF( UNIX )
-
--IF((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT
CMAKE_COMPILER_IS_MINGW)
-- IF (BUILD_SHARED_LIBS AND CMAKE_SIZEOF_VOID_P EQUAL 8) # -fPIC is only required for
shared libs on 64 bit
-- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
-- ENDIF()
-+# Grouped compiler settings
-+IF ((CMAKE_C_COMPILER_ID MATCHES "GNU") AND NOT CMAKE_COMPILER_IS_MINGW)
- # hide all not-exported symbols
-- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall
-std=c++0x" )
-+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fvisibility=hidden -fPIC -Wall
-std=c++0x" )
-+ SET(LIBSTDC++_LIBRARIES -lstdc++)
-+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC" )
- ELSEIF(MSVC)
- # enable multi-core compilation with MSVC
- add_compile_options(/MP)
--ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
-- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wno-long-long
-pedantic -std=c++11" )
-+ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
-+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fvisibility=hidden -fPIC -Wall
-Wno-long-long -pedantic -std=c++11" )
- ELSEIF( CMAKE_COMPILER_IS_MINGW )
- SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wno-long-long
-pedantic -std=c++11" )
- ENDIF()
-@@ -176,14 +233,14 @@ install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" "${C
-
- FIND_PACKAGE( DirectX )
-
--OPTION ( ASSIMP_NO_EXPORT
-- "Disable Assimp's export functionality."
-- OFF
--)
-+#IF( BUILD_DOCS )
-+# add_subdirectory(doc)
-+#ENDIF( BUILD_DOCS )
-
--IF( CMAKE_COMPILER_IS_GNUCXX )
-- SET(LIBSTDC++_LIBRARIES -lstdc++)
--ENDIF( CMAKE_COMPILER_IS_GNUCXX )
-+# Look for system installed irrXML
-+IF ( SYSTEM_IRRXML )
-+ find_package( IrrXML REQUIRED )
-+ENDIF( SYSTEM_IRRXML )
-
- # Search for external dependencies, and build them from source if not found
- # Search for zlib
-@@ -287,6 +344,7 @@ ELSE (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
- ADD_DEFINITIONS( -DASSIMP_BUILD_NO_C4D_IMPORTER )
- ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
-
-+ADD_SUBDIRECTORY(contrib)
-
- ADD_SUBDIRECTORY( code/ )
- option ( ASSIMP_BUILD_ASSIMP_TOOLS
-diff --git a/cmake-modules/FindIrrXML.cmake b/cmake-modules/FindIrrXML.cmake
-new file mode 100644
-index 0000000..5434e0b
---- /dev/null
-+++ b/cmake-modules/FindIrrXML.cmake
-@@ -0,0 +1,17 @@
-+# Find IrrXMl from irrlicht project
-+#
-+# Find LibIrrXML headers and library
-+#
-+# IRRXML_FOUND - IrrXML found
-+# IRRXML_INCLUDE_DIR - Headers location
-+# IRRXML_LIBRARY - IrrXML main library
-+
-+find_path(IRRXML_INCLUDE_DIR irrXML.h
-+ PATH_SUFFIXES include/irrlicht include/irrxml)
-+find_library(IRRXML_LIBRARY IrrXML)
-+
-+include(FindPackageHandleStandardArgs)
-+find_package_handle_standard_args(IrrXML REQUIRED_VARS IRRXML_INCLUDE_DIR
IRRXML_LIBRARY)
-+
-+
-+mark_as_advanced(IRRXML_INCLUDE_DIR IRRXML_LIBRARY)
-diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
-index 35ecf50..52073d1 100644
---- a/code/CMakeLists.txt
-+++ b/code/CMakeLists.txt
-@@ -542,6 +542,9 @@ SET( PostProcessing_SRCS
- )
- SOURCE_GROUP( PostProcessing FILES ${PostProcessing_SRCS})
-
-+SET( IrrXML_SRCS irrXMLWrapper.h )
-+SOURCE_GROUP( IrrXML FILES ${IrrXML_SRCS})
-+
- ADD_ASSIMP_IMPORTER( Q3D
- Q3DLoader.cpp
- Q3DLoader.h
-@@ -637,18 +640,6 @@ SET( Extra_SRCS
- )
- SOURCE_GROUP( Extra FILES ${Extra_SRCS})
-
--SET( IrrXML_SRCS
-- irrXMLWrapper.h
-- ../contrib/irrXML/CXMLReaderImpl.h
-- ../contrib/irrXML/heapsort.h
-- ../contrib/irrXML/irrArray.h
-- ../contrib/irrXML/irrString.h
-- ../contrib/irrXML/irrTypes.h
-- ../contrib/irrXML/irrXML.cpp
-- ../contrib/irrXML/irrXML.h
--)
--SOURCE_GROUP( IrrXML FILES ${IrrXML_SRCS})
--
- SET( ConvertUTF_SRCS
- ../contrib/ConvertUTF/ConvertUTF.h
- ../contrib/ConvertUTF/ConvertUTF.c
-@@ -756,7 +747,8 @@ SET( assimp_src
- ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD )
-
- INCLUDE_DIRECTORIES(
-- ../contrib/openddlparser/include
-+ ${IRRXML_INCLUDE_DIR}
-+ ../contrib/openddlparser/include
- )
-
- IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
-@@ -766,7 +758,7 @@ ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
-
- ADD_LIBRARY( assimp ${assimp_src} )
-
--TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} )
-+TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES}
${IRRXML_LIBRARY} )
-
- if(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM)
- set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI)
-diff --git a/code/irrXMLWrapper.h b/code/irrXMLWrapper.h
-index 41e4188..9d96456 100644
---- a/code/irrXMLWrapper.h
-+++ b/code/irrXMLWrapper.h
-@@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #define INCLUDED_AI_IRRXML_WRAPPER
-
- // some long includes ....
--#include "./../contrib/irrXML/irrXML.h"
-+#include <irrXML.h>
- #include "./../include/assimp/IOStream.hpp"
- #include "BaseImporter.h"
- #include <vector>
-@@ -128,8 +128,8 @@ public:
-
- //
----------------------------------------------------------------------------------
- //! Returns size of file in bytes
-- virtual int getSize() {
-- return (int)data.size();
-+ virtual long getSize() const {
-+ return (long)data.size();
- }
-
- private:
-diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt
-new file mode 100644
-index 0000000..362f165
---- /dev/null
-+++ b/contrib/CMakeLists.txt
-@@ -0,0 +1,4 @@
-+# Compile internal irrXML only if system is not requested
-+if( NOT SYSTEM_IRRXML )
-+ add_subdirectory(irrXML)
-+endif( NOT SYSTEM_IRRXML )
-diff --git a/contrib/irrXML/CMakeLists.txt b/contrib/irrXML/CMakeLists.txt
-new file mode 100644
-index 0000000..82ede3a
---- /dev/null
-+++ b/contrib/irrXML/CMakeLists.txt
-@@ -0,0 +1,13 @@
-+set( IrrXML_SRCS
-+ CXMLReaderImpl.h
-+ heapsort.h
-+ irrArray.h
-+ irrString.h
-+ irrTypes.h
-+ irrXML.cpp
-+ irrXML.h
-+)
-+
-+add_library(IrrXML STATIC ${IrrXML_SRCS})
-+set(IRRXML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL
"IrrXML_Include" )
-+set(IRRXML_LIBRARY "IrrXML" CACHE INTERNAL "IrrXML" )
---
-2.9.3
-
diff --git a/0001-Assimp-cmake-provider-fix.patch b/0001-Assimp-cmake-provider-fix.patch
deleted file mode 100644
index e3567a1..0000000
--- a/0001-Assimp-cmake-provider-fix.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 584a0923a3c78304974eb05930fbb908edbc8c8c Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Tue, 18 Apr 2017 19:21:30 +0200
-Subject: [PATCH] Assimp cmake provider fix
-
----
- assimp-config.cmake.in | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-diff --git a/assimp-config.cmake.in b/assimp-config.cmake.in
-index e06cc10..9224b9b 100644
---- a/assimp-config.cmake.in
-+++ b/assimp-config.cmake.in
-@@ -10,10 +10,7 @@
- # ASSIMP_LIBRARY_DIRS - link directories
- # ASSIMP_LIBRARIES - libraries to link plugins with
- # ASSIMP_Boost_VERSION - the boost version assimp was compiled with
--get_filename_component(_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
--get_filename_component(_PREFIX "${_PREFIX}" PATH)
--get_filename_component(_PREFIX "${_PREFIX}" PATH)
--get_filename_component(ASSIMP_ROOT_DIR "${_PREFIX}" PATH)
-+set(ASSIMP_ROOT_DIR "@CMAKE_INSTALL_PREFIX@")
-
- if( MSVC )
- # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major
version and msvc prefix
-@@ -45,8 +42,8 @@ if( WIN32 )
- set( ASSIMP_CXX_FLAGS " -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB")
- endif()
- set( ASSIMP_LINK_FLAGS "" )
--set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@")
--set( ASSIMP_INCLUDE_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_INCLUDE_INSTALL_DIR@")
-+set( ASSIMP_LIBRARY_DIRS "@ASSIMP_LIB_INSTALL_DIR@")
-+set( ASSIMP_INCLUDE_DIRS "@ASSIMP_INCLUDE_INSTALL_DIR@")
- set( ASSIMP_LIBRARIES assimp${ASSIMP_LIBRARY_SUFFIX})
- set( ASSIMP_LIBRARIES ${ASSIMP_LIBRARIES}@CMAKE_DEBUG_POSTFIX@)
-
---
-2.9.3
-
diff --git a/0001-Enable-doxygen-been-properly-used-from-cmake-build-a.patch
b/0001-Enable-doxygen-been-properly-used-from-cmake-build-a.patch
deleted file mode 100644
index dd009bf..0000000
--- a/0001-Enable-doxygen-been-properly-used-from-cmake-build-a.patch
+++ /dev/null
@@ -1,221 +0,0 @@
-From c63f886c9d12b88fc65afcd379bb086984dd44c2 Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Tue, 18 Apr 2017 14:51:17 +0200
-Subject: [PATCH] Enable doxygen been properly used from cmake build and
- install.
-
-Current documentation lacks a proper directory handling and switch for
-Unix like systems.
-The option BUILD_DOCS are added as disable by default, even so the
-Doxyfile file is generated for a manual build.
-
-Option HTML_OUTPUT are made cached to be properly replaced, as usually
-done by some Linux distributions
-
-Microsoft CHM option is enabled if MSVC is detected.
----
- CMakeLists.txt | 11 ++++++++++
- doc/CMakeLists.txt | 47 +++++++++++++++++++++++++++++++++++++++++++
- doc/{Doxyfile => Doxyfile.in} | 46 ++++++++++--------------------------------
- 3 files changed, 69 insertions(+), 35 deletions(-)
- create mode 100644 doc/CMakeLists.txt
- rename doc/{Doxyfile => Doxyfile.in} (98%)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8455bb8..6989510 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -40,6 +40,7 @@ cmake_minimum_required( VERSION 2.8 )
- PROJECT( Assimp )
-
- OPTION(BUILD_SHARED_LIBS "Build package with shared libraries." ON)
-+
- IF(NOT BUILD_SHARED_LIBS)
- SET(LINK_SEARCH_START_STATIC TRUE)
- ENDIF(NOT BUILD_SHARED_LIBS)
-@@ -58,6 +59,12 @@ SET(ASSIMP_PACKAGE_VERSION "0" CACHE STRING "the
package-specific version used f
- add_definitions( -DOPENDDL_NO_USE_CPP11 )
- set_property( GLOBAL PROPERTY CXX_STANDARD 11 )
-
-+OPTION ( BUILD_DOCS
-+ "Build documentation using Doxygen."
-+ OFF
-+)
-+add_subdirectory(doc)
-+
- # Get the current working branch
- EXECUTE_PROCESS(
- COMMAND git rev-parse --abbrev-ref HEAD
-@@ -105,6 +112,10 @@ IF( CMAKE_COMPILER_IS_MINGW )
- ADD_DEFINITIONS(-DASSIMP_BUILD_NO_IFC_IMPORTER )
- ENDIF()
-
-+IF( UNIX )
-+ include(GNUInstallDirs)
-+ENDIF( UNIX )
-+
- IF((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT
CMAKE_COMPILER_IS_MINGW)
- IF (BUILD_SHARED_LIBS AND CMAKE_SIZEOF_VOID_P EQUAL 8) # -fPIC is only required for
shared libs on 64 bit
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
-diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
-new file mode 100644
-index 0000000..0ad04cf
---- /dev/null
-+++ b/doc/CMakeLists.txt
-@@ -0,0 +1,51 @@
-+# Only test for Doxygent if BUILD_DOCS are ON
-+# We will configure Doxygen output anyway in case
-+# of manual generation
-+if( BUILD_DOCS )
-+ find_package( Doxygen REQUIRED )
-+endif( BUILD_DOCS )
-+
-+set( HTML_OUTPUT "AssimpDoc_Html" CACHE STRING "Output directory for
generated HTML documentation. Defaults to AssimpDoc_Html." )
-+
-+# Enable Microsoft CHM help style only on Windows
-+set( MICROSOFT_HELP_WORKSHOP "NO")
-+if( MSVC )
-+ set( MICROSOFT_HELP_WORKSHOP "YES" )
-+endif( MSVC )
-+
-+configure_file(
-+ ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
-+ ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
-+ @ONLY
-+)
-+
-+add_custom_target(
-+ docs ALL
-+ DEPENDS docs.done
-+)
-+
-+add_custom_command(
-+ OUTPUT docs.done
-+ COMMAND ${DOXYGEN_EXECUTABLE}
-+ COMMAND ${CMAKE_COMMAND} -E touch docs.done
-+ COMMENT "Generating assimp documentation"
-+ VERBATIM
-+ )
-+
-+IF( UNIX )
-+ include(GNUInstallDirs)
-+ENDIF( UNIX )
-+
-+if( DEFINED CMAKE_INSTALL_DOCDIR )
-+ install(
-+ DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${HTML_OUTPUT}
-+ DESTINATION ${CMAKE_INSTALL_DOCDIR}
-+ )
-+ install(FILES
-+ ${CMAKE_CURRENT_SOURCE_DIR}/AssimpDoc_Html/AnimationOverview.png
-+ ${CMAKE_CURRENT_SOURCE_DIR}/AssimpDoc_Html/AnimationOverview.svg
-+ ${CMAKE_CURRENT_SOURCE_DIR}/AssimpDoc_Html/dragonsplash.png
-+ DESTINATION ${CMAKE_INSTALL_DOCDIR}/${HTML_OUTPUT}
-+ )
-+endif( DEFINED CMAKE_INSTALL_DOCDIR )
-+
-diff --git a/doc/Doxyfile b/doc/Doxyfile.in
-similarity index 98%
-rename from doc/Doxyfile
-rename to doc/Doxyfile.in
-index 64dd5d2..ebb6b72 100644
---- a/doc/Doxyfile
-+++ b/doc/Doxyfile.in
-@@ -140,7 +140,8 @@ FULL_PATH_NAMES = NO
- # relative paths, which will be relative from the directory where doxygen is
- # started.
-
--STRIP_FROM_PATH =
-+STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ \
-+ @PROJECT_BINARY_DIR@
-
- # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
- # the path mentioned in the documentation of a class, which tells
-@@ -339,22 +340,6 @@ INLINE_SIMPLE_STRUCTS = NO
-
- TYPEDEF_HIDES_STRUCT = YES
-
--# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
--# determine which symbols to keep in memory and which to flush to disk.
--# When the cache is full, less often used symbols will be written to disk.
--# For small to medium size projects (<1000 input files) the default value is
--# probably good enough. For larger projects a too small cache size can cause
--# doxygen to be busy swapping symbols to and from disk most of the time
--# causing a significant performance penalty.
--# If the system has enough physical memory increasing the cache will improve the
--# performance by keeping more symbols in memory. Note that the value works on
--# a logarithmic scale so increasing the size by one will roughly double the
--# memory usage. The cache size is given by this formula:
--# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
--# corresponding to a cache size of 2^16 = 65536 symbols.
--
--SYMBOL_CACHE_SIZE = 0
--
- # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
- # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
- # their name and scope. Since this can be an expensive process and often the
-@@ -677,9 +662,12 @@ WARN_LOGFILE =
- # directories like "/usr/src/myproject". Separate the files or directories
- # with spaces.
-
--INPUT = ../include/ \
-- ../doc/dox.h \
-- ../code/BaseImporter.h
-+INPUT = @doxy_main_page@ \
-+ @PROJECT_SOURCE_DIR@ \
-+ @PROJECT_BINARY_DIR@ \
-+ @PROJECT_SOURCE_DIR@/include/ \
-+ @PROJECT_SOURCE_DIR(a)/doc/dox.h \
-+ @PROJECT_SOURCE_DIR(a)/code/BaseImporter.h
-
- # This tag can be used to specify the character encoding of the source files
- # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-@@ -919,7 +907,7 @@ GENERATE_HTML = YES
- # If a relative path is entered the value of OUTPUT_DIRECTORY will be
- # put in front of it. If left blank `html' will be used as the default path.
-
--HTML_OUTPUT = AssimpDoc_Html
-+HTML_OUTPUT = @HTML_OUTPUT@
-
- # The HTML_FILE_EXTENSION tag can be used to specify the file extension for
- # each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-@@ -953,7 +941,7 @@ HTML_FOOTER =
- # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
- # tag will in the future become obsolete.
-
--HTML_STYLESHEET = style.css
-+# HTML_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR(a)/style.css
-
- # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
- # user-defined cascading style sheet that is included after the standard
-@@ -1064,7 +1052,7 @@ DOCSET_PUBLISHER_NAME = Publisher
- # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
- # of the generated HTML documentation.
-
--GENERATE_HTMLHELP = YES
-+GENERATE_HTMLHELP = @MICROSOFT_HELP_WORKSHOP@
-
- # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
- # be used to specify the file name of the resulting .chm file. You
-@@ -1504,18 +1492,6 @@ GENERATE_XML = NO
-
- XML_OUTPUT = xml
-
--# The XML_SCHEMA tag can be used to specify an XML schema,
--# which can be used by a validating XML parser to check the
--# syntax of the XML files.
--
--XML_SCHEMA =
--
--# The XML_DTD tag can be used to specify an XML DTD,
--# which can be used by a validating XML parser to check the
--# syntax of the XML files.
--
--XML_DTD =
--
- # If the XML_PROGRAMLISTING tag is set to YES Doxygen will
- # dump the program listings (including syntax highlighting
- # and cross-referencing information) to the XML output. Note that
---
-2.9.3
-
diff --git a/0001-Morph-animation-support-for-collada.patch
b/0001-Morph-animation-support-for-collada.patch
deleted file mode 100644
index c955d5c..0000000
--- a/0001-Morph-animation-support-for-collada.patch
+++ /dev/null
@@ -1,966 +0,0 @@
-From 42e353f2a672baed485c03acf30529c77092ece9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= <antti.maatta(a)qt.io>
-Date: Thu, 12 Jan 2017 13:41:32 +0200
-Subject: [PATCH] Morph animation support for collada
-
----
- code/CMakeLists.txt | 2 +
- code/ColladaHelper.h | 31 +++++
- code/ColladaLoader.cpp | 310 ++++++++++++++++++++++++++++++++++++++++++------
- code/ColladaLoader.h | 5 +
- code/ColladaParser.cpp | 48 +++++++-
- code/CreateAnimMesh.cpp | 92 ++++++++++++++
- code/CreateAnimMesh.h | 56 +++++++++
- include/assimp/anim.h | 95 +++++++++++++--
- include/assimp/mesh.h | 36 +++++-
- 9 files changed, 623 insertions(+), 52 deletions(-)
- create mode 100644 code/CreateAnimMesh.cpp
- create mode 100644 code/CreateAnimMesh.h
-
-diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
-index 35ecf50..e0747d6 100644
---- a/code/CMakeLists.txt
-+++ b/code/CMakeLists.txt
-@@ -171,6 +171,8 @@ SET( Common_SRCS
- Bitmap.h
- XMLTools.h
- Version.cpp
-+ CreateAnimMesh.h
-+ CreateAnimMesh.cpp
- )
- SOURCE_GROUP(Common FILES ${Common_SRCS})
-
-diff --git a/code/ColladaHelper.h b/code/ColladaHelper.h
-index 5a51642..5ff4904 100644
---- a/code/ColladaHelper.h
-+++ b/code/ColladaHelper.h
-@@ -89,6 +89,21 @@ enum InputType
- IT_Bitangent
- };
-
-+/** Supported controller types */
-+enum ControllerType
-+{
-+ Skin,
-+ Morph
-+};
-+
-+/** Supported morph methods */
-+enum MorphMethod
-+{
-+ Normalized,
-+ Relative
-+};
-+
-+
- /** Contains all data for one of the different transformation types */
- struct Transform
- {
-@@ -380,6 +395,12 @@ enum PrimitiveType
- /** A skeleton controller to deform a mesh with the use of joints */
- struct Controller
- {
-+ // controller type
-+ ControllerType mType;
-+
-+ // Morphing method if type is Morph
-+ MorphMethod mMethod;
-+
- // the URL of the mesh deformed by the controller.
- std::string mMeshId;
-
-@@ -402,6 +423,9 @@ struct Controller
-
- // JointIndex-WeightIndex pairs for all vertices
- std::vector< std::pair<size_t, size_t> > mWeights;
-+
-+ std::string mMorphTarget;
-+ std::string mMorphWeight;
- };
-
- /** A collada material. Pretty much the only member is a reference to an effect. */
-@@ -577,6 +601,12 @@ struct AnimationChannel
- std::string mSourceTimes;
- /** Source URL of the value values. Collada calls them "output". */
- std::string mSourceValues;
-+ /** Source URL of the IN_TANGENT semantic values. */
-+ std::string mInTanValues;
-+ /** Source URL of the OUT_TANGENT semantic values. */
-+ std::string mOutTanValues;
-+ /** Source URL of the INTERPOLATION semantic values. */
-+ std::string mInterpolationValues;
- };
-
- /** An animation. Container for 0-x animation channels or 0-x animations */
-@@ -645,6 +675,7 @@ struct Animation
- struct ChannelEntry
- {
- const Collada::AnimationChannel* mChannel; ///> the source channel
-+ std::string mTargetId;
- std::string mTransformId; // the ID of the transformation step of the node which
is influenced
- size_t mTransformIndex; // Index into the node's transform chain to apply the
channel to
- size_t mSubElement; // starting index inside the transform data
-diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp
-index 6cc0f85..a3b6d6e 100644
---- a/code/ColladaLoader.cpp
-+++ b/code/ColladaLoader.cpp
-@@ -55,6 +55,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include "ParsingUtils.h"
- #include "SkeletonMeshBuilder.h"
- #include "Defines.h"
-+#include "CreateAnimMesh.h"
-
- #include "time.h"
- #include "math.h"
-@@ -148,6 +149,7 @@ void ColladaLoader::InternReadFile( const std::string& pFile,
aiScene* pScene, I
- mMeshIndexByID.clear();
- mMaterialIndexByName.clear();
- mMeshes.clear();
-+ mTargetMeshes.clear();
- newMats.clear();
- mLights.clear();
- mCameras.clear();
-@@ -562,6 +564,21 @@ void ColladaLoader::BuildMeshesForNode( const ColladaParser&
pParser, const Coll
- }
-
- //
------------------------------------------------------------------------------------------------
-+// Find mesh from either meshes or morph target meshes
-+aiMesh *ColladaLoader::findMesh(std::string meshid)
-+{
-+ for (unsigned int i = 0; i < mMeshes.size(); i++)
-+ if (std::string(mMeshes[i]->mName.data) == meshid)
-+ return mMeshes[i];
-+
-+ for (unsigned int i = 0; i < mTargetMeshes.size(); i++)
-+ if (std::string(mTargetMeshes[i]->mName.data) == meshid)
-+ return mTargetMeshes[i];
-+
-+ return NULL;
-+}
-+
-+//
------------------------------------------------------------------------------------------------
- // Creates a mesh for the given ColladaMesh face subset and returns the newly created
mesh
- aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const
Collada::Mesh* pSrcMesh, const Collada::SubMesh& pSubMesh,
- const Collada::Controller* pSrcController, size_t pStartVertex, size_t pStartFace)
-@@ -646,8 +663,70 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser,
const Collada::
- face.mIndices[b] = vertex++;
- }
-
-+ // create morph target meshes if any
-+ std::vector<aiMesh*> targetMeshes;
-+ std::vector<float> targetWeights;
-+ Collada::MorphMethod method;
-+
-+ for(std::map<std::string, Collada::Controller>::const_iterator it =
pParser.mControllerLibrary.begin();
-+ it != pParser.mControllerLibrary.end(); it++)
-+ {
-+ const Collada::Controller &c = it->second;
-+ const Collada::Mesh* baseMesh = pParser.ResolveLibraryReference(
pParser.mMeshLibrary, c.mMeshId);
-+
-+ if (c.mType == Collada::Morph && baseMesh->mName ==
pSrcMesh->mName)
-+ {
-+ const Collada::Accessor& targetAccessor =
pParser.ResolveLibraryReference( pParser.mAccessorLibrary, c.mMorphTarget);
-+ const Collada::Accessor& weightAccessor =
pParser.ResolveLibraryReference( pParser.mAccessorLibrary, c.mMorphWeight);
-+ const Collada::Data& targetData = pParser.ResolveLibraryReference(
pParser.mDataLibrary, targetAccessor.mSource);
-+ const Collada::Data& weightData = pParser.ResolveLibraryReference(
pParser.mDataLibrary, weightAccessor.mSource);
-+
-+ // take method
-+ method = c.mMethod;
-+
-+ if (!targetData.mIsStringArray)
-+ throw DeadlyImportError( "target data must contain id. ");
-+ if (weightData.mIsStringArray)
-+ throw DeadlyImportError( "target weight data must not be textual
");
-+
-+ for (unsigned int i = 0; i < targetData.mStrings.size(); ++i)
-+ {
-+ const Collada::Mesh* targetMesh =
pParser.ResolveLibraryReference(pParser.mMeshLibrary, targetData.mStrings.at(i));
-+
-+ aiMesh *aimesh = findMesh(targetMesh->mName);
-+ if (!aimesh)
-+ {
-+ if (targetMesh->mSubMeshes.size() > 1)
-+ throw DeadlyImportError( "Morhing target mesh must be a
single");
-+ aimesh = CreateMesh(pParser, targetMesh,
targetMesh->mSubMeshes.at(0), NULL, 0, 0);
-+ mTargetMeshes.push_back(aimesh);
-+ }
-+ targetMeshes.push_back(aimesh);
-+ }
-+ for (unsigned int i = 0; i < weightData.mValues.size(); ++i)
-+ targetWeights.push_back(weightData.mValues.at(i));
-+ }
-+ }
-+ if (targetMeshes.size() > 0 && targetWeights.size() ==
targetMeshes.size())
-+ {
-+ std::vector<aiAnimMesh*> animMeshes;
-+ for (unsigned int i = 0; i < targetMeshes.size(); i++)
-+ {
-+ aiAnimMesh *animMesh = aiCreateAnimMesh(targetMeshes.at(i));
-+ animMesh->mWeight = targetWeights[i];
-+ animMeshes.push_back(animMesh);
-+ }
-+ dstMesh->mMethod = (method == Collada::Relative)
-+ ? aiMorphingMethod_MORPH_RELATIVE
-+ : aiMorphingMethod_MORPH_NORMALIZED;
-+ dstMesh->mAnimMeshes = new aiAnimMesh*[animMeshes.size()];
-+ dstMesh->mNumAnimMeshes = animMeshes.size();
-+ for (unsigned int i = 0; i < animMeshes.size(); i++)
-+ dstMesh->mAnimMeshes[i] = animMeshes.at(i);
-+ }
-+
- // create bones if given
-- if( pSrcController)
-+ if( pSrcController && pSrcController->mType == Collada::Skin)
- {
- // refuse if the vertex count does not match
- // if( pSrcController->mWeightCounts.size() != dstMesh->mNumVertices)
-@@ -946,6 +1025,68 @@ void ColladaLoader::StoreAnimations( aiScene* pScene, const
ColladaParser& pPars
- CreateAnimation( pScene, pParser, pSrcAnim, animName);
- }
-
-+struct MorphTimeValues
-+{
-+ float mTime;
-+ struct key
-+ {
-+ float mWeight;
-+ unsigned int mValue;
-+ };
-+ std::vector<key> mKeys;
-+};
-+
-+void insertMorphTimeValue(std::vector<MorphTimeValues> &values, float time,
float weight, unsigned int value)
-+{
-+ MorphTimeValues::key k;
-+ k.mValue = value;
-+ k.mWeight = weight;
-+ if (values.size() == 0 || time < values[0].mTime)
-+ {
-+ MorphTimeValues val;
-+ val.mTime = time;
-+ val.mKeys.push_back(k);
-+ values.insert(values.begin(), val);
-+ return;
-+ }
-+ if (time > values.back().mTime)
-+ {
-+ MorphTimeValues val;
-+ val.mTime = time;
-+ val.mKeys.push_back(k);
-+ values.insert(values.end(), val);
-+ return;
-+ }
-+ for (unsigned int i = 0; i < values.size(); i++)
-+ {
-+ if (std::abs(time - values[i].mTime) < 1e-6f)
-+ {
-+ values[i].mKeys.push_back(k);
-+ return;
-+ } else if (time > values[i].mTime && time < values[i+1].mTime)
-+ {
-+ MorphTimeValues val;
-+ val.mTime = time;
-+ val.mKeys.push_back(k);
-+ values.insert(values.begin() + i, val);
-+ return;
-+ }
-+ }
-+ // should not get here
-+}
-+
-+float getWeightAtKey(const std::vector<MorphTimeValues> &values, int key,
unsigned int value)
-+{
-+ for (unsigned int i = 0; i < values[key].mKeys.size(); i++)
-+ {
-+ if (values[key].mKeys[i].mValue == value)
-+ return values[key].mKeys[i].mWeight;
-+ }
-+ // no value at key found, try to interpolate if present at other keys. if not,
return zero
-+ // TODO: interpolation
-+ return 0.0f;
-+}
-+
- //
------------------------------------------------------------------------------------------------
- // Constructs the animation for the given source anim
- void ColladaLoader::CreateAnimation( aiScene* pScene, const ColladaParser& pParser,
const Collada::Animation* pSrcAnim, const std::string& pName)
-@@ -955,6 +1096,8 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const
ColladaParser& pPars
- CollectNodes( pScene->mRootNode, nodes);
-
- std::vector<aiNodeAnim*> anims;
-+ std::vector<aiMeshMorphAnim*> morphAnims;
-+
- for( std::vector<const aiNode*>::const_iterator nit = nodes.begin(); nit !=
nodes.end(); ++nit)
- {
- // find all the collada anim channels which refer to the current node
-@@ -978,7 +1121,20 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const
ColladaParser& pPars
- // find the slash that separates the node name - there should be only one
- std::string::size_type slashPos = srcChannel.mTarget.find( '/');
- if( slashPos == std::string::npos)
-+ {
-+ std::string::size_type targetPos =
srcChannel.mTarget.find(srcNode->mID);
-+ if (targetPos == std::string::npos)
-+ continue;
-+
-+ // not node transform, but something else. store as unknown animation
channel for now
-+ entry.mChannel = &(*cit);
-+ entry.mTargetId = srcChannel.mTarget.substr(targetPos +
pSrcAnim->mName.length(),
-+ srcChannel.mTarget.length() - targetPos -
pSrcAnim->mName.length());
-+ if (entry.mTargetId.front() == '-')
-+ entry.mTargetId = entry.mTargetId.substr(1);
-+ entries.push_back(entry);
- continue;
-+ }
- if( srcChannel.mTarget.find( '/', slashPos+1) != std::string::npos)
- continue;
- std::string targetID = srcChannel.mTarget.substr( 0, slashPos);
-@@ -1058,8 +1214,14 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const
ColladaParser& pPars
- if( srcNode->mTransforms[a].mID == entry.mTransformId)
- entry.mTransformIndex = a;
-
-- if( entry.mTransformIndex == SIZE_MAX) {
-- continue;
-+ if( entry.mTransformIndex == SIZE_MAX)
-+ {
-+ if (entry.mTransformId.find("morph-weights") !=
std::string::npos)
-+ {
-+ entry.mTargetId = entry.mTransformId;
-+ entry.mTransformId = "";
-+ } else
-+ continue;
- }
-
- entry.mChannel = &(*cit);
-@@ -1203,49 +1365,125 @@ void ColladaLoader::CreateAnimation( aiScene* pScene, const
ColladaParser& pPars
- // ai_assert( resultTrafos.size() > 0);
-
- // build an animation channel for the given node out of these trafo keys
-- if( !resultTrafos.empty() )
-- {
-- aiNodeAnim* dstAnim = new aiNodeAnim;
-- dstAnim->mNodeName = nodeName;
-- dstAnim->mNumPositionKeys = resultTrafos.size();
-- dstAnim->mNumRotationKeys= resultTrafos.size();
-- dstAnim->mNumScalingKeys = resultTrafos.size();
-- dstAnim->mPositionKeys = new aiVectorKey[resultTrafos.size()];
-- dstAnim->mRotationKeys = new aiQuatKey[resultTrafos.size()];
-- dstAnim->mScalingKeys = new aiVectorKey[resultTrafos.size()];
--
-- for( size_t a = 0; a < resultTrafos.size(); ++a)
-- {
-- aiMatrix4x4 mat = resultTrafos[a];
-- double time = double( mat.d4); // remember? time is stored in mat.d4
-- mat.d4 = 1.0f;
--
-- dstAnim->mPositionKeys[a].mTime = time;
-- dstAnim->mRotationKeys[a].mTime = time;
-- dstAnim->mScalingKeys[a].mTime = time;
-- mat.Decompose( dstAnim->mScalingKeys[a].mValue,
dstAnim->mRotationKeys[a].mValue, dstAnim->mPositionKeys[a].mValue);
-- }
-+ if( !resultTrafos.empty() )
-+ {
-+ aiNodeAnim* dstAnim = new aiNodeAnim;
-+ dstAnim->mNodeName = nodeName;
-+ dstAnim->mNumPositionKeys = resultTrafos.size();
-+ dstAnim->mNumRotationKeys= resultTrafos.size();
-+ dstAnim->mNumScalingKeys = resultTrafos.size();
-+ dstAnim->mPositionKeys = new aiVectorKey[resultTrafos.size()];
-+ dstAnim->mRotationKeys = new aiQuatKey[resultTrafos.size()];
-+ dstAnim->mScalingKeys = new aiVectorKey[resultTrafos.size()];
-+
-+ for( size_t a = 0; a < resultTrafos.size(); ++a)
-+ {
-+ aiMatrix4x4 mat = resultTrafos[a];
-+ double time = double( mat.d4); // remember? time is stored in mat.d4
-+ mat.d4 = 1.0f;
-+
-+ dstAnim->mPositionKeys[a].mTime = time;
-+ dstAnim->mRotationKeys[a].mTime = time;
-+ dstAnim->mScalingKeys[a].mTime = time;
-+ mat.Decompose( dstAnim->mScalingKeys[a].mValue,
dstAnim->mRotationKeys[a].mValue, dstAnim->mPositionKeys[a].mValue);
-+ }
-
-- anims.push_back( dstAnim);
-- } else
-- {
-- DefaultLogger::get()->warn( "Collada loader: found empty animation
channel, ignored. Please check your exporter.");
-- }
-+ anims.push_back( dstAnim);
-+ } else
-+ {
-+ DefaultLogger::get()->warn( "Collada loader: found empty animation
channel, ignored. Please check your exporter.");
-+ }
-+
-+ if( !entries.empty() && entries.front().mTimeAccessor->mCount > 0
)
-+ {
-+ std::vector<Collada::ChannelEntry> morphChannels;
-+ for( std::vector<Collada::ChannelEntry>::iterator it =
entries.begin(); it != entries.end(); ++it)
-+ {
-+ Collada::ChannelEntry& e = *it;
-+
-+ // skip non-transform types
-+ if (e.mTargetId.empty())
-+ continue;
-+
-+ if (e.mTargetId.find("morph-weights") != std::string::npos)
-+ morphChannels.push_back(e);
-+ }
-+ if (morphChannels.size() > 0)
-+ {
-+ // either 1) morph weight animation count should contain morph target
count channels
-+ // or 2) one channel with morph target count arrays
-+ // assume first
-+
-+ aiMeshMorphAnim *morphAnim = new aiMeshMorphAnim;
-+ morphAnim->mName.Set(nodeName);
-+
-+ std::vector<MorphTimeValues> morphTimeValues;
-+
-+ int morphAnimChannelIndex = 0;
-+ for( std::vector<Collada::ChannelEntry>::iterator it =
morphChannels.begin(); it != morphChannels.end(); ++it)
-+ {
-+ Collada::ChannelEntry& e = *it;
-+ std::string::size_type apos = e.mTargetId.find('(');
-+ std::string::size_type bpos = e.mTargetId.find(')');
-+ if (apos == std::string::npos || bpos == std::string::npos)
-+ // unknown way to specify weight -> ignore this animation
-+ continue;
-+
-+ // weight target can be in format Weight_M_N, Weight_N, WeightN, or
some other way
-+ // we ignore the name and just assume the channels are in the right
order
-+ for (unsigned int i = 0; i < e.mTimeData->mValues.size();
i++)
-+ insertMorphTimeValue(morphTimeValues,
e.mTimeData->mValues.at(i), e.mValueData->mValues.at(i), morphAnimChannelIndex);
-+
-+ ++morphAnimChannelIndex;
-+ }
-+
-+ morphAnim->mNumKeys = morphTimeValues.size();
-+ morphAnim->mKeys = new aiMeshMorphKey[morphAnim->mNumKeys];
-+ for (unsigned int key = 0; key < morphAnim->mNumKeys; key++)
-+ {
-+ morphAnim->mKeys[key].mNumValuesAndWeights =
morphChannels.size();
-+ morphAnim->mKeys[key].mValues = new unsigned int
[morphChannels.size()];
-+ morphAnim->mKeys[key].mWeights = new double
[morphChannels.size()];
-+
-+ morphAnim->mKeys[key].mTime = morphTimeValues[key].mTime;
-+ for (unsigned int valueIndex = 0; valueIndex <
morphChannels.size(); valueIndex++)
-+ {
-+ morphAnim->mKeys[key].mValues[valueIndex] = valueIndex;
-+ morphAnim->mKeys[key].mWeights[valueIndex] =
getWeightAtKey(morphTimeValues, key, valueIndex);
-+ }
-+ }
-+
-+ morphAnims.push_back(morphAnim);
-+ }
-+ }
- }
-
-- if( !anims.empty())
-+ if( !anims.empty() || !morphAnims.empty())
- {
- aiAnimation* anim = new aiAnimation;
- anim->mName.Set( pName);
- anim->mNumChannels = anims.size();
-- anim->mChannels = new aiNodeAnim*[anims.size()];
-- std::copy( anims.begin(), anims.end(), anim->mChannels);
-+ if (anim->mNumChannels > 0)
-+ {
-+ anim->mChannels = new aiNodeAnim*[anims.size()];
-+ std::copy( anims.begin(), anims.end(), anim->mChannels);
-+ }
-+ anim->mNumMorphMeshChannels = morphAnims.size();
-+ if (anim->mNumMorphMeshChannels > 0)
-+ {
-+ anim->mMorphMeshChannels = new
aiMeshMorphAnim*[anim->mNumMorphMeshChannels];
-+ std::copy( morphAnims.begin(), morphAnims.end(),
anim->mMorphMeshChannels);
-+ }
- anim->mDuration = 0.0f;
- for( size_t a = 0; a < anims.size(); ++a)
- {
-- anim->mDuration = std::max( anim->mDuration,
anims[a]->mPositionKeys[anims[a]->mNumPositionKeys-1].mTime);
-- anim->mDuration = std::max( anim->mDuration,
anims[a]->mRotationKeys[anims[a]->mNumRotationKeys-1].mTime);
-- anim->mDuration = std::max( anim->mDuration,
anims[a]->mScalingKeys[anims[a]->mNumScalingKeys-1].mTime);
-+ anim->mDuration = std::max( anim->mDuration,
anims[a]->mPositionKeys[anims[a]->mNumPositionKeys-1].mTime);
-+ anim->mDuration = std::max( anim->mDuration,
anims[a]->mRotationKeys[anims[a]->mNumRotationKeys-1].mTime);
-+ anim->mDuration = std::max( anim->mDuration,
anims[a]->mScalingKeys[anims[a]->mNumScalingKeys-1].mTime);
-+ }
-+ for (size_t a = 0; a < morphAnims.size(); ++a)
-+ {
-+ anim->mDuration = std::max(anim->mDuration,
morphAnims[a]->mKeys[morphAnims[a]->mNumKeys-1].mTime);
- }
- anim->mTicksPerSecond = 1;
- mAnims.push_back( anim);
-diff --git a/code/ColladaLoader.h b/code/ColladaLoader.h
-index 313608c..fc26532 100644
---- a/code/ColladaLoader.h
-+++ b/code/ColladaLoader.h
-@@ -117,6 +117,8 @@ protected:
- /** Builds meshes for the given node and references them */
- void BuildMeshesForNode( const ColladaParser& pParser, const Collada::Node*
pNode,
- aiNode* pTarget);
-+
-+ aiMesh *findMesh(std::string meshid);
-
- /** Creates a mesh for the given ColladaMesh face subset and returns the newly
created mesh */
- aiMesh* CreateMesh( const ColladaParser& pParser, const Collada::Mesh* pSrcMesh,
const Collada::SubMesh& pSubMesh,
-@@ -223,6 +225,9 @@ protected:
-
- /** Accumulated meshes for the target scene */
- std::vector<aiMesh*> mMeshes;
-+
-+ /** Accumulated morph target meshes */
-+ std::vector<aiMesh*> mTargetMeshes;
-
- /** Temporary material list */
- std::vector<std::pair<Collada::Effect*, aiMaterial*> > newMats;
-diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp
-index 527e2ed..ce87476 100644
---- a/code/ColladaParser.cpp
-+++ b/code/ColladaParser.cpp
-@@ -586,6 +586,12 @@ void ColladaParser::ReadAnimationSampler(
Collada::AnimationChannel& pChannel)
- pChannel.mSourceTimes = source;
- else if( strcmp( semantic, "OUTPUT") == 0)
- pChannel.mSourceValues = source;
-+ else if( strcmp( semantic, "IN_TANGENT") == 0)
-+ pChannel.mInTanValues = source;
-+ else if( strcmp( semantic, "OUT_TANGENT") == 0)
-+ pChannel.mOutTanValues = source;
-+ else if( strcmp( semantic, "INTERPOLATION") == 0)
-+ pChannel.mInterpolationValues = source;
-
- if( !mReader->isEmptyElement())
- SkipElement();
-@@ -648,6 +654,9 @@ void ColladaParser::ReadControllerLibrary()
- // Reads a controller into the given mesh structure
- void ColladaParser::ReadController( Collada::Controller& pController)
- {
-+ // initial values
-+ pController.mType = Skin;
-+ pController.mMethod = Normalized;
- while( mReader->read())
- {
- if( mReader->getNodeType() == irr::io::EXN_ELEMENT)
-@@ -655,8 +664,15 @@ void ColladaParser::ReadController( Collada::Controller&
pController)
- // two types of controllers: "skin" and "morph". Only
the first one is relevant, we skip the other
- if( IsElement( "morph"))
- {
-- // should skip everything inside, so there's no danger of catching
elements inbetween
-- SkipElement();
-+ pController.mType = Morph;
-+ int baseIndex = GetAttribute("source");
-+ pController.mMeshId = mReader->getAttributeValue(baseIndex) + 1;
-+ int methodIndex = GetAttribute("method");
-+ if (methodIndex > 0) {
-+ const char *method = mReader->getAttributeValue(methodIndex);
-+ if (strcmp(method, "RELATIVE") == 0)
-+ pController.mMethod = Relative;
-+ }
- }
- else if( IsElement( "skin"))
- {
-@@ -694,6 +710,32 @@ void ColladaParser::ReadController( Collada::Controller&
pController)
- {
- ReadControllerWeights( pController);
- }
-+ else if ( IsElement( "targets" ))
-+ {
-+ while (mReader->read()) {
-+ if( mReader->getNodeType() == irr::io::EXN_ELEMENT) {
-+ if ( IsElement( "input")) {
-+ int semanticsIndex = GetAttribute("semantic");
-+ int sourceIndex = GetAttribute("source");
-+
-+ const char *semantics =
mReader->getAttributeValue(semanticsIndex);
-+ const char *source =
mReader->getAttributeValue(sourceIndex);
-+ if (strcmp(semantics, "MORPH_TARGET") == 0) {
-+ pController.mMorphTarget = source + 1;
-+ }
-+ else if (strcmp(semantics, "MORPH_WEIGHT") == 0)
-+ {
-+ pController.mMorphWeight = source + 1;
-+ }
-+ }
-+ } else if( mReader->getNodeType() == irr::io::EXN_ELEMENT_END) {
-+ if( strcmp( mReader->getNodeName(), "targets") ==
0)
-+ break;
-+ else
-+ ThrowException( "Expected end of <targets>
element.");
-+ }
-+ }
-+ }
- else
- {
- // ignore the rest
-@@ -704,7 +746,7 @@ void ColladaParser::ReadController( Collada::Controller&
pController)
- {
- if( strcmp( mReader->getNodeName(), "controller") == 0)
- break;
-- else if( strcmp( mReader->getNodeName(), "skin") != 0)
-+ else if( strcmp( mReader->getNodeName(), "skin") != 0
&& strcmp( mReader->getNodeName(), "morph") != 0)
- ThrowException( "Expected end of <controller>
element.");
- }
- }
-diff --git a/code/CreateAnimMesh.cpp b/code/CreateAnimMesh.cpp
-new file mode 100644
-index 0000000..094a414
---- /dev/null
-+++ b/code/CreateAnimMesh.cpp
-@@ -0,0 +1,92 @@
-+/*
-+---------------------------------------------------------------------------
-+Open Asset Import Library (assimp)
-+---------------------------------------------------------------------------
-+
-+Copyright (C) 2016 The Qt Company Ltd.
-+Copyright (c) 2006-2012, 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.
-+---------------------------------------------------------------------------
-+*/
-+
-+#include "CreateAnimMesh.h"
-+
-+namespace Assimp {
-+
-+aiAnimMesh *aiCreateAnimMesh(const aiMesh *mesh)
-+{
-+ aiAnimMesh *animesh = new aiAnimMesh;
-+ animesh->mVertices = NULL;
-+ animesh->mNormals = NULL;
-+ animesh->mTangents = NULL;
-+ animesh->mBitangents = NULL;
-+ animesh->mNumVertices = mesh->mNumVertices;
-+ if (mesh->mVertices) {
-+ animesh->mVertices = new aiVector3D[animesh->mNumVertices];
-+ std::memcpy(animesh->mVertices, mesh->mVertices, mesh->mNumVertices *
sizeof(aiVector3D));
-+ }
-+ if (mesh->mNormals) {
-+ animesh->mNormals = new aiVector3D[animesh->mNumVertices];
-+ std::memcpy(animesh->mNormals, mesh->mNormals, mesh->mNumVertices *
sizeof(aiVector3D));
-+ }
-+ if (mesh->mTangents) {
-+ animesh->mTangents = new aiVector3D[animesh->mNumVertices];
-+ std::memcpy(animesh->mTangents, mesh->mTangents, mesh->mNumVertices *
sizeof(aiVector3D));
-+ }
-+ if (mesh->mBitangents) {
-+ animesh->mBitangents = new aiVector3D[animesh->mNumVertices];
-+ std::memcpy(animesh->mBitangents, mesh->mBitangents, mesh->mNumVertices
* sizeof(aiVector3D));
-+ }
-+
-+ for (int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) {
-+ if (mesh->mColors[i]) {
-+ animesh->mColors[i] = new aiColor4D[animesh->mNumVertices];
-+ std::memcpy(animesh->mColors[i], mesh->mColors[i],
mesh->mNumVertices * sizeof(aiColor4D));
-+ } else {
-+ animesh->mColors[i] = NULL;
-+ }
-+ }
-+
-+ for (int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) {
-+ if (mesh->mTextureCoords[i]) {
-+ animesh->mTextureCoords[i] = new aiVector3D[animesh->mNumVertices];
-+ std::memcpy(animesh->mTextureCoords[i], mesh->mTextureCoords[i],
mesh->mNumVertices * sizeof(aiVector3D));
-+ } else {
-+ animesh->mTextureCoords[i] = NULL;
-+ }
-+ }
-+ return animesh;
-+}
-+
-+} // end of namespace Assimp
-diff --git a/code/CreateAnimMesh.h b/code/CreateAnimMesh.h
-new file mode 100644
-index 0000000..c5ceb40
---- /dev/null
-+++ b/code/CreateAnimMesh.h
-@@ -0,0 +1,56 @@
-+/*
-+Open Asset Import Library (assimp)
-+----------------------------------------------------------------------
-+
-+Copyright (c) 2006-2016, 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.
-+
-+----------------------------------------------------------------------
-+*/
-+
-+/** @file CreateAnimMesh.h
-+ * Create AnimMesh from Mesh
-+ */
-+#ifndef INCLUDED_AI_CREATE_ANIM_MESH_H
-+#define INCLUDED_AI_CREATE_ANIM_MESH_H
-+
-+#include <assimp/mesh.h>
-+
-+namespace Assimp {
-+
-+/** Create aiAnimMesh from aiMesh. */
-+aiAnimMesh *aiCreateAnimMesh(const aiMesh *mesh);
-+
-+} // end of namespace Assimp
-+#endif // INCLUDED_AI_CREATE_ANIM_MESH_H
-+
-diff --git a/include/assimp/anim.h b/include/assimp/anim.h
-index af59417..7b4dff8 100644
---- a/include/assimp/anim.h
-+++ b/include/assimp/anim.h
-@@ -182,6 +182,39 @@ struct aiMeshKey
- };
-
- // ---------------------------------------------------------------------------
-+/** Binds a morph anim mesh to a specific point in time. */
-+struct aiMeshMorphKey
-+{
-+ /** The time of this key */
-+ double mTime;
-+
-+ /** The values and weights at the time of this key */
-+ unsigned int *mValues;
-+ double *mWeights;
-+
-+ /** The number of values and weights */
-+ unsigned int mNumValuesAndWeights;
-+#ifdef __cplusplus
-+ aiMeshMorphKey()
-+ : mTime(0.0)
-+ , mValues(NULL)
-+ , mWeights(NULL)
-+ , mNumValuesAndWeights(0)
-+ {
-+
-+ }
-+
-+ ~aiMeshMorphKey()
-+ {
-+ if (mNumValuesAndWeights && mValues && mWeights) {
-+ delete [] mValues;
-+ delete [] mWeights;
-+ }
-+ }
-+#endif
-+};
-+
-+// ---------------------------------------------------------------------------
- /** Defines how an animation channel behaves outside the defined time
- * range. This corresponds to aiNodeAnim::mPreState and
- * aiNodeAnim::mPostState.*/
-@@ -335,7 +368,38 @@ struct aiMeshAnim
- };
-
- // ---------------------------------------------------------------------------
--/** An animation consists of keyframe data for a number of nodes. For
-+/** Describes a morphing animation of a given mesh. */
-+struct aiMeshMorphAnim
-+{
-+ /** Name of the mesh to be animated. An empty string is not allowed,
-+ * animated meshes need to be named (not necessarily uniquely,
-+ * the name can basically serve as wildcard to select a group
-+ * of meshes with similar animation setup)*/
-+ C_STRUCT aiString mName;
-+
-+ /** Size of the #mKeys array. Must be 1, at least. */
-+ unsigned int mNumKeys;
-+
-+ /** Key frames of the animation. May not be NULL. */
-+ C_STRUCT aiMeshMorphKey* mKeys;
-+
-+#ifdef __cplusplus
-+
-+ aiMeshMorphAnim()
-+ : mNumKeys()
-+ , mKeys()
-+ {}
-+
-+ ~aiMeshMorphAnim()
-+ {
-+ delete[] mKeys;
-+ }
-+
-+#endif
-+};
-+
-+// ---------------------------------------------------------------------------
-+/** An animation consists of key-frame data for a number of nodes. For
- * each node affected by the animation a separate series of data is given.*/
- struct aiAnimation
- {
-@@ -367,15 +431,25 @@ struct aiAnimation
- * The array is mNumMeshChannels in size. */
- C_STRUCT aiMeshAnim** mMeshChannels;
-
-+ /** The number of mesh animation channels. Each channel affects
-+ * a single mesh and defines morphing animation. */
-+ unsigned int mNumMorphMeshChannels;
-+
-+ /** The morph mesh animation channels. Each channel affects a single mesh.
-+ * The array is mNumMorphMeshChannels in size. */
-+ C_STRUCT aiMeshMorphAnim **mMorphMeshChannels;
-+
- #ifdef __cplusplus
- aiAnimation()
-- : mDuration(-1.)
-- , mTicksPerSecond()
-- , mNumChannels()
-- , mChannels()
-- , mNumMeshChannels()
-- , mMeshChannels()
-- {
-+ : mDuration(-1.)
-+ , mTicksPerSecond(0.)
-+ , mNumChannels(0)
-+ , mChannels(NULL)
-+ , mNumMeshChannels(0)
-+ , mMeshChannels(NULL)
-+ , mNumMorphMeshChannels(0)
-+ , mMorphMeshChannels(NULL) {
-+ // empty
- }
-
- ~aiAnimation()
-@@ -395,6 +469,11 @@ struct aiAnimation
-
- delete [] mMeshChannels;
- }
-+ if (mNumMorphMeshChannels && mMorphMeshChannels) {
-+ for( unsigned int a = 0; a < mNumMorphMeshChannels; a++) {
-+ delete mMorphMeshChannels[a];
-+ }
-+ }
- }
- #endif // __cplusplus
- };
-diff --git a/include/assimp/mesh.h b/include/assimp/mesh.h
-index a76a2d7..2ebc14d 100644
---- a/include/assimp/mesh.h
-+++ b/include/assimp/mesh.h
-@@ -377,6 +377,9 @@ struct aiAnimMesh
- */
- unsigned int mNumVertices;
-
-+/** Weight of the AnimMesh. */
-+ float mWeight;
-+
- #ifdef __cplusplus
-
- aiAnimMesh()
-@@ -445,6 +448,27 @@ struct aiAnimMesh
- #endif
- };
-
-+// ---------------------------------------------------------------------------
-+/** @brief Enumerates the methods of mesh morphing supported by Assimp.
-+ */
-+enum aiMorphingMethod
-+{
-+ /** Interpolation between morph targets */
-+ aiMorphingMethod_VERTEX_BLEND = 0x1,
-+
-+ /** Normalized morphing between morph targets */
-+ aiMorphingMethod_MORPH_NORMALIZED = 0x2,
-+
-+ /** Relative morphing between morph targets */
-+ aiMorphingMethod_MORPH_RELATIVE = 0x3,
-+
-+ /** This value is not used. It is just here to force the
-+ * compiler to map this enum to a 32 Bit integer.
-+ */
-+#ifndef SWIG
-+ _aiMorphingMethod_Force32Bit = INT_MAX
-+#endif
-+}; //! enum aiMorphingMethod
-
- // ---------------------------------------------------------------------------
- /** @brief A mesh represents a geometry or model with a single material.
-@@ -599,15 +623,18 @@ struct aiMesh
- C_STRUCT aiString mName;
-
-
-- /** NOT CURRENTLY IN USE. The number of attachment meshes */
-+ /** The number of attachment meshes. Note! Currently only works with Collada loader.
*/
- unsigned int mNumAnimMeshes;
-
-- /** NOT CURRENTLY IN USE. Attachment meshes for this mesh, for vertex-based
animation.
-+ /** Attachment meshes for this mesh, for vertex-based animation.
- * Attachment meshes carry replacement data for some of the
-- * mesh'es vertex components (usually positions, normals). */
-+ * mesh'es vertex components (usually positions, normals).
-+ * Note! Currently only works with Collada loader.*/
- C_STRUCT aiAnimMesh** mAnimMeshes;
-
--
-+ /** Method of morphing when animeshes are specified. */
-+ unsigned int mMethod;
-+
- #ifdef __cplusplus
-
- //! Default constructor. Initializes all members to 0
-@@ -732,7 +759,6 @@ struct aiMesh
- #endif // __cplusplus
- };
-
--
- #ifdef __cplusplus
- }
- #endif //! extern "C"
---
-2.9.3
-
diff --git a/assimp-3.2.0-pythonpath.patch b/assimp-3.2.0-pythonpath.patch
deleted file mode 100644
index 0ef9d95..0000000
--- a/assimp-3.2.0-pythonpath.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -up ./port/PyAssimp/pyassimp/helper.py.pythonpath
./port/PyAssimp/pyassimp/helper.py
---- ./port/PyAssimp/pyassimp/helper.py.pythonpath 2016-05-21 19:54:37.152745935 -0400
-+++ ./port/PyAssimp/pyassimp/helper.py 2016-05-21 19:57:28.578516453 -0400
-@@ -22,6 +22,7 @@ additional_dirs, ext_whitelist = [],[]
- # depending on the platform we're running on.
- if os.name=='posix':
- additional_dirs.append('./')
-+ additional_dirs.append('/usr/lib64/')
- additional_dirs.append('/usr/lib/')
- additional_dirs.append('/usr/local/lib/')
-
-@@ -29,6 +30,7 @@ if os.name=='posix':
- # currently there's always a symlink called
- # libassimp.so in /usr/local/lib.
- ext_whitelist.append('.so')
-+ ext_whitelist.append('.3')
- # libassimp.dylib in /usr/local/lib
- ext_whitelist.append('.dylib')
-
diff --git a/assimp-3.3.1-cmakemacros.patch b/assimp-3.3.1-cmakemacros.patch
deleted file mode 100644
index 7c6e17e..0000000
--- a/assimp-3.3.1-cmakemacros.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up ./doc/Doxyfile.in.cmakemacros ./doc/Doxyfile.in
---- ./doc/Doxyfile.in.cmakemacros 2020-08-08 17:47:39.902816214 -0400
-+++ ./doc/Doxyfile.in 2020-08-08 17:48:22.465554872 -0400
-@@ -664,7 +664,6 @@ WARN_LOGFILE =
-
- INPUT = @doxy_main_page@ \
- @PROJECT_SOURCE_DIR@ \
-- @PROJECT_BINARY_DIR@ \
- @PROJECT_SOURCE_DIR@/include/ \
- @PROJECT_SOURCE_DIR(a)/doc/dox.h \
- @PROJECT_SOURCE_DIR(a)/code/BaseImporter.h
-@@ -725,7 +724,7 @@ RECURSIVE = YES
- # Note that relative paths are relative to the directory from which doxygen is
- # run.
-
--EXCLUDE =
-+EXCLUDE = @PROJECT_BINARY_DIR@
-
- # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
- # directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/assimp-3.3.1-install-pkgconfig.patch b/assimp-3.3.1-install-pkgconfig.patch
deleted file mode 100644
index 6a45f68..0000000
--- a/assimp-3.3.1-install-pkgconfig.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- assimp-3.3.1/assimp.pc.in.fedora 2017-05-18 07:19:36.251314963 +0200
-+++ assimp-3.3.1/assimp.pc.in 2017-05-18 07:20:26.038525493 +0200
-@@ -1,7 +1,7 @@
- prefix=@CMAKE_INSTALL_PREFIX@
--exec_prefix=@CMAKE_INSTALL_PREFIX@/@ASSIMP_BIN_INSTALL_DIR@
--libdir=@CMAKE_INSTALL_PREFIX@/@ASSIMP_LIB_INSTALL_DIR@
--includedir=@CMAKE_INSTALL_PREFIX@/@ASSIMP_INCLUDE_INSTALL_DIR@/assimp
-+exec_prefix=@ASSIMP_BIN_INSTALL_DIR@
-+libdir=@ASSIMP_LIB_INSTALL_DIR@
-+includedir=@ASSIMP_INCLUDE_INSTALL_DIR@/assimp
-
- Name: @CMAKE_PROJECT_NAME@
- Description: Import various well-known 3D model formats in an uniform manner.
diff --git a/assimp-3.3.1-namespace-bigendian.patch
b/assimp-3.3.1-namespace-bigendian.patch
deleted file mode 100644
index 28b5d89..0000000
--- a/assimp-3.3.1-namespace-bigendian.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up assimp-3.3.1/code/ByteSwapper.h.than assimp-3.3.1/code/ByteSwapper.h
-diff -up assimp-3.3.1/code/glTFAsset.inl.than assimp-3.3.1/code/glTFAsset.inl
---- assimp-3.3.1/code/glTFAsset.inl.than 2017-05-05 17:28:29.754976483 -0400
-+++ assimp-3.3.1/code/glTFAsset.inl 2017-05-05 17:28:52.995404721 -0400
-@@ -40,6 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
- #include "StringUtils.h"
-
-+using namespace Assimp;
- namespace glTF {
-
- namespace {
diff --git a/assimp-3.3.1-unbundle.patch b/assimp-3.3.1-unbundle.patch
deleted file mode 100644
index c28474b..0000000
--- a/assimp-3.3.1-unbundle.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8455bb8..c8e0d88 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -211,6 +211,26 @@ IF ( ASSIMP_NO_EXPORT )
- MESSAGE( STATUS "Build an import-only version of Assimp." )
- ENDIF( ASSIMP_NO_EXPORT )
-
-+# Search for poly2tri
-+FIND_LIBRARY(POLY2TRI_LIB poly2tri HINTS ${POLY2TRI_LIB_PATH})
-+FIND_FILE(POLY2TRI_H poly2tri.h PATHS ${POLY2TRI_INCLUDE_PATH})
-+IF (POLY2TRI_LIB AND POLY2TRI_H)
-+ message(status "Found External poly2tri")
-+ SET(HAVE_POLY2TRI true)
-+ELSE(POLY2TRI_LIB AND POLY2TRI_H)
-+ SET(HAVE_POLY2TRI false)
-+ENDIF(POLY2TRI_LIB AND POLY2TRI_H)
-+
-+# Search for clipper
-+FIND_LIBRARY(CLIPPER_LIB polyclipping HINTS ${CLIPPER_LIB_PATH})
-+FIND_FILE(CLIPPER_H clipper.hpp PATHS ${CLIPPER_INCLUDE_PATH})
-+IF (CLIPPER_LIB AND CLIPPER_H)
-+ message(status "Found External clipper")
-+ SET(HAVE_CLIPPER true)
-+ELSE(CLIPPER_LIB AND CLIPPER_H)
-+ SET(HAVE_CLIPPER false)
-+ENDIF(CLIPPER_LIB AND CLIPPER_H)
-+
- SET ( ASSIMP_BUILD_ARCHITECTURE "" CACHE STRING
- "describe the current architecture."
- )
-diff --git a/code/BlenderTessellator.h b/code/BlenderTessellator.h
-index 530bd2c..a6c9d9e 100644
---- a/code/BlenderTessellator.h
-+++ b/code/BlenderTessellator.h
-@@ -142,7 +142,7 @@ namespace Assimp
-
- #if ASSIMP_BLEND_WITH_POLY_2_TRI
-
--#include "../contrib/poly2tri/poly2tri/poly2tri.h"
-+#include "poly2tri/poly2tri.h"
-
- namespace Assimp
- {
-diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
-index 35ecf50..d549c89 100644
---- a/code/CMakeLists.txt
-+++ b/code/CMakeLists.txt
-@@ -655,12 +655,15 @@ SET( ConvertUTF_SRCS
- )
- SOURCE_GROUP( ConvertUTF FILES ${ConvertUTF_SRCS})
-
-+if (NOT HAVE_CLIPPER)
- SET( Clipper_SRCS
- ../contrib/clipper/clipper.hpp
- ../contrib/clipper/clipper.cpp
- )
- SOURCE_GROUP( Clipper FILES ${Clipper_SRCS})
--
-+else (NOT HAVE_CLIPPER)
-+SET( Clipper_SRCS "")
-+endif(NOT HAVE_CLIPPER)
-
- SET( Poly2Tri_SRCS
- ../contrib/poly2tri/poly2tri/common/shapes.cc
-@@ -743,8 +746,6 @@ SET( assimp_src
- # Third-party libraries
- ${IrrXML_SRCS}
- ${ConvertUTF_SRCS}
-- ${unzip_compile_SRCS}
-- ${Poly2Tri_SRCS}
- ${Clipper_SRCS}
- ${openddl_parser_SRCS}
- # Necessary to show the headers in the project when using the VC++ generator:
-@@ -753,6 +754,8 @@ SET( assimp_src
- ${COMPILER_HEADERS}
-
- )
-+
-+
- ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD )
-
- INCLUDE_DIRECTORIES(
-@@ -821,6 +824,19 @@ else (UNZIP_FOUND)
- INCLUDE_DIRECTORIES("../")
- endif (UNZIP_FOUND)
-
-+if (HAVE_POLY2TRI)
-+ INCLUDE_DIRECTORIES(${POLY2TRI_INCLUDE_PATH})
-+ TARGET_LINK_LIBRARIES(assimp ${POLY2TRI_LIB})
-+endif(HAVE_POLY2TRI)
-+
-+if (HAVE_CLIPPER)
-+ INCLUDE_DIRECTORIES(${CLIPPER_INCLUDE_PATH})
-+ TARGET_LINK_LIBRARIES(assimp ${CLIPPER_LIB})
-+else (HAVE_CLIPPER)
-+ INCLUDE_DIRECTORIES(../contrib/clipper)
-+endif(HAVE_CLIPPER)
-+
-+
- INSTALL( TARGETS assimp
- LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
- ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
-diff --git a/code/D3MFImporter.cpp b/code/D3MFImporter.cpp
-index 1a97168..7377eb4 100644
---- a/code/D3MFImporter.cpp
-+++ b/code/D3MFImporter.cpp
-@@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include <assimp/IOStream.hpp>
- #include <assimp/IOSystem.hpp>
- #include <assimp/DefaultLogger.hpp>
--#include <contrib/unzip/unzip.h>
-+#include <minizip/unzip.h>
- #include "irrXMLWrapper.h"
- #include "StringComparison.h"
- #include "StringUtils.h"
-diff --git a/code/D3MFOpcPackage.cpp b/code/D3MFOpcPackage.cpp
-index 7cc1dd5..2b007db 100644
---- a/code/D3MFOpcPackage.cpp
-+++ b/code/D3MFOpcPackage.cpp
-@@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include "D3MFOpcPackage.h"
- #include "Exceptional.h"
-
--#include <contrib/unzip/unzip.h>
-+#include <minizip/unzip.h>
- #include <assimp/IOStream.hpp>
- #include <assimp/IOSystem.hpp>
- #include <assimp/DefaultLogger.hpp>
-diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp
-index 5a2e4a0..0926498 100644
---- a/code/IFCGeometry.cpp
-+++ b/code/IFCGeometry.cpp
-@@ -49,8 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include "PolyTools.h"
- #include "ProcessHelper.h"
-
--#include "../contrib/poly2tri/poly2tri/poly2tri.h"
--#include "../contrib/clipper/clipper.hpp"
-+#include "poly2tri/poly2tri.h"
-+#include "clipper.hpp"
- #include <memory>
-
- #include <iterator>
-diff --git a/code/IFCLoader.cpp b/code/IFCLoader.cpp
-index 34977f5..bc655c0 100644
---- a/code/IFCLoader.cpp
-+++ b/code/IFCLoader.cpp
-@@ -50,7 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include <tuple>
-
- #ifndef ASSIMP_BUILD_NO_COMPRESSED_IFC
--# include <contrib/unzip/unzip.h>
-+# include <minizip/unzip.h>
- #endif
-
- #include "IFCLoader.h"
-diff --git a/code/IFCOpenings.cpp b/code/IFCOpenings.cpp
-index 51ea143..f0915fb 100644
---- a/code/IFCOpenings.cpp
-+++ b/code/IFCOpenings.cpp
-@@ -49,8 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include "PolyTools.h"
- #include "ProcessHelper.h"
-
--#include "../contrib/poly2tri/poly2tri/poly2tri.h"
--#include "../contrib/clipper/clipper.hpp"
-+#include "poly2tri/poly2tri.h"
-+#include "clipper.hpp"
-
- #include <iterator>
-
-diff --git a/code/Q3BSPZipArchive.h b/code/Q3BSPZipArchive.h
-index e46a11b..da93e5c 100644
---- a/code/Q3BSPZipArchive.h
-+++ b/code/Q3BSPZipArchive.h
-@@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #ifndef AI_Q3BSP_ZIPARCHIVE_H_INC
- #define AI_Q3BSP_ZIPARCHIVE_H_INC
-
--#include <contrib/unzip/unzip.h>
-+#include <minizip/unzip.h>
- #include <assimp/IOStream.hpp>
- #include <assimp/IOSystem.hpp>
- #include <string>
-diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
-index df0139d..8b26f22 100644
---- a/test/CMakeLists.txt
-+++ b/test/CMakeLists.txt
-@@ -37,7 +37,8 @@
- #----------------------------------------------------------------------
- cmake_minimum_required( VERSION 2.6 )
-
--INCLUDE( AddGTest )
-+# Search for Google Test
-+FIND_PACKAGE(GTest)
-
- INCLUDE_DIRECTORIES(
- ${Assimp_SOURCE_DIR}/include
-diff --git a/tools/assimp_cmd/CMakeLists.txt b/tools/assimp_cmd/CMakeLists.txt
-index f8af93a..3f9a902 100644
diff --git a/assimp-5.0.1-assimpversion.patch b/assimp-5.0.1-assimpversion.patch
new file mode 100644
index 0000000..6409bb1
--- /dev/null
+++ b/assimp-5.0.1-assimpversion.patch
@@ -0,0 +1,12 @@
+diff -up ./CMakeLists.txt.assimpversion ./CMakeLists.txt
+--- ./CMakeLists.txt.assimpversion 2020-06-23 20:40:43.160107355 -0400
++++ ./CMakeLists.txt 2020-06-23 20:41:03.435259223 -0400
+@@ -51,7 +51,7 @@ IF(HUNTER_ENABLED)
+ add_definitions(-DASSIMP_USE_HUNTER)
+ ENDIF(HUNTER_ENABLED)
+
+-PROJECT( Assimp VERSION 5.0.0 )
++PROJECT( Assimp VERSION 5.0.1 )
+
+ # All supported options ###############################################
+
diff --git a/assimp-5.0.1-doxyfile.patch b/assimp-5.0.1-doxyfile.patch
new file mode 100644
index 0000000..7690a64
--- /dev/null
+++ b/assimp-5.0.1-doxyfile.patch
@@ -0,0 +1,21 @@
+diff -up ./doc/Doxyfile.in.doxyfile ./doc/Doxyfile.in
+--- ./doc/Doxyfile.in.doxyfile 2020-01-12 06:56:40.000000000 -0500
++++ ./doc/Doxyfile.in 2021-02-27 18:12:22.953572564 -0500
+@@ -664,7 +664,6 @@ WARN_LOGFILE =
+
+ INPUT = @doxy_main_page@ \
+ @PROJECT_SOURCE_DIR@ \
+- @PROJECT_BINARY_DIR@ \
+ @PROJECT_SOURCE_DIR@/include/ \
+ @PROJECT_SOURCE_DIR(a)/doc/dox.h \
+ @PROJECT_SOURCE_DIR(a)/code/BaseImporter.h
+@@ -725,7 +724,8 @@ RECURSIVE = YES
+ # Note that relative paths are relative to the directory from which doxygen is
+ # run.
+
+-EXCLUDE = irrXML.h
++EXCLUDE = irrXML.h \
++ @PROJECT_BINARY_DIR@
+
+ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+ # directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/assimp-5.0.1-irrxml.patch b/assimp-5.0.1-irrxml.patch
new file mode 100644
index 0000000..3da7b6c
--- /dev/null
+++ b/assimp-5.0.1-irrxml.patch
@@ -0,0 +1,46 @@
+diff -up ./code/X3D/FIReader.cpp.irrxml ./code/X3D/FIReader.cpp
+--- ./code/X3D/FIReader.cpp.irrxml 2020-01-12 06:56:40.000000000 -0500
++++ ./code/X3D/FIReader.cpp 2021-03-07 20:38:31.402545036 -0500
+@@ -60,11 +60,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ #include <assimp/types.h>
+ #include <assimp/MemoryIOWrapper.h>
+ #include <assimp/irrXMLWrapper.h>
+-#ifdef ASSIMP_USE_HUNTER
+-# include <utf8/utf8.h>
+-#else
+-# include "../contrib/utf8cpp/source/utf8.h"
+-#endif
++#include <utf8.h>
+ #include <assimp/fast_atof.h>
+ #include <stack>
+ #include <map>
+@@ -654,7 +650,7 @@ public:
+ return currentNodeType;
+ }
+
+- virtual int getAttributeCount() const /*override*/ {
++ virtual unsigned int getAttributeCount() const /*override*/ {
+ return static_cast<int>(attributes.size());
+ }
+
+@@ -1733,7 +1729,7 @@ public:
+ return reader->getNodeType();
+ }
+
+- virtual int getAttributeCount() const /*override*/ {
++ virtual unsigned int getAttributeCount() const /*override*/ {
+ return reader->getAttributeCount();
+ }
+
+diff -up ./include/assimp/irrXMLWrapper.h.irrxml ./include/assimp/irrXMLWrapper.h
+--- ./include/assimp/irrXMLWrapper.h.irrxml 2020-01-12 06:56:40.000000000 -0500
++++ ./include/assimp/irrXMLWrapper.h 2021-03-07 20:38:15.760525926 -0500
+@@ -133,7 +133,7 @@ public:
+
+ //
----------------------------------------------------------------------------------
+ //! Returns size of file in bytes
+- virtual int getSize() {
++ virtual long getSize() const {
+ return (int)data.size();
+ }
+
diff --git a/assimp-5.0.1-lib-dir.patch b/assimp-5.0.1-lib-dir.patch
new file mode 100644
index 0000000..d05c0d7
--- /dev/null
+++ b/assimp-5.0.1-lib-dir.patch
@@ -0,0 +1,134 @@
+diff -uNr a/assimpTargets-debug.cmake.in b/assimpTargets-debug.cmake.in
+--- a/assimpTargets-debug.cmake.in 2020-01-12 03:56:40.000000000 -0800
++++ b/assimpTargets-debug.cmake.in 2021-03-23 12:45:13.392725131 -0700
+@@ -7,6 +7,14 @@
+
+ set(ASSIMP_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@)
+
++get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
++
++if ("${LIB64}" STREQUAL "TRUE")
++ set(LIBSUFFIX 64)
++else()
++ set(LIBSUFFIX "")
++endif()
++
+ if(MSVC)
+ if(MSVC_TOOLSET_VERSION)
+ set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}")
+@@ -42,11 +50,11 @@
+ # Import target "assimp::assimp" for configuration "Debug"
+ set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_IMPLIB_DEBUG "${_IMPORT_PREFIX}/lib/${importLibraryName}"
++ IMPORTED_IMPLIB_DEBUG
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${importLibraryName}"
+ IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/${sharedLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${importLibraryName}")
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${importLibraryName}")
+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/bin/${sharedLibraryName}" )
+ else()
+ set(staticLibraryName
"assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_STATIC_LIBRARY_SUFFIX@")
+@@ -54,10 +62,10 @@
+ # Import target "assimp::assimp" for configuration "Debug"
+ set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
++ IMPORTED_LOCATION_DEBUG
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${staticLibraryName}")
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}")
+ endif()
+
+ else()
+@@ -66,17 +74,17 @@
+ set(sharedLibraryName
"libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR(a)")
+ set_target_properties(assimp::assimp PROPERTIES
+ IMPORTED_SONAME_DEBUG "${sharedLibraryName}"
+- IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${sharedLibraryName}"
++ IMPORTED_LOCATION_DEBUG
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${sharedLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${sharedLibraryName}" )
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${sharedLibraryName}" )
+ else()
+ set(staticLibraryName
"libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_STATIC_LIBRARY_SUFFIX@")
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
++ IMPORTED_LOCATION_DEBUG
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${staticLibraryName}" )
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}" )
+ endif()
+ endif()
+
+diff -uNr a/assimpTargets-release.cmake.in b/assimpTargets-release.cmake.in
+--- a/assimpTargets-release.cmake.in 2020-01-12 03:56:40.000000000 -0800
++++ b/assimpTargets-release.cmake.in 2021-03-23 12:45:40.323586653 -0700
+@@ -7,6 +7,14 @@
+
+ set(ASSIMP_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@)
+
++get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
++
++if ("${LIB64}" STREQUAL "TRUE")
++ set(LIBSUFFIX 64)
++else()
++ set(LIBSUFFIX "")
++endif()
++
+ if(MSVC)
+ if(MSVC_TOOLSET_VERSION)
+ set(MSVC_PREFIX "vc${MSVC_TOOLSET_VERSION}")
+@@ -42,11 +50,11 @@
+ # Import target "assimp::assimp" for configuration "Release"
+ set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/${importLibraryName}"
++ IMPORTED_IMPLIB_RELEASE
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${importLibraryName}"
+ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/${sharedLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${importLibraryName}")
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${importLibraryName}")
+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/bin/${sharedLibraryName}" )
+ else()
+ set(staticLibraryName
"assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@")
+@@ -54,10 +62,10 @@
+ # Import target "assimp::assimp" for configuration "Release"
+ set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
++ IMPORTED_LOCATION_RELEASE
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${staticLibraryName}")
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}")
+ endif()
+
+ else()
+@@ -70,17 +78,17 @@
+ endif()
+ set_target_properties(assimp::assimp PROPERTIES
+ IMPORTED_SONAME_RELEASE "${sharedLibraryName}"
+- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${sharedLibraryName}"
++ IMPORTED_LOCATION_RELEASE
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${sharedLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${sharedLibraryName}" )
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${sharedLibraryName}" )
+ else()
+ set(staticLibraryName
"libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@")
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
++ IMPORTED_LOCATION_RELEASE
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib/${staticLibraryName}" )
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp
"${_IMPORT_PREFIX}/lib${LIBSUFFIX}/${staticLibraryName}" )
+ endif()
+ endif()
+
diff --git a/assimp-5.0.1-pkgconfig.patch b/assimp-5.0.1-pkgconfig.patch
new file mode 100644
index 0000000..9291eaf
--- /dev/null
+++ b/assimp-5.0.1-pkgconfig.patch
@@ -0,0 +1,14 @@
+diff -up ./assimp.pc.in.pkgconfig ./assimp.pc.in
+--- ./assimp.pc.in.pkgconfig 2021-02-27 18:08:34.032990798 -0500
++++ ./assimp.pc.in 2021-02-27 18:09:21.019110197 -0500
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+-exec_prefix=@CMAKE_INSTALL_PREFIX@/
+-libdir=@CMAKE_INSTALL_PREFIX@/@ASSIMP_LIB_INSTALL_DIR@
+-includedir=@CMAKE_INSTALL_PREFIX@/../include/(a)ASSIMP_INCLUDE_INSTALL_DIR@
++exec_prefix=@ASSIMP_BIN_INSTALL_DIR@
++libdir=@ASSIMP_LIB_INSTALL_DIR@
++includedir=@ASSIMP_INCLUDE_INSTALL_DIR@/assimp
+
+ Name: @CMAKE_PROJECT_NAME@
+ Description: Import various well-known 3D model formats in an uniform manner.
diff --git a/assimp-5.0.1-pythonpath.patch b/assimp-5.0.1-pythonpath.patch
new file mode 100644
index 0000000..4daf7d0
--- /dev/null
+++ b/assimp-5.0.1-pythonpath.patch
@@ -0,0 +1,19 @@
+diff -up ./port/PyAssimp/pyassimp/helper.py.pythonpath
./port/PyAssimp/pyassimp/helper.py
+--- ./port/PyAssimp/pyassimp/helper.py.pythonpath 2021-02-27 18:03:01.858146645 -0500
++++ ./port/PyAssimp/pyassimp/helper.py 2021-02-27 18:04:18.595341644 -0500
+@@ -25,6 +25,7 @@ additional_dirs, ext_whitelist = [],[]
+ # depending on the platform we're running on.
+ if os.name=='posix':
+ additional_dirs.append('./')
++ additional_dirs.append('/usr/lib64/')
+ additional_dirs.append('/usr/lib/')
+ additional_dirs.append('/usr/lib/x86_64-linux-gnu/')
+ additional_dirs.append('/usr/local/lib/')
+@@ -44,6 +45,7 @@ if os.name=='posix':
+ # currently there's always a symlink called
+ # libassimp.so in /usr/local/lib.
+ ext_whitelist.append('.so')
++ ext_whitelist.append('.3')
+ # libassimp.dylib in /usr/local/lib
+ ext_whitelist.append('.dylib')
+
diff --git a/assimp-5.0.1-unbundle.patch b/assimp-5.0.1-unbundle.patch
new file mode 100644
index 0000000..0d937d5
--- /dev/null
+++ b/assimp-5.0.1-unbundle.patch
@@ -0,0 +1,281 @@
+diff -up ./CMakeLists.txt.unbundle ./CMakeLists.txt
+--- ./CMakeLists.txt.unbundle 2020-01-12 06:56:40.000000000 -0500
++++ ./CMakeLists.txt 2021-02-27 15:46:23.408557445 -0500
+@@ -485,6 +485,27 @@ IF ( ASSIMP_NO_EXPORT )
+ MESSAGE( STATUS "Build an import-only version of Assimp." )
+ ENDIF( ASSIMP_NO_EXPORT )
+
++# Search for poly2tri
++FIND_LIBRARY(POLY2TRI_LIB poly2tri HINTS ${POLY2TRI_LIB_PATH})
++FIND_FILE(POLY2TRI_H poly2tri.h PATHS ${POLY2TRI_INCLUDE_PATH})
++IF (POLY2TRI_LIB AND POLY2TRI_H)
++ message(status "Found External poly2tri")
++ SET(HAVE_POLY2TRI true)
++ELSE(POLY2TRI_LIB AND POLY2TRI_H)
++ SET(HAVE_POLY2TRI false)
++ENDIF(POLY2TRI_LIB AND POLY2TRI_H)
++
++# Search for clipper
++FIND_LIBRARY(CLIPPER_LIB polyclipping HINTS ${CLIPPER_LIB_PATH})
++FIND_FILE(CLIPPER_H clipper.hpp PATHS ${CLIPPER_INCLUDE_PATH})
++IF (CLIPPER_LIB AND CLIPPER_H)
++ message(status "Found External clipper")
++ SET(HAVE_CLIPPER true)
++ELSE(CLIPPER_LIB AND CLIPPER_H)
++ SET(HAVE_CLIPPER false)
++ENDIF(CLIPPER_LIB AND CLIPPER_H)
++
++
+ SET ( ASSIMP_BUILD_ARCHITECTURE "" CACHE STRING
+ "describe the current architecture."
+ )
+diff -up ./code/Blender/BlenderTessellator.h.unbundle
./code/Blender/BlenderTessellator.h
+--- ./code/Blender/BlenderTessellator.h.unbundle 2020-01-12 06:56:40.000000000 -0500
++++ ./code/Blender/BlenderTessellator.h 2021-02-27 15:46:23.408557445 -0500
+@@ -144,11 +144,7 @@ namespace Assimp
+
+ #if ASSIMP_BLEND_WITH_POLY_2_TRI
+
+-#ifdef ASSIMP_USE_HUNTER
+ # include <poly2tri/poly2tri.h>
+-#else
+-# include "../contrib/poly2tri/poly2tri/poly2tri.h"
+-#endif
+
+ namespace Assimp
+ {
+diff -up ./code/CMakeLists.txt.unbundle ./code/CMakeLists.txt
+--- ./code/CMakeLists.txt.unbundle 2020-01-12 06:56:40.000000000 -0500
++++ ./code/CMakeLists.txt 2021-02-27 15:46:23.408557445 -0500
+@@ -874,7 +874,7 @@ IF(HUNTER_ENABLED)
+ hunter_add_package(utf8)
+ find_package(utf8 CONFIG REQUIRED)
+ ELSE(HUNTER_ENABLED)
+- # utf8 is header-only, so Assimp doesn't need to do anything.
++ find_package(utf8cpp)
+ ENDIF(HUNTER_ENABLED)
+
+ # polyclipping
+@@ -882,11 +882,11 @@ IF(HUNTER_ENABLED)
+ hunter_add_package(polyclipping)
+ find_package(polyclipping CONFIG REQUIRED)
+ ELSE(HUNTER_ENABLED)
+- SET( Clipper_SRCS
+- ../contrib/clipper/clipper.hpp
+- ../contrib/clipper/clipper.cpp
+- )
+- SOURCE_GROUP( Contrib\\Clipper FILES ${Clipper_SRCS})
++ SET( Clipper_SRCS
++ ../contrib/clipper/clipper.hpp
++ ../contrib/clipper/clipper.cpp
++ )
++ SOURCE_GROUP( Contrib\\Clipper FILES ${Clipper_SRCS})
+ ENDIF(HUNTER_ENABLED)
+
+ # poly2tri
+@@ -894,20 +894,25 @@ IF(HUNTER_ENABLED)
+ hunter_add_package(poly2tri)
+ find_package(poly2tri CONFIG REQUIRED)
+ ELSE(HUNTER_ENABLED)
+- 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})
++ if (HAVE_POLY2TRI)
++ include_directories(${POLY2TRI_INCLUDE_PATH})
++ set(Poly2Tri_SRCS "")
++ elseif(HAVE_POLY2TRI)
++ 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(HAVE_POLY2TRI)
+ ENDIF(HUNTER_ENABLED)
+
+ # minizip/unzip
+@@ -915,14 +920,19 @@ IF(HUNTER_ENABLED)
+ hunter_add_package(minizip)
+ find_package(minizip CONFIG REQUIRED)
+ ELSE(HUNTER_ENABLED)
+- 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})
++ #if (MINIZIP_FOUND)
++ # SET( unzip_SRCS "")
++ # INCLUDE_DIRECTORIES(${MINIZIP_INCLUDE_DIRS})
++ #elseif(MINIZIP_FOUND)
++ 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(HAVE_MINIZIP)
+ ENDIF(HUNTER_ENABLED)
+
+ # zip (
https://github.com/kuba--/zip)
+@@ -1025,8 +1035,9 @@ IF(HUNTER_ENABLED)
+ hunter_add_package(RapidJSON)
+ find_package(RapidJSON CONFIG REQUIRED)
+ ELSE(HUNTER_ENABLED)
+- INCLUDE_DIRECTORIES( "../contrib/rapidjson/include" )
+- INCLUDE_DIRECTORIES( "../contrib" )
++ find_package(RapidJSON REQUIRED)
++ include_directories(${RapidJSON_INCLUDE_DIRS})
++ include_directories("../contrib")
+ ENDIF(HUNTER_ENABLED)
+
+ # VC2010 fixes
+@@ -1118,7 +1129,7 @@ IF(HUNTER_ENABLED)
+ irrXML::irrXML
+ openddlparser::openddl_parser
+ poly2tri::poly2tri
+- minizip::minizip
++ #minizip::minizip
+ ZLIB::zlib
+ RapidJSON::rapidjson
+ utf8::utf8
+@@ -1126,6 +1137,13 @@ IF(HUNTER_ENABLED)
+ )
+ ELSE(HUNTER_ENABLED)
+ TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES}
${IRRXML_LIBRARY} )
++ IF (HAVE_POLY2TRI)
++ TARGET_LINK_LIBRARIES(assimp ${POLY2TRI_LIB})
++ ENDIF(HAVE_POLY2TRI)
++
++ IF (HAVE_CLIPPER)
++ TARGET_LINK_LIBRARIES(assimp ${CLIPPER_LIB})
++ ENDIF (HAVE_CLIPPER)
+ ENDIF(HUNTER_ENABLED)
+
+ if(ASSIMP_ANDROID_JNIIOSYSTEM)
+diff -up ./code/Common/BaseImporter.cpp.unbundle ./code/Common/BaseImporter.cpp
+--- ./code/Common/BaseImporter.cpp.unbundle 2021-02-27 15:47:27.432812387 -0500
++++ ./code/Common/BaseImporter.cpp 2021-02-27 15:47:58.526936201 -0500
+@@ -341,11 +341,7 @@ std::string BaseImporter::GetExtension(
+ return false;
+ }
+
+-#ifdef ASSIMP_USE_HUNTER
+-# include <utf8/utf8.h>
+-#else
+-# include "../contrib/utf8cpp/source/utf8.h"
+-#endif
++# include <utf8.h>
+
+ //
------------------------------------------------------------------------------------------------
+ // Convert to UTF8 data
+diff -up ./code/Importer/IFC/IFCGeometry.cpp.unbundle
./code/Importer/IFC/IFCGeometry.cpp
+--- ./code/Importer/IFC/IFCGeometry.cpp.unbundle 2020-01-12 06:56:40.000000000 -0500
++++ ./code/Importer/IFC/IFCGeometry.cpp 2021-02-27 15:46:23.408557445 -0500
+@@ -49,13 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ #include "Common/PolyTools.h"
+ #include "PostProcessing/ProcessHelper.h"
+
+-#ifdef ASSIMP_USE_HUNTER
+-# include <poly2tri/poly2tri.h>
+-# include <polyclipping/clipper.hpp>
+-#else
+-# include "../contrib/poly2tri/poly2tri/poly2tri.h"
+-# include "../contrib/clipper/clipper.hpp"
+-#endif
++#include <poly2tri/poly2tri.h>
++#include <../contrib/clipper/clipper.hpp>
+
+ #include <memory>
+ #include <iterator>
+diff -up ./code/Importer/IFC/IFCOpenings.cpp.unbundle
./code/Importer/IFC/IFCOpenings.cpp
+--- ./code/Importer/IFC/IFCOpenings.cpp.unbundle 2020-01-12 06:56:40.000000000 -0500
++++ ./code/Importer/IFC/IFCOpenings.cpp 2021-02-27 15:46:23.409557449 -0500
+@@ -49,13 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ #include "Common/PolyTools.h"
+ #include "PostProcessing/ProcessHelper.h"
+
+-#ifdef ASSIMP_USE_HUNTER
+-# include <poly2tri/poly2tri.h>
+-# include <polyclipping/clipper.hpp>
+-#else
+-# include "../contrib/poly2tri/poly2tri/poly2tri.h"
+-# include "../contrib/clipper/clipper.hpp"
+-#endif
++#include <poly2tri/poly2tri.h>
++#include <../contrib/clipper/clipper.hpp>
+
+ #include <iterator>
+
+diff -up ./code/Importer/STEPParser/STEPFileEncoding.cpp.unbundle
./code/Importer/STEPParser/STEPFileEncoding.cpp
+--- ./code/Importer/STEPParser/STEPFileEncoding.cpp.unbundle 2021-02-27
15:48:15.993005751 -0500
++++ ./code/Importer/STEPParser/STEPFileEncoding.cpp 2021-02-27 15:48:37.161090042 -0500
+@@ -45,11 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ */
+ #include "STEPFileEncoding.h"
+ #include <assimp/fast_atof.h>
+-#ifdef ASSIMP_USE_HUNTER
+-# include <utf8/utf8.h>
+-#else
+-# include <contrib/utf8cpp/source/utf8.h>
+-#endif
++#include <utf8.h>
+
+ #include <memory>
+
+diff -up ./code/MMD/MMDPmxParser.cpp.unbundle ./code/MMD/MMDPmxParser.cpp
+--- ./code/MMD/MMDPmxParser.cpp.unbundle 2021-02-27 15:50:16.110484046 -0500
++++ ./code/MMD/MMDPmxParser.cpp 2021-02-27 15:50:57.573649134 -0500
+@@ -42,11 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ #include <utility>
+ #include "MMDPmxParser.h"
+ #include <assimp/StringUtils.h>
+-#ifdef ASSIMP_USE_HUNTER
+-# include <utf8/utf8.h>
+-#else
+-# include "../contrib/utf8cpp/source/utf8.h"
+-#endif
++#include <utf8.h>
+ #include <assimp/Exceptional.h>
+
+ namespace pmx
+diff -up ./code/SIB/SIBImporter.cpp.unbundle ./code/SIB/SIBImporter.cpp
+--- ./code/SIB/SIBImporter.cpp.unbundle 2021-02-27 15:48:54.037157241 -0500
++++ ./code/SIB/SIBImporter.cpp 2021-02-27 15:49:24.194277325 -0500
+@@ -59,12 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ #include <assimp/ByteSwapper.h>
+ #include <assimp/StreamReader.h>
+ #include <assimp/TinyFormatter.h>
+-#ifdef ASSIMP_USE_HUNTER
+-# include <utf8/utf8.h>
+-#else
+-//# include "../contrib/ConvertUTF/ConvertUTF.h"
+-# include "../contrib/utf8cpp/source/utf8.h"
+-#endif
++#include <utf8.h>
+ #include <assimp/IOSystem.hpp>
+ #include <assimp/DefaultLogger.hpp>
+ #include <assimp/scene.h>
diff --git a/assimp-gcc11.patch b/assimp-gcc11.patch
deleted file mode 100644
index 2dfc8ad..0000000
--- a/assimp-gcc11.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nrup a/code/D3MFImporter.cpp b/code/D3MFImporter.cpp
---- a/code/D3MFImporter.cpp 2020-08-18 15:36:02.127659541 -0600
-+++ b/code/D3MFImporter.cpp 2020-08-18 15:35:45.153696935 -0600
-@@ -227,7 +227,7 @@ private:
- aiVector3D vertex;
- vertex.x = ai_strtof(xmlReader->getAttributeValue(D3MF::XmlTag::x.c_str()),
nullptr);
- vertex.y = ai_strtof(xmlReader->getAttributeValue(D3MF::XmlTag::y.c_str()),
nullptr);
-- vertex.z =
ai_strtof>(xmlReader->getAttributeValue(D3MF::XmlTag::z.c_str()), nullptr);
-+ vertex.z = ai_strtof!=(xmlReader->getAttributeValue(D3MF::XmlTag::z.c_str()),
nullptr);
-
- return vertex;
- }
diff --git a/assimp.spec b/assimp.spec
index c92f78b..7c19dad 100644
--- a/assimp.spec
+++ b/assimp.spec
@@ -1,59 +1,66 @@
%undefine __cmake_in_source_build
Name: assimp
-Version: 3.3.1
-Release: 30%{?dist}
+Version: 5.0.1
+Release: 3%{?dist}
Summary: Library to import various 3D model formats into applications
-# Assimp is BSD, the bundled openddlparser is MIT.
-License: BSD and MIT
-URL:
http://assimp.sourceforge.net
-#Source0:
https://github.com/assimp/%{name}/archive/%{commit0}.tar.gz#/%{name}-%{sh...
+
+# Assimp is BSD
+# Bundled contrib/clipper is Boost
+# Bundled contrib/Open3DGC is MIT
+# Bundled contrib/openddlparser is MIT
+# Bundled contrib/stb_image is MIT
+# Bundled contrib/unzip is zlib
+# Bundled contrib/zip is unlicense
+# Bundled contrib/zlib is zlib
+License: BSD and MIT and Boost and unlicense and zlib
+URL:
https://github.com/assimp/assimp
+
# Github releases include nonfree models, source tarball must be re-generated
# using assimp_generate_tarball.sh
Source0: %{name}-%{version}-free.tar.xz
Source1: assimp_generate_tarball.sh
-# Current 3.3.1 not compilable under s390x and ppc64le - BigEndian issues
-Patch0: %{name}-3.3.1-unbundle.patch
-# Add /usr/lib64 to library lookup paths for python modules
-Patch1: %{name}-3.2.0-pythonpath.patch
-# Fix library and include paths in assimp-config.cmake
-# Fixes rhbz#1263698, not submitted upstream
-# Rehashed to 3.3.1
-Patch2: 0001-Assimp-cmake-provider-fix.patch
-# fix FTBFS on bigendian platform s390x/ppc64
-Patch3: assimp-3.3.1-namespace-bigendian.patch
-Patch10: assimp-3.3.1-install-pkgconfig.patch
-Patch11: assimp-3.3.1-cmakemacros.patch
-Patch12: assimp-gcc11.patch
-
-#Upstream backports
-# Collada morph animation
-Patch100: 0001-Morph-animation-support-for-collada.patch
-# Generate doc from CMakeFiles. Backported from Upstream
-Patch101: 0001-Enable-doxygen-been-properly-used-from-cmake-build-a.patch
-# Strips bundled irrXML out of build files, and allows project to build
-# against system versions of the libraries (not yet submitted upstream)
-Patch102: 0001-Apply-mechanism-to-decide-use-for-IrrXML-external-or.patch
+# Un-bundle libraries that are provided by the distribution.
+Patch0: %{name}-5.0.1-unbundle.patch
+# Add /usr/lib64 to library lookup paths for python modules
+Patch1: %{name}-5.0.1-pythonpath.patch
+# Correct the paths in the installed pkgconfig file
+Patch2: %{name}-5.0.1-pkgconfig.patch
+# Exclude the build directory from the doxygen-generated documentation
+Patch3: %{name}-5.0.1-doxyfile.patch
+# Updates for changes in irrxml's API
+Patch4: %{name}-5.0.1-irrxml.patch
+# Correct the CMake version to match the tarball version.
+Patch5: %{name}-5.0.1-assimpversion.patch
+# Correct the library installation location
+Patch6: %{name}-5.0.1-lib-dir.patch
+
+BuildRequires: boost-devel
+BuildRequires: cmake
+BuildRequires: dos2unix
+BuildRequires: doxygen
+BuildRequires: irrlicht-devel
+BuildRequires: irrXML-devel
BuildRequires: gcc-c++
-BuildRequires: boost-devel
-BuildRequires: cmake
-BuildRequires: dos2unix
-BuildRequires: irrlicht-devel
-BuildRequires: irrXML-devel
-BuildRequires: doxygen
-BuildRequires: poly2tri-devel
-BuildRequires: gtest-devel
-BuildRequires: pkgconfig(zzip-zlib-config)
-BuildRequires: pkgconfig(zlib)
-BuildRequires: minizip-compat-devel
+BuildRequires: gtest-devel
+BuildRequires: make
+BuildRequires: pkgconfig(zzip-zlib-config)
+BuildRequires: pkgconfig(zlib)
+BuildRequires: pkgconfig(python3)
+BuildRequires: poly2tri-devel
+BuildRequires: python3-devel
+BuildRequires: rapidjson-devel
+BuildRequires: utf8cpp-devel
+
# Incompatible -
https://github.com/assimp/assimp/issues/788
#BuildRequires: pkgconfig(polyclipping)
-Provides: bundled(polyclipping) = 4.8.8
-BuildRequires: pkgconfig(ILUT)
-BuildRequires: pkgconfig(python3)
-BuildRequires: python3-devel
-
+Provides: bundled(polyclipping) = 4.8.8
+Provides: bundled(open3dgc)
Provides: bundled(openddl-parser)
+Provides: bundled(stb_image)
+Provides: bundled(unzip)
+Provides: bundled(minzip)
+Provides: bundled(zlib)
%description
Assimp, the Open Asset Import Library, is a free library to import
@@ -94,41 +101,36 @@ BuildArch: noarch
%prep
%setup -q
# Get rid of bundled libs so we can't accidently build against them
-#rm -r contrib/clipper
+rm -r contrib/android-cmake
rm -r contrib/irrXML
-rm -r contrib/zlib
-rm -r contrib/unzip
rm -r contrib/poly2tri
+rm -r contrib/rapidjson
+rm -r contrib/utf8cpp
+
%patch0 -p1 -b .unbundle
%patch1 -p1 -b .pythonpath
-%patch2 -p1 -b .cmakefix
-%patch3 -p1 -b .bigendian
-# Need to be upstreamed
-%patch10 -p1 -b .pkgconfig
-# Backported from upstream
-%patch100 -p1 -b .docfix
-%patch101 -p1 -b .qt3d
-%patch102 -p1 -b .systemirrxml
-%patch11 -p0 -b .cmakemacros
-%patch12 -p1 -b .gcc11
+%patch2 -p1 -b .pkgconfig
+%patch3 -p1 -b .doxyfile
+%patch4 -p1 -b .irrxml
+%patch5 -p1 -b .assimpversion
+%patch6 -p1 -b .libdir
%build
%cmake \
- -DCMAKE_BUILD_TYPE=Release \
- -DASSIMP_LIB_INSTALL_DIR=%{_libdir} \
- -DASSIMP_BIN_INSTALL_DIR=%{_bindir} \
- -DASSIMP_INCLUDE_INSTALL_DIR=%{_includedir} \
+ -DCMAKE_BUILD_TYPE=None \
+ -DASSIMP_LIB_INSTALL_DIR=%{_lib} \
%ifarch s390x ppc64
-DAI_BUILD_BIG_ENDIAN=TRUE \
%endif
- -DBUILD_DOCS=ON \
+ -DBUILD_DOCS=OFF \
-DHTML_OUTPUT=%{name}-%{version} \
-DCMAKE_INSTALL_DOCDIR=%{_docdir} \
-DPOLY2TRI_INCLUDE_PATH=%{_includedir}/poly2tri \
- -DSYSTEM_IRRXML=ON
+ -DSYSTEM_IRRXML=ON \
+ -DASSIMP_BUILD_ZLIB=ON
+
# To use system polyclipping if assimp ever becomes compatible:
# -DCLIPPER_INCLUDE_PATH=%{_includedir}/polyclipping
-
%cmake_build
# Fix file encoding
@@ -139,13 +141,17 @@ iconv -f iso8859-1 -t utf-8 CREDITS > CREDITS.conv && mv
-f CREDITS.conv CREDITS
%cmake_install
mkdir -p %{buildroot}%{python3_sitelib}/pyassimp/
install -m0644 port/PyAssimp/pyassimp/*.py %{buildroot}%{python3_sitelib}/pyassimp/
+rm -f %{buildroot}%{_libdir}/libzlibstatic.a
%ldconfig_scriptlets
%files
-%license LICENSE
-%doc README CREDITS
+%license LICENSE
+%license contrib/clipper/License.txt
+%license contrib/openddlparser/LICENSE
+%license contrib/zip/UNLICENSE
+%doc Readme.md CREDITS
%{_bindir}/assimp
%{_libdir}/*.so.*
@@ -165,6 +171,16 @@ install -m0644 port/PyAssimp/pyassimp/*.py
%{buildroot}%{python3_sitelib}/pyassi
%endif
%changelog
+* Mon Mar 29 2021 Rich Mattes <richmattes(a)gmail.com> - 5.0.1-3
+- Fix library install dir specification (rhbz#1943862)
+- Remove un-needed build dependency on ILUT
+
+* Tue Mar 23 2021 Scott K Logan <logans(a)cottsay.net> - 5.0.1-2
+- Add an upstream patch to fix imported library locations
+
+* Sat Feb 27 2021 Rich Mattes <richmattes(a)gmail.com> - 5.0.1-1
+- Update to release 5.0.1
+
* Wed Jul 21 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 3.3.1-30
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
diff --git a/assimp_generate_tarball.sh b/assimp_generate_tarball.sh
index ea1b4cb..30c5d1b 100755
--- a/assimp_generate_tarball.sh
+++ b/assimp_generate_tarball.sh
@@ -1,11 +1,18 @@
#!/bin/bash
-RELEASE=3.3.1
-git clone -b v${RELEASE} --depth=1
https://github.com/assimp/assimp.git
assimp-${RELEASE}
+RELEASE=5.0.1
-cd assimp-${RELEASE}
-git checkout -b free
+if [ ! -f assimp-$RELEASE.tar.gz ]; then
+ wget
https://github.com/assimp/assimp/archive/v$RELEASE/assimp-$RELEASE.tar.gz
+fi
+
+if [ -d assimp-$RELEASE ]; then
+ rm -fr assimp-$RELEASE
+fi
+
+tar xvf assimp-$RELEASE.tar.gz
+cd assimp-$RELEASE
find ./ -name "*.dll" -exec git rm -r {} \;
-git rm -rf test/models-nonbsd
-git commit -m "- Remove non free bits."
-git archive --prefix=assimp-${RELEASE}/ free | xz > ../assimp-${RELEASE}-free.tar.xz
+rm -r test/models-nonbsd
cd ..
+
+tar czf assimp-5.0.1-free.tar.xz assimp-$RELEASE
diff --git a/sources b/sources
index d56434d..033da3b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (assimp-3.3.1-free.tar.xz) =
249e7e35a357274d296a457ab6ffff5a06480007db7f327d72869448e5f754740487a8def5ed1e1f2324a68aa5a9c2780092cded3d56d685103974bb32e7d761
+SHA512 (assimp-5.0.1-free.tar.xz) =
bbdcb26fb826f44789850c139981f0a9c4000cf44e4cfb48671aa05b7fa1eaef164aa973dbba2f21ee16295236b3a775a4fa987bb211cfd552bd92c0522816da
https://src.fedoraproject.org/rpms/assimp/c/ea127049212406ee1bbe38b056c38...