diff --git a/CMakeLists.txt b/CMakeLists.txt
index 007941f0026ba0aa90273394d97e8cfe458b5457..27098bf0041fcf4b3f3219ad7eb12ea59155405d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,13 +8,26 @@ STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
 IF(insource)
     MESSAGE(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto ./Build and tapes cmake ../")
 ENDIF(insource)
-
+#
 # Options
+OPTION( SCALFMM_USE_CBLAS "Set to ON to build ScaFMM with BLAS" ON )
 OPTION( BUILD_TESTS "Set to ON to build fonctionnalities Tests" ON )
 OPTION( BUILD_UTESTS "Set to ON to build UTests" ON )
-
+#
+if(SCALFMM_USE_CBLAS )
+OPTION( SCALFMM_USE_MKL "Set to ON to build MKL CBLAS" OFF )
+  IF (    SCALFMM_USE_MKL ) 
+     SET(CBLAS_LIBRARIES "-L$ENV{MKLROOT}/lib  -lmkl_intel_lp64 -lmkl_sequential -lmkl_core")
+  ELSE (    SCALFMM_USE_MKL ) 
+      FIND_PACKAGE(BLAS)
+      SET(CBLAS_LIBRARIES "-lcblas")
+  ENDIF (    SCALFMM_USE_MKL)
+ENDIF(SCALFMM_USE_CBLAS)
+#
 ADD_DEFINITIONS(-O2 -Wall -Wshadow -Wpointer-arith -Wcast-qual)
 
+CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/Sources/ScalFMM_config.h.cmake 
+		${CMAKE_BINARY_DIR}/Sources/ScalFMM_config.h  )
 # Build - lib
 add_subdirectory(Sources)
 
diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt
index d2d1ba16288357502611ca8defbd37f62733a450..cf71843b5f1c9b9839e47240d73c9c17319cb72c 100644
--- a/Sources/CMakeLists.txt
+++ b/Sources/CMakeLists.txt
@@ -15,3 +15,7 @@ add_library(
 	STATIC
 	${source_lib_files}
 )
+INCLUDE_DIRECTORIES(
+     ${CMAKE_BINARY_DIR}/Sources 
+)
+
diff --git a/Sources/Utils/FBlas.hpp b/Sources/Utils/FBlas.hpp
index 30d824c046ac7b26beb86b80a8114fff83f3710c..2c4c94dd58e0ec64c2ffd2a6bc8bc3e3bfb3a709 100644
--- a/Sources/Utils/FBlas.hpp
+++ b/Sources/Utils/FBlas.hpp
@@ -1,8 +1,11 @@
 #ifndef FBLAS_HPP
 #define FBLAS_HPP
-
+#include "ScalFMM_config.h"
+#ifdef  SCALFMM_USE_MKL
+#include <mkl_cblas.h>
+#else
 #include <cblas.h>
-//#include <mkl.h>
+#endif
 
 ///////////////////////////////////////////////////////
 // GEMV
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 9cb02462a10d4a4418b9c887813b6511427ea18a..dfeb7ef514e18f054792029b1792757f274ead10 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -10,8 +10,8 @@ if(OPENMP_FOUND)
 	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
 endif()
 
-#add blass
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lcblas")
+#add CBLAS
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}  ${CBLAS_LIBRARIES}")
 #ADD_DEFINITIONS(-Wl,--start-group $(MKLROOT)/lib/ia32/libmkl_intel.a $(MKLROOT)/lib/ia32/libmkl_sequential.a $(MKLROOT)/lib/ia32/libmkl_core.a -Wl,--end-group -lpthread)
 
 #test
@@ -29,6 +29,9 @@ file(
 	source_tests_files
 	./*.cpp
 )
+INCLUDE_DIRECTORIES(
+     ${CMAKE_BINARY_DIR}/Sources 
+)
 
 # Add execs - 1 cpp = 1 exec
 foreach(exec ${source_tests_files})