nixpkgs/pkgs/development/compilers/bluespec/default.nix

134 lines
2.8 KiB
Nix
Raw Normal View History

2021-08-28 14:27:27 +00:00
{ lib
, stdenv
, fetchFromGitHub
, fetchurl
2021-08-28 14:27:27 +00:00
, autoconf
, automake
, fontconfig
, libX11
, perl
, flex
, bison
, pkg-config
, tcl
, tk
, xorg
, yices
, zlib
, ghc
, gmp-static
, verilog
, asciidoctor
, texliveFull
, which
}:
2020-02-05 21:56:03 +00:00
let
2021-08-28 14:27:27 +00:00
ghcWithPackages = ghc.withPackages (g: (with g; [ old-time regex-compat syb split ]));
2020-02-05 21:56:03 +00:00
in stdenv.mkDerivation rec {
pname = "bluespec";
2023-03-23 22:41:23 +00:00
version = "2023.01";
2020-02-05 21:56:03 +00:00
src = fetchFromGitHub {
owner = "B-Lang-org";
repo = "bsc";
rev = version;
2023-03-23 22:41:23 +00:00
sha256 = "sha256-kFHQtRaQmZiHo+IQ+mwbW23i3kbdAh/XH0OE7P/ibd0=";
};
yices-src = fetchurl {
url = "https://github.com/B-Lang-org/bsc/releases/download/${version}/yices-src-for-bsc-${version}.tar.gz";
2023-03-23 22:41:23 +00:00
sha256 = "sha256-pyEdCJvmgwOYPMZEtw7aro76tSn/Y/2GcKTyARmIh4E=";
};
2020-02-05 21:56:03 +00:00
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
2020-02-05 21:56:03 +00:00
# https://github.com/B-Lang-org/bsc/pull/278
patches = [ ./libstp_stub_makefile.patch ];
postUnpack = ''
2023-03-23 22:41:23 +00:00
tar -C $sourceRoot/ -xf ${yices-src}
chmod -R +rwX $sourceRoot/src/vendor/yices/v2.6/yices2
'';
2020-02-05 21:56:03 +00:00
preBuild = ''
patchShebangs \
src/Verilog/copy_module.pl \
src/comp/update-build-version.sh \
src/comp/update-build-system.sh \
2021-08-27 21:40:22 +00:00
src/comp/wrapper.sh
substituteInPlace src/comp/Makefile \
--replace 'BINDDIR' 'BINDIR' \
--replace 'install-bsc install-bluetcl' 'install-bsc install-bluetcl $(UTILEXES) install-utils'
# allow running bsc to bootstrap
export LD_LIBRARY_PATH=$PWD/inst/lib/SAT
2020-02-05 21:56:03 +00:00
'';
buildInputs = yices.buildInputs ++ [
fontconfig
libX11 # tcltk
tcl
tk
which
xorg.libXft
zlib
];
nativeBuildInputs = [
automake
autoconf
asciidoctor
bison
flex
ghcWithPackages
perl
pkg-config
texliveFull
];
2020-02-05 21:56:03 +00:00
makeFlags = [
"release"
2023-03-23 22:41:23 +00:00
"NO_DEPS_CHECKS=1" # skip the subrepo check (this deriviation uses yices-src instead of the subrepo)
2020-02-05 21:56:03 +00:00
"NOGIT=1" # https://github.com/B-Lang-org/bsc/issues/12
"LDCONFIG=ldconfig" # https://github.com/B-Lang-org/bsc/pull/43
"STP_STUB=1"
2020-02-05 21:56:03 +00:00
];
2021-08-28 14:27:27 +00:00
doCheck = true;
nativeCheckInputs = [
2021-08-28 14:27:27 +00:00
gmp-static
verilog
];
checkTarget = "check-smoke";
installPhase = ''
mkdir -p $out
mv inst/bin $out
mv inst/lib $out
2021-08-25 22:38:10 +00:00
# fragile, I know..
mkdir -p $doc/share/doc/bsc
2021-08-25 22:38:10 +00:00
mv inst/README $doc/share/doc/bsc
mv inst/ReleaseNotes.* $doc/share/doc/bsc
mv inst/doc/*.pdf $doc/share/doc/bsc
'';
2020-02-05 21:56:03 +00:00
meta = {
description = "Toolchain for the Bluespec Hardware Definition Language";
homepage = "https://github.com/B-Lang-org/bsc";
license = lib.licenses.bsd3;
2020-02-05 21:56:03 +00:00
platforms = [ "x86_64-linux" ];
mainProgram = "bsc";
2020-02-05 21:56:03 +00:00
# darwin fails at https://github.com/B-Lang-org/bsc/pull/35#issuecomment-583731562
# aarch64 fails, as GHC fails with "ghc: could not execute: opt"
maintainers = with lib.maintainers; [ jcumming thoughtpolice ];
2020-02-05 21:56:03 +00:00
};
}