diff --git a/Modules/ThirdParty/GDAL/QB_multicomp_small.jpx b/Modules/ThirdParty/GDAL/QB_multicomp_small.jpx
new file mode 100644
index 0000000000000000000000000000000000000000..666be06a696902a459f6f4f9b4906efdb76637a8
Binary files /dev/null and b/Modules/ThirdParty/GDAL/QB_multicomp_small.jpx differ
diff --git a/Modules/ThirdParty/GDAL/gdalOGRTest.cxx b/Modules/ThirdParty/GDAL/gdalOGRTest.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..3787cec7047f9a70069dedfab3fddb03ba26e820
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalOGRTest.cxx
@@ -0,0 +1,23 @@
+#ifdef WIN32
+#define CPL_DISABLE_DLL
+#endif
+#include "ogr_api.h"
+
+int main(int argc,char * argv[])
+{
+  OGRDataSourceH	hDS;
+  OGRSFDriverH        *pahDriver;
+  
+  OGRRegisterAll(); 	
+
+  hDS = OGROpen(argv[1], FALSE, pahDriver );
+
+  if( hDS == NULL )
+    {
+    return -1;
+    }
+
+  OGRReleaseDataSource( hDS );
+  
+  return 0;
+}
diff --git a/Modules/ThirdParty/GDAL/gdalOpenTest.cxx b/Modules/ThirdParty/GDAL/gdalOpenTest.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..6f90ff00440c43e7238146bbb3ac1c61296e1bd4
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalOpenTest.cxx
@@ -0,0 +1,17 @@
+#include <iostream>
+#include <stdexcept>
+#include <gdal.h>
+
+int main(int argc, char * argv[])
+{
+   if (argc != 2)
+   {
+     std::cerr << "Usage : " << argv[0] << "filename" << std::endl;
+     return 0;//FAIL
+   }
+
+  GDALAllRegister();
+  GDALOpen(argv[1], GA_ReadOnly );
+  
+  return 1;//SUCCESS
+}
diff --git a/Modules/ThirdParty/GDAL/gdalTest.sh.in b/Modules/ThirdParty/GDAL/gdalTest.sh.in
new file mode 100644
index 0000000000000000000000000000000000000000..0a481315ae59a52fe27766a9b7cc6da539cf4474
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalTest.sh.in
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+tempFolder=@TEMP@
+gdalLibLocation=@GDAL_LIBRARY@
+sourceDir=@CMAKE_SOURCE_DIR@
+apple=@APPLE@
+
+#TEST 1 : GDAL version
+gdalConfig="$(which gdal-config)"
+${gdalConfig} --version > ${tempFolder}/testgdal1.txt 
+
+#TEST 2 : dyn. symbols 
+if [ -z "${apple}"]
+then
+nm -D --defined-only ${gdalLibLocation} | grep TIFFClose > ${tempFolder}/testgdal2.txt
+else
+nm -U ${gdalLibLocation} | grep TIFFClose > ${tempFolder}/testgdal2.txt # -U : don't display undefined syms (same as --defined-only)
+fi
+
+#TEST 3 : Big tiff
+gdal_translate -co "BIGTIFF=YES" ${sourceDir}/Modules/ThirdParty/GDAL/logoVectoriel.png ${tempFolder}/logoVectoriel.tif > ${tempFolder}/testgdal3.txt
+
+#TEST 4 : GDAL formats
+${gdalConfig} --formats > ${tempFolder}/testgdal4.txt
diff --git a/Modules/ThirdParty/GDAL/gdalTest1.cxx b/Modules/ThirdParty/GDAL/gdalTest1.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..275a0372a97defb299fec26bcd04618e11edd6a6
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalTest1.cxx
@@ -0,0 +1,63 @@
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <cstdlib>
+#include <vector>
+
+using namespace std;
+
+
+//----------------- gdal >= 1.10 -------------------------
+int main(int argc, char * argv[])
+{
+
+  const char * inputFilename  = argv[1];
+  
+  ifstream file(inputFilename, ios::in); 
+  if(file)  
+  {
+	
+	string line;  
+	vector<unsigned int> UIntVect;
+	
+	getline(file, line);
+
+		//Parsing 
+		istringstream iss(line);
+		unsigned int pos=0;
+		string sub;
+		unsigned int someUIntVal;
+		while ( std::getline( iss, sub, '.' ) ) 
+		{ 
+			istringstream convert(sub);
+			convert >> someUIntVal;
+			//cout << someUIntVal << '\n'; 
+			
+			if (pos==0) //Major
+				UIntVect.push_back(someUIntVal);
+			if (pos==1) //Minor
+				UIntVect.push_back(someUIntVal);
+	
+			pos++;
+		}
+	 
+	file.close();
+	
+	if ( (UIntVect[0]<1) || (UIntVect[1]<10) )
+	{
+		cout << "WARNING : Version of GDAL must be >= 1.10 (" << UIntVect[0] << "." << UIntVect[1] << " detected)." << endl;
+		return 1;
+	}
+
+   }
+   /*else
+   {
+	    cout << "WARNING  : Can't open file " << inputFilename << endl;
+		return 2;
+   }*/
+ 
+
+   
+  return EXIT_SUCCESS;
+
+}
diff --git a/Modules/ThirdParty/GDAL/gdalTest2.cxx b/Modules/ThirdParty/GDAL/gdalTest2.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5b97ec80d5afd4ca5d005fb7d1415149b9a24782
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalTest2.cxx
@@ -0,0 +1,42 @@
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <cstdlib>
+
+
+using namespace std;
+
+//----------------- if internal libtiff/libgeotiff are detected, symbol renaming is mandatory -------------------------
+int main(int argc, char * argv[])
+{
+
+  const char * inputFilename  = argv[1];
+ 
+  string pattern1("TIFFClose");
+  string pattern2("gdal_");
+  ifstream file(inputFilename, ios::in); 
+  if(file)  
+  {
+	string line; 
+	while(getline(file, line))
+	{
+		if (line.find(pattern1) !=  string::npos)
+			if (line.find(pattern2) == string::npos)
+				{
+					cout << "WARNING : Internal versions of libtiff/libgeotiff detected without symbol renaming." << endl;
+					return 1; 
+				}
+				
+	}
+  
+   }
+   /*else
+   {
+	    cout << "WARNING  : Can't open file " << inputFilename << endl;
+		return 2;
+   }*/
+
+   
+  return EXIT_SUCCESS;
+
+}
diff --git a/Modules/ThirdParty/GDAL/gdalTest3.cxx b/Modules/ThirdParty/GDAL/gdalTest3.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..23cf870c67a10c57bbf25d11bda4ca6721803685
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalTest3.cxx
@@ -0,0 +1,41 @@
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <cstdlib>
+
+using namespace std;
+
+//----------------- BIGTIFF -------------------------
+int main(int argc, char * argv[])
+{
+
+  const char * inputFilename  = argv[1];
+	
+  string patternDone("done");
+  ifstream file(inputFilename, ios::in); 
+  if(file)  
+  {
+	string line; 
+	bool bigtiff=false;
+	
+	while(getline(file, line))
+		if (line.find(patternDone) !=  string::npos)
+			bigtiff=true;
+	
+	if (!bigtiff)
+	{
+		cout << "WARNING : No BIGTIFF capatilities" << endl;
+		return 1; 
+	}
+  
+   }
+   /*else
+   {
+	    cout << "WARNING  : Can't open file " << inputFilename << endl;
+		return 2;
+   }*/
+
+   
+  return EXIT_SUCCESS;
+
+}
diff --git a/Modules/ThirdParty/GDAL/gdalTest4.cxx b/Modules/ThirdParty/GDAL/gdalTest4.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..53c95d12475a0ac39991f56683a2c69df393d1d8
--- /dev/null
+++ b/Modules/ThirdParty/GDAL/gdalTest4.cxx
@@ -0,0 +1,34 @@
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <cstdlib>
+
+using namespace std;
+
+//----------------- FORMAT -------------------------
+int main(int argc, char * argv[])
+{
+
+  const char * inputFilename  = argv[1];
+  string format(argv[2]);
+  
+  ifstream file(inputFilename, ios::in); 
+  if(file)  
+  {
+	string line; 
+	
+	while(getline(file, line))
+		if (line.find(format) !=  string::npos)
+			return 1; //SUCCESS
+  
+   }
+   /*else
+   {
+	    cout << "WARNING  : Can't open file " << inputFilename << endl;
+		return 2;
+   }*/
+
+   
+  return 0; //FAIL
+
+}
diff --git a/Modules/ThirdParty/GDAL/logoVectoriel.png b/Modules/ThirdParty/GDAL/logoVectoriel.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2e9725816015d0dd9b5176774f1fbd778cdab4a
Binary files /dev/null and b/Modules/ThirdParty/GDAL/logoVectoriel.png differ
diff --git a/Modules/ThirdParty/GDAL/otb-module-init.cmake b/Modules/ThirdParty/GDAL/otb-module-init.cmake
index 1eabf3b79af40ca0786ec5b8c7540e8f4ef58b66..52d115f045e788d05618efd7d39c0d1bb2808abb 100644
--- a/Modules/ThirdParty/GDAL/otb-module-init.cmake
+++ b/Modules/ThirdParty/GDAL/otb-module-init.cmake
@@ -4,4 +4,102 @@ mark_as_advanced(GDAL_INCLUDE_DIR)
 mark_as_advanced(GDAL_LIBRARY)
 mark_as_advanced(GDAL_CONFIG)
 
