nixpkgs/pkgs/development/compilers/koka/default.nix
sternenseemann 4a67076273 koka: make sure runtime dependencies are host -> target
buildPackages.stdenv.cc.cc is a C compiler that runs on the build
platform and produces binaries for the host platform. This is not
what we want. Also pkgsHostTarget.stdenv.cc is not the compiler we
want as stdenv always runs on the previous stage so to say (the stdenv
is used to build the package set, in the case of cross compiling
this is not done natively). Thus pkgsHostTarget.targetPackages.stdenv.cc
is what we want.
2021-04-25 12:36:06 +02:00

55 lines
1.7 KiB
Nix

{ stdenv, pkgsHostTarget, cmake, makeWrapper, mkDerivation, fetchFromGitHub
, alex, array, base, bytestring, cond, containers, directory, extra
, filepath, haskeline, hpack, hspec, hspec-core, json, lib, mtl
, parsec, process, regex-compat, text, time }:
let
version = "2.1.1";
src = fetchFromGitHub {
owner = "koka-lang";
repo = "koka";
rev = "v${version}";
sha256 = "sha256-cq+dljfTKJh5NgwQfxQQP9jRcg2PQxxBVEgQ59ll36o=";
fetchSubmodules = true;
};
kklib = stdenv.mkDerivation {
pname = "kklib";
inherit version;
src = "${src}/kklib";
nativeBuildInputs = [ cmake ];
};
inherit (pkgsHostTarget.targetPackages.stdenv) cc;
runtimeDeps = [
cc
cc.bintools.bintools
pkgsHostTarget.gnumake
pkgsHostTarget.cmake
];
in
mkDerivation rec {
pname = "koka";
inherit version src;
isLibrary = false;
isExecutable = true;
libraryToolDepends = [ hpack ];
executableHaskellDepends = [
array base bytestring cond containers directory haskeline mtl
parsec process text time kklib
];
executableToolDepends = [ alex makeWrapper ];
postInstall = ''
mkdir -p $out/share/koka/v${version}
cp -a lib $out/share/koka/v${version}
cp -a contrib $out/share/koka/v${version}
cp -a kklib $out/share/koka/v${version}
wrapProgram "$out/bin/koka" \
--set CC "${lib.getBin cc}/bin/${cc.targetPrefix}cc" \
--prefix PATH : "${lib.makeSearchPath "bin" runtimeDeps}"
'';
doCheck = false;
prePatch = "hpack";
description = "Koka language compiler and interpreter";
homepage = "https://github.com/koka-lang/koka";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ siraben sternenseemann ];
}