summaryrefslogtreecommitdiffstats
path: root/Modules/FindCUDA.cmake
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'FindCUDA-superseded'Brad King2017-08-111-0/+14
|\ | | | | | | | | | | | | ae813b6b FindCUDA: Document that module has been superseded Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1124
| * FindCUDA: Document that module has been supersededBrad King2017-08-101-0/+14
| | | | | | | | | | Add a note at the top of the module documentation to point readers at the first-class support for the CUDA language.
* | FindCUDA: Always obey the CUDA_USE_STATIC_CUDA_RUNTIME option.Robert Maynard2017-08-101-2/+6
|/ | | | | Fixes #17150, where the FindCUDA would incorrectly handle CUDA_USE_STATIC_CUDA_RUNTIME being set to false.
* Merge topic 'FindCUDA-no-empty-genex'Brad King2017-06-271-0/+2
|\ | | | | | | | | | | | | a3e442bb FindCUDA: Fix CUDA_NVCC_FLAGS_<CONFIG> for separable compilation Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1008
| * FindCUDA: Fix CUDA_NVCC_FLAGS_<CONFIG> for separable compilationRobert Maynard2017-06-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.0.0-rc6~3^2 (FindCUDA: Use CUDA_NVCC_FLAGS* for separable compilation, 2014-05-18), using the feature for one configuration results in empty-string ("") arguments on the command line for other configurations. This is because the generator expression for a non-matching configuration evaluates to an empty string but does not remove the argument. Use `COMMAND_EXPAND_LISTS` to remove the empty arguments from the custom command after genex evaluation. Fixes: #16411
* | FindCUDA: Use find_program if find_host_program is not availableMaxime Roussin-BĂ©langer2017-06-261-1/+5
|/ | | | | | | | | CMake does not define the `find_host_program` command we've been using in the cross-compiling code path. It was provided by a widely used Android toolchain file. For compatibility, continue to use `find_host_program` if available, but otherwise use just `find_program`. Fixes: #16509
* Use string(APPEND) in ModulesDaniel Pfeifer2017-05-171-1/+1
| | | | | | | Automate with: find Modules -type f -print0 | xargs -0 perl -i -0pe \ 's/set\(([a-zA-Z0-9_\$\{\}]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
* FindCUDA: Add option to use modern form of target_link_librariesTaylor Braun-Jones2017-04-041-7/+14
| | | | | | | | This adds the option CUDA_LINK_LIBRARIES_KEYWORD which can be set to PRIVATE, PUBLIC, or INTERFACE or left empty (the default) to use the old form of target_link_libraries internally in FindCUDA macros. Fixes: #16772
* Merge topic 'cuda_use_cudadevrt_with_separable_compilation'Brad King2016-09-201-0/+13
|\ | | | | | | | | 891e0ebd FindCUDA: find cudadevrt and link it if CUDA_SEPARABLE_COMPILATION is ON
| * FindCUDA: find cudadevrt and link it if CUDA_SEPARABLE_COMPILATION is ONRobert Maynard2016-09-201-0/+13
| | | | | | | | | | Issue: #15157 Patch-by: l0calh05t on gitlab.kitware.com
* | FindCUDA: Allow cuda_compile* macros to be called more than once per directoryStephen Sorley2016-08-311-2/+13
| | | | | | | | | | | | | | Added a counter as a directory property that gets incremented every time one of the cuda_compile* macros is called. The value of this counter is then added to the phony target name passed to CUDA_WRAP_SRCS. This ensures that every call to one of these macros has its own unique intermediate output directory.
* | FindCUDA: Fix for broken cuda_compile* commands.Stephen Sorley2016-08-311-9/+32
|/ | | | | | | | | | | | | | The macros CUDA_COMPILE, CUDA_COMPILE_PTX, CUDA_COMPILE_FATBIN, and CUDA_COMPILE_CUBIN were broken by commit 7ded655 (FindCUDA: Take NVCC include directories from target properties, 2016-08-16). This bug is due to the fact that all of these macros call CUDA_WRAP_SRCS with a target name that's not an actual target, causing the new generator expressions to fail. Fix the bug by changing these macros to pass "PHONY" to CUDA_WRAP_SRCS. Now, when CUDA_WRAP_SRCS sees "PHONY", it falls back to the old behavior of populating the include directories and compile definitions from directory properties, instead of using target generator expressions.
* FindCUDA: Take NVCC include directories from target propertiesPeter Boettcher2016-08-161-21/+11
| | | | | | | | Fixes issue where include directories specified on the target are not passed on to NVCC. This includes both target_include_directories() as well as include directories added by dependency chaining. Closes: #14201
* FindCUDA: Fix missing librt on Linux when using static cuda runtime.Stephen Sorley2016-08-121-6/+7
| | | | | | Commit 7229ae72 (FindCUDA: Refactor Android(Tegra) support, 2016-04-19) changed the logic to only add librt to the link line for CUDA versions 6.5 and older. However, newer versions of CUDA still require librt.
* FindCUDA: Restore default behavior of CUDA_USE_STATIC_CUDA_RUNTIMEStephen Sorley2016-08-121-3/+4
| | | | | | | Fix bug introduced by commit 7229ae72 (FindCUDA: Refactor Android(Tegra) support, 2016-04-19). `CUDA_USE_STATIC_CUDA_RUNTIME` should be enabled by default if `cudart_static` is available, and silently disabled if it is not.
* Merge topic 'FindCUDA-no-windows-librt'Brad King2016-08-031-1/+1
|\ | | | | | | | | f4e979b1 FindCUDA: Do not look for librt on Windows
| * FindCUDA: Do not look for librt on WindowsStephen Sorley2016-08-021-1/+1
| | | | | | | | | | Otherwise an incorrect warning appears when compiling with CUDA SDK 6.5 or older and CUDA_USE_STATIC_CUDA_RUNTIME is true.
* | FindCUDA: Add search path for nvcc on ArchHans Gaiser2016-08-021-1/+2
|/
* Use string(APPEND) in ModulesDaniel Pfeifer2016-07-271-2/+2
| | | | | | | Automate with: find Modules -type f -print0 | xargs -0 perl -i -0pe \ 's/set\(([a-zA-Z0-9_]+)(\s+)"\$\{\1\}([^"])/string(APPEND \1\2"\3/g'
* Fix typos.Felix Geyer2016-07-101-1/+1
|
* FindCUDA: Use the correct runtime in REQUIRED_VARS checkChuck Atkins2016-06-141-1/+3
| | | | | | | | | When enabling the CUDA static runtime, the current module always uses the shared runtime in the REQUIRED_VARS check. This change should select the correct runtime to be checked for as required based on the CUDA_USE_STATIC_CUDA_RUNTIME option. Fixes #16096
* FindCUDA: Refactor Android(Tegra) supportBoris Fomitchev2016-06-091-45/+87
| | | | Reviewed-by: James Bigler <jamesbigler@gmail.com>
* FindCUDA: Adjust vertical whitespaceBoris Fomitchev2016-06-091-3/+5
|
* FindCUDA: Add support for finding the cublas_device libraryJames Sharpe2016-05-251-2/+4
|
* FindCUDA: Add support for generator expressions in CUDA_NVCC_FLAGSChuck Atkins2016-05-251-2/+7
| | | | | | Follow the configure_file by a file(GENERATE) so the resulting cmake scripts used by FindCUDA for wrapping nvcc calls can now support generator expressions in the CUDA_NVCC_FLAGS variable.
* FindCUDA: Detect and report FP16 supportBoris Fomitchev2016-05-191-0/+7
| | | | Reviewed-by: James Bigler <jamesbigler@gmail.com>
* Fix spelling typos in comments and documentation (#16037)Felix Geyer2016-03-291-2/+2
| | | | | The Debian package checker tool (lintian) detected several typos in CMake.
* FindCUDA: Fix regression in separate compilation (#16027)Brad King2016-03-221-1/+6
| | | | | | | | Since commit v3.5.0-rc1~47^2 (FindCUDA: Support special characters in path, 2016-01-15) our add_custom_command calls use VERBATIM so that CMake will automatically quote special characters correctly. Fix the separate compilation code path to not add its own quoting when the VERBATIM option will be used.
* FindCUDA: Fix regression under Visual Studio generatorsBrad King2016-02-171-3/+13
| | | | | | | | | | | | | | | | | Since commit v3.5.0-rc1~47^2 (FindCUDA: Support special characters in path, 2016-01-15) our add_custom_command calls use VERBATIM so that CMake will automatically quote special characters correctly. However, this breaks the special `$(VCInstallDir)` placeholder used with Visual Studio generators. Since we do not support preservation of such placeholders with VERBATIM (see issue #15001) we must fall back to not using VERBATIM when the placeholder is used. A better fix would be to stop using `$(VCInstallDir)` and use the value of `CMAKE_${CUDA_C_OR_CXX}_COMPILER` instead, but that will require additional semantic and documentation changes. For now simply fix the regression with the above approach. Reported-by: Stephen Sorley <Stephen.Sorley@jhuapl.edu>
* FindCUDA: Support special characters in path (#15919)Brad King2016-01-151-0/+3
| | | | | | | | Add `VERBATIM` to all `add_custom_command` calls so that CMake will escape arguments properly even when special characters such as "()" are present. Suggested-by: Nils Gladitz <nilsgladitz@gmail.com>
* FindCUDA: Add paths for crosscompiling to aarch64Alexander Szakaly2015-11-231-0/+3
| | | | | Choose a CUDA_TOOLKIT_TARGET_DIR for the aarch64 architecture automatically.
* FindCUDA: drop CUDA_dl_LIBRARYRolf Eike Beer2015-11-031-8/+1
| | | | | | | There is the global CMAKE_DL_LIBS setting which can be used instead. There are even platforms where this is either empty because those functions are part of the libc or is called entirely different, so this code wouldn't work reliable anyway.
* FindCUDA: Fix object build rule for separate compilation on VS 2013+ (#15697)Dominic Meiser2015-08-201-3/+2
| | | | | | The handling of multilevel dependencies has been fixed in Visual Studio 2013. The work around used for VS 2010 and VS 2012 does not work for VS 2013 any more. Switch to normal object build rules for VS 2013 and newer.
* FindCUDA: Resolve a host compiler symlink only if it is Apple cc -> clangBill Hoffman2015-06-151-9/+23
| | | | | | | | Otherwise using a "cc -> ccache" or similar symlink as the compiler causes FindCUDA to select ccache as the host compiler. Update the logic added by commit v3.1.0-rc1~354^2 (FindCUDA: Fix OSX Clang & no C language enabled, 2014-06-12) to apply only in the specific case it is needed.
* FindCUDA: Create output dir while compiling intermediate link file (#15016)James Bigler2015-04-201-0/+2
| | | | | | | | During compilation of the intermediate link file, the output directory may not be present in Visual Studio builds. This fix makes sure the output directory exists before generating the output file. Suggested-by: Irwin Zaid
* FindCUDA: Add specific cuda_language_flag instead of using nvcc.James Bigler2015-04-091-1/+3
| | | | | | I was previously appending to nvcc_flags inside the file loop. This caused the flag to be appended multiple times which freaks out nvcc. Now the flag is specifically handled per file.
* FindCUDA: Allow setting CUDA_SOURCE_PROPERTY_FORMAT for non-.cu files.James Bigler2015-04-091-8/+19
| | | | | | | | | | | | A previously undocumented feature allowed overriding the format specified to CUDA_WRAP_SRCS with a source file property called CUDA_SOURCE_PROPERTY_FORMAT. I added documentation for this feature as well as added the ability to let nvcc compile any file regardless of type if this property was found. In addition, I also fixed a couple of bugs with the calls to _cuda_get_important_host_flags that weren't garding the arguments with "" to prevent empty values from causing errors.
* Merge topic 'FindCUDA.cmake/C++11Flags'Brad King2015-04-091-0/+13
|\ | | | | | | | | 99abebde FindCUDA: Handle c++11 host flag
| * FindCUDA: Handle c++11 host flagJames Bigler2015-04-081-0/+13
| | | | | | | | | | | | | | | | | | | | If the host flags contain a c++11 flag (at least for gcc), then we can't automatically propagate to nvcc it using -Xcompiler. This is because nvcc can't use any C++ only flags. Instead we find this flag and add it to nvcc's flags (it has a special flag for dealing with c++11 code) and remove it from the host flags. Co-Author: Guillermo Marcus <gmarcus@nvidia.com>
* | FindCUDA: Use the static CUDA runtime library if available (#15482)James Bigler2015-04-031-4/+81
|/ | | | | | | | | | Beginning in CUDA 5.5 a static version of the cuda runtime library became available. Since nvcc defaults to using this library over the shared version, FindCUDA will also default to using this version. There are many advantages to using the static version (most importantly to avoid conflicts with multiple versions when building a CUDA based library). Offer a CUDA_USE_STATIC_CUDA_RUNTIME option to control this behavior.
* FindCUDA: Mark more cache variables as advancedMark Abraham2015-01-221-0/+4
| | | | | Mark variables pertaining to specific situations relevant to CUDA compilation as advanced since they are not part of normal usage.
* FindCUDA: Add cuSOLVER library from CUDA 7.0Andrew Seidl2015-01-211-0/+7
|
* Merge topic 'FindCUDA.cmake/UseCMAKE_CXX_FLAGS_separableCompilation'Brad King2015-01-111-1/+9
|\ | | | | | | | | b4e54f9b FindCUDA: Add relevant CMAKE_{C,CXX}_FLAGS for separable compilation
| * FindCUDA: Add relevant CMAKE_{C,CXX}_FLAGS for separable compilationJames Bigler2015-01-061-1/+9
| | | | | | | | | | | | | | Previously only the CMAKE_{C,CXX}_FLAGS_<CONFIG> flags were inspected for relevant flags when compiling the intermediate link file. We need to also consider the configuration agnostic flags, CMAKE_{C,CXX}_FLAGS as well.
| * Merge branch 'release-doc-formatting' into doc-formattingBrad King2014-11-061-4/+4
| |\ | | | | | | | | | | | | Resolve conflict in Modules/ExternalProject.cmake by keeping our side, which is more completely revised.
* | | FindCUDA: Do not assume CMAKE_SYSTEM_PROCESSOR is setMark Abraham2015-01-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | CMAKE_SYSTEM_PROCESSOR is not guaranteed to be defined (per http://www.cmake.org/Wiki/CMake_Cross_Compiling), and when cross compiling where it happens to be undefined, this module was broken. Reviewed-by: Rolf Eike Beer <eike@sf-mail.de>
* | | Merge branch 'release-doc-formatting' into releaseBrad King2014-11-071-4/+4
|\ \ \ | |/ / |/| / | |/
| * Modules: Wrap long lines in pre-formatted documentation blocksBrad King2014-11-061-4/+4
| | | | | | | | Help format the blocks better for display without a wide screen.
* | FindCUDA: Remove rpath logic outdated by CMake's own @rpath supportClinton Stimpson2014-10-221-12/+0
|/ | | | | Otherwise binaries end up with two copies of the same value and the OS X install_name_tool may corrupt them.
* FindCUDA: Avoid if() auto-dereference in string comparisonsAdam Strzelecki2014-09-241-7/+7
| | | | This silences possible CMP0054 warnings.