-# TODO : backport work from ImportGDAL about tiff, geotiff, driver tests, etc...
\ No newline at end of file
+
+if(NOT GDAL_FOUND)
+ message(FATAL_ERROR "Cannot find GDAL. Set GDAL_INCLUDE_DIR and GDAL_LIBRARY")
+endif()
+
+message(STATUS "Check if Gdal qualifies for Orfeo ToolBox")
+
+
+# Prepare bash script
+configure_file(${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest.sh.in ${CMAKE_CURRENT_BINARY_DIR}/gdalTest.sh @ONLY)
+execute_process(COMMAND chmod u+x ${CMAKE_CURRENT_BINARY_DIR}/gdalTest.sh)
+execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/gdalTest.sh)
+
+
+#------------------- TESTS ---------------------
+# Version of GDAL  
+try_run(RUN_RESULT_VAR1 COMPILE_RESULT_VAR1 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest1.cxx ARGS ${TEMP}/testgdal1.txt)
+
+# test libtiff/libgeotiff and test if symbols are renamed (only for internal libtiff/libgeotiff)
+try_run(RUN_RESULT_VAR2 COMPILE_RESULT_VAR2 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest2.cxx ARGS ${TEMP}/testgdal2.txt)
+
+# bigtiff
+try_run(RUN_RESULT_VAR3 COMPILE_RESULT_VAR3 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest3.cxx ARGS ${TEMP}/testgdal3.txt)
+
+# formats
+try_run(GDAL_HAS_HDF COMPILE_RESULT_VAR4 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest4.cxx ARGS ${TEMP}/testgdal4.txt hdf)
+try_run(GDAL_HAS_J2K_JG2000 COMPILE_RESULT_VAR4 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest4.cxx ARGS ${TEMP}/testgdal4.txt jpeg2000)
+try_run(GDAL_HAS_J2K_OPJG COMPILE_RESULT_VAR4 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest4.cxx ARGS ${TEMP}/testgdal4.txt openjpeg)
+try_run(GDAL_HAS_J2K_KAK  COMPILE_RESULT_VAR4 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest4.cxx ARGS ${TEMP}/testgdal4.txt jp2kak)
+try_run(GDAL_HAS_J2K_ECW COMPILE_RESULT_VAR4 ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalTest4.cxx ARGS ${TEMP}/testgdal4.txt ecw)
+
+# Has OGR
+try_compile(GDAL_HAS_OGR ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalOGRTest.cxx CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}")
+
+# Can open tiff file
+try_run(GDAL_CAN_OPEN_TIFF COMPILE_RESULT_OPEN ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalOpenTest.cxx CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" ARGS ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/otb_logo.tif)
+
+# Can open jpeg file
+try_run(GDAL_CAN_OPEN_JPEG COMPILE_RESULT_OPEN ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalOpenTest.cxx CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" ARGS ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/otb_logo.jpeg)
+
+# Can open jpeg2000 file
+try_run(GDAL_CAN_OPEN_JPEG2000 COMPILE_RESULT_OPEN ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalOpenTest.cxx CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" ARGS ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/QB_multicomp_small.jpx)
+
+# Can open geotiff file
+#try_run(GDAL_CAN_OPEN_GEOTIFF COMPILE_RESULT_OPEN ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/gdalOpenTest.cxx CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:PATH=${GDAL_INCLUDE_DIR}" "-DLINK_LIBRARIES:STRING=${GDAL_LIBRARY}" ARGS ${CMAKE_SOURCE_DIR}/Modules/ThirdParty/GDAL/GEOTIFF)
+
+#------------------- TESTS (END)---------------------
+
+
+# Compilations checking
+if (NOT COMPILE_RESULT_VAR1)
+	message(WARNING "Modules/ThirdParty/GDAL/gdalTest1.cxx did not compile.")
+endif()
+if (NOT COMPILE_RESULT_VAR2)
+	message(WARNING "Modules/ThirdParty/GDAL/gdalTest2.cxx did not compile.")
+endif()
+if (NOT COMPILE_RESULT_VAR3)
+	message(WARNING "Modules/ThirdParty/GDAL/gdalTest3.cxx did not compile.")
+endif()
+if (NOT COMPILE_RESULT_VAR4)
+	message(WARNING "Modules/ThirdParty/GDAL/gdalTest4.cxx did not compile.")
+endif()
+if (NOT COMPILE_RESULT_OPEN)
+	message(WARNING "Modules/ThirdParty/GDAL/gdalOpenTest.cxx did not compile.")
+endif()
+
+# Warning messages
+if (${RUN_RESULT_VAR1} EQUAL 1)
+	message(WARNING "Version of GDAL must be >= 1.10")
+endif()
+if (${RUN_RESULT_VAR2} EQUAL 1)
+	message(WARNING "Internal versions of libtiff/libgeotiff detected without symbol renaming (when configuring GDAL, if options --with-libtiff or --with-geotiff are set to 'internal', then options --with-rename-internal-libtiff-symbols and --with-rename-internal-libgeotiff-symbols should be set to 'yes').")
+endif()
+if (${RUN_RESULT_VAR3} EQUAL 1)
+	message(WARNING "No BIGTIFF capatilities.")
+endif()
+if (NOT GDAL_HAS_HDF)
+	message(WARNING "No HDF capatilities.")
+endif()
+if (NOT GDAL_HAS_J2K_JG2000 AND NOT GDAL_HAS_J2K_OPJG AND NOT GDAL_HAS_J2K_KAK AND NOT GDAL_HAS_J2K_ECW)
+	message(WARNING "No Jpeg2000 driver found (compatible drivers are : OpenJpeg, Kakadu, ECW).")
+endif()
+if (NOT GDAL_HAS_OGR)
+	message(WARNING "GDAL doesn't expose OGR library symbols.")
+endif()
+if (NOT GDAL_CAN_OPEN_TIFF)
+	message(WARNING "GDAL can't open tiff files.")
+endif()
+if (NOT GDAL_CAN_OPEN_JPEG)
+	message(WARNING "GDAL can't open jpeg files.")
+endif()
+if (NOT GDAL_CAN_OPEN_JPEG2000)
+	message(WARNING "GDAL can't open jpeg files.")
+endif()
+#if (NOT GDAL_CAN_OPEN_GEOTIFF)
+#	message(WARNING "GDAL can't open geotiff files.")
+#endif()
+
+
diff --git a/Modules/ThirdParty/GDAL/otb_logo.jpeg b/Modules/ThirdParty/GDAL/otb_logo.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..1e4860f55f92573dbfdbcabc6ec55ed0bcf4a3d8
Binary files /dev/null and b/Modules/ThirdParty/GDAL/otb_logo.jpeg differ
diff --git a/Modules/ThirdParty/GDAL/otb_logo.tif b/Modules/ThirdParty/GDAL/otb_logo.tif
new file mode 100644
index 0000000000000000000000000000000000000000..7e468f3b2ab04a846396c6c58930578fa4e65385
Binary files /dev/null and b/Modules/ThirdParty/GDAL/otb_logo.tif differ