Add work around for CUDA in UNC paths.

Nvcc can emit '/path' instead of '//path' which can cause a lot of grief later.  We test
to see if the file exists, if it doesn't then we see if the file exists with '/'
prepended.  Files that don't exist won't be added to the list.
This commit is contained in:
James Bigler 2011-12-05 16:54:06 -07:00
parent e0bc42aa4f
commit 83d4eeadac
1 changed files with 16 additions and 2 deletions

View File

@ -54,13 +54,27 @@ if (${depend_text} MATCHES ".+")
string(REGEX REPLACE "^ +" "" file ${file}) string(REGEX REPLACE "^ +" "" file ${file})
if(NOT IS_DIRECTORY ${file}) # OK, now if we had a UNC path, nvcc has a tendency to only output the first '/'
# instead of '//'. Here we will test to see if the file exists, if it doesn't then
# try to prepend another '/' to the path and test again. If it still fails remove the
# path.
if(NOT EXISTS "${file}")
if (EXISTS "/${file}")
set(file "/${file}")
else()
message(WARNING " Removing non-existant dependency file: ${file}")
set(file "")
endif()
endif()
if(NOT IS_DIRECTORY "${file}")
# If softlinks start to matter, we should change this to REALPATH. For now we need # If softlinks start to matter, we should change this to REALPATH. For now we need
# to flatten paths, because nvcc can generate stuff like /bin/../include instead of # to flatten paths, because nvcc can generate stuff like /bin/../include instead of
# just /include. # just /include.
get_filename_component(file_absolute "${file}" ABSOLUTE) get_filename_component(file_absolute "${file}" ABSOLUTE)
list(APPEND dependency_list "${file_absolute}") list(APPEND dependency_list "${file_absolute}")
endif(NOT IS_DIRECTORY ${file}) endif()
endforeach(file) endforeach(file)