diff --git a/Utilities/otbossimplugins/CMakeLists.txt b/Utilities/otbossimplugins/CMakeLists.txt
index 1280fabd0634c76bf60655b94233e3a7fe81252c..7e4fb3de8eee67228b27ef362a5193efbdcaf71b 100644
--- a/Utilities/otbossimplugins/CMakeLists.txt
+++ b/Utilities/otbossimplugins/CMakeLists.txt
@@ -13,6 +13,9 @@ SET(ossimplugins_SOURCES
 
 
 ADD_LIBRARY(otbossimplugins ${ossimplugins_SOURCES} )
+IF( CYGWIN )
+    TARGET_LINK_LIBRARIES(otbossimplugins otbossim gdal)
+ENDIF( CYGWIN )
 
 INSTALL(TARGETS otbossimplugins
 RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
diff --git a/Utilities/otbsiftfast/libsiftfast.cpp b/Utilities/otbsiftfast/libsiftfast.cpp
index 6c2ee7ca6117513d093fadcff10f365896e5d4d8..b3eaa7422f20f20dd7ded0eef61235d908789f2c 100755
--- a/Utilities/otbsiftfast/libsiftfast.cpp
+++ b/Utilities/otbsiftfast/libsiftfast.cpp
@@ -882,7 +882,7 @@ Keypoint FindMaxMin(Image* imdiff, Image* imgaus, float fscale, Keypoint keypts,
 
     for( int index = 1; index < (int)nbScales+1; ++index) {
         
-#if !defined(_MSC_VER) && defined(__SSE__)
+#if !defined(__CYGWIN__) && !defined(_MSC_VER) && defined(__SSE__)
         GradOriImagesFast(imgaus[index],s_imgrad,s_imorient);
 #else
         GradOriImages(imgaus[index],s_imgrad,s_imorient);
@@ -976,7 +976,7 @@ void GradOriImages(Image image, Image imgrad, Image imorient)
     }
 }
 
-#if !defined(_MSC_VER) && defined(__SSE__)
+#if !defined(__CYGWIN__) && !defined(_MSC_VER) && defined(__SSE__)
 void GradOriImagesFast(Image image, Image imgrad, Image imorient)
 {
     DVSTARTPROFILE();
@@ -1677,7 +1677,7 @@ void DestroyAllResources()
     s_listKeypoints.clear();
 }
 
-#if !defined(_MSC_VER) && defined(__SSE__) && !defined(SIMDMATH_H) // copied from libsimdmath
+#if !defined(__CYGWIN__) && !defined(_MSC_VER) && defined(__SSE__) && !defined(SIMDMATH_H) // copied from libsimdmath
 
 #define DEF_CONST(a,b) static  const vec_float4 a = {b,b,b,b};
 #define DEI_CONST(a,b) static  const vec_int4   a = {b,b,b,b};