From c8a33704273ce29a602dd70b41cd2d89a1f9154c Mon Sep 17 00:00:00 2001
From: Incardona Pietro <incardon@mpi-cbg.de>
Date: Thu, 18 Nov 2021 21:36:58 +0100
Subject: [PATCH] Fixing examples with CMake

---
 CMakeLists.txt                              |  9 ++++++---
 example/Vector/0_simple/CMakeLists.txt      |  7 ++++++-
 example/Vector/7_SPH_dlb/CMakeLists.txt     |  8 +++++++-
 example/Vector/7_SPH_dlb_gpu/CMakeLists.txt | 17 +++++++++++++----
 openfpm_pdata.doc                           |  2 +-
 src/CMakeLists.txt                          |  8 ++++++--
 src/cmake/openfpmConfig-configure.cmake     |  1 +
 7 files changed, 40 insertions(+), 12 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 49515395e..cb9982e95 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@ if (POLICY CMP0074)
   cmake_policy(SET CMP0074 NEW)
 endif()
 
-set(openfpm_VERSION 4.0.0)
+set(openfpm_VERSION 4.1.0)
 
 list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake_modules/)
 
@@ -164,16 +164,19 @@ if (OPENMP_FOUND)
         set(DEFINE_HAVE_OPENMP "#define HAVE_OPENMP")
 endif()
 
+file(READ ${CMAKE_SOURCE_DIR}/src/cmake/openfpmConfig-configure.cmake CMAKE_OPENFPM_CONFIG_VARS)
 if(MPI_FOUND)
 	get_filename_component(OPENFPM_MPI_DEP "${MPI_C_INCLUDE_DIRS}" DIRECTORY)
-	file(READ ${CMAKE_SOURCE_DIR}/src/cmake/openfpmConfig-configure.cmake CMAKE_OPENFPM_CONFIG_VARS)
-	file(WRITE ${CMAKE_SOURCE_DIR}/src/cmake/openfpmConfigVars-configure.cmake "${CMAKE_OPENFPM_CONFIG_VARS}\nset(CMAKE_PREFIX_PATH ${OPENFPM_MPI_DEP}/)")
+	set(CMAKE_OPENFPM_CONFIG_VARS "${CMAKE_OPENFPM_CONFIG_VARS}\nset(CMAKE_PREFIX_PATH ${OPENFPM_MPI_DEP}/)")
 	set(DEFINE_HAVE_MPI "#define HAVE_MPI")
 else()
 	file(WRITE error_code "200")
 	message( FATAL_ERROR "MPI is required in order to install OpenFPM" )
 endif()
 
+set(CMAKE_OPENFPM_CONFIG_VARS "${CMAKE_OPENFPM_CONFIG_VARS}\nmessage(STATUS \"Found OpenFPM version ${openfpm_VERSION} (\$\{CMAKE_CURRENT_LIST_FILE\})\")")
+file(WRITE ${CMAKE_SOURCE_DIR}/src/cmake/openfpmConfig-Vars.cmake "${CMAKE_OPENFPM_CONFIG_VARS}")
+
 if (Boost_FOUND)
 	if ((CUDA_ON_BACKEND STREQUAL "SEQUENTIAL" OR CUDA_ON_BACKEND STREQUAL "OpenMP") AND NOT Boost_CONTEXT_FOUND)
         	file(WRITE error_code "202")
diff --git a/example/Vector/0_simple/CMakeLists.txt b/example/Vector/0_simple/CMakeLists.txt
index 05aa33049..4074d58cb 100644
--- a/example/Vector/0_simple/CMakeLists.txt
+++ b/example/Vector/0_simple/CMakeLists.txt
@@ -1,11 +1,16 @@
 cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
 project(openfpm_pdata LANGUAGES C CXX)
 
+cmake_policy(SET CMP0074 NEW)
+
 set(CMAKE_SKIP_BUILD_RPATH TRUE)   ###### <--------- This is absolutely necessary if you use linear algebra
 
-find_package(openfpm 3.2.0 REQUIRED)
 find_package(Threads)
 find_package(MPI)
+find_package(Boost 1.75.0 COMPONENTS program_options iostreams filesystem fiber context)
+
+# CMAKE_PREFIX_PATH can be used to control where to find OpenFPM, the other way is set the path with openfpm_ROOT and activate policy CMP0074
+find_package(openfpm 3.2.0 REQUIRED)
 
 if (openfpm_FOUND)
 	message("OpenFPM found")
diff --git a/example/Vector/7_SPH_dlb/CMakeLists.txt b/example/Vector/7_SPH_dlb/CMakeLists.txt
index 286edddbc..f59a31e16 100644
--- a/example/Vector/7_SPH_dlb/CMakeLists.txt
+++ b/example/Vector/7_SPH_dlb/CMakeLists.txt
@@ -1,11 +1,17 @@
 cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
 project(openfpm_pdata LANGUAGES C CXX)
 
+cmake_policy(SET CMP0074 NEW)
+
 set(CMAKE_SKIP_BUILD_RPATH TRUE)   ###### <--------- This is absolutely necessary if you use linear algebra
 
-find_package(openfpm 3.2.0 REQUIRED)
+
 find_package(Threads)
 find_package(MPI)
