diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/beignet')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/beignet/clang_llvm.patch | 49 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/beignet/default.nix | 112 |
2 files changed, 161 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/beignet/clang_llvm.patch b/nixpkgs/pkgs/development/libraries/beignet/clang_llvm.patch new file mode 100644 index 000000000000..bcdad510e10d --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/beignet/clang_llvm.patch @@ -0,0 +1,49 @@ +diff --git a/./CMake/FindLLVM.cmake b/../Beignet-1.1.2-Source_new/CMake/FindLLVM.cmake +index a148321..96cafb8 100644 +--- a/./CMake/FindLLVM.cmake ++++ b/../Beignet-1.1.2-Source_new/CMake/FindLLVM.cmake +@@ -22,6 +22,7 @@ if (LLVM_CONFIG_EXECUTABLE) + else (LLVM_CONFIG_EXECUTABLE) + message(FATAL_ERROR "Could NOT find LLVM executable, please add -DLLVM_INSTALL_DIR=/path/to/llvm-config/ in cmake command") + endif (LLVM_CONFIG_EXECUTABLE) ++ + execute_process( + COMMAND ${LLVM_CONFIG_EXECUTABLE} --version + OUTPUT_VARIABLE LLVM_VERSION +@@ -44,10 +45,16 @@ if (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR) + endif (LLVM_VERSION_NODOT VERSION_LESS LLVM_FIND_VERSION_NODOT) + endif (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR) + +-if (LLVM_INSTALL_DIR) ++if (CLANG_INSTALL_DIR) + find_program(CLANG_EXECUTABLE + NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} clang +- PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH) ++ PATHS ${CLANG_INSTALL_DIR} NO_DEFAULT_PATH) ++else (CLANG_INSTALL_DIR) ++ find_program(CLANG_EXECUTABLE ++ NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} clang) ++endif (CLANG_INSTALL_DIR) ++ ++if (LLVM_INSTALL_DIR) + find_program(LLVM_AS_EXECUTABLE + NAMES llvm-as-${LLVM_VERSION_NODOT} llvm-as-${LLVM_VERSION_NOPATCH} llvm-as + PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH) +@@ -55,8 +62,6 @@ if (LLVM_INSTALL_DIR) + NAMES llvm-link-${LLVM_VERSION_NODOT} llvm-link-${LLVM_VERSION_NOPATCH} llvm-link + PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH) + else (LLVM_INSTALL_DIR) +- find_program(CLANG_EXECUTABLE +- NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} clang) + find_program(LLVM_AS_EXECUTABLE + NAMES llvm-as-${LLVM_VERSION_NODOT} llvm-as-${LLVM_VERSION_NOPATCH} llvm-as) + find_program(LLVM_LINK_EXECUTABLE +@@ -105,7 +110,7 @@ endif (LLVM_VERSION_NODOT VERSION_GREATER 34) + macro(add_one_lib name) + FIND_LIBRARY(CLANG_LIB + NAMES ${name} +- PATHS ${LLVM_LIBRARY_DIR} NO_DEFAULT_PATH) ++ PATHS ${CLANG_LIBRARY_DIR} NO_DEFAULT_PATH) + set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_LIB}) + unset(CLANG_LIB CACHE) + endmacro() diff --git a/nixpkgs/pkgs/development/libraries/beignet/default.nix b/nixpkgs/pkgs/development/libraries/beignet/default.nix new file mode 100644 index 000000000000..8e8e455e59a6 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/beignet/default.nix @@ -0,0 +1,112 @@ +{ lib, stdenv +, fetchFromGitHub +, cmake +, pkg-config +, clang-unwrapped +, llvm +, libdrm +, libX11 +, libpthreadstubs +, libXdmcp +, libXdamage +, libXext +, python3 +, ocl-icd +, libGL +, makeWrapper +, beignet +}: + +stdenv.mkDerivation rec { + pname = "beignet"; + version = "unstable-2018.08.20"; + + src = fetchFromGitHub { + owner = "intel"; + repo = "beignet"; + rev = "fc5f430cb7b7a8f694d86acbb038bd5b38ec389c"; + sha256 = "1z64v69w7f52jrskh1jfyh1x46mzfhjrqxj9hhgzh3xxv9yla32h"; + }; + + patches = [ ./clang_llvm.patch ]; + + postPatch = '' + substituteInPlace CMakeLists.txt --replace /etc/OpenCL/vendors "\''${CMAKE_INSTALL_PREFIX}/etc/OpenCL/vendors" + patchShebangs src/git_sha1.sh + ''; + + cmakeFlags = [ "-DCLANG_LIBRARY_DIR=${clang-unwrapped}/lib" ]; + + buildInputs = [ + llvm + clang-unwrapped + libX11 + libXext + libpthreadstubs + libdrm + libXdmcp + libXdamage + ocl-icd + libGL + ]; + + nativeBuildInputs = [ + cmake + pkg-config + python3 + ]; + + passthru.utests = stdenv.mkDerivation { + pname = "beignet-utests"; + inherit version src; + + preConfigure = '' + cd utests + ''; + + nativeBuildInputs = [ + cmake + python3 + pkg-config + makeWrapper + ]; + + buildInputs = [ + ocl-icd + ]; + + installPhase = '' + wrapBin() { + install -Dm755 "$1" "$out/bin/$(basename "$1")" + wrapProgram "$out/bin/$(basename "$1")" \ + --set OCL_BITCODE_LIB_PATH ${beignet}/lib/beignet/beignet.bc \ + --set OCL_HEADER_FILE_DIR "${beignet}/lib/beignet/include" \ + --set OCL_PCH_PATH "${beignet}/lib/beignet/beignet.pch" \ + --set OCL_GBE_PATH "${beignet}/lib/beignet/libgbe.so" \ + --set OCL_INTERP_PATH "${beignet}/lib/beignet/libgbeinterp.so" \ + --set OCL_KERNEL_PATH "$out/lib/beignet/kernels" \ + --set OCL_IGNORE_SELF_TEST 1 + } + + install -Dm755 libutests.so $out/lib/libutests.so + wrapBin utest_run + wrapBin flat_address_space + mkdir $out/lib/beignet + cp -r ../../kernels $out/lib/beignet + ''; + }; + + meta = with lib; { + homepage = "https://cgit.freedesktop.org/beignet/"; + description = "OpenCL Library for Intel Ivy Bridge and newer GPUs"; + longDescription = '' + The package provides an open source implementation of the OpenCL specification for Intel GPUs. + It supports the Intel OpenCL runtime library and compiler. + ''; + license = licenses.lgpl21Plus; + maintainers = with maintainers; [ artuuge zimbatm ]; + platforms = platforms.linux; + # Requires libdrm_intel + badPlatforms = [ "aarch64-linux" ]; + }; +} |