[Cmake-commits] [cmake-commits] hoffman committed make2cmake.cmake 1.1 1.1.2.1 parse_cubin.cmake 1.1 1.1.2.1 run_nvcc.cmake 1.2 1.2.2.1

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Oct 1 17:20:37 EDT 2009


Update of /cvsroot/CMake/CMake/Modules/FindCUDA
In directory public:/mounts/ram/cvs-serv11203/Modules/FindCUDA

Modified Files:
      Tag: CMake-2-8
	make2cmake.cmake parse_cubin.cmake run_nvcc.cmake 
Log Message:
Merge in changes to CMake-2-8 RC 2


Index: make2cmake.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindCUDA/make2cmake.cmake,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -C 2 -d -r1.1 -r1.1.2.1
*** make2cmake.cmake	15 Sep 2009 06:38:20 -0000	1.1
--- make2cmake.cmake	1 Oct 2009 21:20:35 -0000	1.1.2.1
***************
*** 1,74 ****
! 
! #  For more information, please see: http://software.sci.utah.edu
! #
! #  The MIT License
! #
! #  Copyright (c) 2007
! #  Scientific Computing and Imaging Institute, University of Utah
! #
! #  License for the specific language governing rights and limitations under
! #  Permission is hereby granted, free of charge, to any person obtaining a
! #  copy of this software and associated documentation files (the "Software"),
! #  to deal in the Software without restriction, including without limitation
! #  the rights to use, copy, modify, merge, publish, distribute, sublicense,
! #  and/or sell copies of the Software, and to permit persons to whom the
! #  Software is furnished to do so, subject to the following conditions:
! #
! #  The above copyright notice and this permission notice shall be included
! #  in all copies or substantial portions of the Software.
! #
! #  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
! #  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! #  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
! #  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
! #  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
! #  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
! #  DEALINGS IN THE SOFTWARE.
! 
! # Make2cmake CMake Script
! # Abe Stephens and James Bigler
! # (c) 2007 Scientific Computing and Imaging Institute, University of Utah
! # Note that the REGEX expressions may need to be tweaked for different dependency generators.
! 
! file(READ ${input_file} depend_text)
! 
! if (${depend_text} MATCHES ".+")
! 
!   # message("FOUND DEPENDS")
! 
!   # Remember, four backslashes is escaped to one backslash in the string.
!   string(REGEX REPLACE "\\\\ " " " depend_text ${depend_text})
! 
!   # This works for the nvcc -M generated dependency files.
!   string(REGEX REPLACE "^.* : " "" depend_text ${depend_text})
!   string(REGEX REPLACE "[ \\\\]*\n" ";" depend_text ${depend_text})
! 
!   set(dependency_list "")
! 
!   foreach(file ${depend_text})
! 
!     string(REGEX REPLACE "^ +" "" file ${file})
! 
!     if(NOT IS_DIRECTORY ${file})
!       # 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
!       # just /include.
!       get_filename_component(file_absolute "${file}" ABSOLUTE)
!       list(APPEND dependency_list "${file_absolute}")
!     endif(NOT IS_DIRECTORY ${file})
! 
!   endforeach(file)
! 
! else()
!   # message("FOUND NO DEPENDS")
! endif()
! 
! # Remove the duplicate entries and sort them.
! list(REMOVE_DUPLICATES dependency_list)
! list(SORT dependency_list)
! 
! foreach(file ${dependency_list})
!   set(cuda_nvcc_depend "${cuda_nvcc_depend} \"${file}\"\n")
! endforeach()
! 
! file(WRITE ${output_file} "# Generated by: make2cmake.cmake\nSET(CUDA_NVCC_DEPEND\n ${cuda_nvcc_depend})\n\n")
--- 1,80 ----
! #  James Bigler, NVIDIA Corp (nvidia.com - jbigler)
! #  Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
! #
! #  Copyright (c) 2008-2009
! #  NVIDIA Corp.
! #
! #  Copyright (c) 2007-2009
! #  Scientific Computing and Imaging Institute, University of Utah
! #
! #  This code is licensed under the MIT License.  See the FindCUDA.cmake script
! #  for the text of the license.
! 
! # The MIT License
! #
! # License for the specific language governing rights and limitations under
! # Permission is hereby granted, free of charge, to any person obtaining a
! # copy of this software and associated documentation files (the "Software"),
! # to deal in the Software without restriction, including without limitation
! # the rights to use, copy, modify, merge, publish, distribute, sublicense,
! # and/or sell copies of the Software, and to permit persons to whom the
! # Software is furnished to do so, subject to the following conditions:
! #
! # The above copyright notice and this permission notice shall be included
! # in all copies or substantial portions of the Software.
! #
! # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
! # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
! # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
! # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
! # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
! # DEALINGS IN THE SOFTWARE.
! #
! 
! #######################################################################
! # This converts a file written in makefile syntax into one that can be included
! # by CMake.
! 
! file(READ ${input_file} depend_text)
! 
! if (${depend_text} MATCHES ".+")
! 
!   # message("FOUND DEPENDS")
! 
!   # Remember, four backslashes is escaped to one backslash in the string.
!   string(REGEX REPLACE "\\\\ " " " depend_text ${depend_text})
! 
!   # This works for the nvcc -M generated dependency files.
!   string(REGEX REPLACE "^.* : " "" depend_text ${depend_text})
!   string(REGEX REPLACE "[ \\\\]*\n" ";" depend_text ${depend_text})
! 
!   set(dependency_list "")
! 
!   foreach(file ${depend_text})
! 
!     string(REGEX REPLACE "^ +" "" file ${file})
! 
!     if(NOT IS_DIRECTORY ${file})
!       # 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
!       # just /include.
!       get_filename_component(file_absolute "${file}" ABSOLUTE)
!       list(APPEND dependency_list "${file_absolute}")
!     endif(NOT IS_DIRECTORY ${file})
! 
!   endforeach(file)
! 
! else()
!   # message("FOUND NO DEPENDS")
! endif()
! 
! # Remove the duplicate entries and sort them.
! list(REMOVE_DUPLICATES dependency_list)
! list(SORT dependency_list)
! 
! foreach(file ${dependency_list})
!   set(cuda_nvcc_depend "${cuda_nvcc_depend} \"${file}\"\n")
! endforeach()
! 
! file(WRITE ${output_file} "# Generated by: make2cmake.cmake\nSET(CUDA_NVCC_DEPEND\n ${cuda_nvcc_depend})\n\n")

