c07ea6c
diff --git a/CMakeLists.txt b/CMakeLists.txt
8c9df41
index 8455bb8..c8e0d88 100644
c07ea6c
--- a/CMakeLists.txt
c07ea6c
+++ b/CMakeLists.txt
8c9df41
@@ -211,6 +211,26 @@ IF ( ASSIMP_NO_EXPORT )
c07ea6c
   MESSAGE( STATUS "Build an import-only version of Assimp." )
c07ea6c
 ENDIF( ASSIMP_NO_EXPORT )
c07ea6c
 
c07ea6c
+# Search for poly2tri
c07ea6c
+FIND_LIBRARY(POLY2TRI_LIB poly2tri HINTS ${POLY2TRI_LIB_PATH})
c07ea6c
+FIND_FILE(POLY2TRI_H poly2tri.h PATHS ${POLY2TRI_INCLUDE_PATH})
c07ea6c
+IF (POLY2TRI_LIB AND POLY2TRI_H)
c07ea6c
+  message(status "Found External poly2tri")
c07ea6c
+  SET(HAVE_POLY2TRI true)
c07ea6c
+ELSE(POLY2TRI_LIB AND POLY2TRI_H)
c07ea6c
+  SET(HAVE_POLY2TRI false)
c07ea6c
+ENDIF(POLY2TRI_LIB AND POLY2TRI_H)
c07ea6c
+
c07ea6c
+# Search for clipper
c07ea6c
+FIND_LIBRARY(CLIPPER_LIB polyclipping HINTS ${CLIPPER_LIB_PATH})
c07ea6c
+FIND_FILE(CLIPPER_H clipper.hpp PATHS ${CLIPPER_INCLUDE_PATH})
c07ea6c
+IF (CLIPPER_LIB AND CLIPPER_H)
c07ea6c
+  message(status "Found External clipper")
c07ea6c
+  SET(HAVE_CLIPPER true)
c07ea6c
+ELSE(CLIPPER_LIB AND CLIPPER_H)
c07ea6c
+  SET(HAVE_CLIPPER false)
c07ea6c
+ENDIF(CLIPPER_LIB AND CLIPPER_H)
c07ea6c
+
c07ea6c
 SET ( ASSIMP_BUILD_ARCHITECTURE "" CACHE STRING
c07ea6c
   "describe the current architecture."
c07ea6c
 )
c07ea6c
diff --git a/code/BlenderTessellator.h b/code/BlenderTessellator.h
c07ea6c
index 530bd2c..a6c9d9e 100644
c07ea6c
--- a/code/BlenderTessellator.h
c07ea6c
+++ b/code/BlenderTessellator.h
c07ea6c
@@ -142,7 +142,7 @@ namespace Assimp
c07ea6c
 
c07ea6c
 #if ASSIMP_BLEND_WITH_POLY_2_TRI
c07ea6c
 
c07ea6c
-#include "../contrib/poly2tri/poly2tri/poly2tri.h"
c07ea6c
+#include "poly2tri/poly2tri.h"
c07ea6c
 
c07ea6c
 namespace Assimp
