aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/libraries/rocclr/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/rocclr/default.nix')
-rw-r--r--nixpkgs/pkgs/development/libraries/rocclr/default.nix64
1 files changed, 64 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/rocclr/default.nix b/nixpkgs/pkgs/development/libraries/rocclr/default.nix
new file mode 100644
index 00000000000..4e0836946c1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/rocclr/default.nix
@@ -0,0 +1,64 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, rocm-cmake
+, clang
+, rocm-comgr
+, rocm-opencl-runtime
+, rocm-runtime
+, rocm-thunk
+, libelf
+, libglvnd
+, libX11
+, numactl
+}:
+
+stdenv.mkDerivation rec {
+ pname = "rocclr";
+ version = "3.7.0";
+
+ src = fetchFromGitHub {
+ owner = "ROCm-Developer-Tools";
+ repo = "ROCclr";
+ rev = "rocm-${version}";
+ sha256 = "0sx4irbmjgs5bm8dc8jc9fl1jmfdnrp3ar14hdhrsmbani7gqah3";
+ };
+
+ nativeBuildInputs = [ cmake rocm-cmake ];
+
+ buildInputs = [ clang rocm-comgr rocm-runtime rocm-thunk ];
+
+ propagatedBuildInputs = [ libelf libglvnd libX11 numactl ];
+
+ prePatch = ''
+ substituteInPlace CMakeLists.txt \
+ --replace 'set(ROCCLR_EXPORTS_FILE "''${CMAKE_CURRENT_BINARY_DIR}/amdrocclr_staticTargets.cmake")' \
+ 'set(ROCCLR_EXPORTS_FILE "''${CMAKE_INSTALL_LIBDIR}/cmake/amdrocclr_staticTargets.cmake")' \
+ --replace 'set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ''${CMAKE_CURRENT_BINARY_DIR}/lib)' \
+ 'set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ''${CMAKE_INSTALL_LIBDIR})' \
+ --replace 'find_library( OpenCL REQUIRED' 'find_library( OpenCL'
+ substituteInPlace device/comgrctx.cpp \
+ --replace "libamd_comgr.so" "${rocm-comgr}/lib/libamd_comgr.so"
+ '';
+
+ cmakeFlags = [
+ "-DOPENCL_DIR=${rocm-opencl-runtime.src}"
+ ];
+
+ preFixup = ''
+ ln -s $out/include/compiler/lib/include/* $out/include
+ substituteInPlace $out/lib/cmake/rocclr/ROCclrConfig.cmake \
+ --replace "/build/source/build" "$out"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Radeon Open Compute common language runtime";
+ homepage = "https://github.com/ROCm-Developer-Tools/ROCclr";
+ license = licenses.mit;
+ maintainers = with maintainers; [ danieldk ];
+ # rocclr seems to have some AArch64 ifdefs, but does not seem
+ # to be supported yet by the build infrastructure. Recheck in
+ # the future.
+ platforms = [ "x86_64-linux" ];
+ };
+}