From 91618ab37c112327b768759493afc104a037389a Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Thu, 10 Feb 2022 21:38:04 +0100
Subject: [PATCH] starpu/interface: Add a cmake option to check for existence
 of reuse_data_on_node field

---
 runtime/starpu/CMakeLists.txt                | 8 ++++++++
 runtime/starpu/include/chameleon_starpu.h.in | 1 +
 2 files changed, 9 insertions(+)

diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt
index 3ba1927ec..98cde2e99 100644
--- a/runtime/starpu/CMakeLists.txt
+++ b/runtime/starpu/CMakeLists.txt
@@ -28,6 +28,8 @@
 ###
 cmake_minimum_required(VERSION 3.1)
 
+include(CheckStructHasMember)
+
 set(CHAMELEON_STARPU_VERSION "1.3" CACHE STRING "necessary STARPU API version")
 
 find_package(STARPU ${CHAMELEON_STARPU_VERSION} REQUIRED)
@@ -38,6 +40,7 @@ if ( STARPU_FOUND )
   message("-- ${Blue}Add definition CHAMELEON_SCHED_STARPU"
     " - Activate StarPU in Chameleon${ColourReset}")
   get_target_property(CMAKE_REQUIRED_LIBRARIES MORSE::STARPU INTERFACE_LINK_LIBRARIES)
+  get_target_property(CMAKE_REQUIRED_INCLUDES  MORSE::STARPU INTERFACE_INCLUDE_DIRECTORIES)
   check_function_exists(starpu_data_idle_prefetch_on_node HAVE_STARPU_IDLE_PREFETCH)
   if ( HAVE_STARPU_IDLE_PREFETCH )
     message("-- ${Blue}Add definition HAVE_STARPU_IDLE_PREFETCH${ColourReset}")
@@ -70,6 +73,10 @@ if ( STARPU_FOUND )
   if ( HAVE_STARPU_DATA_PEEK )
     message("-- ${Blue}Add definition HAVE_STARPU_DATA_PEEK${ColourReset}")
   endif()
+  check_struct_has_member( "struct starpu_data_interface_ops" reuse_data_on_node "starpu_data_interfaces.h" HAVE_STARPU_REUSE_DATA_ON_NODE LANGUAGE "C" )
+  if ( HAVE_STARPU_REUSE_DATA_ON_NODE )
+    message("-- ${Blue}Add definition HAVE_STARPU_REUSE_DATA_ON_NODE${ColourReset}")
+  endif()
 
   if (CHAMELEON_USE_MPI)
     # Add MPI in case StarPU don't have a public dependency on it
@@ -120,6 +127,7 @@ if ( STARPU_FOUND )
     endif()
   endif()
   unset(CMAKE_REQUIRED_LIBRARIES)
+  unset(CMAKE_REQUIRED_INCLUDES)
 endif ( STARPU_FOUND )
 
 configure_file("include/chameleon_starpu.h.in"
diff --git a/runtime/starpu/include/chameleon_starpu.h.in b/runtime/starpu/include/chameleon_starpu.h.in
index e9fc23d52..315610817 100644
--- a/runtime/starpu/include/chameleon_starpu.h.in
+++ b/runtime/starpu/include/chameleon_starpu.h.in
@@ -34,6 +34,7 @@
 #cmakedefine HAVE_STARPU_DATA_SET_OOC_FLAG
 #cmakedefine HAVE_STARPU_INTERFACE_COPY2D
 #cmakedefine HAVE_STARPU_DATA_PEEK
+#cmakedefine HAVE_STARPU_REUSE_DATA_ON_NODE
 #cmakedefine HAVE_STARPU_MPI_DATA_MIGRATE
 #cmakedefine HAVE_STARPU_MPI_DATA_REGISTER
 #cmakedefine HAVE_STARPU_MPI_COMM_RANK
-- 
GitLab