summaryrefslogtreecommitdiffstats
path: root/pkgs/development/compilers/ghdl
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@viric.name>2014-04-16 10:33:27 +0200
committerLluís Batlle i Rossell <viric@viric.name>2014-04-16 10:35:45 +0200
commit44bda71b88a8c7e96421e2d7766e30d5a22ee134 (patch)
treea3328fa50f5ee68d6f0d6199a323984527b709cb /pkgs/development/compilers/ghdl
parentd4097e4e0e992123745cb01c7dfc48bdbb54e3cc (diff)
Adding ghdl 0.31 mcode flavour
This allows having a recent ghdl, without building it with gcc. The major drawback is the speed.
Diffstat (limited to 'pkgs/development/compilers/ghdl')
-rw-r--r--pkgs/development/compilers/ghdl/default.nix64
1 files changed, 64 insertions, 0 deletions
diff --git a/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix
new file mode 100644
index 000000000000..cd33d3d79a70
--- /dev/null
+++ b/pkgs/development/compilers/ghdl/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchurl, gnat, zlib }:
+
+assert stdenv.system == "i686-linux";
+
+let
+ version = "0.31";
+in
+stdenv.mkDerivation rec {
+ name = "ghdl-mcode-${version}";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/ghdl/ghdl-${version}.tar.gz";
+ sha256 = "1v0l9h6906b0bvnwfi2qg5nz9vjg80isc5qgjxr1yqxpkfm2xcf0";
+ };
+
+ buildInputs = [ gnat zlib ];
+
+ # Tarbomb
+ preUnpack = ''
+ mkdir ghdl
+ cd ghdl
+ '';
+
+ sourceRoot = "translate/ghdldrv";
+
+ patchPhase = ''
+ sed -i 's,$$curdir/lib,'$out'/share/ghdl_mcode/translate/lib,' Makefile
+ '';
+
+ postBuild = ''
+ # Build the LIB
+ ln -s ghdl_mcode ghdl
+ make install.mcode
+ '';
+
+ installPhase = ''
+ ensureDir $out/bin
+ cp ghdl_mcode $out/bin
+
+ ensureDir $out/share/ghdl_mcode/translate
+ cp -R ../lib $out/share/ghdl_mcode/translate
+ cp -R ../../libraries $out/share/ghdl_mcode
+
+ ensureDir $out/share/man/man1
+ cp ../../doc/ghdl.1 $out/share/man/man1/ghdl_mcode.1
+
+ # Ghdl has some timestamps checks, storing file timestamps in '.cf' files.
+ # As we will change the timestamps to 1970-01-01 00:00:01, we also set the
+ # content of that .cf to that value. This way ghdl does not complain on
+ # the installed object files from the basic libraries (ieee, ...)
+ pushd $out
+ find . -name "*.cf" -exec \
+ sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \;
+ popd
+ '';
+
+ meta = {
+ homepage = "http://sourceforge.net/p/ghdl-updates/wiki/Home/";
+ description = "Free VHDL simulator, mcode flavour";
+ maintainers = with stdenv.lib.maintainers; [viric];
+ platforms = with stdenv.lib.platforms; linux;
+ license = "GPLv2+";
+ };
+}