c07ea6c
 {
c07ea6c
diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
8c9df41
index 35ecf50..d549c89 100644
c07ea6c
--- a/code/CMakeLists.txt
c07ea6c
+++ b/code/CMakeLists.txt
8c9df41
@@ -655,12 +655,15 @@ SET( ConvertUTF_SRCS
c07ea6c
 )
c07ea6c
 SOURCE_GROUP( ConvertUTF FILES ${ConvertUTF_SRCS})
c07ea6c
 
c07ea6c
+if (NOT HAVE_CLIPPER)
c07ea6c
 SET( Clipper_SRCS
c07ea6c
   ../contrib/clipper/clipper.hpp
c07ea6c
   ../contrib/clipper/clipper.cpp
c07ea6c
 )
c07ea6c
 SOURCE_GROUP( Clipper FILES ${Clipper_SRCS})
c07ea6c
-
c07ea6c
+else (NOT HAVE_CLIPPER)
c07ea6c
+SET( Clipper_SRCS "")
c07ea6c
+endif(NOT HAVE_CLIPPER)
c07ea6c
 
c07ea6c
 SET( Poly2Tri_SRCS
c07ea6c
   ../contrib/poly2tri/poly2tri/common/shapes.cc
8c9df41
@@ -743,8 +746,6 @@ SET( assimp_src
c07ea6c
   # Third-party libraries
c07ea6c
   ${IrrXML_SRCS}
c07ea6c
   ${ConvertUTF_SRCS}
c07ea6c
-  ${unzip_compile_SRCS}
c07ea6c
-  ${Poly2Tri_SRCS}
c07ea6c
   ${Clipper_SRCS}
c07ea6c
   ${openddl_parser_SRCS}
c07ea6c
   # Necessary to show the headers in the project when using the VC++ generator:
8c9df41
@@ -753,6 +754,8 @@ SET( assimp_src
c07ea6c
   ${COMPILER_HEADERS}
c07ea6c
 
c07ea6c
 )
c07ea6c
+
c07ea6c
+
c07ea6c
 ADD_DEFINITIONS( -DOPENDDLPARSER_BUILD )
c07ea6c
 
c07ea6c
 INCLUDE_DIRECTORIES(
8c9df41
@@ -821,6 +824,19 @@ else (UNZIP_FOUND)
c07ea6c
   INCLUDE_DIRECTORIES("../")
c07ea6c
 endif (UNZIP_FOUND)
c07ea6c
 
c07ea6c
+if (HAVE_POLY2TRI)
c07ea6c
+  INCLUDE_DIRECTORIES(${POLY2TRI_INCLUDE_PATH})
c07ea6c
+  TARGET_LINK_LIBRARIES(assimp ${POLY2TRI_LIB})
c07ea6c
+endif(HAVE_POLY2TRI)
c07ea6c
+
c07ea6c
+if (HAVE_CLIPPER)
c07ea6c
+  INCLUDE_DIRECTORIES(${CLIPPER_INCLUDE_PATH})
c07ea6c
+  TARGET_LINK_LIBRARIES(assimp ${CLIPPER_LIB})
c07ea6c
+else (HAVE_CLIPPER)
c07ea6c
+  INCLUDE_DIRECTORIES(../contrib/clipper)
c07ea6c
+endif(HAVE_CLIPPER)
c07ea6c
+
c07ea6c
+
c07ea6c
 INSTALL( TARGETS assimp
c07ea6c
   LIBRARY DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
c07ea6c
   ARCHIVE DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
c07ea6c
diff --git a/code/D3MFImporter.cpp b/code/D3MFImporter.cpp
c07ea6c
index 1a97168..7377eb4 100644
c07ea6c
--- a/code/D3MFImporter.cpp
c07ea6c
+++ b/code/D3MFImporter.cpp
c07ea6c
@@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
c07ea6c
 #include <assimp/IOStream.hpp>
c07ea6c
 #include <assimp/IOSystem.hpp>
c07ea6c
 #include <assimp/DefaultLogger.hpp>
c07ea6c
-#include <contrib/unzip/unzip.h>
c07ea6c
+#include <minizip/unzip.h>
c07ea6c
 #include "irrXMLWrapper.h"
c07ea6c
 #include "StringComparison.h"
c07ea6c
 #include "StringUtils.h"
c07ea6c
diff --git a/code/D3MFOpcPackage.cpp b/code/D3MFOpcPackage.cpp
c07ea6c
index 7cc1dd5..2b007db 100644
c07ea6c
--- a/code/D3MFOpcPackage.cpp
c07ea6c
+++ b/code/D3MFOpcPackage.cpp
c07ea6c
@@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
c07ea6c
 #include "D3MFOpcPackage.h"
c07ea6c
 #include "Exceptional.h"
c07ea6c
 
c07ea6c
-#include <contrib/unzip/unzip.h>
c07ea6c
+#include <minizip/unzip.h>
c07ea6c
 #include <assimp/IOStream.hpp>
c07ea6c
 #include <assimp/IOSystem.hpp>
c07ea6c
 #include <assimp/DefaultLogger.hpp>
c07ea6c
diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp
c07ea6c
index 5a2e4a0..0926498 100644
c07ea6c
--- a/code/IFCGeometry.cpp
c07ea6c
+++ b/code/IFCGeometry.cpp
c07ea6c
@@ -49,8 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
c07ea6c
 #include "PolyTools.h"
c07ea6c
 #include "ProcessHelper.h"
c07ea6c
 
c07ea6c
-#include "../contrib/poly2tri/poly2tri/poly2tri.h"
c07ea6c
-#include "../contrib/clipper/clipper.hpp"
c07ea6c
+#include "poly2tri/poly2tri.h"
c07ea6c
+#include "clipper.hpp"
c07ea6c
 #include <memory>
c07ea6c
 
c07ea6c
 #include <iterator>
c07ea6c
diff --git a/code/IFCLoader.cpp b/code/IFCLoader.cpp
c07ea6c
index 34977f5..bc655c0 100644
c07ea6c
--- a/code/IFCLoader.cpp
c07ea6c
+++ b/code/IFCLoader.cpp
c07ea6c
@@ -50,7 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
c07ea6c
 #include <tuple>
c07ea6c
 
c07ea6c
 #ifndef ASSIMP_BUILD_NO_COMPRESSED_IFC
c07ea6c
-#   include <contrib/unzip/unzip.h>
c07ea6c
+#   include <minizip/unzip.h>
c07ea6c
 #endif
c07ea6c
 
c07ea6c
 #include "IFCLoader.h"
c07ea6c
diff --git a/code/IFCOpenings.cpp b/code/IFCOpenings.cpp
c07ea6c
index 51ea143..f0915fb 100644
c07ea6c
--- a/code/IFCOpenings.cpp
c07ea6c
+++ b/code/IFCOpenings.cpp
c07ea6c
@@ -49,8 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
c07ea6c
 #include "PolyTools.h"
c07ea6c
 #include "ProcessHelper.h"
c07ea6c
 
c07ea6c
-#include "../contrib/poly2tri/poly2tri/poly2tri.h"
c07ea6c
-#include "../contrib/clipper/clipper.hpp"
c07ea6c
+#include "poly2tri/poly2tri.h"
c07ea6c
+#include "clipper.hpp"
c07ea6c
 
c07ea6c
 #include <iterator>
c07ea6c
 
c07ea6c
diff --git a/code/Q3BSPZipArchive.h b/code/Q3BSPZipArchive.h
c07ea6c
index e46a11b..da93e5c 100644
c07ea6c
--- a/code/Q3BSPZipArchive.h
c07ea6c
+++ b/code/Q3BSPZipArchive.h
c07ea6c
@@ -40,7 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
c07ea6c
 #ifndef AI_Q3BSP_ZIPARCHIVE_H_INC
c07ea6c
 #define AI_Q3BSP_ZIPARCHIVE_H_INC
c07ea6c
 
c07ea6c
-#include <contrib/unzip/unzip.h>
c07ea6c
+#include <minizip/unzip.h>
c07ea6c
 #include <assimp/IOStream.hpp>
c07ea6c
 #include <assimp/IOSystem.hpp>
c07ea6c
 #include <string>
c07ea6c
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
c07ea6c
index df0139d..8b26f22 100644
c07ea6c
--- a/test/CMakeLists.txt
c07ea6c
+++ b/test/CMakeLists.txt
c07ea6c
@@ -37,7 +37,8 @@
c07ea6c
 #----------------------------------------------------------------------
c07ea6c
 cmake_minimum_required( VERSION 2.6 )
c07ea6c
 
c07ea6c
-INCLUDE( AddGTest )
c07ea6c
+# Search for Google Test
c07ea6c
+FIND_PACKAGE(GTest)
c07ea6c
 
c07ea6c
 INCLUDE_DIRECTORIES(
c07ea6c
   ${Assimp_SOURCE_DIR}/include
c07ea6c
diff --git a/tools/assimp_cmd/CMakeLists.txt b/tools/assimp_cmd/CMakeLists.txt
8c9df41
index f8af93a..3f9a902 100644