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