summaryrefslogtreecommitdiffstats
path: root/pkgs/development/compilers/mercury
diff options
context:
space:
mode:
authorKarn Kallio <kkallio@skami.org>2014-05-14 15:15:34 -0430
committerPeter Simons <simons@cryp.to>2014-05-14 22:44:38 +0200
commit432998852c1e6cc6719c08e14a5dbf1cd842aa43 (patch)
tree965617090b504120a6684520af9960d8e35017ac /pkgs/development/compilers/mercury
parentb11c9c582b5cddddda51406ce4915f720bc68184 (diff)
Add the Mercury compiler to nixpkgs.
Diffstat (limited to 'pkgs/development/compilers/mercury')
-rw-r--r--pkgs/development/compilers/mercury/default.nix62
1 files changed, 62 insertions, 0 deletions
diff --git a/pkgs/development/compilers/mercury/default.nix b/pkgs/development/compilers/mercury/default.nix
new file mode 100644
index 000000000000..5ea922a371a7
--- /dev/null
+++ b/pkgs/development/compilers/mercury/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl, gcc, flex, bison, texinfo, jdk, erlang, makeWrapper
+, readline }:
+
+stdenv.mkDerivation rec {
+ name = "mercury-${version}";
+ version = "14.01";
+
+ src = fetchurl {
+ url = "http://dl.mercurylang.org/release/mercury-srcdist-${version}.tar.gz";
+ sha256 = "1hgwmsaacxhgx2p2hikl5px8xf0wny9wx47gjl258dgxxasbfij4";
+ };
+
+ buildInputs = [ gcc flex bison texinfo jdk erlang makeWrapper
+ readline ];
+
+ patchPhase = ''
+ # Fix calls to programs in /bin
+ for p in uname pwd ; do
+ for f in $(egrep -lr /bin/$p *) ; do
+ sed -i 's@/bin/'$p'@'$p'@g' $f ;
+ done
+ done
+ '';
+
+ preConfigure = ''
+ ensureDir $out/lib/mercury/cgi-bin ;
+ configureFlags="--enable-deep-profiler=$out/lib/mercury/cgi-bin";
+ '';
+
+ preBuild = ''
+ # Mercury buildsystem does not take -jN directly.
+ makeFlags="PARALLEL=-j$NIX_BUILD_CORES" ;
+ '';
+
+ postInstall = ''
+ # Wrap with compilers for the different targets.
+ for e in $(ls $out/bin) ; do
+ wrapProgram $out/bin/$e \
+ --prefix PATH ":" "${gcc}/bin" \
+ --prefix PATH ":" "${jdk}/bin" \
+ --prefix PATH ":" "${erlang}/bin"
+ done
+ '';
+
+ meta = {
+ description = "Mercury is a pure logic programming language.";
+ longDescription = ''
+ Mercury is a logic/functional programming language which combines the
+ clarity and expressiveness of declarative programming with advanced
+ static analysis and error detection features. Its highly optimized
+ execution algorithm delivers efficiency far in excess of existing logic
+ programming systems, and close to conventional programming systems.
+ Mercury addresses the problems of large-scale program development,
+ allowing modularity, separate compilation, and numerous optimization/time
+ trade-offs.
+ '';
+ homepage = "http://mercurylang.org";
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.linux;
+ maintainers = [ ];
+ };
+}