python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / by-name / po / pocl / package.nix
blob795a3893d8733815a516cfed87b3cb7bac9fb148
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   nix-update-script,
6   cmake,
7   pkg-config,
8   hwloc,
9   llvmPackages,
10   libxml2, # required for statically linked llvm
11   spirv-llvm-translator,
12   spirv-tools,
13   lttng-ust,
14   ocl-icd,
15   python3,
16   runCommand,
17   makeWrapper,
20 let
21   clang = llvmPackages.clangUseLLVM;
22   # Workaround to make sure libclang finds libgcc.a and libgcc_s.so when
23   # invoked from within libpocl
24   clangWrapped = runCommand "clang-pocl" { nativeBuildInputs = [ makeWrapper ]; } ''
25     mkdir -p $out/bin
26     cp -r ${clang}/bin/* $out/bin/
27     LIBGCC_DIR=$(dirname $(find ${stdenv.cc.cc}/lib/ -name libgcc.a))
28     for F in ${clang}/bin/ld*; do
29       BASENAME=$(basename "$F")
30       rm -f $out/bin/$BASENAME
31       makeWrapper ${clang}/bin/$BASENAME $out/bin/$BASENAME \
32         --add-flags "-L$LIBGCC_DIR" \
33         --add-flags "-L${lib.getLib stdenv.cc.cc}/lib"
34     done
35   '';
37 stdenv.mkDerivation (finalAttrs: {
38   pname = "pocl";
39   version = "6.0";
41   src = fetchFromGitHub {
42     owner = "pocl";
43     repo = "pocl";
44     rev = "v${finalAttrs.version}";
45     hash = "sha256-NHR9yrI6Odb/s/OBnEVifdcLEXvwqzAMZWpGViv2cJg=";
46   };
48   cmakeFlags = [
49     "-DKERNELLIB_HOST_CPU_VARIANTS=distro"
50     # avoid the runtime linker pulling in a different llvm e.g. from graphics drivers
51     "-DSTATIC_LLVM=ON"
52     "-DENABLE_POCL_BUILDING=OFF"
53     "-DPOCL_ICD_ABSOLUTE_PATH=ON"
54     "-DENABLE_ICD=ON"
55     "-DCLANG=${clangWrapped}/bin/clang"
56     "-DCLANGXX=${clangWrapped}/bin/clang++"
57     "-DENABLE_REMOTE_CLIENT=ON"
58     "-DENABLE_REMOTE_SERVER=ON"
59   ];
61   nativeBuildInputs = [
62     cmake
63     pkg-config
64     clangWrapped
65     python3
66   ];
68   buildInputs = [
69     hwloc
70     libxml2
71     llvmPackages.llvm
72     llvmPackages.libclang
73     lttng-ust
74     ocl-icd
75     spirv-tools
76     spirv-llvm-translator
77   ];
79   passthru.updateScript = nix-update-script { };
81   meta = {
82     description = "A portable open source (MIT-licensed) implementation of the OpenCL standard";
83     homepage = "http://portablecl.org";
84     changelog = "https://github.com/pocl/pocl/releases/tag/v${finalAttrs.version}";
85     license = lib.licenses.mit;
86     maintainers = with lib.maintainers; [
87       jansol
88       xddxdd
89     ];
90     platforms = lib.platforms.unix;
91   };