jungle/test/compilers/opencl.nix

102 lines
1.8 KiB
Nix

{
stdenv,
ocl-icd,
opencl-headers,
pocl,
clinfo,
writableTmpDirAsHomeHook,
runCommand,
lib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "opencl-pocl-test";
version = "1.0.0";
src = ./opencl.c;
dontUnpack = true;
dontConfigure = true;
buildInputs = [
ocl-icd
opencl-headers
];
buildPhase = ''
runHook preBuild
$CC -Wall -Wextra -D CL_TARGET_OPENCL_VERSION=100 $src -o ocl-hello -lOpenCL
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp ocl-hello $out/bin
runHook postInstall
'';
passthru = {
test-icd =
runCommand "custom-clinfo"
{
nativeBuildInputs =
assert !(lib.hasPrefix "pocl" ocl-icd.pname);
[
clinfo
finalAttrs.finalPackage
pocl
writableTmpDirAsHomeHook
];
env.POCL_DEBUG = "error,warn";
requiredSystemFeatures = [ "sys-devices" ];
}
''
set -x
mkdir $out
clinfo -l >$out/clinfo
clinfo >$out/clinfo-full
ocl-hello >$out/hello
for i in $out/*; do
grep "Portable Computing Language" $i
done
echo $OCL_ICD_VENDORS >$out/env
grep "pocl.*/etc/OpenCL/vendors" $out/env
set +x
'';
# this needs: ocl-icd = pocl-noicd
test-noicd =
runCommand "custom-clinfo"
{
nativeBuildInputs = [
finalAttrs.finalPackage
writableTmpDirAsHomeHook
];
env.POCL_DEBUG = "error,warn";
requiredSystemFeatures = [ "sys-devices" ];
}
''
ocl-hello >$out
grep "Portable Computing Language" $out
'';
};
})