diff --git a/Utilities/FLTK/src/filename_list.cxx b/Utilities/FLTK/src/filename_list.cxx
index 9cab43208461a97a35c28632a45a370ec47fb853..ceffb8f79f399d927cb67cbce06cf721525ab9ea 100644
--- a/Utilities/FLTK/src/filename_list.cxx
+++ b/Utilities/FLTK/src/filename_list.cxx
@@ -75,7 +75,7 @@ int fl_filename_list(const char *d, dirent ***list,
   // prototype, most likely so that it can be passed to qsort without any
   // changes:
 
-#if ( defined(__GLIBC__) && __GLIBC_PREREQ(2, 10) )
+#if ( defined(__GLIBC__) && __GLIBC_PREREQ(2, 10) ) || ( defined(__FreeBSD__) )
   int n = scandir(d, list, 0, (int(*)(const dirent **, const dirent **))sort);
 #else
   int n = scandir(d, list, 0, (int(*)(const void*, const void*))sort);
diff --git a/Utilities/otbedison/edge/BgGlobalFc.cpp b/Utilities/otbedison/edge/BgGlobalFc.cpp
index f2fcf3b284566f1aca56e709821ca8c1ac2eefdf..e75079cb67265d8412de823c88a74174b1de3ad6 100644
--- a/Utilities/otbedison/edge/BgGlobalFc.cpp
+++ b/Utilities/otbedison/edge/BgGlobalFc.cpp
@@ -13,8 +13,12 @@
 #include <string.h>
 #include "BgDefaults.h"
 // !!! only MSV
+#ifdef __FreeBSD__
+#include <sys/time.h>
+#else
 #include <sys/timeb.h>
 #include <time.h>
+#endif
 
 double bgSign(double x)
 {
diff --git a/Utilities/otbossim/src/ossim/base/ossimDate.cpp b/Utilities/otbossim/src/ossim/base/ossimDate.cpp
index 38e4e23ea370c84e08b4591d00121db2db72dc3b..6b44a7384a8cd68aa33038023088405e1bfcda47 100644
--- a/Utilities/otbossim/src/ossim/base/ossimDate.cpp
+++ b/Utilities/otbossim/src/ossim/base/ossimDate.cpp
@@ -629,7 +629,7 @@ ossimLocalTm ossimLocalTm::convertToGmt()const
    _tzset();
 #endif
 
-#ifdef __APPLE__
+#if ( defined(__APPLE__) || defined(__FreeBSD__) )
    gmt.tm_sec -= tm_gmtoff; // Seconds east of UTC
 #else
    gmt.tm_sec += timezone; // Seconds west of UTC
diff --git a/Utilities/otbossim/src/ossim/vpfutil/linklist.c b/Utilities/otbossim/src/ossim/vpfutil/linklist.c
index 3540713850de0b6a19aa52fb873ba1b86bc741dd..d9adcebdf410a42bebdc2214eff47a66f3bb80c5 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/linklist.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/linklist.c
@@ -61,10 +61,12 @@
 #include <sys/types.h>
 #include <sys/malloc.h>
 #else
+#ifndef __FreeBSD__
 #include <malloc.h>
 #include <string.h>
 #endif
 #endif
+#endif
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfclip.c b/Utilities/otbossim/src/ossim/vpfutil/vpfclip.c
index 6a4d7ccf099991b9586f10ebf0248721567b0c27..0436d5e751b3a9a9bd8e20a7bde1dabdae65e39f 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfclip.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfclip.c
@@ -40,8 +40,10 @@
 #    include <sys/types.h>
 #    include <sys/malloc.h>
 #  else
-#    include <malloc.h>
-#    include <string.h>
+#    ifndef __FreeBSD__
+#      include <malloc.h>
+#      include <string.h>
+#    endif
 #  endif
 #endif
 
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfcntnt.c b/Utilities/otbossim/src/ossim/vpfutil/vpfcntnt.c
index 82590bf41280c7851aab2af60307cfb678f978a9..1081dd1bef6084129ed2080fdcc3c628d76d6cc0 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfcntnt.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfcntnt.c
@@ -22,7 +22,7 @@
  *    None
  *E
  **************************************************************************/
-#if defined(__CYGWIN__) || defined(__APPLE__)|| defined(_WIN32)
+#if defined(__CYGWIN__) || defined(__APPLE__)|| defined(_WIN32) || defined(__FreeBSD__)
 #  include "ossim/vpfutil/values.h"
 #else
 #  include <values.h>
@@ -48,7 +48,9 @@
 #    endif
 #    define MAXLONG  LONG_MAX
 #  else
-#    include <malloc.h>
+#    ifndef __FreeBSD__
+#      include <malloc.h>
+#    endif
 #  endif
 #endif
 #ifdef _MSC_VER
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfdict.c b/Utilities/otbossim/src/ossim/vpfutil/vpfdict.c
index ea967baeb09b9466d5b13bdccc02f812a5ed094f..ce1584268f75e900185885c36ba7ec652c737773 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfdict.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfdict.c
@@ -12,10 +12,12 @@
 #include <sys/types.h>
 #include <sys/malloc.h>
 #else
+#ifndef __FreeBSD__
 #include <malloc.h>
 #include <string.h>
 #endif
 #endif
+#endif
 
 
 #include <ossim/vpfutil/vpftable.h>
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfdisp.c b/Utilities/otbossim/src/ossim/vpfutil/vpfdisp.c
index e45a4679ce95a31abc9dfbc250599af4ad775836..a9da0492c971ff3dc88c0f29018119bce7dfe3bc 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfdisp.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfdisp.c
@@ -406,7 +406,7 @@ void vpf_display_record( row_type row,
 		  fputs(" - ",fp);
 		  fputs(table.header[i].description,fp);
 		  fputs(": ",fp);
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 		  gcvt(f,6,num);
 #endif
 		  fputs(num,fp);
@@ -422,7 +422,7 @@ void vpf_display_record( row_type row,
 		  if (is_vpf_null_float(fptr[j])) {
 		     fputs("(null)",fp);
 		  } else {
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
 		     gcvt(fptr[j],6,num);
 #endif
 		     fputs(num,fp);
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfmisc.c b/Utilities/otbossim/src/ossim/vpfutil/vpfmisc.c
index c254e34dbf5368f35adfae0bad89f328e5217d5a..3535f746acec933cc98fda79b9223d14a4978250 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfmisc.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfmisc.c
@@ -31,8 +31,10 @@
 #    include <sys/types.h>
 #    include <sys/malloc.h>
 #  else
-#    include <malloc.h>
-#    include <string.h>
+#    ifndef __FreeBSD__
+#      include <malloc.h>
+#      include <string.h>
+#    endif
 #  endif
 #endif
 
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfprim.c b/Utilities/otbossim/src/ossim/vpfutil/vpfprim.c
index a342bb51ae0a51716c120c67868d0933519a74d0..19d07248a98f004d71c1a7c350171ef8893ff7e5 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfprim.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfprim.c
@@ -47,10 +47,12 @@
 #include <sys/types.h>
 #include <sys/malloc.h>
 #else
+#ifndef __FreeBSD__
 #include <malloc.h>
 #include <string.h>
 #endif
 #endif
+#endif
 #include <stdlib.h>
 
 
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfquery.c b/Utilities/otbossim/src/ossim/vpfutil/vpfquery.c
index 6622865a37cb4e31fc43cb302d344c5f19aa4d91..abf0f1fd254451cf27417953d5cd8cc36fe0fd53 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfquery.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfquery.c
@@ -46,10 +46,12 @@
 #include <sys/types.h>
 #include <sys/malloc.h>
 #else
+#ifndef __FreeBSD__
 #include <malloc.h>
 #include <string.h>
 #endif
 #endif
+#endif
 
 
 #ifndef __MSDOS__
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfrelat.c b/Utilities/otbossim/src/ossim/vpfutil/vpfrelat.c
index 9cd5cd4e1da0743d54e7edaa89dcbfa56f3fc11a..22d4eff2aec685e645ba1f35bb251cc9f0fc7391 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfrelat.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfrelat.c
@@ -50,10 +50,12 @@
 #include <sys/types.h>
 #include <sys/malloc.h>
 #else
+#ifndef __FreeBSD__
 #include <malloc.h>
 #include <string.h>
 #endif
 #endif
+#endif
 
 
 #if defined(__CYGWIN__)||defined(__APPLE__)|| defined(_WIN32)
diff --git a/Utilities/otbossim/src/ossim/vpfutil/vpfselec.c b/Utilities/otbossim/src/ossim/vpfutil/vpfselec.c
index 637c4651fea9e1f01a655d58611265e21e00c318..f5af24ed2d1e377e3d6e2cdd797c753231dced5c 100644
--- a/Utilities/otbossim/src/ossim/vpfutil/vpfselec.c
+++ b/Utilities/otbossim/src/ossim/vpfutil/vpfselec.c
@@ -32,10 +32,12 @@
 #include <sys/types.h>
 #include <sys/malloc.h>
 #else
+#ifndef __FreeBSD__
 #include <malloc.h>
 #include <string.h>
 #endif
 #endif
+#endif
 
 
 #ifdef __MSDOS__