diff --git a/Code/IO/CMakeLists.txt b/Code/IO/CMakeLists.txt
index 4eac3f8aea86c7cd3e74e93e52b443e5dd2e116b..e052dba34c68bd35c7f8eda7009a5e7b57bc30de 100755
--- a/Code/IO/CMakeLists.txt
+++ b/Code/IO/CMakeLists.txt
@@ -18,28 +18,21 @@ ENDIF( NOT OTB_USE_CURL )
 # Case for release 2.2.1
 # otbopenjpeg
 IF(OTB_USE_JPEG2000)
-  IF(OTB_BUILD_SHARED_LIBS)
-    ADD_DEFINITIONS(-DOPJ_EXPORTS)
-  ELSE(OTB_BUILD_SHARED_LIBS)
-    ADD_DEFINITIONS(-DOPJ_STATIC)
-  ENDIF(OTB_BUILD_SHARED_LIBS)
+  IF(WIN32)
+    IF(OTB_BUILD_SHARED_LIBS)
+      ADD_DEFINITIONS(-DOPJ_EXPORTS)
+    ELSE(OTB_BUILD_SHARED_LIBS)
+      ADD_DEFINITIONS(-DOPJ_STATIC)
+    ENDIF(OTB_BUILD_SHARED_LIBS)
+  ENDIF(WIN32)
 ENDIF(OTB_USE_JPEG2000)
 
 
 ADD_LIBRARY(OTBIO ${OTBIO_SRCS})
-#PROVISOIRE
-IF(OTB_USE_EXTERNAL_ITK)
-  TARGET_LINK_LIBRARIES (OTBIO gdal OTBCommon ITKIO ITKCommon otbossim dxf )
-ELSE(OTB_USE_EXTERNAL_ITK)
-# Case for release 2.2.1
-## TARGET_LINK_LIBRARIES (OTBIO gdal OTBCommon ITKIO ITKCommon otbossim dxf otbopenjpeg)
-#TARGET_LINK_LIBRARIES (OTBIO gdal OTBCommon ITKIO ITKCommon otbossim dxf)
-  IF(OTB_USE_JPEG2000)
-    TARGET_LINK_LIBRARIES (OTBIO gdal OTBCommon ITKIO ITKCommon otbossim dxf otbopenjpeg)
-  ELSE(OTB_USE_JPEG2000)
-    TARGET_LINK_LIBRARIES (OTBIO gdal OTBCommon ITKIO ITKCommon otbossim dxf)
-  ENDIF(OTB_USE_JPEG2000)
-ENDIF(OTB_USE_EXTERNAL_ITK)
+TARGET_LINK_LIBRARIES (OTBIO gdal OTBCommon ITKIO ITKCommon otbossim dxf )
+IF( OTB_USE_JPEG2000 AND NOT OTB_USE_EXTERNAL_ITK)
+    TARGET_LINK_LIBRARIES (OTBIO otbopenjpeg)
+ENDIF( OTB_USE_JPEG2000 AND NOT OTB_USE_EXTERNAL_ITK)
 
 IF( OTB_USE_CURL )
     TARGET_LINK_LIBRARIES (OTBIO ${CURL_LIBRARY})
diff --git a/Code/IO/otbJPEG2000ImageIO.h b/Code/IO/otbJPEG2000ImageIO.h
index ed0b33e987ae16eb5b35b362fa7b02082542a983..fccd87fb2ebc0ebd8d5121829db10f3719893886 100755
--- a/Code/IO/otbJPEG2000ImageIO.h
+++ b/Code/IO/otbJPEG2000ImageIO.h
@@ -24,9 +24,9 @@
 #define USE_OPJ_DEPRECATED
 #endif
 
-extern "C" {
+//extern "C" {
 #include "openjpeg.h"
-}
+//}
 
 namespace otb
 {
diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index 25db6a6a429f4d6fb1c31ecff48eac92a72f43c6..84aa4ae255c7482763147d925caaf37fdec5bde0 100755
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -1568,6 +1568,10 @@ TARGET_LINK_LIBRARIES(otbIOTests12 OTBIO OTBCommon  gdal ITKIO ITKCommon dxf)
 
 # Case for releae 2.2.1
 IF(OTB_USE_JPEG2000 AND NOT OTB_USE_EXTERNAL_ITK)
+   IF(NOT BUILD_SHARED_LIBS)
+      ADD_DEFINITIONS(-DOPJ_STATIC)
+   ENDIF(NOT BUILD_SHARED_LIBS)
+
    ADD_EXECUTABLE(otbIOTests13 otbIOTests13.cxx ${BasicIO_SRCS13})
    TARGET_LINK_LIBRARIES(otbIOTests13 OTBIO OTBCommon  gdal ITKIO ITKCommon dxf otbopenjpeg)
 ENDIF(OTB_USE_JPEG2000 AND NOT OTB_USE_EXTERNAL_ITK)
diff --git a/Testing/Code/IO/otbStreamingImageFileWriterTestCalculateNumberOfDivisions.cxx b/Testing/Code/IO/otbStreamingImageFileWriterTestCalculateNumberOfDivisions.cxx
index 4dcf1903fe0cb184abfa66b79f2a9050277985c9..a260f1bb78e539958718414ec444370e7befb135 100755
--- a/Testing/Code/IO/otbStreamingImageFileWriterTestCalculateNumberOfDivisions.cxx
+++ b/Testing/Code/IO/otbStreamingImageFileWriterTestCalculateNumberOfDivisions.cxx
@@ -25,6 +25,7 @@
 
 #include "otbImage.h"
 
+
 #include "otbImageFileReader.h"
 #include "otbStreamingImageFileWriter.h"
 
diff --git a/Testing/Utilities/CMakeLists.txt b/Testing/Utilities/CMakeLists.txt
index 4a3f161c667bcfa30c0f984802a2a1246ff65960..b274e3d1261fabf4211605cf1b1139e85901035a 100644
--- a/Testing/Utilities/CMakeLists.txt
+++ b/Testing/Utilities/CMakeLists.txt
@@ -420,13 +420,18 @@ itkScaleInvariantFeatureImageFilterTest.cxx
 
 # Case for release 2.2.1
 IF(OTB_USE_JPEG2000 AND NOT OTB_USE_EXTERNAL_ITK)
-  SET(UtilitiesTests_SRCS ${UtilitiesTests_SRCS} openJpegEncoder.cxx openJpegDecoder.cxx)
+  SET(UtilitiesTests_SRCS ${UtilitiesTests_SRCS}  openJpegEncoder.cxx openJpegDecoder.cxx)
 ENDIF(OTB_USE_JPEG2000 AND NOT OTB_USE_EXTERNAL_ITK)
 
 INCLUDE_DIRECTORIES("${OTBTesting_BINARY_DIR}")
 
 INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}")
 
