From e43918b4caf8de881cb24a0a7494e086202cff34 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 25 Sep 2023 15:12:14 -0400 Subject: HIP: Fix linking mixed-lang binary with CXX compiler and Makefile generators Following commit 6377a43814 (CUDA: Support response files with nvcc, 2022-06-01, v3.25.0-rc1~636^2), while determining the compiler ABI, do not use response files, so that we can extract implicit link flags. Fixes: #25272 --- Source/cmCoreTryCompile.cxx | 14 ++++++++++---- Tests/HIP/MixedLanguage/CMakeLists.txt | 4 ++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 0674d5a..ee40bd5 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -732,10 +732,16 @@ cm::optional cmCoreTryCompile::TryCompileCode( // The link and compile lines for ABI detection step need to not use // response files so we can extract implicit includes given to // the underlying host compiler - if (testLangs.find("CUDA") != testLangs.end()) { - fprintf(fout, "set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_INCLUDES OFF)\n"); - fprintf(fout, "set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_LIBRARIES OFF)\n"); - fprintf(fout, "set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_OBJECTS OFF)\n"); + static std::array const noRSP{ { "CUDA", "HIP" } }; + for (std::string const& lang : noRSP) { + if (testLangs.find(lang) != testLangs.end()) { + fprintf(fout, "set(CMAKE_%s_USE_RESPONSE_FILE_FOR_INCLUDES OFF)\n", + lang.c_str()); + fprintf(fout, "set(CMAKE_%s_USE_RESPONSE_FILE_FOR_LIBRARIES OFF)\n", + lang.c_str()); + fprintf(fout, "set(CMAKE_%s_USE_RESPONSE_FILE_FOR_OBJECTS OFF)\n", + lang.c_str()); + } } } fprintf(fout, "set(CMAKE_VERBOSE_MAKEFILE 1)\n"); diff --git a/Tests/HIP/MixedLanguage/CMakeLists.txt b/Tests/HIP/MixedLanguage/CMakeLists.txt index 4f6dd3b..af58ade 100644 --- a/Tests/HIP/MixedLanguage/CMakeLists.txt +++ b/Tests/HIP/MixedLanguage/CMakeLists.txt @@ -17,3 +17,7 @@ set_target_properties(MixedStaticLib PROPERTIES POSITION_INDEPENDENT_CODE ON) add_executable(HIPMixedLanguage main.cxx) target_link_libraries(HIPMixedLanguage PRIVATE MixedStaticLib MixedSharedLib) + +add_executable(HIPMixedLanguageCXX main.cxx) +target_link_libraries(HIPMixedLanguageCXX PRIVATE MixedStaticLib MixedSharedLib) +set_property(TARGET HIPMixedLanguageCXX PROPERTY LINKER_LANGUAGE CXX) -- cgit v0.12