From 728eb4ad0bc9730356edbb395fc6261eb77a9864 Mon Sep 17 00:00:00 2001 From: qbisi Date: Wed, 16 Apr 2025 18:37:56 +0800 Subject: [PATCH] pocl: support Darwin platform --- pkgs/by-name/po/pocl/package.nix | 59 +++++++++++++++++++------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/pkgs/by-name/po/pocl/package.nix b/pkgs/by-name/po/pocl/package.nix index ba748fe0d0ee..4d078cb2fb74 100644 --- a/pkgs/by-name/po/pocl/package.nix +++ b/pkgs/by-name/po/pocl/package.nix @@ -23,18 +23,22 @@ let clang = llvmPackages.clangUseLLVM; # Workaround to make sure libclang finds libgcc.a and libgcc_s.so when # invoked from within libpocl - clangWrapped = runCommand "clang-pocl" { nativeBuildInputs = [ makeWrapper ]; } '' - mkdir -p $out/bin - cp -r ${clang}/bin/* $out/bin/ - LIBGCC_DIR=$(dirname $(find ${stdenv.cc.cc}/lib/ -name libgcc.a)) - for F in ${clang}/bin/ld*; do - BASENAME=$(basename "$F") - rm -f $out/bin/$BASENAME - makeWrapper ${clang}/bin/$BASENAME $out/bin/$BASENAME \ - --add-flags "-L$LIBGCC_DIR" \ - --add-flags "-L${lib.getLib stdenv.cc.cc}/lib" - done - ''; + clangWrapped = + if stdenv.hostPlatform.isDarwin then + clang + else + runCommand "clang-pocl" { nativeBuildInputs = [ makeWrapper ]; } '' + mkdir -p $out/bin + cp -r ${clang}/bin/* $out/bin/ + LIBGCC_DIR=$(dirname $(find ${stdenv.cc.cc}/lib/ -name libgcc.a)) + for F in ${clang}/bin/ld*; do + BASENAME=$(basename "$F") + rm -f $out/bin/$BASENAME + makeWrapper ${clang}/bin/$BASENAME $out/bin/$BASENAME \ + --add-flags "-L$LIBGCC_DIR" \ + --add-flags "-L${lib.getLib stdenv.cc.cc}/lib" + done + ''; in stdenv.mkDerivation (finalAttrs: { pname = "pocl"; @@ -47,6 +51,12 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-d/BD8YkdMYtu6yFlGNXrsz7PVIrzBvvYLU1JRv7ZJmc="; }; + postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace pocld/shared_cl_context.cc --replace-fail \ + "Dev.getInfo()" \ + "static_cast(Dev.getInfo())" + ''; + cmakeFlags = [ "-DKERNELLIB_HOST_CPU_VARIANTS=distro" # avoid the runtime linker pulling in a different llvm e.g. from graphics drivers @@ -67,17 +77,20 @@ stdenv.mkDerivation (finalAttrs: { python3 ]; - buildInputs = [ - hwloc - libxml2 - llvmPackages.llvm - llvmPackages.libclang - lttng-ust - opencl-headers - ocl-icd - spirv-tools - spirv-llvm-translator - ]; + buildInputs = + [ + hwloc + libxml2 + llvmPackages.llvm + llvmPackages.libclang + opencl-headers + ocl-icd + spirv-tools + spirv-llvm-translator + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + lttng-ust + ]; passthru.updateScript = nix-update-script { };