diff --git a/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h b/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h
index 12c94cd02c047bc2034a67cefd64c2b70fbd8227..7fdc308413d2a912eba471b90fe74576e1ef5310 100644
--- a/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h
+++ b/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h
@@ -44,6 +44,8 @@ class OGRDataSource;
 class OGRSFDriver;
 #endif
 
+class OGRFeature;
+
 #include "OTBGdalAdaptersExport.h"
 
 namespace otb
@@ -212,6 +214,15 @@ OTBGdalAdapters_EXPORT bool IsOFTInteger64(OGRFieldType type);
   OTBGdalAdapters_EXPORT
   std::vector<std::string> GetAvailableDriversAsStringVector();
 
+  /**
+   * Returns true if the field 'index' is set and not-null in the given feature
+   *
+   * Before gdal 2.2, it calls OGRFeature::IsFieldSet().
+   * After gdal 2.2, it calls OGRFeature::IsFieldSetAndNotNull()
+   */
+   OTBGdalAdapters_EXPORT
+   bool IsFieldSetAndNotNull(OGRFeature *feat, int index);
+
 }
 }
 } // end namespace otb
diff --git a/Modules/Adapters/GdalAdapters/src/CMakeLists.txt b/Modules/Adapters/GdalAdapters/src/CMakeLists.txt
index 95a01673319b92719b860e2d4da2ed755d7b1ca1..4ba50ff1e286f05842703510931bffec1d5f0f21 100644
--- a/Modules/Adapters/GdalAdapters/src/CMakeLists.txt
+++ b/Modules/Adapters/GdalAdapters/src/CMakeLists.txt
@@ -28,14 +28,9 @@ set(OTBGdalAdapters_SRC
   otbOGRDriversInit.cxx
   otbGeometriesToGeometriesFilter.cxx
   otbOGRDataSourceWrapper.cxx
+  otbOGRVersionProxy.cxx
   )
 
-if(OTB_USE_GDAL_20)
-  set(OTBGdalAdapters_SRC ${OTBGdalAdapters_SRC} otbOGRVersionProxy2x.cxx)
-else(Otb_use_gdal_20)
-  set(OTBGdalAdapters_SRC ${OTBGdalAdapters_SRC} otbOGRVersionProxy1x.cxx)
-endif(OTB_USE_GDAL_20)
-
 add_library(OTBGdalAdapters ${OTBGdalAdapters_SRC})
 target_link_libraries(OTBGdalAdapters 
   ${OTBBoost_LIBRARIES}
diff --git a/Modules/Adapters/GdalAdapters/src/otbOGRFieldWrapper.cxx b/Modules/Adapters/GdalAdapters/src/otbOGRFieldWrapper.cxx
index 3b54c06c60d1041f5837f1c46a7b22bb4387713f..49f95f053546c6f59190ef88ae6d28cee0f19110 100644
--- a/Modules/Adapters/GdalAdapters/src/otbOGRFieldWrapper.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbOGRFieldWrapper.cxx
@@ -37,6 +37,7 @@
 #endif
 #include "otbOGRFeatureWrapper.h"
 #include "otbJoinContainer.h"
+#include "otbOGRVersionProxy.h"
 #include <boost/array.hpp>
 /*===========================================================================*/
 /*===========================[ Static Assertions ]===========================*/
@@ -166,7 +167,7 @@ std::ostream & otb::ogr::Field::UncheckedPrintSelf(
 
 bool otb::ogr::Field::UncheckedHasBeenSet() const
 {
-  return m_Feature->IsFieldSet(m_index);
+  return otb::ogr::version_proxy::IsFieldSetAndNotNull(m_Feature.get(), m_index);
 }
 
 void otb::ogr::Field::UncheckedUnset() const
diff --git a/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy2x.cxx b/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx
similarity index 62%
rename from Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy2x.cxx
rename to Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx
index 2ca46ae46a00029da877f3b16ef6e03739fea4fc..22b7a612ca3f7f557eeed7abe2da3c2e1d047fe9 100644
--- a/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy2x.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx
@@ -20,15 +20,26 @@
 
 #include "otbOGRVersionProxy.h"
 
+#include "itkMacro.h"
+
 #if defined(__GNUC__) || defined(__clang__)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wshadow"
+#if GDAL_VERSION_NUM<2000000
+#include "ogrsf_frmts.h"
+#else
 #include "gdal_priv.h"
+#endif
+#include "ogr_feature.h"
 #pragma GCC diagnostic pop
 #else
+#if GDAL_VERSION_NUM<2000000
+#include "ogrsf_frmts.h"
+#else
 #include "gdal_priv.h"
 #endif
-
+#include "ogr_feature.h"
+#endif // __GNUC__ || __clang__
 
 namespace otb
 {
@@ -37,24 +48,48 @@ namespace ogr
 namespace version_proxy
 {
 
+/*-------------------------[GDAL v2 API change]-------------------------------*/
 OTBGdalAdapters_EXPORT bool IsOFTInteger64(OGRFieldType type)
 {
+#if GDAL_VERSION_NUM<2000000
+  (void)type;
+  return false;
+#else
   return type == OFTInteger64;
+#endif
 }
 
+
 GDALDatasetType * Open(const char * filename, bool readOnly)
 {
+#if GDAL_VERSION_NUM<2000000
+  return OGRSFDriverRegistrar::Open(filename,!readOnly);
+#else
   return (GDALDatasetType *)GDALOpenEx(filename, (readOnly? GDAL_OF_READONLY : GDAL_OF_UPDATE) | GDAL_OF_VECTOR,NULL,NULL,NULL);
+#endif
 }
 
 void Close(GDALDatasetType * dataset)
 {
+#if GDAL_VERSION_NUM<2000000
+  OGRDataSource::DestroyDataSource(dataset);
+#else
   GDALClose(dataset);
+#endif
 }
 
 GDALDatasetType * Create(GDALDriverType * driver, const char * name)
 {
+#if GDAL_VERSION_NUM<2000000
+  GDALDatasetType * ds = driver->CreateDataSource(name);
+
+  if(ds)
+    ds->SetDriver(driver);
+
+  return ds;
+#else
   return driver->Create(name,0,0,0,GDT_Unknown,NULL);
+#endif
 }
 
 bool Delete(const char * name)
@@ -67,31 +102,50 @@ bool Delete(const char * name)
     poDriver = poDS->GetDriver();
     Close(poDS);
     }
-
+#if GDAL_VERSION_NUM<2000000
+  if(poDriver && poDriver->TestCapability(ODrCDeleteDataSource))
+    {
+    OGRErr ret = poDriver->DeleteDataSource(name);
+    return (ret == OGRERR_NONE);
+    }
+#else
   if(poDriver)
     {
     OGRErr ret = poDriver->Delete(name);
-
     return (ret == OGRERR_NONE);
     }
+#endif
   return false;
 }
 
 GDALDriverType *  GetDriverByName(const char * name)
 {
+#if GDAL_VERSION_NUM<2000000
+  return OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(name);
+#else
   return GetGDALDriverManager()->GetDriverByName(name);
+#endif
 }
 
 std::string GetDatasetClassName()
 {
+#if GDAL_VERSION_NUM<2000000
+  return std::string("OGRDataSource");
+#else
   return std::string("GDALDataset");
+#endif
 }
 
 std::string GetDriverClassName()
 {
+#if GDAL_VERSION_NUM<2000000
+  return std::string("OGRSFDriver");
+#else
   return std::string("GDALDriver");
+#endif
 }
 
+#if GDAL_VERSION_NUM>=2000000
 namespace raii
 {
 // This class is used in the next function, so as to prevent any
@@ -118,11 +172,14 @@ private:
   char ** m_P;
 };
 }
+#endif
 
 std::vector<std::string> GetFileListAsStringVector(GDALDatasetType * dataset)
 {
   std::vector<std::string> ret;
-
+#if GDAL_VERSION_NUM<2000000
+  ret.push_back(std::string(dataset->GetName()));
+#else
   raii::CharPPCapsule capsule(dataset->GetFileList());
 
   std::string files_str="";
@@ -136,35 +193,62 @@ std::vector<std::string> GetFileListAsStringVector(GDALDatasetType * dataset)
       ++i;
       }
     }
+#endif
   return ret;
 }
 
 bool SyncToDisk(GDALDatasetType * dataset)
 {
+#if GDAL_VERSION_NUM<2000000
+  const OGRErr res= dataset->SyncToDisk();
+  return (res == OGRERR_NONE);
+#else
   dataset->FlushCache();
-
   return true;
+#endif
 }
 
 std::vector<std::string> GetAvailableDriversAsStringVector()
 {
   std::vector<std::string> ret;
+#if GDAL_VERSION_NUM<2000000
+  int nbDrivers = OGRSFDriverRegistrar::GetRegistrar()->GetDriverCount();
 
+  for(int i = 0; i < nbDrivers;++i)
+    {
+    ret.push_back(OGRSFDriverRegistrar::GetRegistrar()->GetDriver(i)->GetName());
+    }
+#else
   int nbDrivers = GetGDALDriverManager()->GetDriverCount();
 
   for(int i = 0; i < nbDrivers;++i)
     {
     ret.push_back(GDALGetDriverShortName(GetGDALDriverManager()->GetDriver(i)));
     }
-
+#endif
   return ret;
 }
 
 std::string GetDriverNameFromDataSource(const GDALDatasetType * ds)
 {
+#if GDAL_VERSION_NUM<2000000
+  return std::string(const_cast<GDALDatasetType *>(ds)->GetDriver()->GetName());
+#else
   return std::string(const_cast<GDALDatasetType *>(ds)->GetDriverName());
+#endif
+}
+
+/*----------------------[GDAL 2.2 change on IsFieldSet()]---------------------*/
+bool IsFieldSetAndNotNull(OGRFeature *feat, int index)
+{
+#if GDAL_VERSION_NUM<2020000
+  return feat->IsFieldSet(index);
+#else
+  return feat->IsFieldSetAndNotNull(index);
+#endif
 }
 
 }
 }
 } // end namespace
+
diff --git a/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy1x.cxx b/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy1x.cxx
deleted file mode 100644
index 47c915342349732a594d0a5360c1ecd8bfe1ae5e..0000000000000000000000000000000000000000
--- a/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy1x.cxx
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
- *
- * This file is part of Orfeo Toolbox
- *
- *     https://www.orfeo-toolbox.org/
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "otbOGRVersionProxy.h"
-
-#include "itkMacro.h"
-
-#if defined(__GNUC__) || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wshadow"
-#include "ogrsf_frmts.h"
-#pragma GCC diagnostic pop
-#else
-#include "ogrsf_frmts.h"
-#endif
-
-namespace otb
-{
-namespace ogr
-{
-namespace version_proxy
-{
-
-OTBGdalAdapters_EXPORT bool IsOFTInteger64(OGRFieldType itkNotUsed(type))
-{
-  return false;
-}
-
-
-GDALDatasetType * Open(const char * filename, bool readOnly)
-{
-  return OGRSFDriverRegistrar::Open(filename,!readOnly);
-}
-
-void Close(GDALDatasetType * dataset)
-{
-  OGRDataSource::DestroyDataSource(dataset);
-}
-
-GDALDatasetType * Create(GDALDriverType * driver, const char * name)
-{
-  GDALDatasetType * ds = driver->CreateDataSource(name);
-
-  if(ds)
-    ds->SetDriver(driver);
-
-  return ds;
-}
-
-bool Delete(const char * name)
-{
-  // Open dataset
-  GDALDatasetType * poDS = Open(name,false);
-  GDALDriverType * poDriver = ITK_NULLPTR;
-  if(poDS)
-    {
-    poDriver = poDS->GetDriver();
-    Close(poDS);
-    }
-
-  if(poDriver && poDriver->TestCapability(ODrCDeleteDataSource))
-    {
-
-    OGRErr ret = poDriver->DeleteDataSource(name);
-    return (ret == OGRERR_NONE);
-    }
-
-  return false;
-}
-
-GDALDriverType *  GetDriverByName(const char * name)
-{
-  return OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(name);
-}
-
-std::string GetDatasetClassName()
-{
-  return std::string("OGRDataSource");
-}
-
-std::string GetDriverClassName()
-{
-  return std::string("OGRSFDriver");
-}
-
-std::vector<std::string> GetFileListAsStringVector(GDALDatasetType * dataset)
-{
-  std::vector<std::string> ret;
-
-  ret.push_back(std::string(dataset->GetName()));
-
-  return ret;
-}
-
-bool SyncToDisk(GDALDatasetType * dataset)
-{
-  const OGRErr res= dataset->SyncToDisk();
-
-  return (res == OGRERR_NONE);
-}
-
-std::vector<std::string> GetAvailableDriversAsStringVector()
-{
-  std::vector<std::string> ret;
-
-  int nbDrivers = OGRSFDriverRegistrar::GetRegistrar()->GetDriverCount();
-
-  for(int i = 0; i < nbDrivers;++i)
-    {
-    ret.push_back(OGRSFDriverRegistrar::GetRegistrar()->GetDriver(i)->GetName());
-    }
-
-  return ret;
-}
-
-std::string GetDriverNameFromDataSource(const GDALDatasetType * ds)
-{
-  return std::string(const_cast<GDALDatasetType *>(ds)->GetDriver()->GetName());
-}
-
-}
-}
-} // end namespace
diff --git a/Modules/Applications/AppClassification/app/otbSOMClassification.cxx b/Modules/Applications/AppClassification/app/otbSOMClassification.cxx
index 18e12db92ef7836209082b73816c04196be2c9bf..86572e90ad0eebd83dbc8ec8ee3e338677984af6 100644
--- a/Modules/Applications/AppClassification/app/otbSOMClassification.cxx
+++ b/Modules/Applications/AppClassification/app/otbSOMClassification.cxx
@@ -254,6 +254,10 @@ private:
     itk::RandomPermutation randPerm(numberOfStreamDivisions);
     unsigned int index = 0;
 
