Import all sources from perforce.
This commit is contained in:
131
cmake/FindCUDA.cmake
Normal file
131
cmake/FindCUDA.cmake
Normal file
@ -0,0 +1,131 @@
|
||||
#
|
||||
# Try to find CUDA compiler, runtime libraries, and include path.
|
||||
# Once done this will define
|
||||
#
|
||||
# CUDA_FOUND
|
||||
# CUDA_INCLUDE_PATH
|
||||
# CUDA_LIBRARY
|
||||
# CUDA_COMPILER
|
||||
#
|
||||
# It will also define the following macro:
|
||||
#
|
||||
# WRAP_CUDA
|
||||
#
|
||||
|
||||
IF (WIN32)
|
||||
FIND_PROGRAM (CUDA_COMPILER nvcc.exe
|
||||
$ENV{CUDA_BIN_PATH}
|
||||
DOC "The CUDA Compiler")
|
||||
ELSE(WIN32)
|
||||
FIND_PROGRAM (CUDA_COMPILER nvcc
|
||||
$ENV{CUDA_BIN_PATH}
|
||||
DOC "The CUDA Compiler")
|
||||
ENDIF(WIN32)
|
||||
|
||||
IF (CUDA_COMPILER)
|
||||
GET_FILENAME_COMPONENT (CUDA_COMPILER_DIR ${CUDA_COMPILER} PATH)
|
||||
GET_FILENAME_COMPONENT (CUDA_COMPILER_SUPER_DIR ${CUDA_COMPILER_DIR} PATH)
|
||||
ELSE (CUDA_COMPILER)
|
||||
SET (CUDA_COMPILER_DIR .)
|
||||
SET (CUDA_COMPILER_SUPER_DIR ..)
|
||||
ENDIF (CUDA_COMPILER)
|
||||
|
||||
FIND_PATH (CUDA_INCLUDE_PATH cuda_runtime.h
|
||||
$ENV{CUDA_INC_PATH}
|
||||
${CUDA_COMPILER_SUPER_DIR}/include
|
||||
${CUDA_COMPILER_DIR}
|
||||
DOC "The directory where CUDA headers reside")
|
||||
|
||||
FIND_LIBRARY (CUDA_LIBRARY
|
||||
NAMES cudart
|
||||
PATHS
|
||||
$ENV{CUDA_LIB_PATH}
|
||||
${CUDA_COMPILER_SUPER_DIR}/lib
|
||||
${CUDA_COMPILER_DIR}
|
||||
DOC "The CUDA runtime library")
|
||||
|
||||
|
||||
IF (CUDA_INCLUDE_PATH)
|
||||
SET (CUDA_FOUND 1 CACHE STRING "Set to 1 if CUDA is found, 0 otherwise")
|
||||
ELSE (CUDA_INCLUDE_PATH)
|
||||
SET (CUDA_FOUND 0 CACHE STRING "Set to 1 if CUDA is found, 0 otherwise")
|
||||
ENDIF (CUDA_INCLUDE_PATH)
|
||||
|
||||
MARK_AS_ADVANCED (CUDA_FOUND CUDA_COMPILER)
|
||||
|
||||
|
||||
#SET(CUDA_OPTIONS "-ncfe")
|
||||
SET(CUDA_OPTIONS "")
|
||||
|
||||
IF (CUDA_EMU)
|
||||
SET (CUDA_OPTIONS "${CUDA_OPTIONS} -deviceemu")
|
||||
ENDIF (CUDA_EMU)
|
||||
|
||||
|
||||
# Get include directories.
|
||||
MACRO(GET_CUDA_INC_DIRS _cuda_INC_DIRS)
|
||||
SET(${_cuda_INC_DIRS})
|
||||
GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES)
|
||||
|
||||
FOREACH(_current ${_inc_DIRS})
|
||||
SET(${_cuda_INC_DIRS} ${${_cuda_INC_DIRS}} "-I" ${_current})
|
||||
ENDFOREACH(_current ${_inc_DIRS})
|
||||
|
||||
SET(${_cuda_INC_DIRS} ${${_cuda_INC_DIRS}} "-I" ${CUDA_INCLUDE_PATH})
|
||||
|
||||
# IF (CMAKE_SYTEM_INCLUDE_PATH)
|
||||
# SET(${_cuda_INC_DIRS} ${${_cuda_INC_DIRS}} "-I" ${CMAKE_SYSTEM_INCLUDE_PATH})
|
||||
# ENDIF (CMAKE_SYTEM_INCLUDE_PATH)
|
||||
# IF (CMAKE_INCLUDE_PATH)
|
||||
# SET(${_cuda_INC_DIRS} ${${_cuda_INC_DIRS}} "-I" ${CMAKE_INCLUDE_PATH})
|
||||
# ENDIF (CMAKE_INCLUDE_PATH)
|
||||
|
||||
ENDMACRO(GET_CUDA_INC_DIRS)
|
||||
|
||||
|
||||
# Get file dependencies.
|
||||
MACRO (GET_CUFILE_DEPENDENCIES dependencies file)
|
||||
GET_FILENAME_COMPONENT(filepath ${file} PATH)
|
||||
|
||||
# parse file for dependencies
|
||||
FILE(READ "${file}" CONTENTS)
|
||||
STRING(REGEX MATCHALL "#[ \t]*include[ \t]+[<\"][^>\"]*" DEPS "${CONTENTS}")
|
||||
|
||||
SET(${dependencies})
|
||||
|
||||
FOREACH(DEP ${DEPS})
|
||||
STRING(REGEX REPLACE "#[ \t]*include[ \t]+[<\"]" "" DEP "${DEP}")
|
||||
SET(${dependencies} ${${dependencies}} ${filepath}/${DEP})
|
||||
ENDFOREACH(DEP)
|
||||
|
||||
ENDMACRO (GET_CUFILE_DEPENDENCIES)
|
||||
|
||||
|
||||
# WRAP_CUDA(outfile ...)
|
||||
MACRO (WRAP_CUDA outfiles)
|
||||
GET_CUDA_INC_DIRS(cuda_includes)
|
||||
#MESSAGE(${cuda_includes})
|
||||
|
||||
FOREACH (CUFILE ${ARGN})
|
||||
GET_FILENAME_COMPONENT (CUFILE ${CUFILE} ABSOLUTE)
|
||||
GET_FILENAME_COMPONENT (CFILE ${CUFILE} NAME_WE)
|
||||
SET (CFILE ${CMAKE_CURRENT_BINARY_DIR}/${CFILE}.gen.c)
|
||||
|
||||
GET_CUFILE_DEPENDENCIES(CUDEPS ${CUFILE})
|
||||
#MESSAGE("${CUDEPS}")
|
||||
|
||||
ADD_CUSTOM_COMMAND (
|
||||
OUTPUT ${CFILE}
|
||||
COMMAND ${CUDA_COMPILER}
|
||||
ARGS -cuda ${cuda_includes} ${CUDA_OPTIONS} -o ${CFILE} ${CUFILE}
|
||||
MAIN_DEPENDENCY ${CUFILE}
|
||||
DEPENDS ${CUDEPS})
|
||||
|
||||
#MACRO_ADD_FILE_DEPENDENCIES(${CUFILE} ${CFILE})
|
||||
|
||||
SET (${outfiles} ${${outfiles}} ${CFILE})
|
||||
ENDFOREACH (CUFILE)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${outfiles} PROPERTIES GENERATED 1)
|
||||
|
||||
ENDMACRO (WRAP_CUDA)
|
Reference in New Issue
Block a user