You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sys-devel/llvm-roc/files/llvm-roc-4.0.0-hip-location...

85 lines
2.9 KiB

replace hardcoded hip finder with Gentoo paths.
It is not necessary to check HIP runtime each time.
Author: Benda Xu <heroxbd@gentoo.org>
Index: llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
===================================================================
--- llvm-project-rocm-4.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -116,37 +116,8 @@ RocmInstallationDetector::getInstallatio
return Candidates;
}
- // Try to find relative to the compiler binary.
- const char *InstallDir = D.getInstalledDir();
+ Candidates.emplace_back(D.SysRoot + "/usr", /*StrictChecking=*/true);
- // Check both a normal Unix prefix position of the clang binary, as well as
- // the Windows-esque layout the ROCm packages use with the host architecture
- // subdirectory of bin.
-
- // Strip off directory (usually bin)
- StringRef ParentDir = llvm::sys::path::parent_path(InstallDir);
- StringRef ParentName = llvm::sys::path::filename(ParentDir);
-
- // Some builds use bin/{host arch}, so go up again.
- if (ParentName == "bin") {
- ParentDir = llvm::sys::path::parent_path(ParentDir);
- ParentName = llvm::sys::path::filename(ParentDir);
- }
-
- // Some versions of the rocm llvm package install to /opt/rocm/llvm/bin
- if (ParentName == "llvm")
- ParentDir = llvm::sys::path::parent_path(ParentDir);
-
- Candidates.emplace_back(ParentDir.str(), /*StrictChecking=*/true);
-
- // Device library may be installed in clang resource directory.
- Candidates.emplace_back(D.ResourceDir, /*StrictChecking=*/true);
-
- Candidates.emplace_back(D.SysRoot + "/opt/rocm", /*StrictChecking=*/true);
- if (ParentName.startswith("aomp")) {
- // Some versions of the aomp package install to /opt/rocm/aomp/bin
- Candidates.emplace_back(ParentDir.str());
- }
return Candidates;
}
@@ -273,33 +244,7 @@ void RocmInstallationDetector::detectDev
}
void RocmInstallationDetector::detectHIPRuntime() {
- auto Candidates = getInstallationPathCandidates();
- auto &FS = D.getVFS();
-
- for (const auto &Candidate : Candidates) {
- InstallPath = Candidate.Path;
- if (InstallPath.empty() || !FS.exists(InstallPath))
- continue;
-
- BinPath = InstallPath;
- llvm::sys::path::append(BinPath, "bin");
- IncludePath = InstallPath;
- llvm::sys::path::append(IncludePath, "include");
- LibPath = InstallPath;
- llvm::sys::path::append(LibPath, "lib");
-
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> VersionFile =
- FS.getBufferForFile(BinPath + "/.hipVersion");
- if (!VersionFile && Candidate.StrictChecking)
- continue;
-
- if (HIPVersionArg.empty() && VersionFile)
- ParseHIPVersionFile((*VersionFile)->getBuffer());
-
- HasHIPRuntime = true;
- return;
- }
- HasHIPRuntime = false;
+ HasHIPRuntime = true;
}
void RocmInstallationDetector::print(raw_ostream &OS) const {