+
+IF(NOT BUILD_SHARED_LIBS)
+  ADD_DEFINITIONS(-DOPJ_STATIC)
+ENDIF(NOT BUILD_SHARED_LIBS)
+
 ADD_EXECUTABLE(otbUtilitiesTests otbUtilitiesTests.cxx ${UtilitiesTests_SRCS})
 TARGET_LINK_LIBRARIES(otbUtilitiesTests OTBIO OTBCommon gdal ITKIO ITKAlgorithms ITKStatistics ITKCommon otbossim otbsvm otb6S tinyXML )
 
diff --git a/Testing/Utilities/openJpegDecoder.cxx b/Testing/Utilities/openJpegDecoder.cxx
index 9a8e918c2d1bf848ddd030918416f9c17ea95b41..e260fbb2061e735e2b8cc1f5718877f76dbadf5b 100644
--- a/Testing/Utilities/openJpegDecoder.cxx
+++ b/Testing/Utilities/openJpegDecoder.cxx
@@ -1,233 +1,233 @@
-/*
- * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-// Modif Otb-dev, this option is set in CMakeLists.txt
-//#define USE_OPJ_DEPRECATED
-
-/* set this macro to enable profiling for the given test */
-/* warning : in order to be effective, openjpeg must have been built with profiling enabled !! */
-//#define _PROFILE
-
-#include "openjpeg.h"
-#include "profile.h"
-#include <stdlib.h>
-
-#define DA_X0 0
-#define DA_Y0 0
-#define DA_X1 1000
-#define DA_Y1 1000
-#define INPUT_FILE			"test.j2k"
-
-/* -------------------------------------------------------------------------- */
-
-/**
-sample error debug callback expecting no client object
-*/
-void _openJpegDecoder_error_callback(const char *msg, void *client_data) {
-	(void)client_data;
-	fprintf(stdout, "[ERROR] %s", msg);
-}
-/**
-sample warning debug callback expecting no client object
-*/
-void _openJpegDecoder_warning_callback(const char *msg, void *client_data) {
-	(void)client_data;
-	fprintf(stdout, "[WARNING] %s", msg);
-}
-/**
-sample debug callback expecting no client object
-*/
-void _openJpegDecoder_info_callback(const char *msg, void *client_data) {
-	(void)client_data;
-	fprintf(stdout, "[INFO] %s", msg);
-}
-
-/* -------------------------------------------------------------------------- */
-
-int openJpegDecoder(int argc, char * argv[])
-{
-	opj_dparameters_t l_param;
-	opj_codec_t * l_codec;
-	opj_image_t * l_image;
-	FILE * l_file;
-	opj_stream_t * l_stream;
-	OPJ_UINT32 l_data_size;
-	OPJ_UINT32 l_max_data_size = 1000;
-	OPJ_UINT32 l_tile_index;
-	OPJ_BYTE * l_data = (OPJ_BYTE *) malloc(1000);
-	//bool l_go_on = true;
-	OPJ_BOOL l_go_on = true;
-	OPJ_INT32 l_tile_x0,l_tile_y0;
-	OPJ_UINT32 l_tile_width,l_tile_height,l_nb_tiles_x,l_nb_tiles_y,l_nb_comps;
-	OPJ_INT32 l_current_tile_x0,l_current_tile_y0,l_current_tile_x1,l_current_tile_y1;
-	
-	PROFINIT();
-
-
-	if
-		(! l_data)
-	{
-		return 1;
-	}
-	opj_set_default_decoder_parameters(&l_param);
-
-	/** you may here add custom decoding parameters */
-	/* do not use layer decoding limitations */
-	l_param.cp_layer = 0;
-
-	/* do not use resolutions reductions */
-	l_param.cp_reduce = 0;
-
-	/* to decode only a part of the image data */
-	//opj_restrict_decoding(&l_param,0,0,1000,1000);
-	
-	l_codec = opj_create_decompress(CODEC_J2K);
-	if
-		(! l_codec)
-	{
-		free(l_data);
-		return 1;
-	}
-
-	/* catch events using our callbacks and give a local context */		
-	opj_set_info_handler(l_codec, _openJpegDecoder_info_callback,00);
-	opj_set_warning_handler(l_codec, _openJpegDecoder_warning_callback,00);
-	opj_set_error_handler(l_codec, _openJpegDecoder_error_callback,00);
-	
-	if
-		(! opj_setup_decoder(l_codec,&l_param))
-	{
-		free(l_data);
-		opj_destroy_codec(l_codec);
-		return 1;
-	}
-	
-	l_file = fopen(INPUT_FILE,"rb");
-	if
-		(! l_file)
-	{
-		fprintf(stdout, "Error opening input file\n");
-		free(l_data);
-		opj_destroy_codec(l_codec);
-		return 1;
-	}
-
-	l_stream = opj_stream_create_default_file_stream(l_file,true);
-
-	if
-		(! opj_read_header(l_codec,
-							&l_image,
-							&l_tile_x0,
-							&l_tile_y0,
-							&l_tile_width,
-							&l_tile_height,
-							&l_nb_tiles_x,
-							&l_nb_tiles_y,
-							l_stream))
-	{
-		free(l_data);
-		opj_stream_destroy(l_stream);
-		fclose(l_file);
-		opj_destroy_codec(l_codec);
-		return 1;
-	}
-	printf("Setting decoding area to %d,%d,%d,%d\n", DA_X0, DA_Y0, DA_X1, DA_Y1);
-	opj_set_decode_area(l_codec, DA_X0, DA_Y0, DA_X1, DA_Y1);
-	while
-		(l_go_on)
-	{
-		if
-			(! opj_read_tile_header(l_codec,
-						&l_tile_index,
-						&l_data_size,
-						&l_current_tile_x0,
-						&l_current_tile_y0,
-						&l_current_tile_x1,
-						&l_current_tile_y1,
-						&l_nb_comps,
-						&l_go_on,
-						l_stream))
-		{
-			free(l_data);
-			opj_stream_destroy(l_stream);
-			fclose(l_file);
-			opj_destroy_codec(l_codec);
-			opj_image_destroy(l_image);
-			return 1;
-		}
-		if
-			(l_go_on)
-		{
-			if
-				(l_data_size > l_max_data_size)
-			{
-				l_data = (OPJ_BYTE *) realloc(l_data,l_data_size);
-				if
-					(! l_data)
-				{
-					opj_stream_destroy(l_stream);
-					fclose(l_file);
-					opj_destroy_codec(l_codec);
-					opj_image_destroy(l_image);
-					return 1;
-				}
-				l_max_data_size = l_data_size;
-			}
-
-			if
-				(! opj_decode_tile_data(l_codec,l_tile_index,l_data,l_data_size,l_stream))
-			{
-				free(l_data);
-				opj_stream_destroy(l_stream);
-				fclose(l_file);
-				opj_destroy_codec(l_codec);
-				opj_image_destroy(l_image);
-				return 1;
-			}
-			/** now should inspect image to know the reduction factor and then how to behave with data */
-		}
-	}
-	if
-		(! opj_end_decompress(l_codec,l_stream))
-	{
-		free(l_data);
-		opj_stream_destroy(l_stream);
-		fclose(l_file);
-		opj_destroy_codec(l_codec);
-		opj_image_destroy(l_image);
-		return 1;
-	}
-	free(l_data);
-	opj_stream_destroy(l_stream);
-	fclose(l_file);
-	opj_destroy_codec(l_codec);
-	opj_image_destroy(l_image);
-
-	// Print profiling
-	PROFPRINT();
-
-	return 0;
-}
+/*
+ * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// Modif Otb-dev, this option is set in CMakeLists.txt
+//#define USE_OPJ_DEPRECATED
+
+/* set this macro to enable profiling for the given test */
+/* warning : in order to be effective, openjpeg must have been built with profiling enabled !! */
+//#define _PROFILE
+
+#include "openjpeg.h"
+#include "profile.h"
+#include <stdlib.h>
+
+#define DA_X0 0
+#define DA_Y0 0
+#define DA_X1 1000
+#define DA_Y1 1000
+#define INPUT_FILE			"test.j2k"
+
+/* -------------------------------------------------------------------------- */
+
+/**
+sample error debug callback expecting no client object
+*/
+void _openJpegDecoder_error_callback(const char *msg, void *client_data) {
+	(void)client_data;
+	fprintf(stdout, "[ERROR] %s", msg);
+}
+/**
+sample warning debug callback expecting no client object
+*/
+void _openJpegDecoder_warning_callback(const char *msg, void *client_data) {
+	(void)client_data;
+	fprintf(stdout, "[WARNING] %s", msg);
+}
+/**
+sample debug callback expecting no client object
+*/
+void _openJpegDecoder_info_callback(const char *msg, void *client_data) {
+	(void)client_data;
+	fprintf(stdout, "[INFO] %s", msg);
+}
+
+/* -------------------------------------------------------------------------- */
+
+int openJpegDecoder(int argc, char * argv[])
+{
+	opj_dparameters_t l_param;
+	opj_codec_t * l_codec;
+	opj_image_t * l_image;
+	FILE * l_file;
+	opj_stream_t * l_stream;
+	OPJ_UINT32 l_data_size;
+	OPJ_UINT32 l_max_data_size = 1000;
+	OPJ_UINT32 l_tile_index;
+	OPJ_BYTE * l_data = (OPJ_BYTE *) malloc(1000);
+	//bool l_go_on = true;
+	OPJ_BOOL l_go_on = true;
+	OPJ_INT32 l_tile_x0,l_tile_y0;
+	OPJ_UINT32 l_tile_width,l_tile_height,l_nb_tiles_x,l_nb_tiles_y,l_nb_comps;
+	OPJ_INT32 l_current_tile_x0,l_current_tile_y0,l_current_tile_x1,l_current_tile_y1;
+	
+	PROFINIT();
+
+
+	if
+		(! l_data)
+	{
+		return 1;
+	}
+	opj_set_default_decoder_parameters(&l_param);
+
+	/** you may here add custom decoding parameters */
+	/* do not use layer decoding limitations */
+	l_param.cp_layer = 0;
+
+	/* do not use resolutions reductions */
+	l_param.cp_reduce = 0;
+
+	/* to decode only a part of the image data */
+	//opj_restrict_decoding(&l_param,0,0,1000,1000);
+	
+	l_codec = opj_create_decompress(CODEC_J2K);
+	if
+		(! l_codec)
+	{
+		free(l_data);
+		return 1;
+	}
+
+	/* catch events using our callbacks and give a local context */		
+	opj_set_info_handler(l_codec, _openJpegDecoder_info_callback,00);
+	opj_set_warning_handler(l_codec, _openJpegDecoder_warning_callback,00);
+	opj_set_error_handler(l_codec, _openJpegDecoder_error_callback,00);
+	
+	if
+		(! opj_setup_decoder(l_codec,&l_param))
+	{
+		free(l_data);
+		opj_destroy_codec(l_codec);
+		return 1;
+	}
+	
+	l_file = fopen(INPUT_FILE,"rb");
+	if
+		(! l_file)
+	{
+		fprintf(stdout, "Error opening input file\n");
+		free(l_data);
+		opj_destroy_codec(l_codec);
+		return 1;
+	}
+
+	l_stream = opj_stream_create_default_file_stream(l_file,true);
+
+	if
+		(! opj_read_header(l_codec,
+							&l_image,
+							&l_tile_x0,
+							&l_tile_y0,
+							&l_tile_width,
+							&l_tile_height,
+							&l_nb_tiles_x,
+							&l_nb_tiles_y,
+							l_stream))
+	{
+		free(l_data);
+		opj_stream_destroy(l_stream);
+		fclose(l_file);
+		opj_destroy_codec(l_codec);
+		return 1;
+	}
+	printf("Setting decoding area to %d,%d,%d,%d\n", DA_X0, DA_Y0, DA_X1, DA_Y1);
+	opj_set_decode_area(l_codec, DA_X0, DA_Y0, DA_X1, DA_Y1);
+	while
+		(l_go_on)
+	{
+		if
+			(! opj_read_tile_header(l_codec,
+						&l_tile_index,
+						&l_data_size,
+						&l_current_tile_x0,
+						&l_current_tile_y0,
+						&l_current_tile_x1,
+						&l_current_tile_y1,
+						&l_nb_comps,
+						&l_go_on,
+						l_stream))
+		{
+			free(l_data);
+			opj_stream_destroy(l_stream);
+			fclose(l_file);
+			opj_destroy_codec(l_codec);
+			opj_image_destroy(l_image);
+			return 1;
+		}
+		if
+			(l_go_on)
+		{
+			if
+				(l_data_size > l_max_data_size)
+			{
+				l_data = (OPJ_BYTE *) realloc(l_data,l_data_size);
+				if
+					(! l_data)
+				{
+					opj_stream_destroy(l_stream);
+					fclose(l_file);
+					opj_destroy_codec(l_codec);
+					opj_image_destroy(l_image);
+					return 1;
+				}
+				l_max_data_size = l_data_size;
+			}
+
+			if
+				(! opj_decode_tile_data(l_codec,l_tile_index,l_data,l_data_size,l_stream))
+			{
+				free(l_data);
+				opj_stream_destroy(l_stream);
+				fclose(l_file);
+				opj_destroy_codec(l_codec);
+				opj_image_destroy(l_image);
+				return 1;
+			}
+			/** now should inspect image to know the reduction factor and then how to behave with data */
+		}
+	}
+	if
+		(! opj_end_decompress(l_codec,l_stream))
+	{
+		free(l_data);
+		opj_stream_destroy(l_stream);
+		fclose(l_file);
+		opj_destroy_codec(l_codec);
+		opj_image_destroy(l_image);
+		return 1;
+	}
+	free(l_data);
+	opj_stream_destroy(l_stream);
+	fclose(l_file);
+	opj_destroy_codec(l_codec);
+	opj_image_destroy(l_image);
+
+	// Print profiling
+	PROFPRINT();
+
+	return 0;
+}
diff --git a/Testing/Utilities/openJpegEncoder.cxx b/Testing/Utilities/openJpegEncoder.cxx
index deb93224a7bc406317e349899748fd9cd0cf9cf7..b682bd91163358b0a6cb927c5f5dc6f851e7de96 100644
--- a/Testing/Utilities/openJpegEncoder.cxx
+++ b/Testing/Utilities/openJpegEncoder.cxx
@@ -1,300 +1,302 @@
-/*
- * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-// Modif Otb-dev, this option is set in CMakeLists.txt
-//#define USE_OPJ_DEPRECATED
-
-#include "openjpeg.h"
-#include "profile.h"
-
-#include <stdlib.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#define NUM_COMPS			3
-#define IMAGE_WIDTH			2000
-#define IMAGE_HEIGHT		2000
-#define TILE_WIDTH			1000
-#define TILE_HEIGHT			1000
-#define COMP_PREC			8
-#define OUTPUT_FILE			"test.j2k"
-
-/* -------------------------------------------------------------------------- */
-
-/**
-sample error callback expecting a FILE* client object
-*/
-void _openJpegEncoder_error_callback_file(const char *msg, void *client_data) {
-	FILE *stream = (FILE*)client_data;
-	fprintf(stream, "[ERROR] %s", msg);
-}
-/**
-sample warning callback expecting a FILE* client object
-*/
-void _openJpegEncoder_warning_callback_file(const char *msg, void *client_data) {
-	FILE *stream = (FILE*)client_data;
-	fprintf(stream, "[WARNING] %s", msg);
-}
-/**
-sample error debug callback expecting no client object
-*/
-void _openJpegEncoder_error_callback(const char *msg, void *client_data) {
-	(void)client_data;
-	fprintf(stdout, "[ERROR] %s", msg);
-}
-/**
-sample warning debug callback expecting no client object
-*/
-void _openJpegEncoder_warning_callback(const char *msg, void *client_data) {
-	(void)client_data;
-	fprintf(stdout, "[WARNING] %s", msg);
-}
-/**
-sample debug callback expecting no client object
-*/
-void _openJpegEncoder_info_callback(const char *msg, void *client_data) {
-	(void)client_data;
-	fprintf(stdout, "[INFO] %s", msg);
-}
-
-/* -------------------------------------------------------------------------- */
-
-int openJpegEncoder(int argc, char * argv[])
-{
-	opj_cparameters_t l_param;
-	opj_codec_t * l_codec;
-	opj_image_t * l_image;
-	opj_image_cmptparm_t l_params [NUM_COMPS];
-	FILE * l_file;
-	opj_stream_t * l_stream;
-	OPJ_UINT32 l_nb_tiles = (IMAGE_WIDTH/TILE_WIDTH) * (IMAGE_HEIGHT/TILE_HEIGHT);
-	OPJ_UINT32 l_data_size = TILE_WIDTH * TILE_HEIGHT * NUM_COMPS * (COMP_PREC/8);
-
-	/*	const OPJ_FLOAT32 l_mct [] = 
-	{
-		1 , 0 , 0 ,
-		0 , 1 , 0 ,
-		0 , 0 , 1
-	};
-
-	const OPJ_INT32 l_offsets [] = 
-	{
-		128 , 128 , 128
-		};*/
-
-	opj_image_cmptparm_t * l_current_param_ptr;
-	OPJ_UINT32 i;
-	OPJ_BYTE *l_data;
-
-	PROFINIT();
-	l_data =(OPJ_BYTE*) malloc( TILE_WIDTH * TILE_HEIGHT * NUM_COMPS * (COMP_PREC/8) *sizeof(OPJ_BYTE));
-	
-	fprintf(stdout, "Encoding random values -> keep in mind that this is very hard to compress\n");
-	for
-		(i=0;i<l_data_size;++i)
-	{
-		l_data[i] = rand();
-	}
-	
-	opj_set_default_encoder_parameters(&l_param);
-	/** you may here add custom encoding parameters */
-	/* rate specifications */
-	/** number of quality layers in the stream */
-	l_param.tcp_numlayers = 1;
-	l_param.cp_fixed_quality = 1;
-	l_param.tcp_distoratio[0] = 20;
-	/* is using others way of calculation */
-	/* l_param.cp_disto_alloc = 1 or l_param.cp_fixed_alloc = 1 */
-	/* l_param.tcp_rates[0] = ... */
-	
-
-	/* tile definitions parameters */
-	/* position of the tile grid aligned with the image */
-	l_param.cp_tx0 = 0;
-	l_param.cp_ty0 = 0;
-	/* tile size, we are using tile based encoding */
-	l_param.tile_size_on = true;
-	l_param.cp_tdx = TILE_WIDTH;
-	l_param.cp_tdy = TILE_HEIGHT;
-	
-	/* use irreversible encoding ?*/
-	l_param.irreversible = 1;
-
-	/* do not bother with mct, the rsiz is set when calling opj_set_MCT*/
-	/*l_param.cp_rsiz = STD_RSIZ;*/
-	
-	/* no cinema */
-	/*l_param.cp_cinema = 0;*/
-	
-	/* no not bother using SOP or EPH markers, do not use custom size precinct */
-	/* number of precincts to specify */
-	/* l_param.csty = 0;*/
-	/* l_param.res_spec = ... */
-	/* l_param.prch_init[i] = .. */
-	/* l_param.prcw_init[i] = .. */
-
-	
-	/* do not use progression order changes */
-	/*l_param.numpocs = 0;*/
-	/* l_param.POC[i].... */
-
-	/* do not restrain the size for a component.*/
-	/* l_param.max_comp_size = 0; */
-	
-	/** block encoding style for each component, do not use at the moment */
-	/** J2K_CCP_CBLKSTY_TERMALL, J2K_CCP_CBLKSTY_LAZY, J2K_CCP_CBLKSTY_VSC, J2K_CCP_CBLKSTY_SEGSYM, J2K_CCP_CBLKSTY_RESET */
-	/* l_param.mode = 0;*/
-
-	/** number of resolutions */
-	l_param.numresolution = 6;
-
-	/** progression order to use*/
-	/** LRCP, RLCP, RPCL, PCRL, CPRL */
-	l_param.prog_order = LRCP;
-	
-	/** no "region" of interest, more precisally component */
-	/* l_param.roi_compno = -1; */
-	/* l_param.roi_shift = 0; */
-	
-	/* we are not using multiple tile parts for a tile. */
-	/* l_param.tp_on = 0; */
-	/* l_param.tp_flag = 0; */	
-	
-	/* if we are using mct */
-	/* opj_set_MCT(&l_param,l_mct,l_offsets,NUM_COMPS); */
-
-	
-	/* image definition */
-	l_current_param_ptr = l_params;
-	for
-		(i=0;i<NUM_COMPS;++i)
-	{
-		/* do not bother bpp useless */
-		/*l_current_param_ptr->bpp = COMP_PREC;*/
-		l_current_param_ptr->dx = 1;
-		l_current_param_ptr->dy = 1;
-		l_current_param_ptr->h = IMAGE_HEIGHT;
-		l_current_param_ptr->sgnd = 0;
-		l_current_param_ptr->prec = COMP_PREC;
-		l_current_param_ptr->w = IMAGE_WIDTH;
-		l_current_param_ptr->x0 = 0;
-		l_current_param_ptr->y0 = 0;
-		++l_current_param_ptr;
-	}
-
-	l_codec = opj_create_compress(CODEC_J2K);
-	if
-		(! l_codec)
-	{
-		return 1;
-	}
-
-	/* catch events using our callbacks and give a local context */		
-	opj_set_info_handler(l_codec, _openJpegEncoder_info_callback,00);
-	opj_set_warning_handler(l_codec, _openJpegEncoder_warning_callback,00);
-	opj_set_error_handler(l_codec, _openJpegEncoder_error_callback,00);
-	
-	l_image = opj_image_tile_create(NUM_COMPS,l_params,CLRSPC_SRGB);
-	if
-		(! l_image)
-	{
-		opj_destroy_codec(l_codec);
-		return 1;
-	}
-	l_image->x0 = 0;
-	l_image->y0 = 0;
-	l_image->x1 = IMAGE_WIDTH;
-	l_image->y1 = IMAGE_HEIGHT;
-	l_image->color_space = CLRSPC_SRGB;
-	
-	if
-		(! opj_setup_encoder(l_codec,&l_param,l_image))
-	{
-		opj_destroy_codec(l_codec);
-		opj_image_destroy(l_image);
-		return 1;
-	}
-	
-	l_file = fopen(OUTPUT_FILE,"wb");
-	if
-		(! l_file)
-	{
-		opj_destroy_codec(l_codec);
-		opj_image_destroy(l_image);
-		return 1;
-	}
-
-	l_stream = opj_stream_create_default_file_stream(l_file,false);
-
-	if
-		(! opj_start_compress(l_codec,l_image,l_stream))
-	{
-		opj_stream_destroy(l_stream);
-		fclose(l_file);
-		opj_destroy_codec(l_codec);
-		opj_image_destroy(l_image);
-		return 1;
-	}
-	for
-		(i=0;i<l_nb_tiles;++i)
-	{
-		if
-			(! opj_write_tile(l_codec,i,l_data,l_data_size,l_stream))
-		{
-			opj_stream_destroy(l_stream);
-			fclose(l_file);
-			opj_destroy_codec(l_codec);
-			opj_image_destroy(l_image);
-			return 1;
-		}
-	}
-	if
-		(! opj_end_compress(l_codec,l_stream))
-	{
-		opj_stream_destroy(l_stream);
-		fclose(l_file);
-		opj_destroy_codec(l_codec);
-		opj_image_destroy(l_image);
-		return 1;
-	}
-	opj_stream_destroy(l_stream);
-	fclose(l_file);
-	opj_destroy_codec(l_codec);
-	opj_image_destroy(l_image);
-
-	// Print profiling
-	PROFPRINT();
-
-	return 0;
-}
-
-
-
-
-
-
+/*
+ * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// Modif Otb-dev, this option is set in CMakeLists.txt
+//#define USE_OPJ_DEPRECATED
+
+//#define OPJ_STATIC
+
+#include "openjpeg.h"
+#include "profile.h"
+
+#include <stdlib.h>
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+
+#define NUM_COMPS			3
+#define IMAGE_WIDTH			2000
+#define IMAGE_HEIGHT		2000
+#define TILE_WIDTH			1000
+#define TILE_HEIGHT			1000
+#define COMP_PREC			8
+#define OUTPUT_FILE			"test.j2k"
+
+/* -------------------------------------------------------------------------- */
+
+/**
+sample error callback expecting a FILE* client object
+*/
+void _openJpegEncoder_error_callback_file(const char *msg, void *client_data) {
+	FILE *stream = (FILE*)client_data;
+	fprintf(stream, "[ERROR] %s", msg);
+}
+/**
+sample warning callback expecting a FILE* client object
+*/
+void _openJpegEncoder_warning_callback_file(const char *msg, void *client_data) {
+	FILE *stream = (FILE*)client_data;
+	fprintf(stream, "[WARNING] %s", msg);
+}
+/**
+sample error debug callback expecting no client object
+*/
+void _openJpegEncoder_error_callback(const char *msg, void *client_data) {
+	(void)client_data;
+	fprintf(stdout, "[ERROR] %s", msg);
+}
+/**
+sample warning debug callback expecting no client object
+*/
+void _openJpegEncoder_warning_callback(const char *msg, void *client_data) {
+	(void)client_data;
+	fprintf(stdout, "[WARNING] %s", msg);
+}
+/**
+sample debug callback expecting no client object
+*/
+void _openJpegEncoder_info_callback(const char *msg, void *client_data) {
+	(void)client_data;
+	fprintf(stdout, "[INFO] %s", msg);
+}
+
+/* -------------------------------------------------------------------------- */
+
+int openJpegEncoder(int argc, char * argv[])
+{
+	opj_cparameters_t l_param;
+	opj_codec_t * l_codec;
+	opj_image_t * l_image;
+	opj_image_cmptparm_t l_params [NUM_COMPS];
+	FILE * l_file;
+	opj_stream_t * l_stream;
+	OPJ_UINT32 l_nb_tiles = (IMAGE_WIDTH/TILE_WIDTH) * (IMAGE_HEIGHT/TILE_HEIGHT);
+	OPJ_UINT32 l_data_size = TILE_WIDTH * TILE_HEIGHT * NUM_COMPS * (COMP_PREC/8);
+
+	/*	const OPJ_FLOAT32 l_mct [] = 
+	{
+		1 , 0 , 0 ,
+		0 , 1 , 0 ,
+		0 , 0 , 1
+	};
+
+	const OPJ_INT32 l_offsets [] = 
+	{
+		128 , 128 , 128
+		};*/
+
+	opj_image_cmptparm_t * l_current_param_ptr;
+	OPJ_UINT32 i;
+	OPJ_BYTE *l_data;
+
+	PROFINIT();
+	l_data =(OPJ_BYTE*) malloc( TILE_WIDTH * TILE_HEIGHT * NUM_COMPS * (COMP_PREC/8) *sizeof(OPJ_BYTE));
+	
+	fprintf(stdout, "Encoding random values -> keep in mind that this is very hard to compress\n");
+	for
+		(i=0;i<l_data_size;++i)
+	{
+		l_data[i] = rand();
+	}
+	
+	opj_set_default_encoder_parameters(&l_param);
+	/** you may here add custom encoding parameters */
+	/* rate specifications */
+	/** number of quality layers in the stream */
+	l_param.tcp_numlayers = 1;
+	l_param.cp_fixed_quality = 1;
+	l_param.tcp_distoratio[0] = 20;
+	/* is using others way of calculation */
+	/* l_param.cp_disto_alloc = 1 or l_param.cp_fixed_alloc = 1 */
+	/* l_param.tcp_rates[0] = ... */
+	
+
+	/* tile definitions parameters */
+	/* position of the tile grid aligned with the image */
+	l_param.cp_tx0 = 0;
+	l_param.cp_ty0 = 0;
+	/* tile size, we are using tile based encoding */
+	l_param.tile_size_on = true;
+	l_param.cp_tdx = TILE_WIDTH;
+	l_param.cp_tdy = TILE_HEIGHT;
+	
+	/* use irreversible encoding ?*/
+	l_param.irreversible = 1;
+
+	/* do not bother with mct, the rsiz is set when calling opj_set_MCT*/
+	/*l_param.cp_rsiz = STD_RSIZ;*/
+	
+	/* no cinema */
+	/*l_param.cp_cinema = 0;*/
+	
+	/* no not bother using SOP or EPH markers, do not use custom size precinct */
+	/* number of precincts to specify */
+	/* l_param.csty = 0;*/
+	/* l_param.res_spec = ... */
+	/* l_param.prch_init[i] = .. */
+	/* l_param.prcw_init[i] = .. */
+
+	
+	/* do not use progression order changes */
+	/*l_param.numpocs = 0;*/
+	/* l_param.POC[i].... */
+
+	/* do not restrain the size for a component.*/
+	/* l_param.max_comp_size = 0; */
+	
+	/** block encoding style for each component, do not use at the moment */
+	/** J2K_CCP_CBLKSTY_TERMALL, J2K_CCP_CBLKSTY_LAZY, J2K_CCP_CBLKSTY_VSC, J2K_CCP_CBLKSTY_SEGSYM, J2K_CCP_CBLKSTY_RESET */
+	/* l_param.mode = 0;*/
+
+	/** number of resolutions */
+	l_param.numresolution = 6;
+
+	/** progression order to use*/
+	/** LRCP, RLCP, RPCL, PCRL, CPRL */
+	l_param.prog_order = LRCP;
+	
+	/** no "region" of interest, more precisally component */
+	/* l_param.roi_compno = -1; */
+	/* l_param.roi_shift = 0; */
+	
+	/* we are not using multiple tile parts for a tile. */
+	/* l_param.tp_on = 0; */
+	/* l_param.tp_flag = 0; */	
+	
+	/* if we are using mct */
+	/* opj_set_MCT(&l_param,l_mct,l_offsets,NUM_COMPS); */
+
+	
+	/* image definition */
+	l_current_param_ptr = l_params;
+	for
+		(i=0;i<NUM_COMPS;++i)
+	{
+		/* do not bother bpp useless */
+		/*l_current_param_ptr->bpp = COMP_PREC;*/
+		l_current_param_ptr->dx = 1;
+		l_current_param_ptr->dy = 1;
+		l_current_param_ptr->h = IMAGE_HEIGHT;
+		l_current_param_ptr->sgnd = 0;
+		l_current_param_ptr->prec = COMP_PREC;
+		l_current_param_ptr->w = IMAGE_WIDTH;
+		l_current_param_ptr->x0 = 0;
+		l_current_param_ptr->y0 = 0;
+		++l_current_param_ptr;
+	}
+
+	l_codec = opj_create_compress(CODEC_J2K);
+	if
+		(! l_codec)
+	{
+		return 1;
+	}
+
+	/* catch events using our callbacks and give a local context */		
+	opj_set_info_handler(l_codec, _openJpegEncoder_info_callback,00);
+	opj_set_warning_handler(l_codec, _openJpegEncoder_warning_callback,00);
+	opj_set_error_handler(l_codec, _openJpegEncoder_error_callback,00);
+	
+	l_image = opj_image_tile_create(NUM_COMPS,l_params,CLRSPC_SRGB);
+	if
+		(! l_image)
+	{
+		opj_destroy_codec(l_codec);
+		return 1;
+	}
+	l_image->x0 = 0;
+	l_image->y0 = 0;
+	l_image->x1 = IMAGE_WIDTH;
+	l_image->y1 = IMAGE_HEIGHT;
+	l_image->color_space = CLRSPC_SRGB;
+	
+	if
+		(! opj_setup_encoder(l_codec,&l_param,l_image))
+	{
+		opj_destroy_codec(l_codec);
+		opj_image_destroy(l_image);
+		return 1;
+	}
+	
+	l_file = fopen(OUTPUT_FILE,"wb");
+	if
+		(! l_file)
+	{
+		opj_destroy_codec(l_codec);
+		opj_image_destroy(l_image);
+		return 1;
+	}
+
+	l_stream = opj_stream_create_default_file_stream(l_file,false);
+
+	if
+		(! opj_start_compress(l_codec,l_image,l_stream))
+	{
+		opj_stream_destroy(l_stream);
+		fclose(l_file);
+		opj_destroy_codec(l_codec);
+		opj_image_destroy(l_image);
+		return 1;
+	}
+	for
+		(i=0;i<l_nb_tiles;++i)
+	{
+		if
+			(! opj_write_tile(l_codec,i,l_data,l_data_size,l_stream))
+		{
+			opj_stream_destroy(l_stream);
+			fclose(l_file);
+			opj_destroy_codec(l_codec);
+			opj_image_destroy(l_image);
+			return 1;
+		}
+	}
+	if
+		(! opj_end_compress(l_codec,l_stream))
+	{
+		opj_stream_destroy(l_stream);
+		fclose(l_file);
+		opj_destroy_codec(l_codec);
+		opj_image_destroy(l_image);
+		return 1;
+	}
+	opj_stream_destroy(l_stream);
+	fclose(l_file);
+	opj_destroy_codec(l_codec);
+	opj_image_destroy(l_image);
+
+	// Print profiling
+	PROFPRINT();
+
+	return 0;
+}
+
+
+
+
+
+
diff --git a/Utilities/otbopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/CMakeLists.txt
index 105a774814deea5bf476fd04b2d83574aa98d1ba..e1a507d2bf796212c1a610d0ac59e0ead36e1a96 100755
--- a/Utilities/otbopenjpeg/CMakeLists.txt
+++ b/Utilities/otbopenjpeg/CMakeLists.txt
@@ -118,6 +118,22 @@ IF(CMAKE_COMPILER_IS_GNUCC)
   SET(CMAKE_C_FLAGS_RELEASE "-ffast-math ${CMAKE_C_FLAGS_RELEASE}")
 ENDIF(CMAKE_COMPILER_IS_GNUCC)
 
