mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
HIP: Fix implicit include directory detection under /usr/include
The `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES` are computed using `try_compile` in `CMAKE_DETERMINE_COMPILER_ABI`, but the implicit include directories are not known during that `try_compile`. This can be a problem when the HIP runtime include path is `/usr/include`, because the runtime include path is always added to the userDirs and the compiler automatically includes standard library headers via `__clang_hip_runtime_wrapper.h`. Issue: #24562
This commit is contained in:
@@ -1201,6 +1201,17 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit(
|
||||
for (size_t i = impDirVecOldSize; i < impDirVec.size(); ++i) {
|
||||
cmSystemTools::ConvertToUnixSlashes(impDirVec[i]);
|
||||
}
|
||||
|
||||
// The CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES are computed using
|
||||
// try_compile in CMAKE_DETERMINE_COMPILER_ABI, but the implicit include
|
||||
// directories are not known during that try_compile. This can be a
|
||||
// problem when the HIP runtime include path is /usr/include because the
|
||||
// runtime include path is always added to the userDirs and the compiler
|
||||
// includes standard library headers via "__clang_hip_runtime_wrapper.h".
|
||||
if (lang == "HIP" && impDirVec.size() == impDirVecOldSize &&
|
||||
!cm::contains(impDirVec, "/usr/include")) {
|
||||
implicitExclude.emplace("/usr/include");
|
||||
}
|
||||
}
|
||||
|
||||
// The Platform/UnixPaths module used to hard-code /usr/include for C, CXX,
|
||||
|
||||
Reference in New Issue
Block a user