summaryrefslogtreecommitdiff
path: root/dev-libs/rocm-comgr/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-02-02 15:07:39 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-02-02 15:07:39 +0000
commit52895d302231ef73b105756d2781b2262638d566 (patch)
tree7a2e0cf7cae8995cbbb6f9ae807d5c49b4f2b77c /dev-libs/rocm-comgr/files
parent68f980204de6c2d69eed8748edc90282879326a6 (diff)
gentoo auto-resync : 02:02:2023 - 15:07:39
Diffstat (limited to 'dev-libs/rocm-comgr/files')
-rw-r--r--dev-libs/rocm-comgr/files/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch48
-rw-r--r--dev-libs/rocm-comgr/files/0001-Specify-clang-exe-path-in-Driver-Creation.patch52
-rw-r--r--dev-libs/rocm-comgr/files/rocm-comgr-5.0-rocm_path.patch14
-rw-r--r--dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch15
-rw-r--r--dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch17
-rw-r--r--dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch14
6 files changed, 160 insertions, 0 deletions
diff --git a/dev-libs/rocm-comgr/files/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch b/dev-libs/rocm-comgr/files/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch
new file mode 100644
index 000000000000..a61d92794d51
--- /dev/null
+++ b/dev-libs/rocm-comgr/files/0001-Find-CLANG_RESOURCE_DIR-using-clang-print-resource-d.patch
@@ -0,0 +1,48 @@
+From 4c210fdf6943c0c40b5fe0f66800c7b9c7ca84d3 Mon Sep 17 00:00:00 2001
+From: Yiyang Wu <xgreenlandforwyy@gmail.com>
+Date: Tue, 14 Jun 2022 20:21:22 +0800
+Subject: [PATCH] Find CLANG_RESOURCE_DIR using clang -print-resource-dir
+
+Suggested-By: https://reviews.llvm.org/D49486
+Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
+---
+ lib/comgr/cmake/opencl_pch.cmake | 24 +++---------------------
+ 1 file changed, 3 insertions(+), 21 deletions(-)
+
+diff --git a/lib/comgr/cmake/opencl_pch.cmake b/lib/comgr/cmake/opencl_pch.cmake
+index 95311fc..71050c8 100644
+--- a/cmake/opencl_pch.cmake
++++ b/cmake/opencl_pch.cmake
+@@ -1,26 +1,8 @@
+ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+ find_package(Clang REQUIRED CONFIG)
+-
+- # FIXME: CLANG_CMAKE_DIR seems like the most stable way to find this, but
+- # really there is no way to reliably discover this header.
+- #
+- # We effectively back up to the Clang output directory (for the case of a build
+- # tree) or install prefix (for the case of an installed copy), and then search
+- # for a file named opencl-c.h anywhere below that. We take the first result in
+- # the case where there are multiple (e.g. if there is an installed copy nested
+- # in a build directory). This is a bit imprecise, but it covers cases like MSVC
+- # adding some additional configuration-specific subdirectories to the build
+- # tree but not to an installed copy.
+- file(GLOB_RECURSE OPENCL_C_H_LIST "${CLANG_CMAKE_DIR}/../../../*/opencl-c.h")
+-
+- list(GET OPENCL_C_H_LIST 0 OPENCL_C_H)
+-
+- if (NOT EXISTS "${OPENCL_C_H}" OR IS_DIRECTORY "${OPENCL_C_H}")
+- message(FATAL_ERROR "Unable to locate opencl-c.h from the supplied Clang. The path '${CLANG_CMAKE_DIR}/../../../*' was searched.")
+- endif()
+-else()
+- get_target_property(clang_build_header_dir clang-resource-headers RUNTIME_OUTPUT_DIRECTORY)
+- set(OPENCL_C_H "${clang_build_header_dir}/opencl-c.h")
++ execute_process(COMMAND "${CLANG_CMAKE_DIR}/../../../bin/clang" -print-resource-dir OUTPUT_VARIABLE CLANG_RESOURCE_DIR)
++ string(STRIP ${CLANG_RESOURCE_DIR} CLANG_RESOURCE_DIR)
++ set(OPENCL_C_H "${CLANG_RESOURCE_DIR}/include/opencl-c.h")
+ endif()
+
+ # Macro to create and install a custom target for generating PCH for given
+--
+2.39.0
+
diff --git a/dev-libs/rocm-comgr/files/0001-Specify-clang-exe-path-in-Driver-Creation.patch b/dev-libs/rocm-comgr/files/0001-Specify-clang-exe-path-in-Driver-Creation.patch
new file mode 100644
index 000000000000..a1ce8cae50b8
--- /dev/null
+++ b/dev-libs/rocm-comgr/files/0001-Specify-clang-exe-path-in-Driver-Creation.patch
@@ -0,0 +1,52 @@
+From e0fb8aca856eb61d2f774a0893e2243742eed341 Mon Sep 17 00:00:00 2001
+From: Yiyang Wu <xgreenlandforwyy@gmail.com>
+Date: Fri, 18 Nov 2022 15:41:53 +0800
+Subject: [PATCH] Specify clang exe path in Driver Creation
+
+By doing so, TheDriver can get the correct resource dir.
+
+Closes: #48
+Reference: #49
+---
+ lib/comgr/src/comgr-compiler.cpp | 11 +----------
+ 1 file changed, 1 insertion(+), 10 deletions(-)
+
+diff --git a/lib/comgr/src/comgr-compiler.cpp b/lib/comgr/src/comgr-compiler.cpp
+index 80849d4..67fe82b 100644
+--- a/src/comgr-compiler.cpp
++++ b/src/comgr-compiler.cpp
+@@ -660,7 +660,7 @@ AMDGPUCompiler::executeInProcessDriver(ArrayRef<const char *> Args) {
+ IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs);
+ DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);
+ ProcessWarningOptions(Diags, *DiagOpts, /*ReportDiags=*/false);
+- Driver TheDriver("", "", Diags);
++ Driver TheDriver((Twine(env::getLLVMPath()) + "/bin/clang").str(), "", Diags);
+ TheDriver.setTitle("AMDGPU Code Object Manager");
+ TheDriver.setCheckInputsExist(false);
+
+@@ -998,11 +998,6 @@ amd_comgr_status_t AMDGPUCompiler::addCompilationFlags() {
+ HIPIncludePath = (Twine(env::getHIPPath()) + "/include").str();
+ // HIP headers depend on hsa.h which is in ROCM_DIR/include.
+ ROCMIncludePath = (Twine(env::getROCMPath()) + "/include").str();
+- ClangIncludePath =
+- (Twine(env::getLLVMPath()) + "/lib/clang/" + CLANG_VERSION_STRING).str();
+- ClangIncludePath2 = (Twine(env::getLLVMPath()) + "/lib/clang/" +
+- CLANG_VERSION_STRING + "/include")
+- .str();
+
+ Args.push_back("-x");
+
+@@ -1028,10 +1023,6 @@ amd_comgr_status_t AMDGPUCompiler::addCompilationFlags() {
+ Args.push_back(ROCMIncludePath.c_str());
+ Args.push_back("-isystem");
+ Args.push_back(HIPIncludePath.c_str());
+- Args.push_back("-isystem");
+- Args.push_back(ClangIncludePath.c_str());
+- Args.push_back("-isystem");
+- Args.push_back(ClangIncludePath2.c_str());
+ break;
+ default:
+ return AMD_COMGR_STATUS_ERROR_INVALID_ARGUMENT;
+--
+2.39.0
+
diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.0-rocm_path.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.0-rocm_path.patch
new file mode 100644
index 000000000000..6e908847a54f
--- /dev/null
+++ b/dev-libs/rocm-comgr/files/rocm-comgr-5.0-rocm_path.patch
@@ -0,0 +1,14 @@
+Index: comgr/src/comgr-env.cpp
+===================================================================
+--- comgr.orig/src/comgr-env.cpp
++++ comgr/src/comgr-env.cpp
+@@ -247,6 +247,9 @@ InstallationDetector *getDetectorImpl()
+ if (EnvROCMPath) {
+ ROCmInstallPath = EnvROCMPath;
+ }
++ else {
++ ROCmInstallPath = "@GENTOO_PORTAGE_EPREFIX@/usr";
++ }
+
+ InstallationDetector *Detector;
+ if (ROCmInstallPath == "") {
diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch
new file mode 100644
index 000000000000..54b98726026f
--- /dev/null
+++ b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-HIPIncludePath-not-needed.patch
@@ -0,0 +1,15 @@
+ROCM and HIPIncludePath is now /usr, which disturb the include order
+===================================================================
+--- comgr.orig/src/comgr-compiler.cpp
++++ comgr/src/comgr-compiler.cpp
+@@ -1010,10 +1010,6 @@ amd_comgr_status_t AMDGPUCompiler::addCo
+ Args.push_back("x86_64-unknown-linux-gnu");
+ Args.push_back("--cuda-device-only");
+ Args.push_back("-nogpulib");
+- Args.push_back("-isystem");
+- Args.push_back(ROCMIncludePath.c_str());
+- Args.push_back("-isystem");
+- Args.push_back(HIPIncludePath.c_str());
+ break;
+ default:
+ return AMD_COMGR_STATUS_ERROR_INVALID_ARGUMENT;
diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch
new file mode 100644
index 000000000000..08a40460c762
--- /dev/null
+++ b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fix-tests.patch
@@ -0,0 +1,17 @@
+Vanilla LLVM does not support calling AMDGPU_KERNEL across different sources/bitcodes.
+Without this patch https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/issues/45 occurs.
+Reference: https://github.com/llvm/llvm-project/issues/60313
+===================================================================
+--- comgr.orig/test/source1.cl
++++ comgr/test/source1.cl
+@@ -35,7 +35,9 @@
+
+ #include "include-a.h"
+
++void kernel source3(__global int *j) { *j = FOO; }
++
+ void kernel source1(__global int *j) {
+ *j += 2;
+- source2(j);
++ source3(j);
+ }
diff --git a/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch
new file mode 100644
index 000000000000..c8d078ee8946
--- /dev/null
+++ b/dev-libs/rocm-comgr/files/rocm-comgr-5.3.3-fno-stack-protector.patch
@@ -0,0 +1,14 @@
+This add -fno-stack-protector to all compilation, since -f-stack-protector is currently unsupported by ROCm
+Reference: https://bugs.gentoo.org/890377
+index 465187e..0baf925 100644
+--- a/src/comgr-compiler.cpp
++++ b/src/comgr-compiler.cpp
+@@ -850,6 +850,8 @@ amd_comgr_status_t AMDGPUCompiler::processFile(const char *InputFilePath,
+ Argv.push_back(Arg);
+ }
+
++ Argv.push_back("-fno-stack-protector");
++
+ for (auto &Option : ActionInfo->getOptions()) {
+ Argv.push_back(Option.c_str());
+ if (Option.rfind("--rocm-path", 0) == 0) {