+IF(_MSC_VER)
+  STRING_APPEND( CMAKE_EXE_LINKER_FLAGS_DEBUG      "/NODEFAULTLIB:\"libcmtd.lib\"")
+  STRING_APPEND( CMAKE_EXE_LINKER_FLAGS_RELEASE    "/NODEFAULTLIB:\"libcmt.lib\"")
+  STRING_APPEND( CMAKE_SHARED_LINKER_FLAGS_DEBUG   "/NODEFAULTLIB:\"libcmtd.lib\"")
+  STRING_APPEND( CMAKE_SHARED_LINKER_FLAGS_RELEASE "/NODEFAULTLIB:\"libcmt.lib\"")
+  # make changes persistent
+  SET(CMAKE_EXE_LINKER_FLAGS_DEBUG   ${CMAKE_EXE_LINKER_FLAGS_DEBUG}
+    CACHE STRING "Debug builds linker flags"   FORCE )
+  SET(CMAKE_EXE_LINKER_FLAGS_RELEASE ${CMAKE_EXE_LINKER_FLAGS_RELEASE}
+    CACHE STRING "Release builds linker flags" FORCE )
+  SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}
+	CACHE STRING "flags for linking a DLL in Debug build" FORCE)
+  SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}
+	CACHE STRING "flags for linking a DLL in Debug build" FORCE)  
+ENDIF(_MSC_VER)
+
 #========================================
 # OTB added
 IF(CYGWIN OR MINGW)