+find_package(Boost 1.75.0 COMPONENTS program_options iostreams filesystem fiber context)
+
+# CMAKE_PREFIX_PATH can be used to control where to find OpenFPM, the other way is set the path with openfpm_ROOT and activate policy CMP0074
+find_package(openfpm 3.2.0 REQUIRED)
 
 if (openfpm_FOUND)
 	message("OpenFPM found")
diff --git a/example/Vector/7_SPH_dlb_gpu/CMakeLists.txt b/example/Vector/7_SPH_dlb_gpu/CMakeLists.txt
index 343f24fd0..66cb2bcfb 100644
--- a/example/Vector/7_SPH_dlb_gpu/CMakeLists.txt
+++ b/example/Vector/7_SPH_dlb_gpu/CMakeLists.txt
@@ -1,18 +1,27 @@
 cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
 project(openfpm_pdata LANGUAGES C CXX)
 
+cmake_policy(SET CMP0074 NEW)
+
 set(CMAKE_SKIP_BUILD_RPATH TRUE)   ###### <--------- This is absolutely necessary if you use linear algebra
 
-find_package(openfpm 3.2.0 REQUIRED)
 find_package(Threads)
-
+find_package(MPI)
+find_package(Boost 1.75.0 COMPONENTS program_options iostreams filesystem fiber context)
+# CMAKE_PREFIX_PATH can be used to control where to find OpenFPM, the other way is set the path with openfpm_ROOT and activate policy CMP0074
+find_package(openfpm 3.2.0 REQUIRED)
 enable_language(CUDA)
 
 if (openfpm_FOUND)
-	message("OpenFPM found")
 	
+	# if we are not using CUDA as backend, but SEQUENTIAL or OpenMP you habe to uncomment this lines
+#	set_source_files_properties(main.cu PROPERTIES COMPILE_FLAGS "-D__NVCC__ -DCUDART_VERSION=11000")  # <---- ENABLE IF YOU USE CUDA ON BACKEND SEQUENTIAL or OpenMP
+#	set_source_files_properties(main.cu PROPERTIES LANGUAGE CXX)                                       # <---- ENABLE IF YOU USE CUDA ON BACKEND SEQUENTIAL or OpenMP
+#	add_definitions("-x c++")                                                                          # <---- ENABLE IF YOU USE CUDA ON BACKEND SEQUENTIAL or OpenMP
+
 	add_executable(sph_dlb  main.cu)
-	target_link_libraries(sph_dlb PUBLIC openfpm::binary_config)	
+	target_link_libraries(sph_dlb PUBLIC openfpm::binary_config)
+	set_property(TARGET sph_dlb PROPERTY CUDA_ARCHITECTURES OFF)	
 
 	#or
 
diff --git a/openfpm_pdata.doc b/openfpm_pdata.doc
index 1d5143ba5..2a89b140c 100644
--- a/openfpm_pdata.doc
+++ b/openfpm_pdata.doc
@@ -38,7 +38,7 @@ PROJECT_NAME           = "OpenFPM_pdata"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 4.0.0
+PROJECT_NUMBER         = 4.1.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e4fbf04af..26ed4e1a8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -443,7 +443,11 @@ endif()
 
 target_compile_options(binary_config INTERFACE $<$<COMPILE_LANGUAGE:CUDA>: ${WARNING_SUPPRESSION_AND_OPTION_NVCC} >)
 
-target_link_libraries(binary_config INTERFACE ${Boost_LIBRARIES})
+target_link_libraries(binary_config INTERFACE Boost::context)
+target_link_libraries(binary_config INTERFACE Boost::fiber)
+target_link_libraries(binary_config INTERFACE Boost::filesystem)
+target_link_libraries(binary_config INTERFACE Boost::iostreams)
+target_link_libraries(binary_config INTERFACE Boost::program_options)
 target_link_libraries(binary_config INTERFACE ${PARMETIS_LIBRARIES})
 target_link_libraries(binary_config INTERFACE -L${METIS_ROOT}/lib metis)
 target_link_libraries(binary_config INTERFACE ${HDF5_LIBRARIES})
@@ -487,7 +491,7 @@ install(
 
 install(
   FILES
-    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/openfpmConfigVars-configure.cmake"
+    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/openfpmConfig-Vars.cmake"
   DESTINATION
     cmake/
 )
diff --git a/src/cmake/openfpmConfig-configure.cmake b/src/cmake/openfpmConfig-configure.cmake
index c7b0f8a11..880ed7ad3 100644
--- a/src/cmake/openfpmConfig-configure.cmake
+++ b/src/cmake/openfpmConfig-configure.cmake
@@ -2,3 +2,4 @@ get_property(OPENFPM_INCLUDES TARGET openfpm::binary_config PROPERTY INTERFACE_I
 get_property(OPENFPM_DEFINITION TARGET openfpm::binary_config PROPERTY INTERFACE_COMPILE_DEFINITIONS)
 get_property(OPENFPM_LIBS TARGET openfpm::binary_config PROPERTY INTERFACE_LINK_LIBRARIES)
 get_property(OPENFPM_COMPILE_OPTIONS TARGET openfpm::binary_config PROPERTY INTERFACE_COMPILE_OPTIONS)
+
-- 
GitLab