diff --git a/pkgs/development/compilers/computecpp/default.nix b/pkgs/development/compilers/computecpp/default.nix new file mode 100644 index 000000000000..65cfcaa7ff63 --- /dev/null +++ b/pkgs/development/compilers/computecpp/default.nix @@ -0,0 +1,52 @@ +{ stdenv +, fetchzip +, pkg-config +, autoPatchelfHook +, installShellFiles +, ncurses5 +, ocl-icd +, zlib +}: + +stdenv.mkDerivation rec { + pname = "computecpp"; + version = "1.2.0"; + + src = fetchzip { + url = "https://computecpp.codeplay.com/downloads/computecpp-ce/${version}/ubuntu-16.04-64bit.tar.gz"; + sha256 = "191kwvzxfg1sbaq6aw6f84chi7bhsibb2a63zsyz3gz8m0c0syr5"; + stripRoot = true; + }; + + dontStrip = true; + + buildInputs = [ stdenv.cc.cc.lib ncurses5 ocl-icd zlib ]; + nativeBuildInputs = [ autoPatchelfHook pkg-config installShellFiles ]; + + installPhase = '' + runHook preInstall + + find ./lib -type f -exec install -D -m 0755 {} -t $out/lib \; + find ./bin -type l -exec install -D -m 0755 {} -t $out/bin \; + find ./bin -type f -exec install -D -m 0755 {} -t $out/bin \; + find ./doc -type f -exec install -D -m 0644 {} -t $out/doc \; + find ./include -type f -exec install -D -m 0644 {} -t $out/include \; + + runHook postInstall + ''; + + passthru = { + isClang = true; + } // stdenv.lib.optionalAttrs (stdenv.targetPlatform.isLinux || (stdenv.cc.isGNU && stdenv.cc.cc ? gcc)) { + gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; + }; + + meta = with stdenv.lib; { + description = + "Accelerate Complex C++ Applications on Heterogeneous Compute Systems using Open Standards"; + homepage = https://www.codeplay.com/products/computesuite/computecpp; + license = licenses.unfree; + maintainers = with maintainers; [ davidtwco ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 39b764537f7e..4ba579416f3c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7742,6 +7742,28 @@ in compcert = callPackage ../development/compilers/compcert { }; + computecpp-unwrapped = callPackage ../development/compilers/computecpp {}; + computecpp = wrapCCWith rec { + cc = computecpp-unwrapped; + extraPackages = [ + libstdcxxHook + llvmPackages.compiler-rt + ]; + extraBuildCommands = '' + wrap compute $wrapper $ccPath/compute + wrap compute++ $wrapper $ccPath/compute++ + export named_cc=compute + export named_cxx=compute++ + + rsrc="$out/resource-root" + mkdir -p "$rsrc/lib" + ln -s "${cc}/lib" "$rsrc/include" + echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags + '' + stdenv.lib.optionalString (stdenv.targetPlatform.isLinux && cc ? gcc && !(stdenv.targetPlatform.useLLVM or false)) '' + echo "--gcc-toolchain=${cc.gcc}" >> $out/nix-support/cc-cflags + ''; + }; + cryptol = haskell.lib.justStaticExecutables haskellPackages.cryptol; inherit (callPackages ../development/compilers/crystal {