CMAKE_MINIMUM_REQUIRED (VERSION 2.8) SET (DKS_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}) MACRO (ADD_SOURCES ) FILE (RELATIVE_PATH _relPath "${DKS_SRC_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") FOREACH (_src ${ARGN}) IF (_relPath) LIST (APPEND DKS_SRCS "${_relPath}/${_src}") ELSE () LIST (APPEND DKS_SRCS "${_src}") ENDIF () ENDFOREACH () IF (_relPath) # propagate SRCS to parent directory SET (DKS_SRCS ${DKS_SRCS} PARENT_SCOPE) ENDIF () ENDMACRO () MACRO (ADD_HEADERS ) FILE (RELATIVE_PATH _relPath "${DKS_SRC_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") FOREACH (_hdr ${ARGN}) IF (_relPath) LIST (APPEND DKS_HDRS "${_relPath}/${_hdr}") ELSE () LIST (APPEND DKS_HDRS "${_hdr}") ENDIF () ENDFOREACH () IF (_relPath) # propagate HDRS to parent directory SET (DKS_HDRS ${DKS_HDRS} PARENT_SCOPE) ENDIF () ENDMACRO () SET (DKS_BASEDIR_HDRS DKSBase.h DKSDefinitions.h ) SET (DKS_BASEDIR_SRCS DKSBase.cpp ) IF (USE_CUDA OR USE_OPENCL) SET (DKS_BASEDIR_HDRS ${DKS_BASEDIR_HDRS} DKSBaseMuSR.h ) SET (DKS_BASEDIR_SRCS ${DKS_BASEDIR_SRCS} DKSBaseMuSR.cpp ) ENDIF (USE_CUDA OR USE_OPENCL) IF (USE_CUDA) SET (DKS_BASEDIR_HDRS ${DKS_BASEDIR_HDRS} DKSImageReconstruction.h ) SET (DKS_BASEDIR_SRCS ${DKS_BASEDIR_SRCS} DKSImageReconstruction.cpp ) ENDIF (USE_CUDA) ADD_HEADERS (${DKS_BASEDIR_HDRS}) ADD_SOURCES (${DKS_BASEDIR_SRCS}) MESSAGE (STATUS "HEADERS: ${DKS_BASEDIR_HDRS}") MESSAGE (STATUS "SOURCES: ${DKS_BASEDIR_SRCS}") #add only those source files that will be used IF (USE_OPENCL) MESSAGE (STATUS "Add OpenCL source files") ADD_SUBDIRECTORY (OpenCL) ENDIF (USE_OPENCL) IF (USE_CUDA) MESSAGE (STATUS "Add CUDA source files") ADD_SUBDIRECTORY (CUDA) ENDIF (USE_CUDA) IF (USE_MIC) MESSAGE (STATUS "Add MIC source files") ADD_SUBDIRECTORY (MIC) ENDIF (USE_MIC) ADD_SUBDIRECTORY (Utility) ADD_SUBDIRECTORY (AutoTuning) ADD_SUBDIRECTORY (Algorithms) IF (USE_CUDA) CUDA_ADD_LIBRARY(dks ${DKS_SRCS}) CUDA_ADD_LIBRARY(dksshared SHARED ${DKS_SRCS}) IF (USE_UQTK) TARGET_LINK_LIBRARIES(dks cudadevrt lreg UQTk quad uqtktools cvode-2.6.0 dsfmt lbfgs uqtklapack uqtkslatec uqtkblas gfortran) TARGET_LINK_LIBRARIES(dksshared cudadevrt lreg UQTk quad uqtktools cvode-2.6.0 dsfmt lbfgs uqtklapack uqtkslatec uqtkblas gfortran) ELSE (USE_UQTK) TARGET_LINK_LIBRARIES(dks cudadevrt) TARGET_LINK_LIBRARIES(dksshared cudadevrt) ENDIF (USE_UQTK) ELSE (USE_CUDA) MESSAGE (STATUS "DKS srcs: ${DKS_SRCS}") ADD_LIBRARY(dks ${DKS_SRCS}) ADD_LIBRARY(dksshared SHARED ${DKS_SRCS}) IF (USE_UQTK) TARGET_LINK_LIBRARIES(dks lreg UQTk quad uqtktools cvode-2.6.0 dsfmt lbfgs uqtklapack uqtkslatec uqtkblas gfortran) TARGET_LINK_LIBRARIES(dksshared lreg UQTk quad uqtktools cvode-2.6.0 dsfmt lbfgs uqtklapack uqtkslatec uqtkblas gfortran) ELSE (USE_UQTK) TARGET_LINK_LIBRARIES(dks) TARGET_LINK_LIBRARIES(dksshared) ENDIF(USE_UQTK) ENDIF (USE_CUDA) INSTALL(TARGETS dks DESTINATION lib) INSTALL(TARGETS dksshared DESTINATION lib) INSTALL(FILES ${DKS_BASEDIR_HDRS} DESTINATION include) #IF (USE_MIC AND (COMPILER_NAME STREQUAL "icpc" OR COMPILER_NAME STREQUAL "mpiicpc")) # INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdksMIC.a DESTINATION build/lib) #ENDIF (USE_MIC AND (COMPILER_NAME STREQUAL "icpc" OR COMPILER_NAME STREQUAL "mpiicpc"))