diff --git a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
index 11ba80ce0ab84328143179b89035c998418eb68c..b7d19197c844d9f2afa907a40b1a35b1096c8386 100755
--- a/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
+++ b/Utilities/otbopenjpeg/libopenjpeg/CMakeLists.txt
@@ -1,65 +1,65 @@
-INCLUDE_REGULAR_EXPRESSION("^.*$")
-# Defines the source code for the library
-SET(OPENJPEG_SRCS
-  tcd.c
-  bio.c
-  cio.c
-  dwt.c
-  event.c
-  image.c
-  j2k.c
-  j2k_lib.c
-  jp2.c
-  jpt.c
-  mct.c
-  mqc.c
-  openjpeg.c
-  pi.c
-  raw.c
-  t1.c
-  tgt.c
-  profile.c
-  invert.c
-  function_list.c
-  t2.c
-)
-
-# disable gcc warnings
-IF(CMAKE_COMPILER_IS_GNUCC)
-  FOREACH(f ${OPENJPEG_SRCS})
-        SET_SOURCE_FILES_PROPERTIES( ${f} PROPERTIES COMPILE_FLAGS -w )
-  ENDFOREACH(f)
-ENDIF(CMAKE_COMPILER_IS_GNUCC)
-
-# Pass proper definition to preprocessor to generate shared lib
-IF (WIN32)
-  IF (BUILD_SHARED_LIBS)
-    ADD_DEFINITIONS(-DOPJ_EXPORTS)
-  ELSE (BUILD_SHARED_LIBS)
-    ADD_DEFINITIONS(-DOPJ_STATIC)
-  ENDIF (BUILD_SHARED_LIBS)
-ENDIF (WIN32)
-
-
-IF(ENABLE_PROFILING)
-    ADD_DEFINITIONS(-D_PROFILE)
-ENDIF(ENABLE_PROFILING)
-
-ADD_DEFINITIONS(-DUSE_OPJ_DEPRECATED)
-
-# Create the library
-ADD_LIBRARY(${OPENJPEG_LIBRARY_NAME} ${OPENJPEG_SRCS})
-SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME} PROPERTIES
-	${OPENJPEG_LIBRARY_PROPERTIES})
-
-# Install library
-INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}
-RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
-LIBRARY DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
-ARCHIVE DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT Development)
-
-
-# Install includes files
-INSTALL(FILES openjpeg.h
-    DESTINATION ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbopenjpeg/libopenjpeg 
-    COMPONENT Development)
+INCLUDE_REGULAR_EXPRESSION("^.*$")
+# Defines the source code for the library
+SET(OPENJPEG_SRCS
+  tcd.c
+  bio.c
+  cio.c
+  dwt.c
+  event.c
+  image.c
+  j2k.c
+  j2k_lib.c
+  jp2.c
+  jpt.c
+  mct.c
+  mqc.c
+  openjpeg.c
+  pi.c
+  raw.c
+  t1.c
+  tgt.c
+  profile.c
+  invert.c
+  function_list.c
+  t2.c
+)
+
+# disable gcc warnings
+IF(CMAKE_COMPILER_IS_GNUCC)
+  FOREACH(f ${OPENJPEG_SRCS})
+        SET_SOURCE_FILES_PROPERTIES( ${f} PROPERTIES COMPILE_FLAGS -w )
+  ENDFOREACH(f)
+ENDIF(CMAKE_COMPILER_IS_GNUCC)
+
+# Pass proper definition to preprocessor to generate shared lib
+IF (WIN32)
+  IF (BUILD_SHARED_LIBS)
+    ADD_DEFINITIONS(-DOPJ_EXPORTS)
+  ELSE (BUILD_SHARED_LIBS)
+    ADD_DEFINITIONS(-DOPJ_STATIC)
+  ENDIF (BUILD_SHARED_LIBS)
+ENDIF (WIN32)
+
+
+IF(ENABLE_PROFILING)
+    ADD_DEFINITIONS(-D_PROFILE)
+ENDIF(ENABLE_PROFILING)
+
+ADD_DEFINITIONS(-DUSE_OPJ_DEPRECATED)
+
+# Create the library
+ADD_LIBRARY(${OPENJPEG_LIBRARY_NAME} ${OPENJPEG_SRCS})
+SET_TARGET_PROPERTIES(${OPENJPEG_LIBRARY_NAME} PROPERTIES
+	${OPENJPEG_LIBRARY_PROPERTIES})
+
+# Install library
+INSTALL(TARGETS ${OPENJPEG_LIBRARY_NAME}
+RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
+LIBRARY DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
+ARCHIVE DESTINATION ${OTB_INSTALL_LIB_DIR} COMPONENT Development)
+
+
+# Install includes files
+INSTALL(FILES openjpeg.h
+    DESTINATION ${OTB_INSTALL_INCLUDE_DIR}/Utilities/otbopenjpeg/libopenjpeg 
+    COMPONENT Development)