diff options
author | Brad King <brad.king@kitware.com> | 2019-06-26 12:43:19 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-06-26 12:43:19 (GMT) |
commit | d9a9150351212348c0fc663b0f31fcb0e1b5c42e (patch) | |
tree | fb848feab65720056ad5504d0b4de951ae2316ef | |
parent | 2bbbc4ce1ff7d7d0cbbdc1d89cff023b754cc35f (diff) | |
parent | 8fbd25772f7db4c6f152a28b0050e6b263951049 (diff) | |
download | CMake-d9a9150351212348c0fc663b0f31fcb0e1b5c42e.zip CMake-d9a9150351212348c0fc663b0f31fcb0e1b5c42e.tar.gz CMake-d9a9150351212348c0fc663b0f31fcb0e1b5c42e.tar.bz2 |
Merge branch 'cuda-msvc-runtime-library' into release-3.15
Merge-request: !3485
-rw-r--r-- | Modules/Platform/Windows-NVIDIA-CUDA.cmake | 23 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 26 | ||||
-rw-r--r-- | Tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Tests/MSVCRuntimeLibrary/CMakeLists.txt | 7 | ||||
-rw-r--r-- | Tests/MSVCRuntimeLibrary/verify.cu | 1 |
5 files changed, 39 insertions, 19 deletions
diff --git a/Modules/Platform/Windows-NVIDIA-CUDA.cmake b/Modules/Platform/Windows-NVIDIA-CUDA.cmake index f160c7b..94d77b9 100644 --- a/Modules/Platform/Windows-NVIDIA-CUDA.cmake +++ b/Modules/Platform/Windows-NVIDIA-CUDA.cmake @@ -60,6 +60,14 @@ unset(__IMPLICT_DLINK_FLAGS) string(REPLACE "/D" "-D" _PLATFORM_DEFINES_CUDA "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_CXX}") +if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT) + set(_MDd "") + set(_MD "") +else() + set(_MDd "-MDd ") + set(_MD "-MD ") +endif() + cmake_policy(GET CMP0092 _cmp0092) if(_cmp0092 STREQUAL "NEW") set(_W3 "") @@ -69,11 +77,18 @@ endif() unset(_cmp0092) string(APPEND CMAKE_CUDA_FLAGS_INIT " ${PLATFORM_DEFINES_CUDA} -D_WINDOWS -Xcompiler=\"${_W3}${_FLAGS_CXX}\"") -string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -Xcompiler=\"-MDd -Zi -Ob0 -Od ${_RTC1}\"") -string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -Xcompiler=\"-MD -O2 -Ob2\" -DNDEBUG") -string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -Xcompiler=\"-MD -Zi -O2 -Ob1\" -DNDEBUG") -string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -Xcompiler=\"-MD -O1 -Ob1\" -DNDEBUG") +string(APPEND CMAKE_CUDA_FLAGS_DEBUG_INIT " -Xcompiler=\"${_MDd}-Zi -Ob0 -Od ${_RTC1}\"") +string(APPEND CMAKE_CUDA_FLAGS_RELEASE_INIT " -Xcompiler=\"${_MD}-O2 -Ob2\" -DNDEBUG") +string(APPEND CMAKE_CUDA_FLAGS_RELWITHDEBINFO_INIT " -Xcompiler=\"${_MD}-Zi -O2 -Ob1\" -DNDEBUG") +string(APPEND CMAKE_CUDA_FLAGS_MINSIZEREL_INIT " -Xcompiler=\"${_MD}-O1 -Ob1\" -DNDEBUG") unset(_W3) +unset(_MDd) +unset(_MD) + +set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded -Xcompiler=-MT) +set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL -Xcompiler=-MD) +set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug -Xcompiler=-MTd) +set(CMAKE_CUDA_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL -Xcompiler=-MDd) set(CMAKE_CUDA_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 9368414..9586007 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2910,10 +2910,9 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions( Options& cudaOptions = *pOptions; // Get compile flags for CUDA in this directory. - std::string CONFIG = cmSystemTools::UpperCase(configName); - std::string configFlagsVar = "CMAKE_CUDA_FLAGS_" + CONFIG; - std::string flags = this->Makefile->GetSafeDefinition("CMAKE_CUDA_FLAGS") + - " " + this->Makefile->GetSafeDefinition(configFlagsVar); + std::string flags; + this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget, "CUDA", + configName); this->LocalGenerator->AddCompileOptions(flags, this->GeneratorTarget, "CUDA", configName); @@ -3114,11 +3113,9 @@ bool cmVisualStudio10TargetGenerator::ComputeMasmOptions( this->LocalGenerator, Options::MasmCompiler, gg->GetMasmFlagTable()); Options& masmOptions = *pOptions; - std::string CONFIG = cmSystemTools::UpperCase(configName); - std::string configFlagsVar = "CMAKE_ASM_MASM_FLAGS_" + CONFIG; - std::string flags = - this->Makefile->GetSafeDefinition("CMAKE_ASM_MASM_FLAGS") + " " + - this->Makefile->GetSafeDefinition(configFlagsVar); + std::string flags; + this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget, + "ASM_MASM", configName); masmOptions.Parse(flags); @@ -3168,12 +3165,11 @@ bool cmVisualStudio10TargetGenerator::ComputeNasmOptions( this->LocalGenerator, Options::NasmCompiler, gg->GetNasmFlagTable()); Options& nasmOptions = *pOptions; - std::string CONFIG = cmSystemTools::UpperCase(configName); - std::string configFlagsVar = "CMAKE_ASM_NASM_FLAGS_" + CONFIG; - std::string flags = - this->Makefile->GetSafeDefinition("CMAKE_ASM_NASM_FLAGS") + " -f" + - this->Makefile->GetSafeDefinition("CMAKE_ASM_NASM_OBJECT_FORMAT") + " " + - this->Makefile->GetSafeDefinition(configFlagsVar); + std::string flags; + this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget, + "ASM_NASM", configName); + flags += " -f"; + flags += this->Makefile->GetSafeDefinition("CMAKE_ASM_NASM_OBJECT_FORMAT"); nasmOptions.Parse(flags); // Get includes for this target diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 920af04..e73b277 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2001,6 +2001,7 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") ADD_TEST_MACRO(PrecompiledHeader foo) endif() + set(MSVCRuntimeLibrary_BUILD_OPTIONS -DCMake_TEST_CUDA=${CMake_TEST_CUDA}) ADD_TEST_MACRO(MSVCRuntimeLibrary) if(CMAKE_Fortran_COMPILER) ADD_TEST_MACRO(MSVCRuntimeLibrary.Fortran) diff --git a/Tests/MSVCRuntimeLibrary/CMakeLists.txt b/Tests/MSVCRuntimeLibrary/CMakeLists.txt index 6994d8d..f7d9fec 100644 --- a/Tests/MSVCRuntimeLibrary/CMakeLists.txt +++ b/Tests/MSVCRuntimeLibrary/CMakeLists.txt @@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.14) cmake_policy(SET CMP0091 NEW) project(MSVCRuntimeLibrary) +if(CMake_TEST_CUDA) + enable_language(CUDA) +endif() + function(verify_combinations threads lang src) set(verify_tc_config_ Release) set(verify_tc_config_Debug Debug) @@ -62,3 +66,6 @@ endfunction() verify(C verify.c) verify(CXX verify.cxx) +if(CMake_TEST_CUDA) + verify(CUDA verify.cu) +endif() diff --git a/Tests/MSVCRuntimeLibrary/verify.cu b/Tests/MSVCRuntimeLibrary/verify.cu new file mode 100644 index 0000000..741bca6 --- /dev/null +++ b/Tests/MSVCRuntimeLibrary/verify.cu @@ -0,0 +1 @@ +#include "verify.h" |