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