+    // reset seed and step once (itk::RandomPermutation may have used it)
+    randomGen->SetSeed(GetParameterInt("rand"));
+    randomGen->GetVariateWithClosedRange();
+
     // TODO : maybe change the approach: at the moment, the sampling process is able to pick a sample twice or more
     while (totalSamples < nbsamples)
     {
diff --git a/Modules/Applications/AppClassification/include/otbTrainVectorBase.txx b/Modules/Applications/AppClassification/include/otbTrainVectorBase.txx
index e24c4165de2b6a1b1bf57c672e5ec69a1ef825a2..ac72630fd08ce84b22f64e329eaae10796f69d75 100644
--- a/Modules/Applications/AppClassification/include/otbTrainVectorBase.txx
+++ b/Modules/Applications/AppClassification/include/otbTrainVectorBase.txx
@@ -273,7 +273,7 @@ TrainVectorBase::ExtractSamplesWithLabel(std::string parameterName, std::string
 
         input->PushBack( mv );
 
-        if( feature.ogr().IsFieldSet( cFieldIndex ) && cFieldIndex != -1 )
+        if(cFieldIndex>=0 && ogr::Field(feature,cFieldIndex).HasBeenSet())
           target->PushBack( feature.ogr().GetFieldAsInteger( cFieldIndex ) );
         else
           target->PushBack( 0 );
diff --git a/Modules/Applications/AppSARPolarSynth/test/CMakeLists.txt b/Modules/Applications/AppSARPolarSynth/test/CMakeLists.txt
index e77967b05c1ca08b7f9d908a5ebce567a2273572..ebdaca7c686939019b1e019b25515494e919043d 100644
--- a/Modules/Applications/AppSARPolarSynth/test/CMakeLists.txt
+++ b/Modules/Applications/AppSARPolarSynth/test/CMakeLists.txt
@@ -23,7 +23,7 @@ otb_module_test()
 
 otb_test_application(NAME  apTvSARPolarSynth
                      APP  SARPolarSynth
-                     OPTIONS -in ${INPUTDATA}/RSAT2_AltonaExtract_1000_1000_100_100.hdr
+                     OPTIONS -in ${INPUTDATA}/RSAT2_AltonaExtract_1000_1000_100_100.tif
                	             -out ${TEMP}/resApMultiPolarimetricSynthesis1.tif
                              -psii 10.0 
                              -khii 0.0
diff --git a/Modules/Core/SpatialObjects/include/otbLineSpatialObject.h b/Modules/Core/SpatialObjects/include/otbLineSpatialObject.h
index cc04dacdd8526f661aa9209b94cdff9e3fb44aa9..a4adf2d0548ce1eb525d6b1804eb484455d12961 100644
--- a/Modules/Core/SpatialObjects/include/otbLineSpatialObject.h
+++ b/Modules/Core/SpatialObjects/include/otbLineSpatialObject.h
@@ -64,6 +64,8 @@ public:
   typedef std::vector<LinePointType>                     PointListType;
   typedef itk::VectorContainer<unsigned long, PointType> PointContainerType;
   typedef itk::SmartPointer<PointContainerType>          PointContainerPointer;
+  typedef itk::SizeValueType SizeValueType;
+  typedef itk::IdentifierType IdentifierType;
 
   /** Returns a reference to the list of the Line points.*/
   PointListType& GetPoints(void);
@@ -72,19 +74,19 @@ public:
   void SetPoints(PointListType& newPoints);
 
   /** Return a point in the list given the index */
-  const SpatialObjectPointType* GetPoint(unsigned long id) const ITK_OVERRIDE
+  const SpatialObjectPointType* GetPoint(IdentifierType id) const ITK_OVERRIDE
   {
     return &(m_Points[id]);
   }
 
   /** Return a point in the list given the index */
-  SpatialObjectPointType* GetPoint(unsigned long id) ITK_OVERRIDE
+  SpatialObjectPointType* GetPoint(IdentifierType id) ITK_OVERRIDE
   {
     return &(m_Points[id]);
   }
 
   /** Return the number of points in the list */
-  itk::SizeValueType GetNumberOfPoints(void) const ITK_OVERRIDE
+  SizeValueType GetNumberOfPoints(void) const ITK_OVERRIDE
   {
     return m_Points.size();
   }
diff --git a/Modules/Filtering/Polarimetry/test/CMakeLists.txt b/Modules/Filtering/Polarimetry/test/CMakeLists.txt
index 73045f5cd8b40c0395a34604f11abb85dceeaa24..d1c77627cf5316b3353b3eab49f760faca17a690 100644
--- a/Modules/Filtering/Polarimetry/test/CMakeLists.txt
+++ b/Modules/Filtering/Polarimetry/test/CMakeLists.txt
@@ -74,7 +74,7 @@ otb_add_test(NAME saTvVectorMultiChannelsPolarimetricSynthesisFilter COMMAND otb
   --compare-image ${EPSILON_7}   ${BASELINE}/saTvMultiPolarimetricSynthesis1.tif
   ${TEMP}/resMultiPolarimetricSynthesis1.tif
   otbVectorMultiChannelsPolarimetricSynthesisFilter
-  ${INPUTDATA}/RSAT2_AltonaExtract_1000_1000_100_100.hdr
+  ${INPUTDATA}/RSAT2_AltonaExtract_1000_1000_100_100.tif
   ${TEMP}/resMultiPolarimetricSynthesis1.tif
   10.0     # PsiI
   0.0     # KhiI
diff --git a/Modules/Hyperspectral/EndmembersExtraction/include/otbVcaImageFilter.txx b/Modules/Hyperspectral/EndmembersExtraction/include/otbVcaImageFilter.txx
index 919e3a6d322dc4d5d9cc2e2cf88d16fc457f8629..014ff8e7eef8cc32e52e8154eb583dbab4142020 100644
--- a/Modules/Hyperspectral/EndmembersExtraction/include/otbVcaImageFilter.txx
+++ b/Modules/Hyperspectral/EndmembersExtraction/include/otbVcaImageFilter.txx
@@ -233,7 +233,7 @@ void VCAImageFilter<TImage>::GenerateData()
   vnl_matrix<PrecisionType> A(m_NumberOfEndmembers, m_NumberOfEndmembers);
   A.fill(0);
   A(m_NumberOfEndmembers - 1, 0) = 1;
-  typename RandomVariateGeneratorType::Pointer randomGen = RandomVariateGeneratorType::New();
+  typename RandomVariateGeneratorType::Pointer randomGen = RandomVariateGeneratorType::GetInstance();
 
   for (unsigned int i = 0; i < m_NumberOfEndmembers; ++i)
     {
diff --git a/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx b/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx
index 4e3b75a54835bd4fdd132f431fecc2336806d0fe..812c938e6b86b6dd5005abc9939e5275b639f8e5 100644
--- a/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx
+++ b/Modules/IO/IOGDAL/src/otbGDALImageIO.cxx
@@ -1766,19 +1766,26 @@ void GDALImageIO::InternalWriteImageInformation(const void* buffer)
   /* -------------------------------------------------------------------- */
   /*  Set the six coefficients of affine geoTransform                     */
   /* -------------------------------------------------------------------- */
-  itk::VariableLengthVector<double> geoTransform(6);
-  /// Reporting origin and spacing
-  // Beware : GDAL origin is at the corner of the top-left pixel
-  // whereas OTB/ITK origin is at the centre of the top-left pixel
-  geoTransform[0] = m_Origin[0] - 0.5*m_Spacing[0];
-  geoTransform[3] = m_Origin[1] - 0.5*m_Spacing[1];
-  geoTransform[1] = m_Spacing[0];
-  geoTransform[5] = m_Spacing[1];
-
-  // FIXME: Here component 1 and 4 should be replaced by the orientation parameters
-  geoTransform[2] = 0.;
-  geoTransform[4] = 0.;
-  dataset->SetGeoTransform(const_cast<double*>(geoTransform.GetDataPointer()));
+  if ( vcl_abs(m_Origin[0] - 0.5) > Epsilon
+    || vcl_abs(m_Origin[1] - 0.5) > Epsilon
+    || vcl_abs(m_Spacing[0] - 1.0) > Epsilon
+    || vcl_abs(m_Spacing[1] - 1.0) > Epsilon )
+    {
+    // Only set the geotransform if it is not identity (it may erase GCP)
+    itk::VariableLengthVector<double> geoTransform(6);
+    /// Reporting origin and spacing
+    // Beware : GDAL origin is at the corner of the top-left pixel
+    // whereas OTB/ITK origin is at the centre of the top-left pixel
+    geoTransform[0] = m_Origin[0] - 0.5*m_Spacing[0];
+    geoTransform[3] = m_Origin[1] - 0.5*m_Spacing[1];
+    geoTransform[1] = m_Spacing[0];
+    geoTransform[5] = m_Spacing[1];
+
+    // FIXME: Here component 1 and 4 should be replaced by the orientation parameters
+    geoTransform[2] = 0.;
+    geoTransform[4] = 0.;
+    dataset->SetGeoTransform(const_cast<double*>(geoTransform.GetDataPointer()));
+    }
 
   /* -------------------------------------------------------------------- */
   /*      Report metadata.                                                */
diff --git a/Modules/IO/IOGDAL/src/otbOGRIOHelper.cxx b/Modules/IO/IOGDAL/src/otbOGRIOHelper.cxx
index 8248ef8a1df7019224761445e628f1f59e3d573a..53b61999699415cf18f36e1f182cf698560fbe4a 100644
--- a/Modules/IO/IOGDAL/src/otbOGRIOHelper.cxx
+++ b/Modules/IO/IOGDAL/src/otbOGRIOHelper.cxx
@@ -211,7 +211,7 @@ void OGRIOHelper
     otb::VectorDataKeywordlist kwl;
     for (int fieldNum = 0; fieldNum < feature->GetFieldCount(); ++fieldNum)
       {
-      if (feature->IsFieldSet(fieldNum))
+      if (ogr::version_proxy::IsFieldSetAndNotNull(feature, fieldNum))
         {
         kwl.AddField(feature->GetFieldDefnRef(fieldNum), feature->GetRawFieldRef(fieldNum));
         }
diff --git a/Modules/IO/TestKernel/src/otbTestHelper.cxx b/Modules/IO/TestKernel/src/otbTestHelper.cxx
index dfdd2345b95d7649b02cf56091b80d7a309f7769..9c1559a7138dbd3da2f5917ee6d2fe66d4dae441 100644
--- a/Modules/IO/TestKernel/src/otbTestHelper.cxx
+++ b/Modules/IO/TestKernel/src/otbTestHelper.cxx
@@ -1941,7 +1941,7 @@ void TestHelper::DumpOGRFeature(FILE* fpOut, OGRFeature* feature, char** papszOp
               poFDefn->GetNameRef(),
               OGRFieldDefn::GetFieldTypeName(poFDefn->GetType()));
 
-      if (feature->IsFieldSet(iField)) fprintf(fpOut, "%s\n", feature->GetFieldAsString(iField));
+      if (ogr::version_proxy::IsFieldSetAndNotNull(feature, iField)) fprintf(fpOut, "%s\n", feature->GetFieldAsString(iField));
       else fprintf(fpOut, "(null)\n");
 
       }
diff --git a/SuperBuild/CMake/External_boost.cmake b/SuperBuild/CMake/External_boost.cmake
index 8dc75b7a2d4a8e1943dfb19b78a3df7d22bd0851..baff81fc2a466ddd4d98c2d2c7af842de5d76bce 100644
--- a/SuperBuild/CMake/External_boost.cmake
+++ b/SuperBuild/CMake/External_boost.cmake
@@ -71,7 +71,7 @@ set(BOOST_BUILD_COMMAND ${CMAKE_COMMAND}
 #NOTE: update _SB_Boost_INCLUDE_DIR below when you change version number
 ExternalProject_Add(BOOST
   PREFIX BOOST
-  URL "http://download.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.bz2"
+  URL "http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.bz2"
   URL_MD5 65a840e1a0b13a558ff19eeb2c4f0cbe
   BINARY_DIR ${BOOST_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -79,6 +79,7 @@ ExternalProject_Add(BOOST
   CONFIGURE_COMMAND ${BOOST_CONFIGURE_COMMAND}
   BUILD_COMMAND ${BOOST_BUILD_COMMAND}
   INSTALL_COMMAND ""
+  LOG_DOWNLOAD 1
   LOG_CONFIGURE 1
   LOG_BUILD 1
   LOG_INSTALL 1  
diff --git a/SuperBuild/CMake/External_curl.cmake b/SuperBuild/CMake/External_curl.cmake
index fc6fe75d08b1005ea14b66e9e34df5f5398c4c0d..8728bdeb7e8a02c4af70125d157e3cd492862015 100644
--- a/SuperBuild/CMake/External_curl.cmake
+++ b/SuperBuild/CMake/External_curl.cmake
@@ -24,64 +24,41 @@ SETUP_SUPERBUILD(CURL)
 
 # declare dependencies
 ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(CURL ZLIB)
-
 if(NOT APPLE)
-  ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(OPENSSL)
+  ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(CURL OPENSSL)
 endif()
 
-if(MSVC)
-  if(NOT BUILD_SHARED_LIBS)
-    message(FATAL_ERROR "static build or curl not supported")
-    return()
-  endif()
-
-  if(OTB_TARGET_SYSTEM_ARCH_IS_X64)
-    set(CURL_INSTALL_DIR_PREFIX "libcurl-vc-x64")
-  else()
-    set(CURL_INSTALL_DIR_PREFIX "libcurl-vc-x86")
-  endif()
-
-  set(CURL_INSTALL_DIR_PREFIX "${CURL_INSTALL_DIR_PREFIX}-release-dll-zlib-dll-ipv6-sspi-winssl")
-
-  ExternalProject_Add(CURL
+ExternalProject_Add(CURL
   PREFIX CURL
   URL "http://curl.haxx.se/download/curl-7.40.0.tar.gz"
   URL_MD5 58943642ea0ed050ab0431ea1caf3a6f
-  SOURCE_DIR ${CURL_SB_SRC}
-  BINARY_DIR ${CURL_SB_SRC}/winbuild
+  BINARY_DIR ${CURL_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
   DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+  CMAKE_CACHE_ARGS
+  ${SB_CMAKE_CACHE_ARGS}
+  -DBUILD_CURL_TESTS:BOOL=OFF
+  -DBUILD_CURL_EXE:BOOL=ON
+  -DCMAKE_USE_OPENSSL:BOOL=OFF
+  -DCMAKE_USE_LIBSSH2:BOOL=OFF
+  -DCURL_DISABLE_LDAP:BOOL=ON
+  -DCMAKE_USE_OPENLDAP:BOOL=OFF
+  -DENABLE_MANUAL:BOOL=OFF
+  -DENABLE_IPV6:BOOL=OFF
+  ${CURL_SB_CONFIG}
   DEPENDS ${CURL_DEPENDENCIES}
-  CONFIGURE_COMMAND ""
-  BUILD_COMMAND nmake /f ${CURL_SB_SRC}/winbuild/Makefile.vc mode=dll WITH_ZLIB=dll WITH_DEVEL=${SB_INSTALL_PREFIX}
-  INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
-  ${CURL_SB_SRC}/builds/${CURL_INSTALL_DIR_PREFIX}/ ${SB_INSTALL_PREFIX}
+  CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
-else(UNIX)
+SUPERBUILD_PATCH_SOURCE(CURL)
 
-  ExternalProject_Add(CURL
-    PREFIX CURL
-    URL "http://curl.haxx.se/download/curl-7.40.0.tar.gz"
-    URL_MD5 58943642ea0ed050ab0431ea1caf3a6f
-    BINARY_DIR ${CURL_SB_BUILD_DIR}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    CMAKE_CACHE_ARGS
-    ${SB_CMAKE_CACHE_ARGS}
-    -DBUILD_CURL_TESTS:BOOL=OFF
-    -DBUILD_CURL_EXE:BOOL=ON
-    -DCMAKE_USE_OPENSSL:BOOL=${SB_ENABLE_OPENSSL_CURL}
-    -DCMAKE_USE_LIBSSH2:BOOL=OFF
-    -DCURL_DISABLE_LDAP:BOOL=ON
-    -DCMAKE_USE_OPENLDAP:BOOL=OFF
-    ${CURL_SB_CONFIG}
-    DEPENDS ${CURL_DEPENDENCIES}
-    CMAKE_COMMAND ${SB_CMAKE_COMMAND}
-    LOG_CONFIGURE 1
-    LOG_BUILD 1
-    LOG_INSTALL 1
-    )
+set(_SB_CURL_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
+if(WIN32)
+  set(_SB_CURL_LIBRARY "${SB_INSTALL_PREFIX}/lib/libcurl_imp.lib")
+elseif(UNIX)
+  set(_SB_CURL_LIBRARY ${SB_INSTALL_PREFIX}/lib/libcurl${CMAKE_SHARED_LIBRARY_SUFFIX})
 endif()
-
-SUPERBUILD_UPDATE_CMAKE_VARIABLES(CURL TRUE)
diff --git a/SuperBuild/CMake/External_expat.cmake b/SuperBuild/CMake/External_expat.cmake
index 2991992a9875afa5735d9a4478288065691c6e14..d59f4391faf8a06f7d8b84d786afef692244a44e 100644
--- a/SuperBuild/CMake/External_expat.cmake
+++ b/SuperBuild/CMake/External_expat.cmake
@@ -24,7 +24,7 @@ SETUP_SUPERBUILD(EXPAT)
 
 ExternalProject_Add(EXPAT
   PREFIX EXPAT
-  URL "http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download"
+  URL "http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz"
   URL_MD5 dd7dab7a5fea97d2a6a43f511449b7cd
   BINARY_DIR ${EXPAT_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -35,6 +35,10 @@ ExternalProject_Add(EXPAT
   -DBUILD_tests:BOOL=OFF
   -DBUILD_tools:BOOL=OFF
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 SUPERBUILD_UPDATE_CMAKE_VARIABLES(EXPAT FALSE)
diff --git a/SuperBuild/CMake/External_fftw.cmake b/SuperBuild/CMake/External_fftw.cmake
index a6969ab7b225836c475f196d01de19c51383522c..ce1bdbea7f377f3402465e0d31867f46bb05922f 100644
--- a/SuperBuild/CMake/External_fftw.cmake
+++ b/SuperBuild/CMake/External_fftw.cmake
@@ -54,6 +54,7 @@ ExternalProject_Add(FFTWF
   --disable-fortran
   --disable-dependency-tracking
   DEPENDS ${FFTW_DEPENDENCIES}
+  LOG_CONFIGURE 1
   LOG_BUILD 1
   LOG_INSTALL 1
   )
@@ -80,6 +81,8 @@ ExternalProject_Add(FFTWD
   --disable-fortran
   --disable-dependency-tracking
   DEPENDS FFTWF
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
   LOG_BUILD 1
   LOG_INSTALL 1  
   )
diff --git a/SuperBuild/CMake/External_freetype.cmake b/SuperBuild/CMake/External_freetype.cmake
index 014e35f0ccbc44730f248d9d3f26e9c4a8cb0c48..1af53391eb1546030311305916d1e902696222fa 100644
--- a/SuperBuild/CMake/External_freetype.cmake
+++ b/SuperBuild/CMake/External_freetype.cmake
@@ -39,6 +39,10 @@ ExternalProject_Add(FREETYPE
   ${SB_CMAKE_CACHE_ARGS}
   ${FREETYPE_SB_CONFIG}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 set(_SB_FREETYPE_INCLUDE_DIRS ${SB_INSTALL_PREFIX}/include/freetype2)
diff --git a/SuperBuild/CMake/External_gdal.cmake b/SuperBuild/CMake/External_gdal.cmake
index aa87dc9f44e755b5e1824c90f9a2b01f682c4e45..fd7ed1836132c30fe132e67c14c3add1ca92f11e 100644
--- a/SuperBuild/CMake/External_gdal.cmake
+++ b/SuperBuild/CMake/External_gdal.cmake
@@ -65,7 +65,6 @@ if(UNIX)
     ${SB_CONFIGURE_ARGS}
     --with-cfitsio=no
     --with-dods-root=no
-    --with-dwgdirect=no
     --with-ecw=no
     --with-epsilon=no
     --with-fme=no
@@ -100,6 +99,8 @@ if(UNIX)
     --with-xerces=no
     --with-xml2=no
     --with-pg=no
+    --with-webp=no
+    --with-threads=yes
     ${GDAL_SB_CONFIG}
     ${GDAL_SB_EXTRA_OPTIONS}
     )
@@ -107,8 +108,6 @@ if(UNIX)
   #set(GDAL_INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} install)
 
 else(MSVC)
-  STRING(REGEX REPLACE "/$" "" CMAKE_WIN_INSTALL_PREFIX ${SB_INSTALL_PREFIX})
-  STRING(REGEX REPLACE "/" "\\\\" CMAKE_WIN_INSTALL_PREFIX ${CMAKE_WIN_INSTALL_PREFIX})
   configure_file(
     ${CMAKE_SOURCE_DIR}/patches/GDAL/nmake_gdal_extra.opt.in
     ${CMAKE_BINARY_DIR}/nmake_gdal_extra.opt)
@@ -133,8 +132,8 @@ endif()
 
 ExternalProject_Add(GDAL
   PREFIX GDAL
-  URL "http://download.osgeo.org/gdal/2.1.0/gdal-2.1.0.tar.gz"
-  URL_MD5 0fc165cd947c54b132204233dfb243f1
+  URL "http://download.osgeo.org/gdal/2.2.1/gdal-2.2.1.tar.gz"
+  URL_MD5 785acf2b0cbf9d56d37c9044d0ee2505
   SOURCE_DIR ${GDAL_SB_SRC}
   BINARY_DIR ${GDAL_SB_SRC}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -143,6 +142,7 @@ ExternalProject_Add(GDAL
   CONFIGURE_COMMAND ${GDAL_CONFIGURE_COMMAND}
   BUILD_COMMAND ${GDAL_BUILD_COMMAND}
   INSTALL_COMMAND ${GDAL_INSTALL_COMMAND}
+  LOG_DOWNLOAD 1
   LOG_CONFIGURE 1
   LOG_BUILD 1
   LOG_INSTALL 1
diff --git a/SuperBuild/CMake/External_geos.cmake b/SuperBuild/CMake/External_geos.cmake
index f129a04379cd304f097e5425df52b29a0c73e913..921aa4d667cf4ba7f621cb8965ca47af08742c61 100644
--- a/SuperBuild/CMake/External_geos.cmake
+++ b/SuperBuild/CMake/External_geos.cmake
@@ -22,23 +22,10 @@ INCLUDE_ONCE_MACRO(GEOS)
 
 SETUP_SUPERBUILD(GEOS)
 
-if(MSVC)
-  set(GEOS_PATCH_COMMAND ${CMAKE_COMMAND} -E copy
-	  ${CMAKE_SOURCE_DIR}/patches/GEOS/CMakeLists.txt
-	  ${CMAKE_SOURCE_DIR}/patches/GEOS/nmake.opt
-	  ${GEOS_SB_SRC})
-  set(GEOS_CMAKE_COMMAND ${SB_CMAKE_COMMAND} -DGEOS_SB_SRC=${GEOS_SB_SRC})
-
-else()
-  set(GEOS_PATCH_COMMAND)
-  set(GEOS_CMAKE_COMMAND ${SB_CMAKE_COMMAND})
-
-endif()
-
 ExternalProject_Add(GEOS
    PREFIX GEOS
-   URL "http://download.osgeo.org/geos/geos-3.5.0.tar.bz2"
-   URL_MD5 136842690be7f504fba46b3c539438dd
+   URL "http://download.osgeo.org/geos/geos-3.6.1.tar.bz2"
+   URL_MD5 c97e338b3bc81f9848656e9d693ca6cc
    SOURCE_DIR ${GEOS_SB_SRC}
    BINARY_DIR ${GEOS_SB_SRC}
    INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -46,17 +33,23 @@ ExternalProject_Add(GEOS
    CMAKE_CACHE_ARGS
    ${SB_CMAKE_CACHE_ARGS}
    -DGEOS_ENABLE_TESTS:BOOL=OFF
-   PATCH_COMMAND ${GEOS_PATCH_COMMAND}
+   -DGEOS_ENABLE_MACOSX_FRAMEWORK:BOOL=OFF
+   -DGEOS_BUILD_STATIC:BOOL=${BUILD_STATIC_LIBS}
+   -DGEOS_BUILD_SHARED:BOOL=${BUILD_SHARED_LIBS}
    CMAKE_COMMAND ${GEOS_CMAKE_COMMAND}
+   LOG_DOWNLOAD 1
+   LOG_CONFIGURE 1
+   LOG_BUILD 1
+   LOG_INSTALL 1
    )
 
-if(NOT MSVC)
-  SUPERBUILD_PATCH_SOURCE(GEOS)
-endif()
+# Patch still needed with version 3.6.1 to avoid error during CMake configuration
+# See https://trac.osgeo.org/geos/ticket/753
+SUPERBUILD_PATCH_SOURCE(GEOS)
 
 set(_SB_GEOS_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 if(WIN32)
-  set(_SB_GEOS_LIBRARY ${SB_INSTALL_PREFIX}/lib/geos_i.lib )
+  set(_SB_GEOS_LIBRARY ${SB_INSTALL_PREFIX}/lib/geos.lib )
 elseif(UNIX)
   set(_SB_GEOS_LIBRARY ${SB_INSTALL_PREFIX}/lib/libgeos${CMAKE_SHARED_LIBRARY_SUFFIX})
-endif()
\ No newline at end of file
+endif()
diff --git a/SuperBuild/CMake/External_geotiff.cmake b/SuperBuild/CMake/External_geotiff.cmake
index 99babdd855a58186668364bbea4be881fb3ff479..3bb24a3202b39db9724a8261da78bf7fdfdf86fc 100644
--- a/SuperBuild/CMake/External_geotiff.cmake
+++ b/SuperBuild/CMake/External_geotiff.cmake
@@ -35,59 +35,28 @@ ADD_SUPERBUILD_CMAKE_VAR(GEOTIFF ZLIB_LIBRARY)
 ADD_SUPERBUILD_CMAKE_VAR(GEOTIFF JPEG_INCLUDE_DIR)
 ADD_SUPERBUILD_CMAKE_VAR(GEOTIFF JPEG_LIBRARY)
 
-#RK: we are forced to use autoconf on osx due to cmake's find_* functions
-#Do we need to use the same of Linux ?
-if(UNIX)
-  set(GEOTIFF_SB_CONFIG)
-  ADD_SUPERBUILD_CONFIGURE_VAR(GEOTIFF PROJ_ROOT     --with-proj)
-  ADD_SUPERBUILD_CONFIGURE_VAR(GEOTIFF TIFF_ROOT     --with-libtiff)
-  ADD_SUPERBUILD_CONFIGURE_VAR(GEOTIFF JPEG_ROOT     --with-jpeg)
-  ADD_SUPERBUILD_CONFIGURE_VAR(GEOTIFF ZLIB_ROOT     --with-libz)
+ExternalProject_Add(GEOTIFF
+  PREFIX GEOTIFF
+  URL "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-1.4.2.tar.gz"
+  URL_MD5 96ab80e0d4eff7820579957245d844f8
+  SOURCE_DIR ${GEOTIFF_SB_SRC}
+  BINARY_DIR ${GEOTIFF_SB_BUILD_DIR}
+  INSTALL_DIR ${SB_INSTALL_PREFIX}
+  DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+  DEPENDS ${GEOTIFF_DEPENDENCIES}
+  CMAKE_CACHE_ARGS
+  ${SB_CMAKE_CACHE_ARGS}
+  -DBUILD_TESTING:BOOL=OFF
+  -DPROJ4_OSGEO4W_HOME:PATH=${SB_INSTALL_PREFIX}
+  ${GEOTIFF_SB_CONFIG}
+  CMAKE_COMMAND ${SB_CMAE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
+  )
 
-  ExternalProject_Add(GEOTIFF
-    PREFIX GEOTIFF
-    URL "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-1.4.1.tar.gz"
-    URL_MD5 48bdf817e6e7a37671cc1f41b01e10fc
-    SOURCE_DIR ${GEOTIFF_SB_SRC}
-    BINARY_DIR ${GEOTIFF_SB_SRC}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    DEPENDS ${GEOTIFF_DEPENDENCIES}
-    CONFIGURE_COMMAND
-    ${SB_ENV_CONFIGURE_CMD}
-    ${GEOTIFF_SB_SRC}/configure
-    ${SB_CONFIGURE_ARGS}
-    ${GEOTIFF_SB_CONFIG}
-    LOG_BUILD 1
-    LOG_INSTALL 1
-    )
-
-  # [LOG_CONFIGURE 1]           # Wrap configure in script to log output
-  # [LOG_BUILD 1]               # Wrap build in script to log output
-  # [LOG_TEST 1]                # Wrap test in script to log output
-  # [LOG_INSTALL 1]             # Wrap install in script to log output
-  SUPERBUILD_PATCH_SOURCE(GEOTIFF)
-
-else()
-
-  ExternalProject_Add(GEOTIFF
-    PREFIX GEOTIFF
-    URL "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-1.4.1.tar.gz"
-    URL_MD5 48bdf817e6e7a37671cc1f41b01e10fc
-    SOURCE_DIR ${GEOTIFF_SB_SRC}
-    BINARY_DIR ${GEOTIFF_SB_BUILD_DIR}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    DEPENDS ${GEOTIFF_DEPENDENCIES}
-    CMAKE_CACHE_ARGS
-    ${SB_CMAKE_CACHE_ARGS}
-    -DBUILD_TESTING:BOOL=OFF
-    -DPROJ4_OSGEO4W_HOME:PATH=${SB_INSTALL_PREFIX}
-    ${GEOTIFF_SB_CONFIG}
-    CMAKE_COMMAND ${SB_CMAKE_COMMAND}
-    )
-
-endif()
+SUPERBUILD_PATCH_SOURCE(GEOTIFF)
 
 set(_SB_GEOTIFF_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 if(WIN32)
diff --git a/SuperBuild/CMake/External_glew.cmake b/SuperBuild/CMake/External_glew.cmake
index 769ba0b808c3b8e83539e3dce0c3bb90501aad56..3f370e28e0642d584cfbdecfb881fa28d71a07e4 100644
--- a/SuperBuild/CMake/External_glew.cmake
+++ b/SuperBuild/CMake/External_glew.cmake
@@ -24,13 +24,17 @@ SETUP_SUPERBUILD(GLEW)
 
 ExternalProject_Add(GLEW
   PREFIX GLEW
-  URL "https://sourceforge.net/projects/glew/files/glew/1.13.0/glew-1.13.0.tgz/download"
+  URL "https://downloads.sourceforge.net/project/glew/glew/1.13.0/glew-1.13.0.tgz"
   URL_MD5 7cbada3166d2aadfc4169c4283701066
   SOURCE_DIR ${GLEW_SB_SRC}
   BINARY_DIR ${GLEW_SB_BUILD_DIR}
   DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
   CONFIGURE_COMMAND ${SB_CMAKE_COMMAND} ${SB_CMAKE_CACHE_ARGS} -DBUILD_UTILS:BOOL=OFF ${GLEW_SB_SRC}/build/cmake/
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 SUPERBUILD_PATCH_SOURCE(GLEW)
diff --git a/SuperBuild/CMake/External_glfw.cmake b/SuperBuild/CMake/External_glfw.cmake
index ed7285bd7cfff094d8754c1feb65e8bf09e0b29b..62e2ee046d0dbd1f1b83c6adb2ef13a834d4a9e0 100644
--- a/SuperBuild/CMake/External_glfw.cmake
+++ b/SuperBuild/CMake/External_glfw.cmake
@@ -35,4 +35,10 @@ ExternalProject_Add(GLFW
   -DGLFW_BUILD_DOCS:BOOL=OFF
   -DGLFW_BUILD_TESTS:BOOL=OFF
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
+
+SUPERBUILD_PATCH_SOURCE(GLFW)
diff --git a/SuperBuild/CMake/External_glut.cmake b/SuperBuild/CMake/External_glut.cmake
index 3299afd9b35d353890c6775ffffe88ccf198757a..8894a4931c3619b58bb01125b85494ecf2fbb37c 100644
--- a/SuperBuild/CMake/External_glut.cmake
+++ b/SuperBuild/CMake/External_glut.cmake
@@ -53,6 +53,10 @@ ExternalProject_Add(GLUT
   DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
   PATCH_COMMAND ${GLUT_PATCH_COMMAND}
   CONFIGURE_COMMAND ${GLUT_CONFIGURE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 set(_SB_GLUT_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
diff --git a/SuperBuild/CMake/External_itk.cmake b/SuperBuild/CMake/External_itk.cmake
index d46abbc7f9e55233b27047cca25a64244af3daa5..a96dc75196ce61766cb5e8ad9f491e83a163cb63 100644
--- a/SuperBuild/CMake/External_itk.cmake
+++ b/SuperBuild/CMake/External_itk.cmake
@@ -152,14 +152,14 @@ set(ITK_SB_COMPILATION_FLAGS
 
 #variables are later used in packaging
 set(SB_ITK_VERSION_MAJOR "4")
-set(SB_ITK_VERSION_MINOR "10")
+set(SB_ITK_VERSION_MINOR "12")
 
 set(_SB_ITK_DIR ${SB_INSTALL_PREFIX}/lib/cmake/ITK-${SB_ITK_VERSION_MAJOR}.${SB_ITK_VERSION_MINOR})
 
 ExternalProject_Add(ITK
   PREFIX ITK
-  URL "http://downloads.sourceforge.net/project/itk/itk/4.10/InsightToolkit-4.10.0.tar.gz"
-  URL_MD5 8c67ba296da3835fb67bb29d98dcff3e
+  URL "https://sourceforge.net/projects/itk/files/itk/4.12/InsightToolkit-4.12.0.tar.gz"
+  URL_MD5 561a403f93c88c64085b5623e8e61f79
   SOURCE_DIR ${ITK_SB_SRC}
   BINARY_DIR ${ITK_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -180,6 +180,10 @@ ExternalProject_Add(ITK
   ${ITK_SB_CONFIG}
   DEPENDS ${ITK_DEPENDENCIES}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 SUPERBUILD_PATCH_SOURCE(ITK)
diff --git a/SuperBuild/CMake/External_jpeg.cmake b/SuperBuild/CMake/External_jpeg.cmake
index 0a4fca1b69d3debed537887ce4d71ecf7da60679..38e1460e508505e880d72656f47142ce118d3ee2 100644
--- a/SuperBuild/CMake/External_jpeg.cmake
+++ b/SuperBuild/CMake/External_jpeg.cmake
@@ -45,13 +45,17 @@ endif()
 
 ExternalProject_Add(JPEG
   PREFIX JPEG
-  URL "http://sourceforge.net/projects/libjpeg-turbo/files/1.4.1/libjpeg-turbo-1.4.1.tar.gz"
+  URL "http://downloads.sourceforge.net/project/libjpeg-turbo/1.4.1/libjpeg-turbo-1.4.1.tar.gz"
   URL_MD5 b1f6b84859a16b8ebdcda951fa07c3f2
   SOURCE_DIR ${JPEG_SB_SRC}
   BINARY_DIR ${JPEG_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
   DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
   CONFIGURE_COMMAND ${JPEG_CONFIGURE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 SUPERBUILD_PATCH_SOURCE(JPEG)
diff --git a/SuperBuild/CMake/External_libkml.cmake b/SuperBuild/CMake/External_libkml.cmake
index 4d412687de14f6a74ef470cc02d0431713f6773b..e330ab05f7f5809a07ebf78dd7f0a980dde81522 100644
--- a/SuperBuild/CMake/External_libkml.cmake
+++ b/SuperBuild/CMake/External_libkml.cmake
@@ -44,7 +44,10 @@ ExternalProject_Add(LIBKML
   CMAKE_CACHE_ARGS ${SB_CMAKE_CACHE_ARGS}
   ${LIBKML_SB_CONFIG}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
-  LOG_BUILD 1  
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 set(_SB_LIBKML_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
diff --git a/SuperBuild/CMake/External_libsvm.cmake b/SuperBuild/CMake/External_libsvm.cmake
index 4a903c3e59c2d3bfe2ef7adc802051f34d19f33e..435c6d280c5faeb2bf5d2152cc3381c16a9f783b 100644
--- a/SuperBuild/CMake/External_libsvm.cmake
+++ b/SuperBuild/CMake/External_libsvm.cmake
@@ -35,6 +35,10 @@ ExternalProject_Add(LIBSVM
   PATCH_COMMAND ${CMAKE_COMMAND} -E copy
   ${CMAKE_SOURCE_DIR}/patches/LIBSVM/CMakeLists.txt
   ${LIBSVM_SB_SRC}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 set(_SB_LIBSVM_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
diff --git a/SuperBuild/CMake/External_muparser.cmake b/SuperBuild/CMake/External_muparser.cmake
index 20bb3ca23b068de7b6fb6ca0af2b4f991a9ac19f..669cd29da28b2979529ca4b5da69608c66ac2aae 100644
--- a/SuperBuild/CMake/External_muparser.cmake
+++ b/SuperBuild/CMake/External_muparser.cmake
@@ -35,6 +35,10 @@ ExternalProject_Add(MUPARSER
   PATCH_COMMAND ${CMAKE_COMMAND} -E copy
   ${CMAKE_SOURCE_DIR}/patches/MUPARSER/CMakeLists.txt
   ${MUPARSER_SB_SRC}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
-SUPERBUILD_UPDATE_CMAKE_VARIABLES(MUPARSER FALSE)
\ No newline at end of file
+SUPERBUILD_UPDATE_CMAKE_VARIABLES(MUPARSER FALSE)
diff --git a/SuperBuild/CMake/External_muparserx.cmake b/SuperBuild/CMake/External_muparserx.cmake
index a946a0da64a7e44fcc6f45e329015fa9272bf91d..e67b3974ad51cb504eb75cd31aa8f64153acde72 100644
--- a/SuperBuild/CMake/External_muparserx.cmake
+++ b/SuperBuild/CMake/External_muparserx.cmake
@@ -42,6 +42,10 @@ ExternalProject_Add(MUPARSERX
   ${MUPARSERX_FLAGS}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
   DEPENDS ${MUPARSERX_DEPENDENCIES}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 #Patch mpParserMessageProvider.cpp. This patch is integrated upstream but not yet released (last release is 4.0.7)
diff --git a/SuperBuild/CMake/External_mvd.cmake b/SuperBuild/CMake/External_mvd.cmake
deleted file mode 100644
index b3bf91b18f2b96a49e94fc8d1186f6fe75ab3abe..0000000000000000000000000000000000000000
--- a/SuperBuild/CMake/External_mvd.cmake
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
-#
-# This file is part of Orfeo Toolbox
-#
-#     https://www.orfeo-toolbox.org/
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-if( __EXTERNAL_MVD__)
-  return()
-else()
-  set(__EXTERNAL_MVD__ 1)
-endif()
-
-SETUP_SUPERBUILD(MVD)
-
-set(MONTEVERDI_GIT_TAG "develop" CACHE STRING "branch name of monteverdi to build. Default is 'develop'")
-
-# declare dependencies
-ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(MVD OTB QWT QT4)
-
-set(MVD_SB_CONFIG)
-ADD_SUPERBUILD_CMAKE_VAR(MVD OTB_DIR)
-ADD_SUPERBUILD_CMAKE_VAR(MVD QWT_INCLUDE_DIR)
-ADD_SUPERBUILD_CMAKE_VAR(MVD QWT_LIBRARY)
-ADD_SUPERBUILD_CMAKE_VAR(MVD QT_QMAKE_EXECUTABLE)
-
-#TODO: control build testing via cmake variable properly
-
-ExternalProject_Add(MVD
-  PREFIX MVD
-  GIT_REPOSITORY "https://git@git.orfeo-toolbox.org/git/monteverdi2.git"
-  GIT_TAG "${MONTEVERDI_GIT_TAG}"
-  SOURCE_DIR ${MVD_SB_SRC}
-  BINARY_DIR ${MVD_SB_BUILD_DIR}
-  INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
-  DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-  DEPENDS ${MVD_DEPENDENCIES}
-  CMAKE_CACHE_ARGS ${SB_CMAKE_CACHE_ARGS}
-  -DMonteverdi_INSTALL_LIB_DIR:STRING=lib
-  -DOTB_DATA_ROOT:STRING=${OTB_DATA_ROOT}
-  ${MVD_SB_CONFIG}
-  CMAKE_COMMAND ${SB_CMAKE_COMMAND}
-)
diff --git a/SuperBuild/CMake/External_opencv.cmake b/SuperBuild/CMake/External_opencv.cmake
index 854d09de427b0a9c86456694c46f98b3ca55e8f4..675777f3e8ef080192d0bfdd6741b40ed8332237 100644
--- a/SuperBuild/CMake/External_opencv.cmake
+++ b/SuperBuild/CMake/External_opencv.cmake
@@ -100,6 +100,10 @@ ExternalProject_Add(OPENCV
   ${OPENCV_SB_CONFIG}
   DEPENDS ${OPENCV_DEPENDENCIES}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 
diff --git a/SuperBuild/CMake/External_openjpeg.cmake b/SuperBuild/CMake/External_openjpeg.cmake
index cabb84509f4821470b7c09da4b8ce7cd52057ca4..09de9cb472905cfb0473061051b6447d217ec556 100644
--- a/SuperBuild/CMake/External_openjpeg.cmake
+++ b/SuperBuild/CMake/External_openjpeg.cmake
@@ -56,9 +56,13 @@ ExternalProject_Add(OPENJPEG
   ${OPENJPEG_SB_CONFIG}
   DEPENDS ${OPENJPEG_DEPENDENCIES}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 SUPERBUILD_UPDATE_CMAKE_VARIABLES(OPENJPEG FALSE)
 
-#Apply patches to openjpeg (for now Even Roualt optim)
+#Apply patches to openjpeg (for now Even Rouault optimizations)
 SUPERBUILD_PATCH_SOURCE(OPENJPEG "-ut")
diff --git a/SuperBuild/CMake/External_openssl.cmake b/SuperBuild/CMake/External_openssl.cmake
index e398c44a89274d9ba61ea0adcdb424608f0d1cd3..7e20c05fb4fd4698ca683c638914d840de68ff64 100644
--- a/SuperBuild/CMake/External_openssl.cmake
+++ b/SuperBuild/CMake/External_openssl.cmake
@@ -25,32 +25,47 @@ SETUP_SUPERBUILD(OPENSSL)
 ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(OPENSSL ZLIB)
 
 if(WIN32)
+  find_program(PERL_COMMAND NAMES perl perl.exe)
+  if(NOT PERL_COMMAND)
+    message(FATAL_ERROR "PERL_COMMAND not set. it is needed to configure openssl!")
+    return()
+  endif()
+
   set(OPENSSL_BUILD_ARCH "linux-x32")
   set(OPENSSL_BUILD_ARCH "VC-WIN32")
+  set(OPENSSL_CONFIGURE_CMD "${OPENSSL_SB_SRC}/ms/do_ms.bat")
   if(CMAKE_SIZEOF_VOID_P EQUAL 8)
     set(OPENSSL_BUILD_ARCH "linux-x86_64")
     set(OPENSSL_BUILD_ARCH "VC-WIN64A")
+    set(OPENSSL_CONFIGURE_CMD "${OPENSSL_SB_SRC}/ms/do_win64a.bat")
   endif()
 endif()
 
 if(MSVC)
-  STRING(REGEX REPLACE "/$" "" CMAKE_WIN_INSTALL_PREFIX ${SB_INSTALL_PREFIX})
-  STRING(REGEX REPLACE "/" "\\\\" CMAKE_WIN_INSTALL_PREFIX ${CMAKE_WIN_INSTALL_PREFIX})
   ExternalProject_Add(OPENSSL
     PREFIX OPENSSL
     URL "https://github.com/openssl/openssl/archive/OpenSSL_1_0_1p.tar.gz"
     URL_MD5 6bc1f9a9d9d474aceceb377e758e48ec
     DEPENDS ${OPENSSL_DEPENDENCIES}
-    BINARY_DIR ${OPENSSL_SB_BUILD_DIR}
+    BINARY_DIR ${OPENSSL_SB_SRC}
     INSTALL_DIR ${SB_INSTALL_PREFIX}
     DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    PATCH_COMMAND  ${CMAKE_COMMAND} -E copy_directory ${OPENSSL_SB_SRC} ${OPENSSL_SB_BUILD_DIR}
-    CONFIGURE_COMMAND
+    PATCH_COMMAND
     ${SB_ENV_CONFIGURE_CMD}
-    ${CMAKE_COMMAND} -E chdir ${OPENSSL_SB_BUILD_DIR}
-    perl Configure ${OPENSSL_BUILD_ARCH} no-asm  --prefix=${CMAKE_WIN_INSTALL_PREFIX} --openssldir=${CMAKE_WIN_INSTALL_PREFIX}
-    BUILD_COMMAND ms/do_ms.bat
-    INSTALL_COMMAND nmake -f ms/ntdll.mak install
+    ${PERL_COMMAND} ${OPENSSL_SB_SRC}/Configure
+    ${OPENSSL_BUILD_ARCH}
+    no-asm
+    "--prefix=${SB_INSTALL_PREFIX_NATIVE}"
+    "--openssldir=${SB_INSTALL_PREFIX_NATIVE}"
+    CONFIGURE_COMMAND
+      ${SB_ENV_CONFIGURE_CMD}
+      ${OPENSSL_CONFIGURE_CMD}
+    BUILD_COMMAND nmake -f "${OPENSSL_SB_SRC}/ms/ntdll.mak"
+    INSTALL_COMMAND nmake -f "${OPENSSL_SB_SRC}/ms/ntdll.mak" install
+    LOG_DOWNLOAD 1
+    LOG_CONFIGURE 1
+    LOG_BUILD 1
+    LOG_INSTALL 1
     )
 
 else(UNIX)
@@ -59,16 +74,25 @@ else(UNIX)
     DEPENDS ${OPENSSL_DEPENDENCIES}
     URL "https://github.com/openssl/openssl/archive/OpenSSL_1_0_1p.tar.gz"
     URL_MD5 6bc1f9a9d9d474aceceb377e758e48ec
-    BINARY_DIR ${OPENSSL_SB_BUILD_DIR}
+    BINARY_DIR ${OPENSSL_SB_SRC}
     INSTALL_DIR ${SB_INSTALL_PREFIX}
     DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    PATCH_COMMAND  ${CMAKE_COMMAND} -E copy_directory ${OPENSSL_SB_SRC} ${OPENSSL_SB_BUILD_DIR}
     CONFIGURE_COMMAND
     ${SB_ENV_CONFIGURE_CMD}
-    ${CMAKE_COMMAND} -E chdir ${OPENSSL_SB_BUILD_DIR} ./config ${OPENSSL_BUILD_ARCH}
-    --prefix=${SB_INSTALL_PREFIX} shared zlib zlib-dynamic -I${SB_INSTALL_PREFIX}/include -L${SB_INSTALL_PREFIX}/lib
+    ${OPENSSL_SB_SRC}/config ${OPENSSL_BUILD_ARCH}
+    "--prefix=${SB_INSTALL_PREFIX}"
+    shared
+    zlib
+    zlib-dynamic
+    "-I${SB_INSTALL_PREFIX}/include"
+    "-L${SB_INSTALL_PREFIX}/lib"
     BUILD_COMMAND $(MAKE)
-    INSTALL_COMMAND $(MAKE) install)
+    INSTALL_COMMAND $(MAKE) install
+    LOG_DOWNLOAD 1
+    LOG_CONFIGURE 1
+    LOG_BUILD 1
+    LOG_INSTALL 1
+    )
 
   ExternalProject_Add_Step(OPENSSL remove_static
     COMMAND ${CMAKE_COMMAND} -E remove
@@ -82,7 +106,7 @@ endif()
 
 set(_SB_OPENSSL_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 if(WIN32)
-  set(_SB_OPENSSL_LIBRARY ${SB_INSTALL_PREFIX}/lib/libcurl.lib)
+  set(_SB_OPENSSL_LIBRARY "${SB_INSTALL_PREFIX}/lib/ssleay32.lib;${SB_INSTALL_PREFIX}/lib/libeay32.lib")
 elseif(UNIX)
   set(_SB_OPENSSL_LIBRARY ${SB_INSTALL_PREFIX}/lib/libssl${CMAKE_SHARED_LIBRARY_SUFFIX})
 endif()
diff --git a/SuperBuild/CMake/External_openthreads.cmake b/SuperBuild/CMake/External_openthreads.cmake
index bf783fd625a753991e6311078a2c392ad5328ff4..43661aa81cbdc81d382f5cec078dca61c860f691 100644
--- a/SuperBuild/CMake/External_openthreads.cmake
+++ b/SuperBuild/CMake/External_openthreads.cmake
@@ -37,6 +37,10 @@ ExternalProject_Add(OPENTHREADS
   PATCH_COMMAND ${CMAKE_COMMAND} -E copy
   ${CMAKE_SOURCE_DIR}/patches/OPENTHREADS/CMakeLists.txt
   ${OPENTHREADS_SB_SRC}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 set(_SB_OPENTHREADS_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
diff --git a/SuperBuild/CMake/External_ossim.cmake b/SuperBuild/CMake/External_ossim.cmake
index 8347a3cb854486d43b833a8105138e557f2c360d..04d89d5f3ba6c207b726d4c9cfc4351d06b275b3 100644
--- a/SuperBuild/CMake/External_ossim.cmake
+++ b/SuperBuild/CMake/External_ossim.cmake
@@ -67,6 +67,10 @@ ExternalProject_Add(OSSIM
   ${OSSIM_SB_CONFIG}
   DEPENDS ${OSSIM_DEPENDENCIES}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 ExternalProject_Add_Step(OSSIM patch_no_cmakelists
diff --git a/SuperBuild/CMake/External_pcre.cmake b/SuperBuild/CMake/External_pcre.cmake
index 717f09f576d2fe2f638a154c33019bc8c300fdd8..aefa89e5b535315fef74cee9bff3ed2d0bbb18ba 100644
--- a/SuperBuild/CMake/External_pcre.cmake
+++ b/SuperBuild/CMake/External_pcre.cmake
@@ -25,7 +25,7 @@ if(MSVC)
 else()
   ExternalProject_Add(PCRE
     PREFIX PCRE
-    URL "http://sourceforge.net/projects/pcre/files/pcre/8.36/pcre-8.36.tar.gz/download"
+    URL "http://downloads.sourceforge.net/project/pcre/pcre/8.36/pcre-8.36.tar.gz"
     URL_MD5 ff7b4bb14e355f04885cf18ff4125c98
     BINARY_DIR ${PCRE_SB_BUILD_DIR}
     INSTALL_DIR ${SB_INSTALL_PREFIX}
diff --git a/SuperBuild/CMake/External_png.cmake b/SuperBuild/CMake/External_png.cmake
index 1d2d16148dddfef8363f12a002785ca364d96b57..cd149a67b88e1741c912623d7f8f28957a228850 100644
--- a/SuperBuild/CMake/External_png.cmake
+++ b/SuperBuild/CMake/External_png.cmake
@@ -30,7 +30,7 @@ ADD_SUPERBUILD_CMAKE_VAR(PNG ZLIB_LIBRARY)
 
 ExternalProject_Add(PNG
   PREFIX PNG
-  URL "http://sourceforge.net/projects/libpng/files/libpng16/older-releases/1.6.16/lpng1616.zip/download"
+  URL "http://downloads.sourceforge.net/project/libpng/libpng16/older-releases/1.6.16/lpng1616.zip"
   URL_MD5 c90c9587c9a5c735327fb3f6900f6b03
   BINARY_DIR ${PNG_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -48,6 +48,10 @@ ExternalProject_Add(PNG
   -DSKIP_INSTALL_EXECUTABLES:BOOL=OFF
   ${PNG_SB_CONFIG}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 set(_SB_PNG_PNG_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 
diff --git a/SuperBuild/CMake/External_proj.cmake b/SuperBuild/CMake/External_proj.cmake
index 2949915c9fc42904d863752944473f78c3393494..a4fc838c7e44757776948edbda6dbeb2358fe40a 100644
--- a/SuperBuild/CMake/External_proj.cmake
+++ b/SuperBuild/CMake/External_proj.cmake
@@ -22,51 +22,32 @@ INCLUDE_ONCE_MACRO(PROJ)
 
 SETUP_SUPERBUILD(PROJ)
 
-if(MSVC)
-  ExternalProject_Add(PROJ
-    PREFIX PROJ
-    URL "http://download.osgeo.org/proj/proj-4.8.0.tar.gz"
-    URL_MD5 d815838c92a29179298c126effbb1537
-    SOURCE_DIR ${PROJ_SB_SRC}
-    BINARY_DIR ${PROJ_SB_SRC}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND nmake /f ${PROJ_SB_SRC}/makefile.vc
-    INSTALL_COMMAND nmake /f ${PROJ_SB_SRC}/makefile.vc install-all INSTDIR=${SB_INSTALL_PREFIX_NATIVE}
-    )
-
-else()
-
-  if(APPLE)
-    set(PROJ_SB_ENV_CONFIGURE_CMD ${SB_ENV_CONFIGURE_CMD} LDFLAGS=-headerpad_max_install_names)
-  else()
-    set(PROJ_SB_ENV_CONFIGURE_CMD ${SB_ENV_CONFIGURE_CMD})
-  endif()
-
-  ExternalProject_Add(PROJ
-    PREFIX PROJ
-    URL "http://download.osgeo.org/proj/proj-4.8.0.tar.gz"
-    URL_MD5 d815838c92a29179298c126effbb1537
-    BINARY_DIR ${PROJ_SB_SRC}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    CONFIGURE_COMMAND
-    ${SB_ENV_CONFIGURE_CMD}
-    ${PROJ_SB_SRC}/configure
-    --prefix=${SB_INSTALL_PREFIX}
-    --enable-static=no
-    BUILD_COMMAND $(MAKE)
-    INSTALL_COMMAND $(MAKE) install
-    )
-
-endif()
+ExternalProject_Add(PROJ
+  PREFIX PROJ
+  URL "http://download.osgeo.org/proj/proj-4.9.3.tar.gz"
+  URL_MD5 d598336ca834742735137c5674b214a1
+  BINARY_DIR ${PROJ_SB_SRC}
+  INSTALL_DIR ${SB_INSTALL_PREFIX}
+  DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+  CMAKE_CACHE_ARGS
+  ${SB_CMAKE_CACHE_ARGS}
+  -DBUILD_LIBPROJ_SHARED:BOOL=TRUE
+  -DVERSIONED_OUTPUT:BOOL=FALSE
+  -DBUILD_FRAMEWORKS_AND_BUNDLE:BOOL=FALSE
+  -DPROJ_LIB_SUBDIR:STRING=lib
+  -DPROJ_INCLUDE_SUBDIR:STRING=include
+  CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
+  )
 
 SUPERBUILD_PATCH_SOURCE(PROJ)
 
 set(_SB_PROJ_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 if(WIN32)
-  set(_SB_PROJ_LIBRARY ${SB_INSTALL_PREFIX}/lib/proj_i.lib)
+  set(_SB_PROJ_LIBRARY ${SB_INSTALL_PREFIX}/lib/proj.lib)
 elseif(UNIX)
   set(_SB_PROJ_LIBRARY ${SB_INSTALL_PREFIX}/lib/libproj${CMAKE_SHARED_LIBRARY_SUFFIX})
 endif()
diff --git a/SuperBuild/CMake/External_qt4.cmake b/SuperBuild/CMake/External_qt4.cmake
index 8866464eba0bcdb6de152c762c2ae2a327cd247e..6d7c12cd52c00e83b0117ef97fd9814c7d20e193 100644
--- a/SuperBuild/CMake/External_qt4.cmake
+++ b/SuperBuild/CMake/External_qt4.cmake
@@ -40,7 +40,7 @@ endif()
 #NOTE: make sure your superbuild install directory does not contain any
 #Qt files from previous install of superbuild QT.
 # declare dependencies
-ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(QT4 ZLIB PNG JPEG SQLITE FREETYPE)
+ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(QT4 ZLIB PNG JPEG FREETYPE)
 
 #use system libs always for Qt4 as we build them from source or have already in system
 set(QT4_SB_CONFIG)
@@ -55,10 +55,9 @@ if(UNIX)
   else() #Linux
     if(QT4_SB_ENABLE_GTK)
       message(WARNING "QT4_SB_ENABLE_GTK support is experimental")
-
       set(QT4_SB_CONFIG "${QT4_SB_CONFIG} -sm -xrender -xrandr -gtkstyle")
     else()
-      set(QT4_SB_CONFIG "${QT4_SB_CONFIG} -no-gtkstyle")
+      set(QT4_SB_CONFIG "${QT4_SB_CONFIG} -no-gtkstyle -no-glib -no-fontconfig")
     endif()
   endif()
   #common for all unix
@@ -105,10 +104,12 @@ add_custom_target(QT4-uninstall
   COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/include/QtSvg"
   COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/include/QtTest"
   COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/include/QtXml"
+  COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/include/Qt"
   COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/mkspecs"
   COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/plugins"
   COMMAND ${CMAKE_COMMAND} -E remove_directory "${SB_INSTALL_PREFIX}/translations"
   COMMAND ${CMAKE_COMMAND} -E remove -f "${SB_INSTALL_PREFIX}/lib/libQt*"
+  COMMAND ${CMAKE_COMMAND} -E remove -f "${SB_INSTALL_PREFIX}/lib/pkgconfig/Qt*"
   COMMAND ${CMAKE_COMMAND} -E remove -f "${SB_INSTALL_PREFIX}/bin/qmake${QT4_BIN_EXT}"
   COMMAND ${CMAKE_COMMAND} -E remove -f "${SB_INSTALL_PREFIX}/bin/lrelease${QT4_BIN_EXT}"
   COMMAND ${CMAKE_COMMAND} -E remove -f "${SB_INSTALL_PREFIX}/bin/moc${QT4_BIN_EXT}"
@@ -130,6 +131,7 @@ add_custom_target(QT4-uninstall
     DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
     CONFIGURE_COMMAND ${QT4_CONFIGURE_COMMAND}
     DEPENDS ${QT4_DEPENDENCIES}
+    LOG_DOWNLOAD 1
     LOG_CONFIGURE 1    
     LOG_BUILD 1
     LOG_INSTALL 1    
diff --git a/SuperBuild/CMake/External_qwt.cmake b/SuperBuild/CMake/External_qwt.cmake
index b7c49bb46e25518ae261a006da3905c9a8746368..847d001b80bdc98c5a842e72acdaa0d7742c727f 100644
--- a/SuperBuild/CMake/External_qwt.cmake
+++ b/SuperBuild/CMake/External_qwt.cmake
@@ -45,7 +45,7 @@ endif()
 
 ExternalProject_Add(QWT
   PREFIX QWT
-  URL "http://sourceforge.net/projects/qwt/files/qwt/5.2.3/qwt-5.2.3.zip/download"
+  URL "http://downloads.sourceforge.net/project/qwt/qwt/5.2.3/qwt-5.2.3.zip"
   URL_MD5 310a1c8ab831f4b2219505dcb7691cf1
   SOURCE_DIR ${QWT_SB_SRC}
   BINARY_DIR ${QWT_SB_BUILD_DIR}
@@ -67,4 +67,4 @@ if(WIN32)
   set(_SB_QWT_LIBRARY ${SB_INSTALL_PREFIX}/lib/qwt5.lib)
 elseif(UNIX)
   set(_SB_QWT_LIBRARY ${SB_INSTALL_PREFIX}/lib/libqwt${CMAKE_SHARED_LIBRARY_SUFFIX})
-endif()
\ No newline at end of file
+endif()
diff --git a/SuperBuild/CMake/External_shark.cmake b/SuperBuild/CMake/External_shark.cmake
index f6a41acb569536fff64b9a3cedd68b18e37979dc..4fa164d29259d33037ad8c85ee6327ba6e8a0f85 100644
--- a/SuperBuild/CMake/External_shark.cmake
+++ b/SuperBuild/CMake/External_shark.cmake
@@ -46,6 +46,12 @@ ExternalProject_Add(SHARK
   -DENABLE_CBLAS:BOOL=OFF
   ${SHARK_SB_CONFIG}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
+SUPERBUILD_PATCH_SOURCE(SHARK)
+
 set(_SB_Shark_DIR ${SB_INSTALL_PREFIX}/lib/cmake/Shark)
diff --git a/SuperBuild/CMake/External_sqlite.cmake b/SuperBuild/CMake/External_sqlite.cmake
index 8a87e03d0e28bc4e89af98a3d21d9a50ce7bb80b..32d845fc3d434ae9b90b459500e55d854333a1d3 100644
--- a/SuperBuild/CMake/External_sqlite.cmake
+++ b/SuperBuild/CMake/External_sqlite.cmake
@@ -33,6 +33,10 @@ ExternalProject_Add(SQLITE
   PATCH_COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/patches/SQLITE ${SQLITE_SB_SRC}
   CMAKE_CACHE_ARGS ${SB_CMAKE_CACHE_ARGS}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 set(_SB_SQLITE_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
diff --git a/SuperBuild/CMake/External_swig.cmake b/SuperBuild/CMake/External_swig.cmake
index 84c28823c7a64cc2ef82d2618ddfc5a153fe76d4..a21bac8410d123d711560da0ebffc5f0f50a58f8 100644
--- a/SuperBuild/CMake/External_swig.cmake
+++ b/SuperBuild/CMake/External_swig.cmake
@@ -43,7 +43,7 @@ if(MSVC)
   # Use pre-built swig executable (no linking is required, no install done)
   ExternalProject_Add(SWIG
     PREFIX SWIG
-    URL "http://sourceforge.net/projects/swig/files/swigwin/swigwin-3.0.7/swigwin-3.0.7.zip/download"
+    URL "http://downloads.sourceforge.net/project/swig/swigwin/swigwin-3.0.7/swigwin-3.0.7.zip"
     URL_MD5 d8b5a9ce49c819cc1bfc1e797b85ba7a
     INSTALL_DIR ${SB_INSTALL_PREFIX}
     DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
@@ -62,7 +62,7 @@ else()
 
   ExternalProject_Add(SWIG
     PREFIX SWIG
-    URL "http://sourceforge.net/projects/swig/files/swig/swig-3.0.7/swig-3.0.7.tar.gz/download"
+    URL "http://downloads.sourceforge.net/project/swig/swig/swig-3.0.7/swig-3.0.7.tar.gz"
     URL_MD5 7fff46c84b8c630ede5b0f0827e3d90a
     BINARY_DIR ${SWIG_SB_BUILD_DIR}
     INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -76,6 +76,10 @@ else()
     BUILD_COMMAND $(MAKE)
     INSTALL_COMMAND $(MAKE) install
     DEPENDS ${SWIG_DEPENDENCIES}
+    LOG_DOWNLOAD 1
+    LOG_CONFIGURE 1
+    LOG_BUILD 1
+    LOG_INSTALL 1
     )
 
   ExternalProject_Add_Step(SWIG copy_source
diff --git a/SuperBuild/CMake/External_tiff.cmake b/SuperBuild/CMake/External_tiff.cmake
index 296312b853baa1f2c8b98abff11e4a6e3c940d7f..d1d48880f29a7333d72e993f9abadf2c1e00d51c 100644
--- a/SuperBuild/CMake/External_tiff.cmake
+++ b/SuperBuild/CMake/External_tiff.cmake
@@ -25,77 +25,52 @@ SETUP_SUPERBUILD(TIFF)
 # declare dependencies
 ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(TIFF ZLIB JPEG)
 
-ADD_SUPERBUILD_CMAKE_VAR(TIFF ZLIB_INCLUDE_DIR)
-ADD_SUPERBUILD_CMAKE_VAR(TIFF ZLIB_LIBRARY)
-ADD_SUPERBUILD_CMAKE_VAR(TIFF JPEG_INCLUDE_DIR)
-ADD_SUPERBUILD_CMAKE_VAR(TIFF JPEG_LIBRARY)
-
 if(MSVC)
-  STRING(REGEX REPLACE "/$" "" CMAKE_WIN_INSTALL_PREFIX ${SB_INSTALL_PREFIX})
-  STRING(REGEX REPLACE "/" "\\\\" CMAKE_WIN_INSTALL_PREFIX ${CMAKE_WIN_INSTALL_PREFIX})
-  configure_file(${CMAKE_SOURCE_DIR}/patches/TIFF/nmake.opt ${CMAKE_BINARY_DIR}/nmake_libtiff_extra.opt)
-  ExternalProject_Add(TIFF_build
-    PREFIX TIFF
-    URL "http://download.osgeo.org/libtiff/tiff-4.0.6.tar.gz"
-    URL_MD5 d1d2e940dea0b5ad435f21f03d96dd72
-    SOURCE_DIR ${TIFF_SB_SRC}
-    BINARY_DIR ${TIFF_SB_SRC}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    DEPENDS ${TIFF_DEPENDENCIES}
-    PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/nmake_libtiff_extra.opt ${TIFF_SB_SRC}/nmake.opt
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND nmake /f ${TIFF_SB_SRC}/Makefile.vc
-    INSTALL_COMMAND ${CMAKE_COMMAND} -E copy  ${CMAKE_SOURCE_DIR}/patches/TIFF/CMakeLists.txt
-    ${CMAKE_BINARY_DIR}/TIFF/_install
-    )
-
-  ExternalProject_Add(TIFF
-    PREFIX TIFF/_install
-    DOWNLOAD_COMMAND ""
-    SOURCE_DIR TIFF/_install
-    BINARY_DIR ${TIFF_SB_BUILD_DIR}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    CMAKE_CACHE_ARGS
-    -DCMAKE_INSTALL_PREFIX:STRING=${SB_INSTALL_PREFIX}
-    -DCMAKE_BUILD_TYPE:STRING=Release
-    -DTIFF_BUILD_DIR:STRING=${TIFF_SB_SRC}/libtiff
-    DEPENDS TIFF_build
-    CMAKE_COMMAND
-    )
-
-else()
-  ExternalProject_Add(TIFF
-    PREFIX TIFF
-    URL "http://download.osgeo.org/libtiff/tiff-4.0.6.tar.gz"
-    URL_MD5 d1d2e940dea0b5ad435f21f03d96dd72
-    SOURCE_DIR ${TIFF_SB_SRC}
-    BINARY_DIR ${TIFF_SB_BUILD_DIR}
-    INSTALL_DIR ${SB_INSTALL_PREFIX}
-    DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
-    DEPENDS ${TIFF_DEPENDENCIES}
-    CMAKE_CACHE_ARGS
-    ${SB_CMAKE_CACHE_ARGS}
-    -DCMAKE_INSTALL_LIBDIR:PATH=lib
-    -DCMAKE_INSTALL_BINDIR:PATH=bin
-    -DBUILD_TESTING:BOOL=OFF
-    -Djpeg:BOOL=TRUE
-    -Dlzma:BOOL=FALSE
-    -Djbig:BOOL=FALSE
-    -Dzlib:BOOL=TRUE
-    -DWITH_OPENGL:BOOL=FALSE
-    -Dpixarlog:BOOL=TRUE
-    ${TIFF_SB_CONFIG}
-    CMAKE_COMMAND ${SB_CMAKE_COMMAND}
-    )
+  set(TIFF_C_FLAGS "/D_CRT_SECURE_NO_WARNINGS /DWIN32")
 endif()
 
+ExternalProject_Add(TIFF
+  PREFIX TIFF
+  URL "http://download.osgeo.org/libtiff/tiff-4.0.8.tar.gz"
+  URL_MD5 2a7d1c1318416ddf36d5f6fa4600069b
+  SOURCE_DIR ${TIFF_SB_SRC}
+  BINARY_DIR ${TIFF_SB_BUILD_DIR}
+  INSTALL_DIR ${SB_INSTALL_PREFIX}
+  DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
+  DEPENDS ${TIFF_DEPENDENCIES}
+  CMAKE_CACHE_ARGS
+  ${SB_CMAKE_CACHE_ARGS}
+  -DCMAKE_C_FLAGS:STRING=${TIFF_C_FLAGS}
+  -DCMAKE_INSTALL_LIBDIR:PATH=lib
+  -DCMAKE_INSTALL_BINDIR:PATH=bin
+  -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS:BOOL=TRUE
+  -DBUILD_TESTING:BOOL=FALSE
+  -Djpeg:BOOL=TRUE
+  -Dlzma:BOOL=FALSE
+  -Djbig:BOOL=FALSE
+  -Dzlib:BOOL=TRUE
+  -DWITH_OPENGL:BOOL=FALSE
+  -Dpixarlog:BOOL=TRUE
+  -Dcxx:BOOL=FALSE
+  -Dwith_opengl:BOOL=FALSE
+  -Dwith_tools:BOOL=FALSE
+  -Dwith_test:BOOL=FALSE
+  -Dwith_contrib:BOOL=FALSE
+  -Dwith_docs:BOOL=FALSE
+  ${TIFF_SB_CONFIG}
+  CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
+  )
+    
 SUPERBUILD_PATCH_SOURCE(TIFF)
 
+#do we really need these variables? 
 set(_SB_TIFF_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 if(WIN32)
-  set(_SB_TIFF_LIBRARY ${SB_INSTALL_PREFIX}/lib/libtiff_i.lib)
+  set(_SB_TIFF_LIBRARY ${SB_INSTALL_PREFIX}/lib/tiff.lib)
 elseif(UNIX)
   set(_SB_TIFF_LIBRARY ${SB_INSTALL_PREFIX}/lib/libtiff${CMAKE_SHARED_LIBRARY_SUFFIX})
 endif()
diff --git a/SuperBuild/CMake/External_tinyxml.cmake b/SuperBuild/CMake/External_tinyxml.cmake
index d79b14ea6646d7c178dbcb20bf21c34e22a79f96..8952e1ea83147829c4cd3a1a491111ff9ccb0941 100644
--- a/SuperBuild/CMake/External_tinyxml.cmake
+++ b/SuperBuild/CMake/External_tinyxml.cmake
@@ -24,7 +24,7 @@ SETUP_SUPERBUILD(TINYXML)
 
 ExternalProject_Add(TINYXML
   PREFIX TINYXML
-  URL "http://sourceforge.net/projects/tinyxml/files/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz/download"
+  URL "http://downloads.sourceforge.net/project/tinyxml/tinyxml/2.6.2/tinyxml_2_6_2.tar.gz"
   URL_MD5 c1b864c96804a10526540c664ade67f0
   BINARY_DIR ${TINYXML_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
@@ -35,6 +35,10 @@ ExternalProject_Add(TINYXML
   ${TINYXML_SB_SRC}
   CMAKE_CACHE_ARGS ${SB_CMAKE_CACHE_ARGS}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
 SUPERBUILD_UPDATE_CMAKE_VARIABLES(TINYXML FALSE)
diff --git a/SuperBuild/CMake/External_zlib.cmake b/SuperBuild/CMake/External_zlib.cmake
index d19fe414172a5d15b5c9dcdacf12c7cfe708092c..6948e1f54244176e582864c1f958a139ea559402 100644
--- a/SuperBuild/CMake/External_zlib.cmake
+++ b/SuperBuild/CMake/External_zlib.cmake
@@ -26,21 +26,27 @@ SETUP_SUPERBUILD(ZLIB)
 # Try official release 1.2.8
 ExternalProject_Add(ZLIB
   PREFIX ZLIB
-  URL "http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz/download"
+  URL "http://downloads.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz"
   URL_MD5 44d667c142d7cda120332623eab69f40
   BINARY_DIR ${ZLIB_SB_BUILD_DIR}
   INSTALL_DIR ${SB_INSTALL_PREFIX}
   DOWNLOAD_DIR ${DOWNLOAD_LOCATION}
   CMAKE_CACHE_ARGS ${SB_CMAKE_CACHE_ARGS}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
+  LOG_DOWNLOAD 1
+  LOG_CONFIGURE 1
+  LOG_BUILD 1
+  LOG_INSTALL 1
   )
 
+#patch zlib cmake to disable static build on request
 if(UNIX)
   ExternalProject_Add_Step(ZLIB remove_static
     COMMAND ${CMAKE_COMMAND} -E remove ${SB_INSTALL_PREFIX}/lib/libz.a
     DEPENDEES install)
 endif()
 
+#check who uses zdll.lib and remove this hack
 if(MSVC)
   ExternalProject_Add_Step(ZLIB msvc_copy_hell
     COMMAND ${CMAKE_COMMAND} -E copy ${ZLIB_SB_BUILD_DIR}/zlib.lib ${SB_INSTALL_PREFIX}/lib/zdll.lib
diff --git a/SuperBuild/CMake/patch.cmake b/SuperBuild/CMake/patch.cmake
index 651aec69583dd741b3130e5cfcae04df6bd5c1b4..db91ef224f2324afcde0c8f070644ae34ccd18f6 100644
--- a/SuperBuild/CMake/patch.cmake
+++ b/SuperBuild/CMake/patch.cmake
@@ -54,7 +54,8 @@ foreach(dot_diff_file ${DOT_DIFF_FILES})
   endif()
 
   if(PATCHING_FAILED)
-    message(FATAL_ERROR "${PATCH_PROGRAM} returned non-zero exit status \n ${patch_ov} \n")
+    message(FATAL_ERROR
+      "${PATCH_PROGRAM} ${PATCH_ARGS} -p1 -i ${dot_diff_file} failed\n error: ${patch_ov} \n")
   else()
     message("${patch_ov}")
   endif()
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index 15024aae21f834f33b5954de928b496b7bde8aa9..6d47c1185ec61de953820d854367b956dfb3a960 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -18,7 +18,7 @@
 # limitations under the License.
 #
 
-cmake_minimum_required(VERSION 3.1.0)
+cmake_minimum_required(VERSION 3.3.0)
 
 project(OTB-SuperBuild)
 
@@ -42,6 +42,7 @@ include(ExternalProject)
 include(OTBCheckTargetSystemArch)
 
 option(BUILD_SHARED_LIBS "Build OTB with shared libraries." ON)
+option(BUILD_STATIC_LIBS "Build with static libraries." OFF)
 
 set(OTB_ADDITIONAL_CACHE "" CACHE STRING "Additional cmake option for OTB -DVAR:TYPE=VALUE ...")
 
@@ -73,11 +74,11 @@ option(BUILD_TESTING "Build the testing tree." OFF)
 include(CTest)
 include(SuperBuild_Macro)
 
-# Setup location where source tar-balls are downloaded
-#set (install_location "${CMAKE_CURRENT_BINARY_DIR}/install")
-set (DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/Downloads"
-     CACHE PATH "Location where source tar-balls are (to be) downloaded.")
-mark_as_advanced(DOWNLOAD_LOCATION)
+# Configure location where source tar-balls are downloaded
+find_path(DOWNLOAD_LOCATION
+  NAMES OTBSuperBuild.readme
+  HINTS $ENV{DOWNLOAD_LOCATION} "${CMAKE_CURRENT_BINARY_DIR}/Downloads"
+  )
 
 # General options
 option(OTB_DATA_USE_LARGEINPUT "Use Large inputs images test." OFF)
@@ -145,15 +146,6 @@ if(NOT CMAKE_BUILD_TYPE)
   set(CMAKE_BUILD_TYPE Release)
 endif()
 
-if(MSVC)
-  set(BUILD_SHARED_LIBS OFF)
-  if(CMAKE_MAJOR_VERSION GREATER 2 AND CMAKE_MINOR_VERSION GREATER 2)
-    set(BUILD_SHARED_LIBS ON)
-  else()
-    message(WARNING "BUILD_SHARED_LIBS is set to OFF with CMake < 3.3")
-  endif()
-endif()
-
 if(MSVC)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /Ox /FC /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE")
   if(MSVC_VERSION GREATER 1310)
@@ -249,6 +241,7 @@ option(USE_SYSTEM_GDAL "Use a system build of GDAL" OFF)
 option(USE_SYSTEM_FFTW "Use a system build of FFTW" OFF)
 option(USE_SYSTEM_ITK "Use a system build of ITK" OFF)
 option(USE_SYSTEM_OPENTHREADS  "Use a system build of OpenThreads" OFF)
+option(USE_SYSTEM_OSSIM  "Use a system build of OSSIM" OFF)
 option(USE_SYSTEM_MUPARSER  "Use a system build of muParser" OFF)
 option(USE_SYSTEM_MUPARSERX "Use a system build of  muParserX" OFF)
 option(USE_SYSTEM_TINYXML  "Use a system build of TinyXML" OFF)
@@ -281,18 +274,19 @@ option(OTB_USE_MUPARSERX "Enable module muparserX in OTB" ON)
 option(OTB_USE_OPENCV "Enable module OpenCV in OTB" ON)
 option(OTB_USE_QT4 "Enable module QT4 in OTB" ON)
 option(OTB_USE_SIFTFAST "Enable module Siftfast in OTB" ON)
-option(OTB_USE_OPENGL "Enable module OpenGL in OTB" OFF)
-option(OTB_USE_GLEW "Enable module GLEW in OTB" OFF)
-option(OTB_USE_GLFW "Enable module GLFW in OTB" OFF)
-option(OTB_USE_GLUT "Enable module GLUT in OTB" OFF)
-option(OTB_USE_SHARK "Enable module Shark in OTB" OFF)
-option(OTB_USE_QWT "Enable module QWT in OTB" OFF)
+option(OTB_USE_OPENGL "Enable module OpenGL in OTB" ON)
+option(OTB_USE_GLEW "Enable module GLEW in OTB" ON)
+option(OTB_USE_GLFW "Enable module GLFW in OTB" ON)
 
-#Problem: below cmake setting will fail!
-#-DOTB_USE_OPENGL=ON -DOTB_USE_GLEW=ON -DOTB_USE_QWT=ON
-#This is because ENABLE_MONTEVERDI is OFF by default
-# This brings a lot of twisted logic. so taking out this option
+#Cannot activate GLUT on OSX. See manits issue #1194")
+if(APPLE)
+  option(OTB_USE_GLUT "Enable module GLUT in OTB" OFF)
+else()
+  option(OTB_USE_GLUT "Enable module GLUT in OTB" ON)
+endif()
 
+option(OTB_USE_SHARK "Enable module Shark in OTB" ON)
+option(OTB_USE_QWT "Enable module QWT in OTB" ON)
 
 # set OTB_DATA_ROOT to run test
 find_path(OTB_DATA_ROOT README-OTB-Data PATHS $ENV{OTB_DATA_ROOT} ${OTB-SuperBuild_SOURCE_DIR}/../../OTB-Data)
@@ -352,6 +346,7 @@ endif()
 message(STATUS "OTB_TARGET_SYSTEM_ARCH=${OTB_TARGET_SYSTEM_ARCH}")
 message(STATUS "OTB_TARGET_SYSTEM_ARCH_IS_X64=${OTB_TARGET_SYSTEM_ARCH_IS_X64}")
 if(DOWNLOAD_LOCATION)
+  message(STATUS "DOWNLOAD_LOCATION=${DOWNLOAD_LOCATION}")
   message(STATUS "Source archives for dependencies will be taken from '${DOWNLOAD_LOCATION}'")
 else()
   message(STATUS "DOWNLOAD_LOCATION is not set. We will download all source archives during build!")
diff --git a/SuperBuild/Packaging/PackageGlobals.cmake b/SuperBuild/Packaging/PackageGlobals.cmake
index 9b94a74c1bade4cca2bbe6f69ea0e64a038e81dd..fdcfb3da3709c78e0b703ae99f296acced1aece7 100644
--- a/SuperBuild/Packaging/PackageGlobals.cmake
+++ b/SuperBuild/Packaging/PackageGlobals.cmake
@@ -91,6 +91,7 @@ set(LINUX_SYSTEM_DLLS
   libexpat.so.*
   libfontconfig.so*
   libfreetype.so*
+  libwebp.so*
   )
 
 # libgcc_s.*dylib and other *.framework are dragged by QT
diff --git a/SuperBuild/patches/CURL/curl-1-cmake-all.diff b/SuperBuild/patches/CURL/curl-1-cmake-all.diff
new file mode 100755
index 0000000000000000000000000000000000000000..e2e0807143542ebb4a73c4fa5d6821cedaa6a4df
--- /dev/null
+++ b/SuperBuild/patches/CURL/curl-1-cmake-all.diff
@@ -0,0 +1,67 @@
+diff -burN curl-7.40.0/CMake/CurlTests.c curl-7.40.0.orig/CMake/CurlTests.c
+--- curl-7.40.0/CMake/CurlTests.c	2017-07-26 15:24:27.473903048 +0200
++++ curl-7.40.0.orig/CMake/CurlTests.c	2017-07-26 15:22:05.268949035 +0200
+@@ -139,7 +139,7 @@
+   rc = gethostbyname_r(address, &h, &hdata);
+ #elif defined(HAVE_GETHOSTBYNAME_R_5) || \
+       defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
+-  rc = gethostbyname_r(address, &h, buffer, 8192, 0, &h_errnop);
++  rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
+   (void)hp; /* not used for test */
+ #elif defined(HAVE_GETHOSTBYNAME_R_6) || \
+       defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
+diff -burN curl-7.40.0.orig/CMake/OtherTests.cmake curl-7.40.0/CMake/OtherTests.cmake
+--- curl-7.40.0.orig/CMake/OtherTests.cmake	2014-11-20 18:42:16.000000000 +0100
++++ curl-7.40.0/CMake/OtherTests.cmake	2017-07-21 16:37:37.414343678 +0200
+@@ -10,6 +10,7 @@
+ 
+ set(signature_call_conv)
+ if(HAVE_WINDOWS_H)
++   set(_source_epilogue "${_source_epilogue}\n#define _WINSOCKAPI_")
+   add_header_include(HAVE_WINDOWS_H "windows.h")
+   add_header_include(HAVE_WINSOCK2_H "winsock2.h")
+   add_header_include(HAVE_WINSOCK_H "winsock.h")
+@@ -163,7 +164,9 @@
+     return 0;
+   }" HAVE_MSG_NOSIGNAL)
+ 
+-if(NOT HAVE_WINDOWS_H)
++if(HAVE_WINDOWS_H)
++add_header_include(HAVE_WINSOCK2_H "winsock2.h")
++else()
+   add_header_include(HAVE_SYS_TIME_H "sys/time.h")
+   add_header_include(TIME_WITH_SYS_TIME "time.h")
+   add_header_include(HAVE_TIME_H "time.h")
+diff -burN curl-7.40.0.orig/src/CMakeLists.txt curl-7.40.0/src/CMakeLists.txt
+--- curl-7.40.0.orig/src/CMakeLists.txt	2014-11-20 18:42:17.000000000 +0100
++++ curl-7.40.0/src/CMakeLists.txt	2017-07-21 16:37:41.082367733 +0200
+@@ -25,14 +25,21 @@
+       "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
+     VERBATIM)
+ else()
+-  add_custom_command(
+-    OUTPUT tool_hugehelp.c
+-    COMMAND echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
+-    COMMAND echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
+-    COMMAND echo "void hugehelp(void) {}" >> tool_hugehelp.c
+-    DEPENDS
+-      "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
+-    VERBATIM)
++file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/tool_hugehelp.c
++"/*built-in manual is disabled, blank function */\n"
++)
++file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/tool_hugehelp.c
++"#include \"tool_hugehelp.h\"\nvoid hugehelp(void) {}\n"
++)
++
++  # add_custom_command(
++    # OUTPUT tool_hugehelp.c
++    # COMMAND echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
++    # COMMAND echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
++    # COMMAND echo "void hugehelp(void) {}" >> tool_hugehelp.c
++    # DEPENDS
++      # "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
++    # VERBATIM)
+ endif()
+ 
+ transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
diff --git a/SuperBuild/patches/GDAL/gdal-2-enviRotation-all.diff b/SuperBuild/patches/GDAL/gdal-2-enviRotation-all.diff
new file mode 100644
index 0000000000000000000000000000000000000000..8c7f7acdce6b34c908a9a10580f2697157534658
--- /dev/null
+++ b/SuperBuild/patches/GDAL/gdal-2-enviRotation-all.diff
@@ -0,0 +1,32 @@
+diff -burN gdal-2.2.1-orig/frmts/raw/envidataset.cpp gdal-2.2.1/frmts/raw/envidataset.cpp
+--- gdal-2.2.1-orig/frmts/raw/envidataset.cpp	2017-06-23 14:18:43.000000000 +0200
++++ gdal-2.2.1/frmts/raw/envidataset.cpp	2017-07-20 18:25:05.373655046 +0200
+@@ -620,10 +620,13 @@
+         adfGeoTransform[4] != 0.0 || adfGeoTransform[5] != 1.0;
+     if( bHasNonDefaultGT )
+     {
++        const double dfDet = adfGeoTransform[1] * adfGeoTransform[5] -
++                             adfGeoTransform[2] * adfGeoTransform[4];
++        const double dfSign = (dfDet>0.0 ? 1.0 : -1.0);
+         const double dfRotation1 =
+-            -atan2(-adfGeoTransform[2], adfGeoTransform[1]) * kdfRadToDeg;
++            -atan2(dfSign * adfGeoTransform[2], adfGeoTransform[1]) * kdfRadToDeg;
+         const double dfRotation2 =
+-            -atan2(-adfGeoTransform[4], -adfGeoTransform[5]) * kdfRadToDeg;
++            -atan2(-adfGeoTransform[4], dfSign * adfGeoTransform[5]) * kdfRadToDeg;
+         const double dfRotation = (dfRotation1 + dfRotation2) / 2.0;
+ 
+         if( fabs(dfRotation1 - dfRotation2) > 1e-5 )
+@@ -1534,7 +1537,12 @@
+ 
+     // Fallback to localcs if we don't recognise things.
+     if( oSRS.GetRoot() == NULL )
++        {
+         oSRS.SetLocalCS(papszFields[0]);
++        // assume that the Y axis isn't flipped
++        adfGeoTransform[2] *= -1.0;
++        adfGeoTransform[5] *= -1.0;
++        }
+ 
+     // Try to set datum from projection info line if we have a
+     // projected coordinate system without a GEOGCS.
diff --git a/SuperBuild/patches/GDAL/nmake_gdal_extra.opt.in b/SuperBuild/patches/GDAL/nmake_gdal_extra.opt.in
index 87f6bcd7b43280ad18f51db294000b68bcb1cbb8..72824d4104ed4ef7ae04e073ea4e264a9945be2d 100644
--- a/SuperBuild/patches/GDAL/nmake_gdal_extra.opt.in
+++ b/SuperBuild/patches/GDAL/nmake_gdal_extra.opt.in
@@ -11,60 +11,60 @@ JPEG_SUPPORTED = 1
 # This will enable 12bit libjpeg - use only with internal jpeg builds.
 #JPEG12_SUPPORTED = 1
 
-GDAL_HOME="@CMAKE_WIN_INSTALL_PREFIX@"
+GDAL_HOME="@SB_INSTALL_PREFIX_NATIVE@"
 
 #if using an external jpeg library uncomment the follwing lines
 JPEG_EXTERNAL_LIB = 1
-JPEGDIR = @CMAKE_WIN_INSTALL_PREFIX@\include
-JPEG_LIB = @CMAKE_WIN_INSTALL_PREFIX@\lib\jpeg.lib
+JPEGDIR = @SB_INSTALL_PREFIX_NATIVE@\include
+JPEG_LIB = @SB_INSTALL_PREFIX_NATIVE@\lib\jpeg.lib
 
 #if using an external png library uncomment the follwing lines
 PNG_EXTERNAL_LIB = 1
-PNGDIR = @CMAKE_WIN_INSTALL_PREFIX@\include
-PNG_LIB = @CMAKE_WIN_INSTALL_PREFIX@\lib\libpng.lib
+PNGDIR = @SB_INSTALL_PREFIX_NATIVE@\include
+PNG_LIB = @SB_INSTALL_PREFIX_NATIVE@\lib\libpng.lib
 
 # if using an external libtiff library
-TIFF_INC = -I@CMAKE_WIN_INSTALL_PREFIX@\include
-TIFF_LIB = @CMAKE_WIN_INSTALL_PREFIX@\lib\libtiff_i.lib
+TIFF_INC = -I@SB_INSTALL_PREFIX_NATIVE@\include
+TIFF_LIB = @SB_INSTALL_PREFIX_NATIVE@\lib\tiff.lib
 # uncomment following line, if you have libtiff version >= 4.0 to enable BigTIFF support
 TIFF_OPTS= -DBIGTIFF_SUPPORT
 
 # if using an external libgeotiff library
-GEOTIFF_INC = -I@CMAKE_WIN_INSTALL_PREFIX@\include
-GEOTIFF_LIB = @CMAKE_WIN_INSTALL_PREFIX@\lib\geotiff_i.lib
+GEOTIFF_INC = -I@SB_INSTALL_PREFIX_NATIVE@\include
+GEOTIFF_LIB = @SB_INSTALL_PREFIX_NATIVE@\lib\geotiff_i.lib
 
-EXPAT_DIR = @CMAKE_WIN_INSTALL_PREFIX@
+EXPAT_DIR = @SB_INSTALL_PREFIX_NATIVE@
 EXPAT_INCLUDE = -I$(EXPAT_DIR)\include
 EXPAT_LIB = $(EXPAT_DIR)\lib\expat.lib
 
 # SQLite Libraries
-SQLITE_INC=-I@CMAKE_WIN_INSTALL_PREFIX@\include
-SQLITE_LIB=@CMAKE_WIN_INSTALL_PREFIX@\lib\sqlite3.lib
+SQLITE_INC=-I@SB_INSTALL_PREFIX_NATIVE@\include
+SQLITE_LIB=@SB_INSTALL_PREFIX_NATIVE@\lib\sqlite3.lib
 # Uncomment following line if libsqlite3 has been compiled with SQLITE_HAS_COLUMN_METADATA=yes
 SQLITE_HAS_COLUMN_METADATA=yes
 
 # PROJ.4 stuff
-PROJ_INCLUDE = -I@CMAKE_WIN_INSTALL_PREFIX@\include
-PROJ_LIBRARY = @CMAKE_WIN_INSTALL_PREFIX@\lib\proj_i.lib
+PROJ_INCLUDE = -I@SB_INSTALL_PREFIX_NATIVE@\include
+PROJ_LIBRARY = @SB_INSTALL_PREFIX_NATIVE@\lib\proj.lib
 
 # Uncomment to use libcurl (DLL by default)
 # The cURL library is used for WCS, WMS, GeoJSON, SRS call importFromUrl(), WFS, GFT, CouchDB, /vsicurl/ etc.
-CURL_DIR=@CMAKE_WIN_INSTALL_PREFIX@
+CURL_DIR=@SB_INSTALL_PREFIX_NATIVE@
 CURL_INC = -I$(CURL_DIR)\include
 # Uncoment following line to use libcurl as dynamic library
-CURL_LIB = $(CURL_DIR)\lib\libcurl.lib wsock32.lib wldap32.lib winmm.lib
+CURL_LIB = $(CURL_DIR)\lib\libcurl_imp.lib wsock32.lib wldap32.lib winmm.lib
 
 # Uncomment for GEOS support (GEOS >= 3.1.0 required)
-GEOS_DIR=@CMAKE_WIN_INSTALL_PREFIX@
+GEOS_DIR=@SB_INSTALL_PREFIX_NATIVE@
 GEOS_CFLAGS = -I$(GEOS_DIR)\include -I$(GEOS_DIR)\include\geos -DHAVE_GEOS
-GEOS_LIB     = $(GEOS_DIR)\lib\geos_i.lib $(GEOS_DIR)\lib\geos_c_i.lib
+GEOS_LIB     = $(GEOS_DIR)\lib\geos.lib $(GEOS_DIR)\lib\geos_c.lib
 
 # Uncomment for OpenJpeg support
 HAVE_OPENJPEG = YES
 OPENJPEG_ENABLED = YES
 OPENJPEG_VERSION = 20100
-OPENJPEG_CFLAGS = -I@CMAKE_WIN_INSTALL_PREFIX@\include
-OPENJPEG_LIB = @CMAKE_WIN_INSTALL_PREFIX@\lib\openjp2.lib
+OPENJPEG_CFLAGS = -I@SB_INSTALL_PREFIX_NATIVE@\include
+OPENJPEG_LIB = @SB_INSTALL_PREFIX_NATIVE@\lib\openjp2.lib
 
 
 ##################################################################
@@ -86,6 +86,10 @@ OPENJPEG_LIB = @CMAKE_WIN_INSTALL_PREFIX@\lib\openjp2.lib
 #		$(LIBKML_DIR)/third_party\zlib-1.2.3.win32/lib/minizip.lib \
 #		$(LIBKML_DIR)/third_party\zlib-1.2.3.win32/lib/zlib.lib
 
+#we use external zlib on windows
+ZLIB_EXTERNAL_LIB = 1
+ZLIB_INC = -I@SB_INSTALL_PREFIX_NATIVE@\include
+ZLIB_LIB = @SB_INSTALL_PREFIX_NATIVE@\lib\zlib.lib
 
 # Uncomment the following and update to enable NCSA HDF Release 4 support.
 #HDF4_PLUGIN = NO
diff --git a/SuperBuild/patches/GEOS/CMakeLists.txt b/SuperBuild/patches/GEOS/CMakeLists.txt
deleted file mode 100644
index a89103afaecae9441d1095ccab4d97bb094148eb..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/GEOS/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
-#
-# This file is part of Orfeo Toolbox
-#
-#     https://www.orfeo-toolbox.org/
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-cmake_minimum_required(VERSION 2.8)
-
-project(GEOS_SUPERBUILD)
-
-add_custom_target(build_with_nmake 
-ALL DEPENDS 
-COMMAND
-nmake /f ${GEOS_SB_SRC}/makefile.vc
-WORKING_DIRECTORY ${GEOS_SB_SRC}
-)
-
-install(FILES  ${GEOS_SB_SRC}/capi/geos_c.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
-install(FILES  ${GEOS_SB_SRC}/include/geos.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
-install(DIRECTORY ${GEOS_SB_SRC}/include/geos DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
-install(FILES  ${GEOS_SB_SRC}/src/geos.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
-install(FILES  ${GEOS_SB_SRC}/src/geos_c.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
-install(FILES  ${GEOS_SB_SRC}/src/geos.lib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
-install(FILES  ${GEOS_SB_SRC}/src/geos_i.lib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
-install(FILES  ${GEOS_SB_SRC}/src/geos_c_i.lib DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
diff --git a/SuperBuild/patches/GEOS/geos-1-fixes-all.diff b/SuperBuild/patches/GEOS/geos-1-fixes-all.diff
index 4a516fe4697128ff5f81bbecc25568e62a46bceb..ca7663fffbf52a566124f57daf25d52e378d2da9 100644
--- a/SuperBuild/patches/GEOS/geos-1-fixes-all.diff
+++ b/SuperBuild/patches/GEOS/geos-1-fixes-all.diff
@@ -1,93 +1,22 @@
-diff -burN geos-3.5.0.orig/CMakeLists.txt geos-3.5.0/CMakeLists.txt
---- geos-3.5.0.orig/CMakeLists.txt	2016-09-02 11:02:28.833742143 +0200
-+++ geos-3.5.0/CMakeLists.txt	2016-09-02 11:05:05.897748116 +0200
-@@ -55,6 +55,9 @@
- # Check custom global options
- #################################################################################
- 
-+option(GEOS_BUILD_STATIC
-+  "Set to OFF|ON (default) to control build of GEOS tests package" OFF)
-+
- option(GEOS_ENABLE_TESTS
-   "Set to OFF|ON (default) to control build of GEOS tests package" ON)
- 
-@@ -317,18 +320,18 @@
- 
-   # Define "make check" as alias for "make test"
-   add_custom_target(check COMMAND ctest)
--
-+add_subdirectory(tests)
- endif()
- 
- #################################################################################
- # Configure subdirectories
- #################################################################################
--include(GenerateSourceGroups)
-+#include(GenerateSourceGroups)
- 
- add_subdirectory(include)
- add_subdirectory(src)
- add_subdirectory(capi)
--add_subdirectory(tests)
-+
- add_subdirectory(tools)
- 
- #################################################################################
-diff -burN geos-3.5.0.orig/include/CMakeLists.txt geos-3.5.0/include/CMakeLists.txt
---- geos-3.5.0.orig/include/CMakeLists.txt	2016-09-02 11:02:28.837742143 +0200
-+++ geos-3.5.0/include/CMakeLists.txt	2016-09-02 11:03:03.581743464 +0200
-@@ -54,4 +54,4 @@
- #################################################################################
- # Group source files for IDE source explorers (e.g. Visual Studio)
- #################################################################################
--GenerateSourceGroups(include)
-+#GenerateSourceGroups(include)
-diff -burN geos-3.5.0.orig/src/CMakeLists.txt geos-3.5.0/src/CMakeLists.txt
---- geos-3.5.0.orig/src/CMakeLists.txt	2016-09-02 11:02:28.869742144 +0200
-+++ geos-3.5.0/src/CMakeLists.txt	2016-09-02 11:05:14.621748447 +0200
-@@ -62,7 +62,18 @@
- else()
- 
-   add_library(geos SHARED ${geos_SOURCES} ${geos_ALL_HEADERS})
-+  if(GEOS_BUILD_STATIC)
-   add_library(geos-static STATIC ${geos_SOURCES} ${geos_ALL_HEADERS})
-+  set_target_properties(geos-static
-+    PROPERTIES
-+    OUTPUT_NAME "geos"
-+    PREFIX "lib"
-+    CLEAN_DIRECT_OUTPUT 1)
-+  install(TARGETS geos geos-static
-+    RUNTIME DESTINATION bin
-+    LIBRARY DESTINATION lib
-+    ARCHIVE DESTINATION lib)
-+endif()
- 
-   set_target_properties(geos
-     PROPERTIES
-@@ -70,11 +81,6 @@
-     VERSION ${VERSION}
-     CLEAN_DIRECT_OUTPUT 1)
- 
--  set_target_properties(geos-static
--    PROPERTIES
--    OUTPUT_NAME "geos"
--    PREFIX "lib"
--    CLEAN_DIRECT_OUTPUT 1)
- 
- endif()
- 
-@@ -90,7 +96,7 @@
- #################################################################################
- 
- if(NOT GEOS_ENABLE_MACOSX_FRAMEWORK)
--  install(TARGETS geos geos-static
-+  install(TARGETS geos
-     RUNTIME DESTINATION bin
-     LIBRARY DESTINATION lib
-     ARCHIVE DESTINATION lib)
-@@ -99,4 +105,4 @@
- #################################################################################
- # Group source files for IDE source explorers (e.g. Visual Studio)
- #################################################################################
--GenerateSourceGroups(src)
-+#GenerateSourceGroups(src)
+diff -burN geos-3.6.1.orig/cmake/modules/GenerateSourceGroups.cmake geos-3.6.1/cmake/modules/GenerateSourceGroups.cmake
+--- geos-3.6.1.orig/cmake/modules/GenerateSourceGroups.cmake	1970-01-01 01:00:00.000000000 +0100
++++ geos-3.6.1/cmake/modules/GenerateSourceGroups.cmake	2017-06-19 11:19:32.143054641 +0200
+@@ -0,0 +1,17 @@
++#
++# Macro generates tree of IDE source groups based on folders structure
++# Source: http://www.cmake.org/pipermail/cmake/2013-November/056332.html
++# 
++macro(GenerateSourceGroups curdir)
++  file(GLOB children RELATIVE ${PROJECT_SOURCE_DIR}/${curdir} ${PROJECT_SOURCE_DIR}/${curdir}/*)
++  foreach(child ${children})
++    if(IS_DIRECTORY ${PROJECT_SOURCE_DIR}/${curdir}/${child})
++      GenerateSourceGroups(${curdir}/${child})
++    else()
++      string(REPLACE "/" "\\" groupname ${curdir})
++      # I would like to call the src root folder in a different name, only in visual studio (not mandatory requirement)
++	  string(REPLACE "src" "Source Files" groupname ${groupname})
++      source_group(${groupname} FILES ${PROJECT_SOURCE_DIR}/${curdir}/${child})
++    endif()
++  endforeach()
++endmacro()
+\ Pas de fin de ligne à la fin du fichier
diff --git a/SuperBuild/patches/GEOS/nmake.opt b/SuperBuild/patches/GEOS/nmake.opt
deleted file mode 100644
index ca21bd252387c8b166343bc966871399a2b36abd..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/GEOS/nmake.opt
+++ /dev/null
@@ -1,250 +0,0 @@
-#
-# nmake.opt - main configuration file for NMAKE makefiles
-#
-!MESSAGE **********************************************************************
-!MESSAGE *** GEOS Build Configuration ***
-
-# TODO: Confirm as redundant and remove, nmake /P displays _NMAKE_VER anyway.
-#!INCLUDE <ntwin32.mak>
-
-###############################################################################
-# For convenience, user may put custom settings to private mynmake.opt
-# and use EXT_NMAKE_OPT option while calling nmake.exe, as follows:
-#
-# nmake -f makefile.vc EXT_NMAKE_OPT=mynmake.opt
-
-!IFDEF EXT_NMAKE_OPT
-!MESSAGE *** Setting EXT_NMAKE_OPT $(EXT_NMAKE_OPT)
-!INCLUDE $(EXT_NMAKE_OPT)
-!ENDIF
-
-###############################################################################
-# Set BUILD_DEBUG to YES if you want to make debug build
-# and to prepare not optimized binaries.
-
-!IFNDEF BUILD_DEBUG 
-BUILD_DEBUG = NO
-!ENDIF
-
-!MESSAGE *** Setting BUILD_DEBUG $(BUILD_DEBUG)
-
-###############################################################################
-# Set ENABLE_INLINE to YES if you want to make debug build
-# and to prepare not optimized binaries.
-
-!IFNDEF ENABLE_INLINE
-ENABLE_INLINE = NO
-!ENDIF
-
-!MESSAGE *** Setting ENABLE_INLINE $(ENABLE_INLINE)
-
-###############################################################################
-# Set BUILD_BATCH to YES if you want feed compiler with all
-# source .c and .cpp files in single batch.
-
-!IFNDEF BUILD_BATCH
-BUILD_BATCH = NO
-!ENDIF
-
-!MESSAGE *** Setting BUILD_BATCH $(BUILD_BATCH)
-
-###############################################################################
-# Set WIN64=YES if you are building for 64-bit windows (x64).
-# Alternatively, pass WIN64=YES as NMAKE command line argument.
-###############################################################################
-!IFNDEF WIN64
-WIN64 = NO
-!ENDIF
-
-!MESSAGE *** Setting WIN64 $(WIN64)
-
-###############################################################################
-# Derive version of Visual C++ being used from NMAKE if not specified
-#
-# WARNING:
-# If we should expect variety of NMAKE build versions, tests below may fail
-# and we will need to fall back to setting GEOS_MSVC as command line parameter.
-
-!IF "$(_NMAKE_VER)" == ""
-GEOS_MSVC = 4.0
-!ERROR *** Failed to determine version of Visual C++
-!ELSEIF "$(_NMAKE_VER)" == "162"
-GEOS_MSVC = 5.0
-!ERROR *** Detected Visual C++ 5.0 - NOT SUPPORTED
-!ELSEIF "$(_NMAKE_VER)" == "6.00.8168.0"
-GEOS_MSVC = 6.0
-GEOS_MSC = 1200
-!ERROR *** Detected Visual C++ 6.0 - NOT SUPPORTED
-!ELSEIF "$(_NMAKE_VER)" == "7.00.9466"
-GEOS_MSVC = 7.0
-GEOS_MSC = 1300
-!ELSEIF "$(_NMAKE_VER)" == "7.10.3077"
-GEOS_MSVC = 7.1
-GEOS_MSC = 1310
-!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.42"
-GEOS_MSVC = 8.0
-GEOS_MSC = 1400
-!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.762"
-GEOS_MSVC = 8.0
-GEOS_MSC = 1400
-!ELSEIF "$(_NMAKE_VER)" == "9.00.21022.08"
-GEOS_MSVC = 9.0
-GEOS_MSC = 1500
-!ELSEIF "$(_NMAKE_VER)" == "9.00.30729.01"
-GEOS_MSVC = 9.0
-GEOS_MSC = 1500
-!ELSEIF "$(_NMAKE_VER)" == "10.00.30128.01"
-GEOS_MSVC = 10.0
-GEOS_MSC = 1600
-!ELSEIF "$(_NMAKE_VER)" == "10.00.30319.01"
-GEOS_MSVC = 10.0
-GEOS_MSC = 1600
-!ELSEIF "$(_NMAKE_VER)" == "11.00.40825.2"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.50522.1"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.50727.1"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.51106.1"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.60315.1"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.60430.2"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.60521.0"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.60610.1"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "11.00.61030.0"
-GEOS_MSVC = 11.0
-GEOS_MSC = 1700
-!ELSEIF "$(_NMAKE_VER)" == "12.00.21005.1"
-GEOS_MSVC = 12.0
-GEOS_MSC = 1800
-!ELSEIF "$(_NMAKE_VER)" == "14.00.22816.0"
-GEOS_MSVC = 14.0
-GEOS_MSC = 1900
-!ELSEIF "$(_NMAKE_VER)" == "14.00.23026.0"
-GEOS_MSVC = 14.0
-GEOS_MSC = 1900
-!ELSEIF "$(_NMAKE_VER)" == "14.00.23918.0"
-GEOS_MSVC = 14.0
-GEOS_MSC = 1900
-!ELSEIF "$(_NMAKE_VER)" == "14.00.24210.0"
-GEOS_MSVC = 14.0
-GEOS_MSC = 1900
-!ELSE
-GEOS_MSVC = 0.0
-GEOS_MSC = 0
-!ENDIF
-
-!IF "$(GEOS_MSVC)" == "0.0" && "$(GEOS_MSC)" == "0"
-!MESSAGE *** Cannot determine Visual C++ version
-!ERROR *** Aborting make job
-!ELSE
-!MESSAGE *** Using Microsoft NMAKE version $(_NMAKE_VER)
-!MESSAGE *** Using Microsoft Visual C++ version $(GEOS_MSVC)
-!MESSAGE *** Using Microsoft C/C++ version $(GEOS_MSC)
-!ENDIF
-
-###############################################################################
-# Optional use of Visual Leak Detector (VLD) http://vld.codeplex.com/
-# Uncomment this line to use VLD in debug configuration only:
-#MSVC_VLD_DIR=$(EXTLIBDIR)\Source\vld\vld
-
-!IF "$(BUILD_DEBUG)" == "YES"
-!IFDEF MSVC_VLD_DIR
-MSVC_VLD_FLAGS=-DMSVC_USE_VLD=1 -I$(MSVC_VLD_DIR)\include
-!IFDEF WIN64
-MSVC_VLD_LIB=/LIBPATH:$(MSVC_VLD_DIR)/lib/Win64
-!ELSE
-MSVC_VLD_LIB=/LIBPATH:$(MSVC_VLD_DIR)/lib/Win32
-!ENDIF
-!ENDIF
-!ENDIF
-
-###############################################################################
-# Include directories
-
-GEOS_INCLUDE = -I..\include -I..\capi
-
-!MESSAGE *** Setting GEOS_INCLUDE $(GEOS_INCLUDE)
-!MESSAGE *** Setting INCLUDE $(INCLUDE)
-
-###############################################################################
-# Compilation flags for Release and Debug modes
-
-GEOS_CPPFLAGS = /D "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "NOGDI"
-GEOS_CPPFLAGS = $(GEOS_CPPFLAGS) /D "GEOS_DLL_EXPORT" $(MSVC_VLD_FLAGS)
-
-!IF "$(BUILD_DEBUG)" == "YES"
-BUILD_PREFIX=_d
-GEOS_CFLAGS = /nologo /MDd /GR /Od /W4 /Zi
-GEOS_CPPFLAGS = /D "DEBUG" /D "_DEBUG" $(GEOS_CPPFLAGS)
-!ELSE
-GEOS_CFLAGS = /nologo /MD /GR /O2 /W3
-GEOS_CPPFLAGS = /D "NDEBUG" $(GEOS_CPPFLAGS)
-!ENDIF
-
-# Compiler version specific flags
-!IF $(GEOS_MSC) >= 1400
-GEOS_CFLAGS = $(GEOS_CFLAGS) /EHs
-GEOS_CPPFLAGS = $(GEOS_CPPFLAGS) /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_SCL_SECURE_NO_DEPRECATE"
-!ELSE
-GEOS_CFLAGS = $(GEOS_CFLAGS) /GX
-!ENDIF
-
-# For Visual C++ 9.0+ use multiple process build
-!IF "$(BUILD_BATCH)" == "YES"
-!IF $(GEOS_MSC) > 1400
-MPFLAGS = /MP
-!MESSAGE *** Setting /MP flag to number of effective processors
-!ENDIF
-!ENDIF
-
-!IF "$(ENABLE_INLINE)" == "YES"
-GEOS_CFLAGS = /D "GEOS_INLINE"
-!ENDIF
-
-!MESSAGE *** Using GEOS_CFLAGS $(GEOS_CFLAGS)
-!MESSAGE *** Using GEOS_CPPFLAGS $(GEOS_CPPFLAGS)
-
-CFLAGS=$(MPFLAGS) $(GEOS_CFLAGS) $(GEOS_CPPFLAGS) $(GEOS_INCLUDE)
-
-!MESSAGE *** Complete CFLAGS $(CFLAGS)
-
-###############################################################################
-# Output location
-
-LIBNAME = geos$(BUILD_PREFIX).lib
-DLLNAME = geos$(BUILD_PREFIX).dll
-SLIBNAME = geos_i$(BUILD_PREFIX).lib
-CDLLNAME = geos_c$(BUILD_PREFIX).dll
-CLIBNAME = geos_c_i$(BUILD_PREFIX).lib
-
-###############################################################################
-# Building toolset programs
-
-MAKE = nmake
-CC = cl
-RM = del
-CP = copy
-
-# Linker executable
-# - Dynamic-Linked Libraries
-# $(LINK) /dll
-# - Static Libraries (use of lib.exe wrapper is not portable, see VC++ Toolkit 2003)
-# $(LINK) /lib
-LINK = link.exe
-LINKER_FLAGS = $(MSVC_VLD_LIB)
-
-!MESSAGE **********************************************************************
-# EOF
diff --git a/SuperBuild/patches/GEOTIFF/geotiff-1-fix-rpath-macx.diff b/SuperBuild/patches/GEOTIFF/geotiff-1-fix-rpath-macx.diff
new file mode 100644
index 0000000000000000000000000000000000000000..64b0cfcc5278ebfe0e04afee03f083afc4cf8bc0
--- /dev/null
+++ b/SuperBuild/patches/GEOTIFF/geotiff-1-fix-rpath-macx.diff
@@ -0,0 +1,22 @@
+diff -burN libgeotiff-1.4.2.orig/CMakeLists.txt libgeotiff-1.4.2/CMakeLists.txt
+--- libgeotiff-1.4.2.orig/CMakeLists.txt	Tue Jul 25 17:16:02 2017
++++ libgeotiff-1.4.2/CMakeLists.txt	Tue Jul 25 17:16:40 2017
+@@ -451,12 +451,12 @@
+       VERSION ${LINK_VERSION}
+       SOVERSION ${LINK_SOVERSION}
+       CLEAN_DIRECT_OUTPUT 1 )
+-   if (APPLE)
+-      set_target_properties(
+-        ${GEOTIFF_LIBRARY_TARGET}
+-        PROPERTIES
+-        INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
+-   endif()
++   # if (APPLE)
++   #    set_target_properties(
++   #      ${GEOTIFF_LIBRARY_TARGET}
++   #      PROPERTIES
++   #      INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
++   # endif()
+ 
+ ELSE(UNIX)
+ # Default:
diff --git a/SuperBuild/patches/GEOTIFF/geotiff-fix-configure-for-macx.diff b/SuperBuild/patches/GEOTIFF/geotiff-fix-configure-for-macx.diff
deleted file mode 100755
index 32c001b68d59f51198d6264b5173ec282cd5e270..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/GEOTIFF/geotiff-fix-configure-for-macx.diff
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -burN libgeotiff-1.4.1.orig/configure libgeotiff-1.4.1/configure
---- libgeotiff-1.4.1.orig/configure	2016-04-15 17:57:22.000000000 +0200
-+++ libgeotiff-1.4.1/configure	2016-04-19 09:33:34.000000000 +0200
-@@ -10079,9 +10079,9 @@
-   esac
-   if test "$_lt_dar_can_shared" = "yes"; then
-     output_verbose_link_cmd=func_echo_all
--    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \@rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
--    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \@rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-     module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
- 
-   else
-@@ -16101,7 +16101,7 @@
- 
-     PROJ_CONFIG="yes"
- 
--    elif test \( -f "$PROJ_HOME/lib/libproj.a" -o -f "$PROJ_HOME/lib/libproj.so" \) -a -f "$PROJ_HOME/include/proj_api.h"; then
-+    elif test \( -f "$PROJ_HOME/lib/libproj.a" -o -f "$PROJ_HOME/lib/libproj.so" -o -f "$PROJ_HOME/lib/libproj.dylib" \) -a -f "$PROJ_HOME/include/proj_api.h"; then
-     PROJ_LIB="-L$PROJ_HOME/lib -lproj"
-     PROJ_INC=$PROJ_HOME/include
- 
-@@ -21017,5 +21017,3 @@
- 
- 
- echo ""
--
--
diff --git a/SuperBuild/patches/GLFW/glfw-1-fixes-win.diff b/SuperBuild/patches/GLFW/glfw-1-fixes-all.diff
similarity index 100%
rename from SuperBuild/patches/GLFW/glfw-1-fixes-win.diff
rename to SuperBuild/patches/GLFW/glfw-1-fixes-all.diff
diff --git a/SuperBuild/patches/OSSIM/ossim-5-compat_geos36-all.diff b/SuperBuild/patches/OSSIM/ossim-5-compat_geos36-all.diff
new file mode 100644
index 0000000000000000000000000000000000000000..53f7312b8cac596f909c9e2a36e33d278637d120
--- /dev/null
+++ b/SuperBuild/patches/OSSIM/ossim-5-compat_geos36-all.diff
@@ -0,0 +1,36 @@
+diff -burN OSSIM.orig/ossim/src/ossim/base/ossimPolyArea2d.cpp OSSIM/ossim/src/ossim/base/ossimPolyArea2d.cpp
+--- OSSIM.orig/ossim/src/ossim/base/ossimPolyArea2d.cpp	2017-07-04 15:16:30.659669941 +0200
++++ OSSIM/ossim/src/ossim/base/ossimPolyArea2d.cpp	2017-07-05 09:46:23.142041689 +0200
+@@ -28,19 +28,13 @@
+ #include <exception>
+ #include <vector>
+ 
+-class ossimGeometryFactoryWrapper : public ossimReferenced
++class ossimGeometryFactoryWrapper : public ossimReferenced, public geos::geom::GeometryFactory
+ {
+ public:
+    ossimGeometryFactoryWrapper()
+-      : m_geomFactory(0)
+-   {
+-      geos::geom::PrecisionModel *pm =
+-         new geos::geom::PrecisionModel(geos::geom::PrecisionModel::FLOATING);
+-      m_geomFactory = new geos::geom::GeometryFactory(pm, -1); 
+-   }
+-   virtual ~ossimGeometryFactoryWrapper(){if(m_geomFactory) delete m_geomFactory;m_geomFactory=0;}
+-   
+-   geos::geom::GeometryFactory* m_geomFactory;
++      : geos::geom::GeometryFactory(new geos::geom::PrecisionModel(geos::geom::PrecisionModel::FLOATING),-1)
++    {}
++   virtual ~ossimGeometryFactoryWrapper(){}
+ };
+ 
+ class OssimPolyArea2dPrivate
+@@ -55,7 +49,7 @@
+    void deleteGeometry() { if(m_geometry) { delete m_geometry; m_geometry = 0; }}
+    void setGeometry(const ossimPolygon& polygon, const vector<ossimPolygon>& holes = vector<ossimPolygon>());
+    void setGeometry(GeometryPtr geom){deleteGeometry();m_geometry=geom;}
+-   geos::geom::GeometryFactory* geomFactory(){{return m_globalFactory.valid()?m_globalFactory->m_geomFactory:0;}}
++   geos::geom::GeometryFactory* geomFactory(){{return m_globalFactory.valid()?m_globalFactory.get():0;}}
+    GeometryPtr m_geometry;
+    static ossimRefPtr<ossimGeometryFactoryWrapper> m_globalFactory; 
+ };
diff --git a/SuperBuild/patches/PROJ/proj-1-cmakefixes-all.diff b/SuperBuild/patches/PROJ/proj-1-cmakefixes-all.diff
new file mode 100644
index 0000000000000000000000000000000000000000..a95c58fbfe34ecdfd12073c1132f9a68811c1f6e
--- /dev/null
+++ b/SuperBuild/patches/PROJ/proj-1-cmakefixes-all.diff
@@ -0,0 +1,34 @@
+diff -burN proj-4.9.3.orig/CMakeLists.txt proj-4.9.3/CMakeLists.txt
+--- proj-4.9.3.orig/CMakeLists.txt	2016-08-29 20:47:58.000000000 +0200
++++ proj-4.9.3/CMakeLists.txt	2017-07-26 12:34:26.071721900 +0200
+@@ -34,6 +34,7 @@
+ proj_version(MAJOR 4 MINOR 9 PATCH 3)
+ set(PROJ_API_VERSION "12")
+ set(PROJ_BUILD_VERSION "12.0.0")
++option(VERSIONED_OUTPUT "suffix version into output name of binaries." ON)
+ 
+ #################################################################################
+ # Build features and variants
+diff -burN proj-4.9.3.orig/src/lib_proj.cmake proj-4.9.3/src/lib_proj.cmake
+--- proj-4.9.3.orig/src/lib_proj.cmake	2016-08-29 20:47:58.000000000 +0200
++++ proj-4.9.3/src/lib_proj.cmake	2017-07-26 12:28:51.098731200 +0200
+@@ -274,11 +274,19 @@
+ 
+ 
+ if(WIN32)
++if(VERSIONED_OUTPUT)
+   set_target_properties(${PROJ_CORE_TARGET}
+     PROPERTIES
+     VERSION "${${PROJECT_INTERN_NAME}_BUILD_VERSION}"
+     OUTPUT_NAME "${PROJ_CORE_TARGET_OUTPUT_NAME}"
+     CLEAN_DIRECT_OUTPUT 1)
++    else()
++  set_target_properties(${PROJ_CORE_TARGET}
++    PROPERTIES
++    VERSION "${${PROJECT_INTERN_NAME}_BUILD_VERSION}"
++    CLEAN_DIRECT_OUTPUT 1)
++    endif() #VERSIONED_OUTPUT
++ 
+ elseif(BUILD_FRAMEWORKS_AND_BUNDLE)
+   set_target_properties(${PROJ_CORE_TARGET}
+     PROPERTIES
diff --git a/SuperBuild/patches/PROJ/proj-fix-rpath-for-macx.diff b/SuperBuild/patches/PROJ/proj-fix-rpath-for-macx.diff
deleted file mode 100644
index 1ab4acdab9cde44e6aef0930affcdcd525c7cee6..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/PROJ/proj-fix-rpath-for-macx.diff
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -burN proj-4.8.0.orig/configure proj-4.8.0/configure
---- proj-4.8.0.orig/configure	2016-04-18 17:31:49.000000000 +0200
-+++ proj-4.8.0/configure	2016-04-18 17:32:47.000000000 +0200
-@@ -9044,9 +9044,9 @@
-   esac
-   if test "$_lt_dar_can_shared" = "yes"; then
-     output_verbose_link_cmd=func_echo_all
--    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \@rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
--    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \@rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-     module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
- 
-   else
-@@ -16296,4 +16296,3 @@
-   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
- $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
- fi
--
diff --git a/SuperBuild/patches/QT4/configure_qt4.bat.in b/SuperBuild/patches/QT4/configure_qt4.bat.in
index ce92ad480dce9d657b13a155cf2296568ddebc68..0439a883f043d14e36b2714fe150268641e7738b 100755
--- a/SuperBuild/patches/QT4/configure_qt4.bat.in
+++ b/SuperBuild/patches/QT4/configure_qt4.bat.in
@@ -4,7 +4,7 @@ set SB_SAVE_LIB=%LIB%
 set INCLUDE=%INCLUDE%;@QT4_INCLUDE_PREFIX_NATIVE@;@QT4_INCLUDE_PREFIX_NATIVE@\freetype2
 set LIB=%LIB%;@QT4_LIB_PREFIX_NATIVE@
 
-@QT4_CONFIGURE_SCRIPT@ -prefix @QT4_INSTALL_PREFIX_NATIVE@ -L @QT4_LIB_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@\freetype2 -opensource -confirm-license -release -shared -nomake demos -nomake examples -nomake tools -no-phonon-backend -no-phonon -no-script -no-scripttools -no-multimedia -no-audio-backend -no-webkit -no-declarative  -no-qt3support -no-xmlpatterns -system-sqlite -qt-sql-sqlite -plugin-sql-sqlite -no-openssl -no-libtiff -no-libmng -system-libpng -system-libjpeg  -system-zlib @QT4_SB_CONFIG@
+@QT4_CONFIGURE_SCRIPT@ -prefix @QT4_INSTALL_PREFIX_NATIVE@ -L @QT4_LIB_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@\freetype2 -opensource -confirm-license -release -shared -nomake demos -nomake examples -nomake tools -no-phonon-backend -no-phonon -no-script -no-scripttools -no-multimedia -no-audio-backend -no-webkit -no-declarative  -no-qt3support -no-xmlpatterns -no-sql-sqlite -no-openssl -no-libtiff -no-libmng -system-libpng -system-libjpeg  -system-zlib @QT4_SB_CONFIG@
 
 set INCLUDE=%SB_SAVE_INCLUDE%
 set LIB=%SB_SAVE_LIB%
diff --git a/SuperBuild/patches/QT4/configure_qt4.sh.in b/SuperBuild/patches/QT4/configure_qt4.sh.in
index 8f8a01a3d3b41bf303a9cbd0deccbd9ac44fff72..1ed3ef3f981f0bb5343f9d2202b5d5cd5150bc70 100755
--- a/SuperBuild/patches/QT4/configure_qt4.sh.in
+++ b/SuperBuild/patches/QT4/configure_qt4.sh.in
@@ -1 +1 @@
-@QT4_CONFIGURE_SCRIPT@ -prefix @QT4_INSTALL_PREFIX_NATIVE@ -L @QT4_LIB_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@/freetype2 -opensource -confirm-license -release -shared -nomake demos -nomake examples -nomake tools -no-phonon-backend -no-phonon -no-script -no-scripttools -no-multimedia -no-audio-backend -no-webkit -no-declarative  -no-qt3support -no-xmlpatterns -system-sqlite -qt-sql-sqlite -plugin-sql-sqlite -no-openssl -no-libtiff -no-libmng -system-libpng -system-libjpeg  -system-zlib @QT4_SB_CONFIG@
+@QT4_CONFIGURE_SCRIPT@ -prefix @QT4_INSTALL_PREFIX_NATIVE@ -L @QT4_LIB_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@ -I @QT4_INCLUDE_PREFIX_NATIVE@/freetype2 -opensource -confirm-license -release -shared -nomake demos -nomake examples -nomake tools -no-phonon-backend -no-phonon -no-script -no-scripttools -no-multimedia -no-audio-backend -no-webkit -no-declarative  -no-qt3support -no-xmlpatterns -no-sql-sqlite -no-openssl -no-libtiff -no-libmng -system-libpng -system-libjpeg  -system-zlib @QT4_SB_CONFIG@
diff --git a/SuperBuild/patches/README.md b/SuperBuild/patches/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..f912b067aafc01467b1d278f7005259492412261
--- /dev/null
+++ b/SuperBuild/patches/README.md
@@ -0,0 +1,20 @@
+## Synopsis
+
+Illustrates how to include a patch to the superbuild sources. This patch will be apply before the compilation of the external project.
+
+## Example
+
+Here is how to make a patch for superbuild. The example is here used libgeos but it can be done for any external projects in the OTB Superbuild. 
+
+- cd /tmp
+- wget http://download.osgeo.org/geos/geos-3.6.1.tar.bz2
+- tar xjf geos-3.6.1.tar.bz2
+- cp -r geos-3.6.1 geos-3.6.1.orig
+
+(make changes to geos-3.6.1)
+
+And prepare diff between two directories
+
+- diff -burN geos-3.6.1.orig geos-3.6.1 > geos-1-fixes-all.diff
+
+diff file naming is <project>-<number for applying in correct order>-<all/win/linux/macx>.diff
diff --git a/SuperBuild/patches/SHARK/shark-1-disable-hdf5-all.diff b/SuperBuild/patches/SHARK/shark-1-disable-hdf5-all.diff
new file mode 100755
index 0000000000000000000000000000000000000000..e7fba1953d4d93c79ac864fc175ad957d97774e6
--- /dev/null
+++ b/SuperBuild/patches/SHARK/shark-1-disable-hdf5-all.diff
@@ -0,0 +1,21 @@
+diff -burN Shark.orig/CMakeLists.txt Shark/CMakeLists.txt
+--- Shark.orig/CMakeLists.txt	2016-09-02 17:04:54.000000000 +0200
++++ Shark/CMakeLists.txt	2017-07-31 16:41:18.563473752 +0200
+@@ -194,6 +194,8 @@
+ #####################################################################
+ #           HDF5 configuration
+ #####################################################################
++option(ENABLE_HDF5 "Use HDF5" ON)
++if(ENABLE_HDF5)
+ find_package(HDF5 COMPONENTS C CXX HL QUIET)
+ mark_as_advanced(HDF5_DIR)
+ if(HDF5_FOUND)
+@@ -215,7 +217,7 @@
+ else()
+ 	message(STATUS "HDF5 not found, skip")
+ endif()
+-
++endif() #ENABLE_HDF5
+ #####################################################################
+ #           ATLAS configuration
+ #####################################################################
diff --git a/SuperBuild/patches/SHARK/shark-1-disable-hdf5-linux.diff b/SuperBuild/patches/SHARK/shark-1-disable-hdf5-linux.diff
deleted file mode 100644
index d0b3df4d7f8355a0da6f4a26ff4d0c4187bca1df..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/SHARK/shark-1-disable-hdf5-linux.diff
+++ /dev/null
@@ -1,258 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index df8be65..c6c3020 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -191,29 +191,32 @@ endif()
- #####################################################################
- #           HDF5 configuration
- #####################################################################
--find_package(HDF5 COMPONENTS C CXX HL QUIET)
--mark_as_advanced(HDF5_DIR)
--if(HDF5_FOUND)
--	if(HDF5_C_COMPILER_EXECUTABLE AND HDF5_CXX_COMPILER_EXECUTABLE)
--		message(STATUS "Checking HDF5 installation: HDF5 installation seems ok.")
--		include_directories( ${HDF5_INCLUDE_DIR} )
--		link_directories( ${HDF5_LIBRARY_DIR} )
--		list(APPEND LINK_LIBRARIES ${HDF5_LIBRARIES})
--	else()
--		message(STATUS "Checking HDF5 installation:HDF5 package might be broken.")
--		if(NOT( HDF5_C_COMPILER_EXECUTABLE))
--			message(STATUS "  C Compiler Extension not found.")
--		endif()
--		if(NOT( HDF5_CXX_COMPILER_EXECUTABLE))
--			message(STATUS "  CXX Compiler Extension not found.")
--		endif()
--			message(STATUS "Disabling HDF5.")
--		unset( HDF5_FOUND )
--	endif()
--else()
--	message(STATUS "HDF5 not found, skip")
-+option(ENABLE_HDF5 "Use HDF5" ON)
-+
-+if(ENABLE_HDF5)
-+  find_package(HDF5 COMPONENTS C CXX HL QUIET)
-+  mark_as_advanced(HDF5_DIR)
-+  if(HDF5_FOUND)
-+    if(HDF5_C_COMPILER_EXECUTABLE AND HDF5_CXX_COMPILER_EXECUTABLE)
-+      message(STATUS "Checking HDF5 installation: HDF5 installation seems ok.")
-+      include_directories( ${HDF5_INCLUDE_DIR} )
-+      link_directories( ${HDF5_LIBRARY_DIR} )
-+      list(APPEND LINK_LIBRARIES ${HDF5_LIBRARIES})
-+    else()
-+      message(STATUS "Checking HDF5 installation:HDF5 package might be broken.")
-+      if(NOT( HDF5_C_COMPILER_EXECUTABLE))
-+        message(STATUS "  C Compiler Extension not found.")
-+      endif()
-+      if(NOT( HDF5_CXX_COMPILER_EXECUTABLE))
-+        message(STATUS "  CXX Compiler Extension not found.")
-+      endif()
-+      message(STATUS "Disabling HDF5.")
-+      unset( HDF5_FOUND )
-+    endif()
-+  else()
-+    message(STATUS "HDF5 not found, skip")
-+  endif()
- endif()
--
- #####################################################################
- #           ATLAS configuration
- #####################################################################
-@@ -222,104 +225,104 @@ endif()
- option( ENABLE_CBLAS "Use Installed Linear Algebra Library" ON )
- 
- if( ENABLE_CBLAS )
--	set(CBLAS_VENDOR FALSE)
--	if( APPLE )
--		set(CBLAS_VENDOR "Accelerate")
--		set(CBLAS_INCLUDES "")
--		set(CBLAS_LIBRARIES "-framework Accelerate" )
--	else()
--		#todo: do a propper vendor check
--		find_library(OPENBLAS_LIBRARY openblas
--			HINTS ${CBLAS_ROOT}/lib /opt/local/lib
--		)
--		find_library(CBLAS_LIBRARY cblas
--			HINTS ${ATLAS_ROOT}/lib ${CBLAS_ROOT}/lib /opt/local/lib /usr/lib64/atlas/
--		)
--		find_library(CLAPACK_LIBRARY lapack
--			HINTS ${ATLAS_ROOT}/lib ${CBLAS_ROOT}/lib /opt/local/lib /usr/lib64/atlas/
--		)
--		find_library(ATLAS_LIBRARY atlas
--			HINTS ${ATLAS_ROOT}/lib ${CBLAS_ROOT}/lib /opt/local/lib /usr/lib64/atlas/
--		)
--		mark_as_advanced(
--			OPENBLAS_LIBRARY
--			CBLAS_LIBRARY
--			CLAPACK_LIBRARY
--			ATLAS_LIBRARY
--		)
--		#find the cblas.h include path
--		if(CBLAS_LIBRARY )
--			get_filename_component(CBLAS_LIB_PATH ${CBLAS_LIBRARY} PATH )
--		elseif( OPENBLAS_LIBRARY)	
--			get_filename_component(CBLAS_LIB_PATH ${OPENBLAS_LIBRARY} PATH )
--		endif()
--		if(CBLAS_LIB_PATH)
--			find_file(CBLAS_INCLUDES cblas.h 
--				PATHS ${CBLAS_LIB_PATH} ${CBLAS_LIB_PATH}/../include
--			)
--			get_filename_component(CBLAS_INCLUDES ${CBLAS_INCLUDES} PATH )
--		endif()
--		if(ATLAS_LIBRARY)
--			get_filename_component(ATLAS_LIBRARY_PATH ${ATLAS_LIBRARY} PATH )
--			find_file(CLAPACK_INCLUDES clapack.h 
--				PATHS
--				${ATLAS_LIBRARY_PATH} 
--				${ATLAS_LIBRARY_PATH}/../include
--				${ATLAS_LIBRARY_PATH}/../include/atlas
--				${ATLAS_LIBRARY_PATH}/../../include/atlas
--			)
--			get_filename_component(CLAPACK_INCLUDES ${CLAPACK_INCLUDES} PATH )
--			set(CBLAS_INCLUDES ${CBLAS_INCLUDES} ${CLAPACK_INCLUDES})
--		endif()
--
--		if( OPENBLAS_LIBRARY AND CBLAS_INCLUDES)
--			set(CBLAS_VENDOR "OpenBLAS")
--			set(CBLAS_LIBRARIES ${OPENBLAS_LIBRARY})
--		elseif( CBLAS_LIBRARY AND CLAPACK_LIBRARY AND ATLAS_LIBRARY AND CBLAS_INCLUDES)
--			set(CBLAS_VENDOR "ATLAS")
--			set(CBLAS_LIBRARIES ${CLAPACK_LIBRARY} ${CBLAS_LIBRARY} ${ATLAS_LIBRARY})
--		elseif( CBLAS_LIBRARY AND CBLAS_INCLUDES)
--			#check that we can compile a basic program with the libraries we have found
--			#vendor versions might come with additional libraries which would be bad.
--			try_compile(CBLAS_COMPILE 
--				"${PROJECT_BINARY_DIR}/cBlasCheck"
--				"${CMAKE_SOURCE_DIR}/cBlasCheck.cpp"
--				CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${CBLAS_INCLUDES}"
--				LINK_LIBRARIES ${CBLAS_LIBRARY}
--			)
--			if(CBLAS_COMPILE)
--				set(CBLAS_VENDOR "GENERIC")
--				set(CBLAS_LIBRARIES ${CBLAS_LIBRARY})
--			else()
--				message(WARNING "Unknown CBLAS. Can not use it")
--			endif()
--		endif()
--	endif()
-+  set(CBLAS_VENDOR FALSE)
-+  if( APPLE )
-+    set(CBLAS_VENDOR "Accelerate")
-+    set(CBLAS_INCLUDES "")
-+    set(CBLAS_LIBRARIES "-framework Accelerate" )
-+  else()
-+    #todo: do a propper vendor check
-+    find_library(OPENBLAS_LIBRARY openblas
-+      HINTS ${CBLAS_ROOT}/lib /opt/local/lib
-+      )
-+    find_library(CBLAS_LIBRARY cblas
-+      HINTS ${ATLAS_ROOT}/lib ${CBLAS_ROOT}/lib /opt/local/lib /usr/lib64/atlas/
-+      )
-+    find_library(CLAPACK_LIBRARY lapack
-+      HINTS ${ATLAS_ROOT}/lib ${CBLAS_ROOT}/lib /opt/local/lib /usr/lib64/atlas/
-+      )
-+    find_library(ATLAS_LIBRARY atlas
-+      HINTS ${ATLAS_ROOT}/lib ${CBLAS_ROOT}/lib /opt/local/lib /usr/lib64/atlas/
-+      )
-+    mark_as_advanced(
-+      OPENBLAS_LIBRARY
-+      CBLAS_LIBRARY
-+      CLAPACK_LIBRARY
-+      ATLAS_LIBRARY
-+      )
-+    #find the cblas.h include path
-+    if(CBLAS_LIBRARY )
-+      get_filename_component(CBLAS_LIB_PATH ${CBLAS_LIBRARY} PATH )
-+    elseif( OPENBLAS_LIBRARY)	
-+      get_filename_component(CBLAS_LIB_PATH ${OPENBLAS_LIBRARY} PATH )
-+    endif()
-+    if(CBLAS_LIB_PATH)
-+      find_file(CBLAS_INCLUDES cblas.h 
-+	PATHS ${CBLAS_LIB_PATH} ${CBLAS_LIB_PATH}/../include
-+	)
-+      get_filename_component(CBLAS_INCLUDES ${CBLAS_INCLUDES} PATH )
-+    endif()
-+    if(ATLAS_LIBRARY)
-+      get_filename_component(ATLAS_LIBRARY_PATH ${ATLAS_LIBRARY} PATH )
-+      find_file(CLAPACK_INCLUDES clapack.h 
-+	PATHS
-+	${ATLAS_LIBRARY_PATH} 
-+	${ATLAS_LIBRARY_PATH}/../include
-+	${ATLAS_LIBRARY_PATH}/../include/atlas
-+	${ATLAS_LIBRARY_PATH}/../../include/atlas
-+	)
-+      get_filename_component(CLAPACK_INCLUDES ${CLAPACK_INCLUDES} PATH )
-+      set(CBLAS_INCLUDES ${CBLAS_INCLUDES} ${CLAPACK_INCLUDES})
-+    endif()
-+
-+    if( OPENBLAS_LIBRARY AND CBLAS_INCLUDES)
-+      set(CBLAS_VENDOR "OpenBLAS")
-+      set(CBLAS_LIBRARIES ${OPENBLAS_LIBRARY})
-+    elseif( CBLAS_LIBRARY AND CLAPACK_LIBRARY AND ATLAS_LIBRARY AND CBLAS_INCLUDES)
-+      set(CBLAS_VENDOR "ATLAS")
-+      set(CBLAS_LIBRARIES ${CLAPACK_LIBRARY} ${CBLAS_LIBRARY} ${ATLAS_LIBRARY})
-+    elseif( CBLAS_LIBRARY AND CBLAS_INCLUDES)
-+      #check that we can compile a basic program with the libraries we have found
-+      #vendor versions might come with additional libraries which would be bad.
-+      try_compile(CBLAS_COMPILE 
-+	"${PROJECT_BINARY_DIR}/cBlasCheck"
-+	"${CMAKE_SOURCE_DIR}/cBlasCheck.cpp"
-+	CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${CBLAS_INCLUDES}"
-+	LINK_LIBRARIES ${CBLAS_LIBRARY}
-+	)
-+      if(CBLAS_COMPILE)
-+	set(CBLAS_VENDOR "GENERIC")
-+	set(CBLAS_LIBRARIES ${CBLAS_LIBRARY})
-+      else()
-+	message(WARNING "Unknown CBLAS. Can not use it")
-+      endif()
-+    endif()
-+  endif()
- 	
--	if(CBLAS_VENDOR)
--		message(STATUS "CBLAS FOUND: " ${CBLAS_VENDOR} " with include directory " ${CBLAS_INCLUDES} )
--		set(SHARK_USE_CBLAS 1)
--		list(APPEND EXTRA_INCLUDE_DIRECTORIES ${CBLAS_INCLUDES} )
--		list(APPEND LINK_LIBRARIES ${CBLAS_LIBRARIES})
--		include_directories ( ${CBLAS_INCLUDES} )
--	else()
--		message(STATUS "No usable CBLAS Library found. No fast linear Algebra used.")
--	endif()
-+  if(CBLAS_VENDOR)
-+    message(STATUS "CBLAS FOUND: " ${CBLAS_VENDOR} " with include directory " ${CBLAS_INCLUDES} )
-+    set(SHARK_USE_CBLAS 1)
-+    list(APPEND EXTRA_INCLUDE_DIRECTORIES ${CBLAS_INCLUDES} )
-+    list(APPEND LINK_LIBRARIES ${CBLAS_LIBRARIES})
-+    include_directories ( ${CBLAS_INCLUDES} )
-+  else()
-+    message(STATUS "No usable CBLAS Library found. No fast linear Algebra used.")
-+  endif()
- 	
--	#Special setup for ATLAS
--	if( CBLAS_VENDOR MATCHES "ATLAS" )
--		set( SHARK_USE_ATLAS_LAPACK 1) # ATLAS always contains some LAPACK methods that we can use
-+  #Special setup for ATLAS
-+  if( CBLAS_VENDOR MATCHES "ATLAS" )
-+    set( SHARK_USE_ATLAS_LAPACK 1) # ATLAS always contains some LAPACK methods that we can use
- 		
--		#check for full lapack
--		set(CMAKE_REQUIRE_QUIET 1)
--		set(CMAKE_REQUIRED_LIBRARIES ${CBLAS_LIBRARIES})
--		check_function_exists(dsyev_ ATLAS_FULL_LAPACK)
-+    #check for full lapack
-+    set(CMAKE_REQUIRE_QUIET 1)
-+    set(CMAKE_REQUIRED_LIBRARIES ${CBLAS_LIBRARIES})
-+    check_function_exists(dsyev_ ATLAS_FULL_LAPACK)
- 		
--		if( ATLAS_FULL_LAPACK )
--			set( SHARK_USE_LAPACK 1)
--			message(STATUS "Detected ATLAS with full LAPACK package. Using it!")
--		endif()
--	endif()
-+    if( ATLAS_FULL_LAPACK )
-+      set( SHARK_USE_LAPACK 1)
-+      message(STATUS "Detected ATLAS with full LAPACK package. Using it!")
-+    endif()
-+  endif()
- endif()
- #####################################################################
- #                       Static Code Analysis
diff --git a/SuperBuild/patches/TIFF/CMakeLists.txt b/SuperBuild/patches/TIFF/CMakeLists.txt
deleted file mode 100644
index 287ba9ceba8ccc92673fcc929496438f557a6050..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/TIFF/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
-#
-# This file is part of Orfeo Toolbox
-#
-#     https://www.orfeo-toolbox.org/
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-cmake_minimum_required(VERSION 2.8.3)
-
-project(tiff_install)
-
-file(GLOB ${PROJECT_NAME}_HEADERS "${TIFF_BUILD_DIR}/tif*.h" )
-file(GLOB ${PROJECT_NAME}_LIBS "${TIFF_BUILD_DIR}/libtiff*.lib" )
-file(GLOB ${PROJECT_NAME}_DLLS "${TIFF_BUILD_DIR}/libtiff*.dll" )
-
-foreach(${PROJECT_NAME}_HEADER ${${PROJECT_NAME}_HEADERS})
-install(FILES ${${PROJECT_NAME}_HEADER}
-  DESTINATION include
-  COMPONENT Development)
-endforeach()
-  
-foreach(${PROJECT_NAME}_LIB ${${PROJECT_NAME}_LIBS})
-install(FILES ${${PROJECT_NAME}_LIB}
-  DESTINATION lib
-  COMPONENT Development)
-endforeach()
-
-foreach(${PROJECT_NAME}_DLL ${${PROJECT_NAME}_DLLS})
-install(FILES ${${PROJECT_NAME}_DLL}
-  DESTINATION bin
-  COMPONENT Development)
-endforeach()
\ No newline at end of file
diff --git a/SuperBuild/patches/TIFF/nmake.opt b/SuperBuild/patches/TIFF/nmake.opt
deleted file mode 100644
index cb1c9ea849db145f3ce36c0e00aeeecfaa6ea0ff..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/TIFF/nmake.opt
+++ /dev/null
@@ -1,218 +0,0 @@
-# $Id: nmake.opt,v 1.18 2006/06/07 16:33:45 dron Exp $
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Compile time parameters for MS Visual C++ compiler.
-# You may edit this file to specify building options.
-
-#
-###### Edit the following lines to choose a feature set you need. #######
-#
-
-# 
-# Select WINMODE_CONSOLE to build a library which reports errors to stderr, or
-# WINMODE_WINDOWED to build such that errors are reported via MessageBox().
-#
-WINMODE_CONSOLE = 1
-#WINMODE_WINDOWED = 1
-
-#
-# Comment out the following lines to disable internal codecs.
-#
-# Support for CCITT Group 3 & 4 algorithms
-CCITT_SUPPORT	= 1
-# Support for Macintosh PackBits algorithm
-PACKBITS_SUPPORT = 1
-# Support for LZW algorithm
-LZW_SUPPORT	= 1
-# Support for ThunderScan 4-bit RLE algorithm
-THUNDER_SUPPORT	= 1
-# Support for NeXT 2-bit RLE algorithm
-NEXT_SUPPORT	= 1
-# Support for LogLuv high dynamic range encoding
-LOGLUV_SUPPORT	= 1
-
-#
-# Uncomment and edit following lines to enable JPEG support.
-#
-JPEG_SUPPORT = 1
-JPEGDIR 	 = @CMAKE_WIN_INSTALL_PREFIX@
-JPEG_INCLUDE = -I$(JPEGDIR)\include
-JPEG_LIB 	 = $(JPEGDIR)\lib\jpeg.lib
-
-#
-# Uncomment and edit following lines to enable ZIP support
-# (required for Deflate compression and Pixar log-format)
-#
-ZIP_SUPPORT	 = 1
-ZLIBDIR 	 = @CMAKE_WIN_INSTALL_PREFIX@
-ZLIB_INCLUDE = -I$(ZLIBDIR)\include
-ZLIB_LIB 	 = $(ZLIBDIR)\lib\zlib.lib
-
-#
-# Uncomment and edit following lines to enable ISO JBIG support
-#
-#JBIG_SUPPORT	= 1
-#JBIGDIR 	= d:/projects/jbigkit
-#JBIG_INCLUDE	= -I$(JBIGDIR)/libjbig
-#JBIG_LIB 	= $(JBIGDIR)/libjbig/jbig.lib
-
-#
-# Uncomment following line to enable Pixar log-format algorithm
-# (Zlib required).
-#
-#PIXARLOG_SUPPORT = 1
-
-#
-# Comment out the following lines to disable strip chopping
-# (whether or not to convert single-strip uncompressed images to mutiple
-# strips of specified size to reduce memory usage). Default strip size
-# is 8192 bytes, it can be configured via the STRIP_SIZE_DEFAULT parameter
-#
-STRIPCHOP_SUPPORT = 1
-STRIP_SIZE_DEFAULT = 8192
-
-#
-# Comment out the following lines to disable treating the fourth sample with
-# no EXTRASAMPLE_ value as being ASSOCALPHA. Many packages produce RGBA
-# files but don't mark the alpha properly.
-#
-EXTRASAMPLE_AS_ALPHA_SUPPORT = 1
-
-#
-# Comment out the following lines to disable picking up YCbCr subsampling
-# info from the JPEG data stream to support files lacking the tag.
-# See Bug 168 in Bugzilla, and JPEGFixupTestSubsampling() for details.
-#
-CHECK_JPEG_YCBCR_SUBSAMPLING = 1
-
-#
-####################### Compiler related options. #######################
-#
-
-#
-# Pick debug or optimized build flags.  We default to an optimized build
-# with no debugging information.
-# NOTE: /EHsc option required if you want to build the C++ stream API
-#
-OPTFLAGS =	/Ox /MD /EHsc /W3 /D_CRT_SECURE_NO_DEPRECATE -DHAVE_SNPRINTF
-#OPTFLAGS = 	/Zi 
-
-#
-# Uncomment following line to enable using Windows Common RunTime Library
-# instead of Windows specific system calls. See notes on top of tif_unix.c
-# module for details.
-#
-USE_WIN_CRT_LIB = 1
-
-# Compiler specific options. You may probably want to adjust compilation
-# parameters in CFLAGS variable. Refer to your compiler documentation
-# for the option reference.
-#
-MAKE	=	nmake /nologo
-CC	=	cl /nologo
-CXX	=	cl /nologo
-AR	=	lib /nologo
-LD	=	link /nologo
-
-CFLAGS  =	$(OPTFLAGS) $(INCL) $(EXTRAFLAGS)
-CXXFLAGS =	$(OPTFLAGS) $(INCL) $(EXTRAFLAGS)
-EXTRAFLAGS =
-LIBS	=
-
-# Name of the output shared library
-DLLNAME	= libtiff.dll
-
-#
-########### There is nothing to edit below this line normally. ###########
-#
-
-# Set the native cpu bit order
-EXTRAFLAGS	= -DFILLODER_LSB2MSB $(EXTRAFLAGS)
-
-!IFDEF WINMODE_WINDOWED
-EXTRAFLAGS	= -DTIF_PLATFORM_WINDOWED $(EXTRAFLAGS)
-LIBS		= user32.lib $(LIBS)
-!ELSE
-EXTRAFLAGS	= -DTIF_PLATFORM_CONSOLE $(EXTRAFLAGS)
-!ENDIF
-
-# Codec stuff
-!IFDEF CCITT_SUPPORT
-EXTRAFLAGS	= -DCCITT_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF PACKBITS_SUPPORT
-EXTRAFLAGS	= -DPACKBITS_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF LZW_SUPPORT
-EXTRAFLAGS	=  -DLZW_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF THUNDER_SUPPORT
-EXTRAFLAGS	= -DTHUNDER_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF NEXT_SUPPORT
-EXTRAFLAGS	= -DNEXT_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF LOGLUV_SUPPORT
-EXTRAFLAGS	= -DLOGLUV_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF JPEG_SUPPORT
-LIBS		= $(LIBS) $(JPEG_LIB)
-EXTRAFLAGS	= -DJPEG_SUPPORT -DOJPEG_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF ZIP_SUPPORT
-LIBS		= $(LIBS) $(ZLIB_LIB)
-EXTRAFLAGS	= -DZIP_SUPPORT $(EXTRAFLAGS)
-!IFDEF PIXARLOG_SUPPORT
-EXTRAFLAGS	= -DPIXARLOG_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-!ENDIF
-
-!IFDEF JBIG_SUPPORT
-LIBS		= $(LIBS) $(JBIG_LIB)
-EXTRAFLAGS	= -DJBIG_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF STRIPCHOP_SUPPORT
-EXTRAFLAGS	= -DSTRIPCHOP_DEFAULT=TIFF_STRIPCHOP -DSTRIP_SIZE_DEFAULT=$(STRIP_SIZE_DEFAULT) $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF EXTRASAMPLE_AS_ALPHA_SUPPORT
-EXTRAFLAGS	= -DDEFAULT_EXTRASAMPLE_AS_ALPHA $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF CHECK_JPEG_YCBCR_SUBSAMPLING
-EXTRAFLAGS	= -DCHECK_JPEG_YCBCR_SUBSAMPLING $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF USE_WIN_CRT_LIB
-EXTRAFLAGS	= -DAVOID_WIN32_FILEIO $(EXTRAFLAGS)
-!ELSE
-EXTRAFLAGS	= -DUSE_WIN32_FILEIO $(EXTRAFLAGS)
-!ENDIF
diff --git a/SuperBuild/patches/TIFF/tiff-1-cmakefixes-all.diff b/SuperBuild/patches/TIFF/tiff-1-cmakefixes-all.diff
new file mode 100644
index 0000000000000000000000000000000000000000..a0c3b6f08bcaa234f96f07d266cf1bdbaae189bc
--- /dev/null
+++ b/SuperBuild/patches/TIFF/tiff-1-cmakefixes-all.diff
@@ -0,0 +1,163 @@
+diff -burN tiff-4.0.8.orig/CMakeLists.txt tiff-4.0.8/CMakeLists.txt
+--- tiff-4.0.8.orig/CMakeLists.txt	Thu Jul 20 12:53:54 2017
++++ tiff-4.0.8/CMakeLists.txt	Thu Jul 20 13:17:05 2017
+@@ -601,21 +601,35 @@
+   set(CXX_SUPPORT TRUE)
+ endif()
+ 
+-# OpenGL and GLUT
+-find_package(OpenGL)
+-find_package(GLUT)
+-set(HAVE_OPENGL FALSE)
+-if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
++# OpenGL support
++option(with_opengl "Enable opengl support (requires opengl and glut packages)" ON)
++if(with_opengl)
++  # OpenGL and GLUT
++  find_package(OpenGL)
++  find_package(GLUT)
++  set(HAVE_OPENGL FALSE)
++  if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
+   set(HAVE_OPENGL TRUE)
+-endif()
+-# Purely to satisfy the generated headers:
+-check_include_file(GL/gl.h HAVE_GL_GL_H)
+-check_include_file(GL/glu.h HAVE_GL_GLU_H)
+-check_include_file(GL/glut.h HAVE_GL_GLUT_H)
+-check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
+-check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
+-check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
++  endif()
++  # Purely to satisfy the generated headers:
++  check_include_file(GL/gl.h HAVE_GL_GL_H)
++  check_include_file(GL/glu.h HAVE_GL_GLU_H)
++  check_include_file(GL/glut.h HAVE_GL_GLUT_H)
++  check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
++  check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
++  check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
++else() #with_opengl
++  set(HAVE_OPENGL FALSE)
++  #force  opengl headers check to FALSE.
++  set(HAVE_GL_GL_H FALSE)
++  set(HAVE_GL_GLU_H FALSE)
++  set(HAVE_GL_GLUT_H FALSE)
++  set(HAVE_GLUT_GLUT_H FALSE)
++  set(HAVE_OPENGL_GL_H FALSE)
++  set(HAVE_OPENGL_GLU_H FALSE)
++endif() #with_opengl
+ 
++
+ # Win32 IO
+ set(win32_io FALSE)
+ if(WIN32)
+@@ -713,19 +727,38 @@
+ if(LIBLZMA_LIBRARIES)
+   list(APPEND TIFF_LIBRARY_DEPS ${LIBLZMA_LIBRARIES})
+ endif()
+-
+ #report_values(TIFF_INCLUDES TIFF_LIBRARY_DEPS)
+ 
++# NEED_LIBPORT is later updated in port/CMakeLists.txt and 
++# used in libtiff/CMakeLists.txt to generate tif_config.h.
++# see libtiff/tif_config.h.cmake.in for usage
++set(NEED_LIBPORT FALSE)
++
+ # Process subdirectories
+ add_subdirectory(port)
+ add_subdirectory(libtiff)
+-add_subdirectory(tools)
+-add_subdirectory(test)
+-add_subdirectory(contrib)
++
++option(with_tools "build executables in tools directory" ON)
++if(with_tools)
++  add_subdirectory(tools)
++endif()
++option(with_test "build executables in tests directory" ON)
++if(with_test)
++  add_subdirectory(test)
++endif()
++
++option(with_contrib "build executables in contrib directory" ON)
++if(with_contrib)
++  add_subdirectory(contrib)
++endif()
++
+ add_subdirectory(build)
+-add_subdirectory(man)
+-add_subdirectory(html)
+-
++
++option(with_docs "build html and man docs" ON)
++if(with_docs)
++  add_subdirectory(man)
++  add_subdirectory(html)
++endif()
+ #message(STATUS "EXTRA_DIST: ${EXTRA_DIST}")
+ 
+ message(STATUS "")
+diff -burN tiff-4.0.8.orig/contrib/iptcutil/iptcutil.c tiff-4.0.8/contrib/iptcutil/iptcutil.c
+--- tiff-4.0.8.orig/contrib/iptcutil/iptcutil.c	Thu Jul 20 12:53:54 2017
++++ tiff-4.0.8/contrib/iptcutil/iptcutil.c	Thu Jul 20 13:14:55 2017
+@@ -19,7 +19,7 @@
+ # include <fcntl.h>
+ #endif
+ 
+-#ifdef WIN32
++#ifdef _MSC_VER
+ #define STRNICMP strnicmp
+ #else 
+ #define STRNICMP strncasecmp
+diff -burN tiff-4.0.8.orig/libtiff/tif_config.h.cmake.in tiff-4.0.8/libtiff/tif_config.h.cmake.in
+--- tiff-4.0.8.orig/libtiff/tif_config.h.cmake.in	Thu Jul 20 12:53:54 2017
++++ tiff-4.0.8/libtiff/tif_config.h.cmake.in	Thu Jul 20 13:15:21 2017
+@@ -259,3 +259,9 @@
+ 
+ /* Define to `unsigned int' if <sys/types.h> does not define. */
+ #undef size_t
++
++#ifdef _MSC_VER
++#pragma warning(disable : 4996) /* function deprecation warnings */
++#endif
++
++#cmakedefine NEED_LIBPORT 1
+diff -burN tiff-4.0.8.orig/port/CMakeLists.txt tiff-4.0.8/port/CMakeLists.txt
+--- tiff-4.0.8.orig/port/CMakeLists.txt	Thu Jul 20 12:53:54 2017
++++ tiff-4.0.8/port/CMakeLists.txt	Thu Jul 20 13:15:32 2017
+@@ -32,25 +32,35 @@
+   strtoull.c)
+ 
+ set(port_USED_FILES ${port_SOURCES} ${port_HEADERS})
+-
++  set(LIBPORT_USED FALSE)
+ if(NOT HAVE_GETOPT)
+   list(APPEND port_USED_FILES getopt.c)
++    set(LIBPORT_USED TRUE)
+ endif()
+ if(NOT HAVE_LFIND)
+   list(APPEND port_USED_FILES lfind.c)
++    set(LIBPORT_USED TRUE)
+ endif()
+ if(MSVC AND NOT HAVE_SNPRINTF)
+   list(APPEND port_USED_FILES snprintf.c)
++    set(LIBPORT_USED TRUE)
+ endif()
+ if(NOT HAVE_STRCASECMP)
+   list(APPEND port_USED_FILES strcasecmp.c)
++    set(LIBPORT_USED TRUE)
+ endif()
+ if(NOT HAVE_STRTOUL)
+   list(APPEND port_USED_FILES strtoul.c)
++    set(LIBPORT_USED TRUE)
+ endif()
+ if(NOT HAVE_STRTOULL)
+   list(APPEND port_USED_FILES strtoull.c)
++  set(LIBPORT_USED TRUE)
+ endif()
++
++# We set NEED_LIBPORT with PARENT_SCOPE 
++# because it is used in libtiff/CMakeLists.txt
++set(NEED_LIBPORT ${LIBPORT_USED} PARENT_SCOPE)
+ 
+ add_library(port STATIC ${port_USED_FILES})
+ 
diff --git a/SuperBuild/patches/TIFF/tiff-1-noopengl-linux.diff b/SuperBuild/patches/TIFF/tiff-1-noopengl-linux.diff
deleted file mode 100755
index 04b1ef4f181fe243c5d9413e76a129e57981689d..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/TIFF/tiff-1-noopengl-linux.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-diff -burN tiff-4.0.6.orig/CMakeLists.txt tiff-4.0.6/CMakeLists.txt
---- tiff-4.0.6.orig/CMakeLists.txt	2016-10-27 17:24:17.000000000 +0200
-+++ tiff-4.0.6/CMakeLists.txt	2016-10-27 17:25:43.000000000 +0200
-@@ -602,19 +602,23 @@
- endif()
- 
- # OpenGL and GLUT
--find_package(OpenGL)
--find_package(GLUT)
--set(HAVE_OPENGL FALSE)
--if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
-+option(WITH_OPENGL "Enable opengl and glut support" ON)
-+
-+if(WITH_OPENGL)  
-+  find_package(OpenGL)
-+  find_package(GLUT)
-+  set(HAVE_OPENGL FALSE)
-+  if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
-   set(HAVE_OPENGL TRUE)
-+  endif()
-+  # Purely to satisfy the generated headers:
-+  check_include_file(GL/gl.h HAVE_GL_GL_H)
-+  check_include_file(GL/glu.h HAVE_GL_GLU_H)
-+  check_include_file(GL/glut.h HAVE_GL_GLUT_H)
-+  check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
-+  check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
-+  check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
- endif()
--# Purely to satisfy the generated headers:
--check_include_file(GL/gl.h HAVE_GL_GL_H)
--check_include_file(GL/glu.h HAVE_GL_GLU_H)
--check_include_file(GL/glut.h HAVE_GL_GLUT_H)
--check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
--check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
--check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
- 
- # Win32 IO
- set(win32_io FALSE)
diff --git a/SuperBuild/patches/TIFF/tiff-1-noopengl-macx.diff b/SuperBuild/patches/TIFF/tiff-1-noopengl-macx.diff
deleted file mode 100755
index 04b1ef4f181fe243c5d9413e76a129e57981689d..0000000000000000000000000000000000000000
--- a/SuperBuild/patches/TIFF/tiff-1-noopengl-macx.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-diff -burN tiff-4.0.6.orig/CMakeLists.txt tiff-4.0.6/CMakeLists.txt
---- tiff-4.0.6.orig/CMakeLists.txt	2016-10-27 17:24:17.000000000 +0200
-+++ tiff-4.0.6/CMakeLists.txt	2016-10-27 17:25:43.000000000 +0200
-@@ -602,19 +602,23 @@
- endif()
- 
- # OpenGL and GLUT
--find_package(OpenGL)
--find_package(GLUT)
--set(HAVE_OPENGL FALSE)
--if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
-+option(WITH_OPENGL "Enable opengl and glut support" ON)
-+
-+if(WITH_OPENGL)  
-+  find_package(OpenGL)
-+  find_package(GLUT)
-+  set(HAVE_OPENGL FALSE)
-+  if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
-   set(HAVE_OPENGL TRUE)
-+  endif()
-+  # Purely to satisfy the generated headers:
-+  check_include_file(GL/gl.h HAVE_GL_GL_H)
-+  check_include_file(GL/glu.h HAVE_GL_GLU_H)
-+  check_include_file(GL/glut.h HAVE_GL_GLUT_H)
-+  check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
-+  check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
-+  check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
- endif()
--# Purely to satisfy the generated headers:
--check_include_file(GL/gl.h HAVE_GL_GL_H)
--check_include_file(GL/glu.h HAVE_GL_GLU_H)
--check_include_file(GL/glut.h HAVE_GL_GLUT_H)
--check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
--check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
--check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
- 
- # Win32 IO
- set(win32_io FALSE)
diff --git a/Utilities/Maintenance/SuperbuildDownloadList.sh b/Utilities/Maintenance/SuperbuildDownloadList.sh
index 6b09c62d4173125b529c295ed58ebea2bda67d7e..d7bd8c493517194cf2ef22accbc6b0e4565d3291 100755
--- a/Utilities/Maintenance/SuperbuildDownloadList.sh
+++ b/Utilities/Maintenance/SuperbuildDownloadList.sh
@@ -20,77 +20,62 @@
 #
 
 
-export LC_ALL=C
-if [ $# -eq 2 ]; then
-DOWNLOAD_DIR=$(readlink -f $1)
-OUTPUT_DIR=$(readlink -f $2)
-else
-echo 'Usage: '$0' <download_directory> <archive_output_directory>'
-exit 1
+
+if [ $# -lt 2 ]; then
+    echo "Usage: $0 <download_directory> <archive_output_directory>"
+    exit 1
 fi
 
-WGET="wget -nv -q"
+export LC_ALL=C
 
-SB_CMAKE_DIR_REL=$(dirname $0)/../../SuperBuild/CMake
-SB_CMAKE_DIR=$(readlink -f ${SB_CMAKE_DIR_REL})
+DOWNLOAD_DIR=$(readlink -f "$1")
+OUTPUT_DIR=$(readlink -f "$2")
+WGET=$(which wget)
 
-cd $(dirname $0)/../../
 
-GIT_BRANCH=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
+CUR_DIR="$( cd "$( dirname "$0" )" && pwd )"
 
+SB_CMAKE_DIR_REL=$CUR_DIR/../../SuperBuild/CMake
+SB_CMAKE_DIR=$(readlink -f "${SB_CMAKE_DIR_REL}")
+cd "$CUR_DIR/../../" || echo "cannot cd to CUR_DIR/../../"
+GIT_BRANCH=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
 #if a branch contains release-X.Y then xdk is taken from packages/xdk/OTB-X.Y
 if [[ "$GIT_BRANCH" =~ release-* ]]; then
-    VERSION=$(echo ${GIT_BRANCH}| sed 's/.*release-//'| cut -d'-' -f 1)
+    VERSION=$(echo "${GIT_BRANCH}"| sed 's/.*release-//'| cut -d'-' -f 1)
 else
     VERSION="develop"
 fi
-DOWNLOAD_LIST=$(grep -h -E "^[^#]*\"https?://.*(\.tar\.gz|\.tar\.bz2|\.tgz|\.tar\.xz|\.zip|export=download).*\"" ${SB_CMAKE_DIR}/*.cmake | grep -o -E "https?://[^\"]*" | sed "s/\/\(download\)\?$//" | sort | uniq)
+CMAKE_FILES=$(find $SB_CMAKE_DIR -maxdepth 1 -type f -name "External_*")
+DOWNLOAD_LIST=$(grep -h -E '^[^#]*\"https?://.*(\.tar\.gz|\.tar\.bz2|\.tgz|\.tar\.xz|\.zip|export=download).*\"' ${CMAKE_FILES} |
+		    grep -o -E 'https?://[^\"]*' | sort | uniq)
 
 DOWNLOAD_NAMES=
 
-mkdir -p ${DOWNLOAD_DIR}
-cd ${DOWNLOAD_DIR}
+#echo "DOWNLOAD_LIST=$DOWNLOAD_LIST"
 
+mkdir -p "${DOWNLOAD_DIR}"
+cd "${DOWNLOAD_DIR}" || echo "cannot cd to DOWNLOAD_DIR"
 echo "Downloading files to ${DOWNLOAD_DIR}/"
-
 for url in ${DOWNLOAD_LIST}; do
-  # clean log file
-
-  file_name=$(echo "${url}" | grep -o -E "[^\/]+$")
-  docs_google=$(echo "${file_name}" | grep -F "export=download")
-  if [ "${docs_google}" = "" ]; then
-      if [ -f "$file_name" ]; then
-          echo "$file_name exists, skipping"
-      fi;
-      $WGET -N ${url}
-      ret="$?"
-   if [ $ret -gt 0 -a $ret -ne 8  ]; then
-       echo "Download failed for URL: '${url}'. wget finished with exit status '$ret'."
-       exit 1;
-   fi
-  else
-    # look into the original file for a valid download name
-    file_name=$(grep -h -A 3 -B 3 -F "${url}" ${SB_CMAKE_DIR}/*.cmake | grep -E "^[^#]*DOWNLOAD_NAME" | grep -o -E "[^ ]*\.(tar\.gz|tar\.bz2|tar\.xz|zip)" | uniq)
-    if [ -z "$file_name" ]; then
-        echo "Can't find correct filename for url ${url} : skip download"
-        exit 1;
-    else
-        # echo "Download ${file_name}..."
-        $WGET ${url} -O ${file_name}
-    fi
+  file_name=$(echo "${url}" | grep -o -E '[^\/]+$')
+  $WGET -N "${url}"
+  ret="$?"
+  if [ $ret -gt 0 ] && [ $ret -ne 8 ]; then
+     echo "Download failed for URL: '${url}'. wget finished with exit status '$ret'."
+     exit 1;
   fi
 
   if [ "$file_name" != "" ]; then
-      DOWNLOAD_NAMES="${DOWNLOAD_NAMES} ${file_name}"
+     DOWNLOAD_NAMES="${DOWNLOAD_NAMES} ${file_name}"
+  else
+     echo "invalid filename for url=${url}" && exit 1;
   fi
-
 done
 
 ARCHIVE_NAME="SuperBuild-archives-$VERSION"
 echo "Creating archive ${OUTPUT_DIR}/$ARCHIVE_NAME.tar.bz2"
-
-cd ${OUTPUT_DIR}
-tar -cjf $ARCHIVE_NAME.tar.bz2 -C ${DOWNLOAD_DIR} ${DOWNLOAD_NAMES}
-
+cd "${OUTPUT_DIR}" || echo "cannot cd to OUTPUT_DIR"
+touch "${DOWNLOAD_DIR}/OTBSuperBuild.readme"
+tar -cjf "$ARCHIVE_NAME.tar.bz2" -C "${DOWNLOAD_DIR}" ${DOWNLOAD_NAMES} OTBSuperBuild.readme
 echo "Saving md5sum to ${OUTPUT_DIR}/$ARCHIVE_NAME.md5"
-md5sum $ARCHIVE_NAME.tar.bz2 > $ARCHIVE_NAME.md5
+md5sum "$ARCHIVE_NAME.tar.bz2" > "$ARCHIVE_NAME.md5"