cmake/debian/patches/0004-Fix-hip-implicit-include-dirs.patch
Cordell Bloor f99a170d60 New patches to fix search for hip-lang
This patch set allows enable_languge(HIP) to find the
hip-lang-config.cmake provided by libamdhip64-dev.

Closes: #1031799
2023-06-01 14:12:14 -06:00

43 lines
1.8 KiB
Diff

From: Cordell Bloor <Cordell.Bloor@amd.com>
Date: Wed, 22 Mar 2023 16:48:10 -0600
Subject: HIP: Add support for HIP runtime in system paths
Add /usr/include to implicit include dirs for ABI check
The CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES are computed using
try_compile in CMAKE_DETERMINE_COMPILER_ABI, but the implicit include
directories aren't known until after try_compile is complete. 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
Bug: https://gitlab.kitware.com/cmake/cmake/-/issues/24562
Bug-Debian: https://bugs.debian.org/1031799
Forwarded: no
---
Source/cmLocalGenerator.cxx | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 75ec694..8f09e0f 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1190,6 +1190,16 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit(
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 aren't 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) {
+ implicitExclude.emplace("/usr/include");
+ }
}
// The Platform/UnixPaths module used to hard-code /usr/include for C, CXX,