From 58148581baee0cb27a962d618a1d29f1ed5b6ce2 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Mon, 4 Jun 2018 11:16:45 +0200 Subject: [PATCH] cmake: make sure all DKS related libaries and include paths are properly set. --- cmake/FindDKS.cmake | 30 +++++++++++++++++++++++++----- src/classes/CMakeLists.txt | 14 +++++++------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/cmake/FindDKS.cmake b/cmake/FindDKS.cmake index 9280dc89..b6ee0ae0 100644 --- a/cmake/FindDKS.cmake +++ b/cmake/FindDKS.cmake @@ -2,7 +2,8 @@ # # This module defines: # DKS_INCLUDE_DIR, where to find DKSBaseMuSR.h -# DKS_LIBRARY, shared library to be linked against if using DKS +# DKS_LIBS, shared library to be linked against if using DKS +# DKS_CFLAGS, compiler flags needed for DKS # # **as35** since I currently also maintaing the DKS library, it should add # a DKSConfig.cmake which eventually will make this module obsolate. This @@ -25,6 +26,23 @@ find_library(DKS_LIBRARY dksshared "$ENV{HOME}/Applications/DKS/exec/lib" ) +if (CUDA_FOUND) + set(DKS_CFLAGS -DDKS_OPENCL -DDKS_CUDA -I${DKS_INCLUDE_DIR} -I${CUDA_INCLUDE_DIRS}) + set(DKS_LIBS ${CUDA_LIBRARIES} ${DKS_LIBRARY}) +else (CUDA_FOUND) + if (OpenCL_FOUND) + if (APPLE) + set(DKS_CFLAGS -DDKS_OPENCL -I${DKS_INCLUDE_DIR} -I${OpenCL_INCLUDE_DIRS}) + set(DKS_LIBS ${OpenCL_LIBRARY} ${DKS_LIBRARY}) + else (APPLE) + set(DKS_CFLAGS -DDKS_OPENCL -I${DKS_INCLUDE_DIR} -I${OpenCL_INCLUDE_DIRS}) + set(DKS_LIBS ${OpenCL_LIBRARY} ${DKS_LIBRARY}) + endif (APPLE) + else (OpenCL_FOUND) + message(FATAL "neither CUDA nor OpenCL found when looking for DKS.") + endif (OpenCL_FOUND) +endif (CUDA_FOUND) + # as35 set here the DKS version explicitly. This is VERY ugly and should be fixed # asap by using a package set(DKS_VERSION "1.1.3") @@ -33,15 +51,17 @@ set(DKS_VERSION "1.1.3") # all listed variables are TRUE include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) find_package_handle_standard_args(DKS - REQUIRED_VARS DKS_LIBRARY DKS_INCLUDE_DIR + REQUIRED_VARS DKS_CFLAGS DKS_LIBS DKS_INCLUDE_DIR VERSION_VAR DKS_VERSION) if (NOT DKS_FOUND) - unset(DKS_LIBRARY) + unset(DKS_CFLAGS) + unset(DKS_LIBS) endif (NOT DKS_FOUND) mark_as_advanced( - DKS_INCLUDE_DIR - DKS_LIBRARY + DKS_INCLUDE_DIR + DKS_CFLAGS + DKS_LIBS ) diff --git a/src/classes/CMakeLists.txt b/src/classes/CMakeLists.txt index 7c784162..adbe2175 100644 --- a/src/classes/CMakeLists.txt +++ b/src/classes/CMakeLists.txt @@ -109,11 +109,17 @@ set_target_properties(PUserFcnBase target_include_directories( PUserFcnBase BEFORE PRIVATE $ ) + #--- add OpenMP compile options if needed ------------------------------------- if (OpenMP_FOUND) target_compile_options(PMusr PUBLIC ${OpenMP_CXX_FLAGS}) endif (OpenMP_FOUND) +#--- add DKS compiler flags if enabled ---------------------------------------- +if (DKS_FOUND) + target_compile_options(PMusr PUBLIC ${DKS_CFLAGS}) +endif (DKS_FOUND) + #--- add library dependencies ------------------------------------------------- set(DependOnLibs ${ROOT_LIBARIES}) set(DependOnLibs ${DependOnLibs} ${FFTW3_LIBRARY}) @@ -134,13 +140,7 @@ if (OpenMP_FOUND) endif (OpenMP_CXX_LIBRARIES) endif (OpenMP_FOUND) if (DKS_FOUND) - if (CUDA_FOUND) - set(DependOnLibs ${DependOnLibs} ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES}) - endif (CUDA_FOUND) - if (NOT CUDA_FOUND AND OpenCL_FOUND) - set(DependOnLibs ${DependOnLibs} ${OpenCL_LIBRARIES}) - endif (NOT CUDA_FOUND AND OpenCL_FOUND) - set(DependOnLibs ${DependOnLibs} ${DKS_LIBRARY}) + set(DependOnLibs ${DependOnLibs} ${DKS_LIBS}) endif (DKS_FOUND) target_link_libraries(PUserFcnBase ${ROOT_LIBRARIES})