diff --git a/CMakeLists.txt b/CMakeLists.txt
index fb03c31524e060374dfdc66796ac5ecf896644b2..c7c6f09dea723fda009a14afacd20bb36c650ffe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -685,6 +685,14 @@ if( CHAMELEON_SCHED_STARPU )
             set(HAVE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS 1)
             message("-- ${Blue}Add definition HAVE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS${ColourReset}")
         endif()
+        check_function_exists(starpu_mpi_data_migrate STARPU_MPI_DATA_MIGRATE_FOUND)
+        if ( STARPU_MPI_DATA_MIGRATE_FOUND )
+            set(HAVE_STARPU_MPI_DATA_MIGRATE 1)
+            message("-- ${Blue}Add definition HAVE_STARPU_MPI_DATA_MIGRATE${ColourReset}")
+        elseif(CHAMELEON_USE_MIGRATE)
+            set(CHAMELEON_USE_MIGRATE "OFF")
+            message("-- CHAMELEON_USE_MIGRATE is turned OFF because starpu_mpi_data_migrate not found")
+        endif()
         if(CHAMELEON_ENABLE_TRACING)
             # check if fxt profiling is accessible in starpu and activate it in chameleon
             unset(STARPU_FXT_START_PROFILING_FOUND CACHE)
diff --git a/runtime/starpu/include/chameleon_starpu.h.in b/runtime/starpu/include/chameleon_starpu.h.in
index 8b7d7cf625ebebbe256903bd236535b25f81cf62..699659c7ce6d813a1d8957944b369a377d0fbfbb 100644
--- a/runtime/starpu/include/chameleon_starpu.h.in
+++ b/runtime/starpu/include/chameleon_starpu.h.in
@@ -30,6 +30,7 @@
 #cmakedefine HAVE_STARPU_DATA_WONT_USE
 #cmakedefine HAVE_STARPU_DATA_SET_COORDINATES
 #cmakedefine HAVE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS
+#cmakedefine HAVE_STARPU_MPI_DATA_MIGRATE
 #cmakedefine HAVE_STARPU_MPI_DATA_REGISTER
 #cmakedefine HAVE_STARPU_MPI_COMM_RANK
 #cmakedefine HAVE_STARPU_MPI_CACHED_RECEIVE