diff options
author | Vladimír Čunát <v@cunat.cz> | 2023-11-16 22:06:22 +0100 |
---|---|---|
committer | Vladimír Čunát <v@cunat.cz> | 2023-11-16 22:06:22 +0100 |
commit | a7a8f8253db3f32cc15baf527d36ef7171425eba (patch) | |
tree | 5de25f1c82e7892f6aec7b3e5ddb718ff0c50df2 /pkgs/development/compilers/llvm/16/libclc/default.nix | |
parent | f31242fcfd14e870eb6898fc8849bc4dee883054 (diff) | |
parent | 391aafc3d6b17ed5517795eb8b9c41ed7c6082e3 (diff) |
Merge #263535: staging-next 2023-10-26
Diffstat (limited to 'pkgs/development/compilers/llvm/16/libclc/default.nix')
-rw-r--r-- | pkgs/development/compilers/llvm/16/libclc/default.nix | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/pkgs/development/compilers/llvm/16/libclc/default.nix b/pkgs/development/compilers/llvm/16/libclc/default.nix new file mode 100644 index 0000000000000..6fa0751f906be --- /dev/null +++ b/pkgs/development/compilers/llvm/16/libclc/default.nix @@ -0,0 +1,54 @@ +{ lib, stdenv, version, runCommand, monorepoSrc, llvm, buildPackages, buildLlvmTools, ninja, cmake, python3 }: + +stdenv.mkDerivation rec { + pname = "libclc"; + inherit version; + + src = runCommand "${pname}-src-${version}" {} '' + mkdir -p "$out" + cp -r ${monorepoSrc}/cmake "$out" + cp -r ${monorepoSrc}/${pname} "$out" + ''; + + sourceRoot = "${src.name}/${pname}"; + + outputs = [ "out" "dev" ]; + + patches = [ + ./libclc-gnu-install-dirs.patch + ]; + + # cmake expects all required binaries to be in the same place, so it will not be able to find clang without the patch + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace 'find_program( LLVM_CLANG clang PATHS ''${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )' \ + 'find_program( LLVM_CLANG clang PATHS "${buildLlvmTools.clang.cc}/bin" NO_DEFAULT_PATH )' \ + --replace 'find_program( LLVM_AS llvm-as PATHS ''${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )' \ + 'find_program( LLVM_AS llvm-as PATHS "${buildLlvmTools.llvm}/bin" NO_DEFAULT_PATH )' \ + --replace 'find_program( LLVM_LINK llvm-link PATHS ''${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )' \ + 'find_program( LLVM_LINK llvm-link PATHS "${buildLlvmTools.llvm}/bin" NO_DEFAULT_PATH )' \ + --replace 'find_program( LLVM_OPT opt PATHS ''${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )' \ + 'find_program( LLVM_OPT opt PATHS "${buildLlvmTools.llvm}/bin" NO_DEFAULT_PATH )' \ + --replace 'find_program( LLVM_SPIRV llvm-spirv PATHS ''${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )' \ + 'find_program( LLVM_SPIRV llvm-spirv PATHS "${buildPackages.spirv-llvm-translator}/bin" NO_DEFAULT_PATH )' + '' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' + substituteInPlace CMakeLists.txt \ + --replace 'COMMAND prepare_builtins' 'COMMAND ${buildPackages.libclc.dev}/bin/prepare_builtins' + ''; + + nativeBuildInputs = [ cmake ninja python3 ]; + buildInputs = [ llvm ]; + strictDeps = true; + + postInstall = '' + install -Dt $dev/bin prepare_builtins + ''; + + meta = with lib; { + broken = stdenv.isDarwin; + homepage = "http://libclc.llvm.org/"; + description = "Implementation of the library requirements of the OpenCL C programming language"; + license = licenses.mit; + platforms = platforms.all; + }; +} |