Index: run_nvcc.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindCUDA/run_nvcc.cmake,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -C 2 -d -r1.2 -r1.2.2.1
*** run_nvcc.cmake	23 Sep 2009 04:50:16 -0000	1.2
--- run_nvcc.cmake	1 Oct 2009 21:20:35 -0000	1.2.2.1
***************
*** 1,235 ****
! # This file runs the nvcc commands to produce the desired output file along with
! # the dependency file needed by CMake to compute dependencies.  In addition the
! # file checks the output of each command and if the command fails it deletes the
! # output files.
! 
! # Input variables
! #
! # verbose:BOOL=<>          OFF: Be as quiet as possible (default)
! #                          ON : Describe each step
! #
! # build_configuration:STRING=<> Typically one of Debug, MinSizeRel, Release, or
! #                               RelWithDebInfo, but it should match one of the
! #                               entries in CUDA_HOST_FLAGS. This is the build
! #                               configuration used when compiling the code.  If
! #                               blank or unspecified Debug is assumed as this is
! #                               what CMake does.
! #
! # generated_file:STRING=<> File to generate.  This argument must be passed in.
! #
! # generated_cubin_file:STRING=<> File to generate.  This argument must be passed
! #                                                   in if build_cubin is true.
! 
! if(NOT generated_file)
!   message(FATAL_ERROR "You must specify generated_file on the command line")
! endif()
! 
! # Set these up as variables to make reading the generated file easier
! set(CMAKE_COMMAND "@CMAKE_COMMAND@")
! set(source_file "@source_file@")
! set(NVCC_generated_dependency_file "@NVCC_generated_dependency_file@")
! set(cmake_dependency_file "@cmake_dependency_file@")
! set(CUDA_make2cmake "@CUDA_make2cmake@")
! set(CUDA_parse_cubin "@CUDA_parse_cubin@")
! set(build_cubin @build_cubin@)
! # We won't actually use these variables for now, but we need to set this, in
! # order to force this file to be run again if it changes.
! set(generated_file_path "@generated_file_path@")
! set(generated_file_internal "@generated_file@")
! set(generated_cubin_file_internal "@generated_cubin_file@")
! 
! set(CUDA_NVCC_EXECUTABLE "@CUDA_NVCC_EXECUTABLE@")
! set(CUDA_NVCC_FLAGS "@CUDA_NVCC_FLAGS@;;@CUDA_WRAP_OPTION_NVCC_FLAGS@")
! @CUDA_NVCC_FLAGS_CONFIG@
! set(nvcc_flags "@nvcc_flags@")
! set(CUDA_NVCC_INCLUDE_ARGS "@CUDA_NVCC_INCLUDE_ARGS@")
! set(format_flag "@format_flag@")
! 
! if(build_cubin AND NOT generated_cubin_file)
!   message(FATAL_ERROR "You must specify generated_cubin_file on the command line")
! endif()
! 
! # This is the list of host compilation flags.  It C or CXX should already have
! # been chosen by FindCUDA.cmake.
! @CUDA_HOST_FLAGS@
! 
! # Take the compiler flags and package them up to be sent to the compiler via -Xcompiler
! set(nvcc_host_compiler_flags "")
! # If we weren't given a build_configuration, use Debug.
! if(NOT build_configuration)
!   set(build_configuration Debug)
! endif()
! string(TOUPPER "${build_configuration}" build_configuration)
! #message("CUDA_NVCC_HOST_COMPILER_FLAGS = ${CUDA_NVCC_HOST_COMPILER_FLAGS}")
! foreach(flag ${CMAKE_HOST_FLAGS} ${CMAKE_HOST_FLAGS_${build_configuration}})
!   # Extra quotes are added around each flag to help nvcc parse out flags with spaces.
!   set(nvcc_host_compiler_flags "${nvcc_host_compiler_flags},\"${flag}\"")
! endforeach()
! if (nvcc_host_compiler_flags)
!   set(nvcc_host_compiler_flags "-Xcompiler" ${nvcc_host_compiler_flags})
! endif()
! #message("nvcc_host_compiler_flags = \"${nvcc_host_compiler_flags}\"")
! # Add the build specific configuration flags
! list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}})
! 
! if(DEFINED CCBIN)
!   set(CCBIN -ccbin "${CCBIN}")
! endif()
! 
! # cuda_execute_process - Executes a command with optional command echo and status message.
! #
! #   status  - Status message to print if verbose is true
! #   command - COMMAND argument from the usual execute_process argument structure
! #   ARGN    - Remaining arguments are the command with arguments
! #
! #   CUDA_result - return value from running the command
! #
! # Make this a macro instead of a function, so that things like RESULT_VARIABLE
! # and other return variables are present after executing the process.
! macro(cuda_execute_process status command)
!   set(_command ${command})
!   if(NOT _command STREQUAL "COMMAND")
!     message(FATAL_ERROR "Malformed call to cuda_execute_process.  Missing COMMAND as second argument. (command = ${command})")
!   endif()
!   if(verbose)
!     execute_process(COMMAND "${CMAKE_COMMAND}" -E echo -- ${status})
!     # Now we need to build up our command string.  We are accounting for quotes
!     # and spaces, anything else is left up to the user to fix if they want to
!     # copy and paste a runnable command line.
!     set(cuda_execute_process_string)
!     foreach(arg ${ARGN})
!       # If there are quotes, excape them, so they come through.
!       string(REPLACE "\"" "\\\"" arg ${arg})
!       # Args with spaces need quotes around them to get them to be parsed as a single argument.
!       if(arg MATCHES " ")
!         list(APPEND cuda_execute_process_string "\"${arg}\"")
!       else()
!         list(APPEND cuda_execute_process_string ${arg})
!       endif()
!     endforeach()
!     # Echo the command
!     execute_process(COMMAND ${CMAKE_COMMAND} -E echo ${cuda_execute_process_string})
!   endif(verbose)
!   # Run the command
!   execute_process(COMMAND ${ARGN} RESULT_VARIABLE CUDA_result )
! endmacro()
! 
! # Delete the target file
! cuda_execute_process(
!   "Removing ${generated_file}"
!   COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
!   )
! 
! # Make sure the output directory is present
! cuda_execute_process(
!   "Creating output directory: ${generated_file_path}"
!   COMMAND "${CMAKE_COMMAND}" -E make_directory "${generated_file_path}"
!   )
! 
! # Generate the dependency file
! cuda_execute_process(
!   "Generating dependency file: ${NVCC_generated_dependency_file}"
!   COMMAND "${CUDA_NVCC_EXECUTABLE}"
!   "${source_file}"
!   ${CUDA_NVCC_FLAGS}
!   ${nvcc_flags}
!   ${CCBIN}
!   ${nvcc_host_compiler_flags}
!   -DNVCC
!   -M
!   -o "${NVCC_generated_dependency_file}"
!   ${CUDA_NVCC_INCLUDE_ARGS}
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Generate the cmake readable dependency file to a temp file.  Don't put the
! # quotes just around the filenames for the input_file and output_file variables.
! # CMake will pass the quotes through and not be able to find the file.
! cuda_execute_process(
!   "Generating temporary cmake readable file: ${cmake_dependency_file}.tmp"
!   COMMAND "${CMAKE_COMMAND}"
!   -D "input_file:FILEPATH=${NVCC_generated_dependency_file}"
!   -D "output_file:FILEPATH=${cmake_dependency_file}.tmp"
!   -P "${CUDA_make2cmake}"
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Copy the file if it is different
! cuda_execute_process(
!   "Copy if different ${cmake_dependency_file}.tmp to ${cmake_dependency_file}"
!   COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${cmake_dependency_file}.tmp" "${cmake_dependency_file}"
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Delete the temporary file
! cuda_execute_process(
!   "Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}"
!   COMMAND "${CMAKE_COMMAND}" -E remove "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Generate the code
! cuda_execute_process(
!   "Generating ${generated_file}"
!   COMMAND "${CUDA_NVCC_EXECUTABLE}"
!   "${source_file}"
!   ${CUDA_NVCC_FLAGS}
!   ${nvcc_flags}
!   ${CCBIN}
!   ${nvcc_host_compiler_flags}
!   -DNVCC
!   ${format_flag} -o "${generated_file}"
!   ${CUDA_NVCC_INCLUDE_ARGS}
!   )
! 
! if(CUDA_result)
!   # Since nvcc can sometimes leave half done files make sure that we delete the output file.
!   cuda_execute_process(
!     "Removing ${generated_file}"
!     COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
!     )
!   message(FATAL_ERROR "Error generating file ${generated_file}")
! else()
!   if(verbose)
!     message("Generated ${generated_file} successfully.")
!   endif()
! endif()
! 
! # Cubin resource report commands.
! if( build_cubin )
!   # Run with -cubin to produce resource usage report.
!   cuda_execute_process(
!     "Generating ${generated_cubin_file}"
!     COMMAND "${CUDA_NVCC_EXECUTABLE}"
!     "${source_file}"
!     ${CUDA_NVCC_FLAGS}
!     ${nvcc_flags}
!     ${CCBIN}
!     ${nvcc_host_compiler_flags}
!     -DNVCC
!     -cubin
!     -o "${generated_cubin_file}"
!     ${CUDA_NVCC_INCLUDE_ARGS}
!     )
! 
!   # Execute the parser script.
!   cuda_execute_process(
!     "Executing the parser script"
!     COMMAND  "${CMAKE_COMMAND}"
!     -D "input_file:STRING=${generated_cubin_file}"
!     -P "${CUDA_parse_cubin}"
!     )
! 
! endif( build_cubin )
--- 1,266 ----
! #  James Bigler, NVIDIA Corp (nvidia.com - jbigler)
! #
! #  Copyright (c) 2008-2009
! #  NVIDIA Corp.
! #
! #  This code is licensed under the MIT License.  See the FindCUDA.cmake script
! #  for the text of the license.
! 
! # The MIT License
! #
! # License for the specific language governing rights and limitations under
! # Permission is hereby granted, free of charge, to any person obtaining a
! # copy of this software and associated documentation files (the "Software"),
! # to deal in the Software without restriction, including without limitation
! # the rights to use, copy, modify, merge, publish, distribute, sublicense,
! # and/or sell copies of the Software, and to permit persons to whom the
! # Software is furnished to do so, subject to the following conditions:
! #
! # The above copyright notice and this permission notice shall be included
! # in all copies or substantial portions of the Software.
! #
! # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
! # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
! # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
! # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
! # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
! # DEALINGS IN THE SOFTWARE.
! 
! 
! ##########################################################################
! # This file runs the nvcc commands to produce the desired output file along with
! # the dependency file needed by CMake to compute dependencies.  In addition the
! # file checks the output of each command and if the command fails it deletes the
! # output files.
! 
! # Input variables
! #
! # verbose:BOOL=<>          OFF: Be as quiet as possible (default)
! #                          ON : Describe each step
! #
! # build_configuration:STRING=<> Typically one of Debug, MinSizeRel, Release, or
! #                               RelWithDebInfo, but it should match one of the
! #                               entries in CUDA_HOST_FLAGS. This is the build
! #                               configuration used when compiling the code.  If
! #                               blank or unspecified Debug is assumed as this is
! #                               what CMake does.
! #
! # generated_file:STRING=<> File to generate.  This argument must be passed in.
! #
! # generated_cubin_file:STRING=<> File to generate.  This argument must be passed
! #                                                   in if build_cubin is true.
! 
! if(NOT generated_file)
!   message(FATAL_ERROR "You must specify generated_file on the command line")
! endif()
! 
! # Set these up as variables to make reading the generated file easier
! set(CMAKE_COMMAND "@CMAKE_COMMAND@")
! set(source_file "@source_file@")
! set(NVCC_generated_dependency_file "@NVCC_generated_dependency_file@")
! set(cmake_dependency_file "@cmake_dependency_file@")
! set(CUDA_make2cmake "@CUDA_make2cmake@")
! set(CUDA_parse_cubin "@CUDA_parse_cubin@")
! set(build_cubin @build_cubin@)
! # We won't actually use these variables for now, but we need to set this, in
! # order to force this file to be run again if it changes.
! set(generated_file_path "@generated_file_path@")
! set(generated_file_internal "@generated_file@")
! set(generated_cubin_file_internal "@generated_cubin_file@")
! 
! set(CUDA_NVCC_EXECUTABLE "@CUDA_NVCC_EXECUTABLE@")
! set(CUDA_NVCC_FLAGS "@CUDA_NVCC_FLAGS@;;@CUDA_WRAP_OPTION_NVCC_FLAGS@")
! @CUDA_NVCC_FLAGS_CONFIG@
! set(nvcc_flags "@nvcc_flags@")
! set(CUDA_NVCC_INCLUDE_ARGS "@CUDA_NVCC_INCLUDE_ARGS@")
! set(format_flag "@format_flag@")
! 
! if(build_cubin AND NOT generated_cubin_file)
!   message(FATAL_ERROR "You must specify generated_cubin_file on the command line")
! endif()
! 
! # This is the list of host compilation flags.  It C or CXX should already have
! # been chosen by FindCUDA.cmake.
! @CUDA_HOST_FLAGS@
! 
! # Take the compiler flags and package them up to be sent to the compiler via -Xcompiler
! set(nvcc_host_compiler_flags "")
! # If we weren't given a build_configuration, use Debug.
! if(NOT build_configuration)
!   set(build_configuration Debug)
! endif()
! string(TOUPPER "${build_configuration}" build_configuration)
! #message("CUDA_NVCC_HOST_COMPILER_FLAGS = ${CUDA_NVCC_HOST_COMPILER_FLAGS}")
! foreach(flag ${CMAKE_HOST_FLAGS} ${CMAKE_HOST_FLAGS_${build_configuration}})
!   # Extra quotes are added around each flag to help nvcc parse out flags with spaces.
!   set(nvcc_host_compiler_flags "${nvcc_host_compiler_flags},\"${flag}\"")
! endforeach()
! if (nvcc_host_compiler_flags)
!   set(nvcc_host_compiler_flags "-Xcompiler" ${nvcc_host_compiler_flags})
! endif()
! #message("nvcc_host_compiler_flags = \"${nvcc_host_compiler_flags}\"")
! # Add the build specific configuration flags
! list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}})
! 
! if(DEFINED CCBIN)
!   set(CCBIN -ccbin "${CCBIN}")
! endif()
! 
! # cuda_execute_process - Executes a command with optional command echo and status message.
! #
! #   status  - Status message to print if verbose is true
! #   command - COMMAND argument from the usual execute_process argument structure
! #   ARGN    - Remaining arguments are the command with arguments
! #
! #   CUDA_result - return value from running the command
! #
! # Make this a macro instead of a function, so that things like RESULT_VARIABLE
! # and other return variables are present after executing the process.
! macro(cuda_execute_process status command)
!   set(_command ${command})
!   if(NOT _command STREQUAL "COMMAND")
!     message(FATAL_ERROR "Malformed call to cuda_execute_process.  Missing COMMAND as second argument. (command = ${command})")
!   endif()
!   if(verbose)
!     execute_process(COMMAND "${CMAKE_COMMAND}" -E echo -- ${status})
!     # Now we need to build up our command string.  We are accounting for quotes
!     # and spaces, anything else is left up to the user to fix if they want to
!     # copy and paste a runnable command line.
!     set(cuda_execute_process_string)
!     foreach(arg ${ARGN})
!       # If there are quotes, excape them, so they come through.
!       string(REPLACE "\"" "\\\"" arg ${arg})
!       # Args with spaces need quotes around them to get them to be parsed as a single argument.
!       if(arg MATCHES " ")
!         list(APPEND cuda_execute_process_string "\"${arg}\"")
!       else()
!         list(APPEND cuda_execute_process_string ${arg})
!       endif()
!     endforeach()
!     # Echo the command
!     execute_process(COMMAND ${CMAKE_COMMAND} -E echo ${cuda_execute_process_string})
!   endif(verbose)
!   # Run the command
!   execute_process(COMMAND ${ARGN} RESULT_VARIABLE CUDA_result )
! endmacro()
! 
! # Delete the target file
! cuda_execute_process(
!   "Removing ${generated_file}"
!   COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
!   )
! 
! # Make sure the output directory is present
! cuda_execute_process(
!   "Creating output directory: ${generated_file_path}"
!   COMMAND "${CMAKE_COMMAND}" -E make_directory "${generated_file_path}"
!   )
! 
! # Generate the dependency file
! cuda_execute_process(
!   "Generating dependency file: ${NVCC_generated_dependency_file}"
!   COMMAND "${CUDA_NVCC_EXECUTABLE}"
!   "${source_file}"
!   ${CUDA_NVCC_FLAGS}
!   ${nvcc_flags}
!   ${CCBIN}
!   ${nvcc_host_compiler_flags}
!   -DNVCC
!   -M
!   -o "${NVCC_generated_dependency_file}"
!   ${CUDA_NVCC_INCLUDE_ARGS}
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Generate the cmake readable dependency file to a temp file.  Don't put the
! # quotes just around the filenames for the input_file and output_file variables.
! # CMake will pass the quotes through and not be able to find the file.
! cuda_execute_process(
!   "Generating temporary cmake readable file: ${cmake_dependency_file}.tmp"
!   COMMAND "${CMAKE_COMMAND}"
!   -D "input_file:FILEPATH=${NVCC_generated_dependency_file}"
!   -D "output_file:FILEPATH=${cmake_dependency_file}.tmp"
!   -P "${CUDA_make2cmake}"
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Copy the file if it is different
! cuda_execute_process(
!   "Copy if different ${cmake_dependency_file}.tmp to ${cmake_dependency_file}"
!   COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${cmake_dependency_file}.tmp" "${cmake_dependency_file}"
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Delete the temporary file
! cuda_execute_process(
!   "Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}"
!   COMMAND "${CMAKE_COMMAND}" -E remove "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
!   )
! 
! if(CUDA_result)
!   message(FATAL_ERROR "Error generating ${generated_file}")
! endif()
! 
! # Generate the code
! cuda_execute_process(
!   "Generating ${generated_file}"
!   COMMAND "${CUDA_NVCC_EXECUTABLE}"
!   "${source_file}"
!   ${CUDA_NVCC_FLAGS}
!   ${nvcc_flags}
!   ${CCBIN}
!   ${nvcc_host_compiler_flags}
!   -DNVCC
!   ${format_flag} -o "${generated_file}"
!   ${CUDA_NVCC_INCLUDE_ARGS}
!   )
! 
! if(CUDA_result)
!   # Since nvcc can sometimes leave half done files make sure that we delete the output file.
!   cuda_execute_process(
!     "Removing ${generated_file}"
!     COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
!     )
!   message(FATAL_ERROR "Error generating file ${generated_file}")
! else()
!   if(verbose)
!     message("Generated ${generated_file} successfully.")
!   endif()
! endif()
! 
! # Cubin resource report commands.
! if( build_cubin )
!   # Run with -cubin to produce resource usage report.
!   cuda_execute_process(
!     "Generating ${generated_cubin_file}"
!     COMMAND "${CUDA_NVCC_EXECUTABLE}"
!     "${source_file}"
!     ${CUDA_NVCC_FLAGS}
!     ${nvcc_flags}
!     ${CCBIN}
!     ${nvcc_host_compiler_flags}
!     -DNVCC
!     -cubin
!     -o "${generated_cubin_file}"
!     ${CUDA_NVCC_INCLUDE_ARGS}
!     )
! 
!   # Execute the parser script.
!   cuda_execute_process(
!     "Executing the parser script"
!     COMMAND  "${CMAKE_COMMAND}"
!     -D "input_file:STRING=${generated_cubin_file}"
!     -P "${CUDA_parse_cubin}"
!     )
! 
! endif( build_cubin )

Index: parse_cubin.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindCUDA/parse_cubin.cmake,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -C 2 -d -r1.1 -r1.1.2.1
*** parse_cubin.cmake	15 Sep 2009 06:38:20 -0000	1.1
--- parse_cubin.cmake	1 Oct 2009 21:20:35 -0000	1.1.2.1
***************
*** 1,31 ****
! #  For more information, please see: http://software.sci.utah.edu
  #
! #  The MIT License
  #
! #  Copyright (c) 2007
  #  Scientific Computing and Imaging Institute, University of Utah
  #
! #  License for the specific language governing rights and limitations under
! #  Permission is hereby granted, free of charge, to any person obtaining a
! #  copy of this software and associated documentation files (the "Software"),
! #  to deal in the Software without restriction, including without limitation
! #  the rights to use, copy, modify, merge, publish, distribute, sublicense,
! #  and/or sell copies of the Software, and to permit persons to whom the
! #  Software is furnished to do so, subject to the following conditions:
  #
! #  The above copyright notice and this permission notice shall be included
! #  in all copies or substantial portions of the Software.
  #
- #  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- #  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- #  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- #  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- #  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- #  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- #  DEALINGS IN THE SOFTWARE.
  
! # .cubin Parsing CMake Script
! # Abe Stephens
! # (c) 2007 Scientific Computing and Imaging Institute, University of Utah
  
  file(READ ${input_file} file_text)
--- 1,39 ----
! #  James Bigler, NVIDIA Corp (nvidia.com - jbigler)
! #  Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html
  #
! #  Copyright (c) 2008-2009
! #  NVIDIA Corp.
  #
! #  Copyright (c) 2007-2009
  #  Scientific Computing and Imaging Institute, University of Utah
  #
! #  This code is licensed under the MIT License.  See the FindCUDA.cmake script
! #  for the text of the license.
! 
! # The MIT License
  #
! # License for the specific language governing rights and limitations under
! # Permission is hereby granted, free of charge, to any person obtaining a
! # copy of this software and associated documentation files (the "Software"),
! # to deal in the Software without restriction, including without limitation
! # the rights to use, copy, modify, merge, publish, distribute, sublicense,
! # and/or sell copies of the Software, and to permit persons to whom the
! # Software is furnished to do so, subject to the following conditions:
! #
! # The above copyright notice and this permission notice shall be included
! # in all copies or substantial portions of the Software.
! #
! # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
! # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
! # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
! # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
! # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
! # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
! # DEALINGS IN THE SOFTWARE.
  #
  
! #######################################################################
! # Parses a .cubin file produced by nvcc and reports statistics about the file.
! 
  
  file(READ ${input_file} file_text)



More information about the Cmake-commits mailing list