commit
f7ef1a9af5
44
pkgs/development/compilers/jasmin/default.nix
Normal file
44
pkgs/development/compilers/jasmin/default.nix
Normal file
@ -0,0 +1,44 @@
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, unzip
|
||||
, jdk
|
||||
, ant
|
||||
, makeWrapper
|
||||
, jre
|
||||
, callPackage
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "jasmin";
|
||||
version = "2.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/jasmin/jasmin-${version}/jasmin-${version}.zip";
|
||||
sha256 = "17a41vr96glcdrdbk88805wwvv1r6w8wg7if23yhd0n6rrl0r8ga";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip jdk ant makeWrapper ];
|
||||
|
||||
buildPhase = "ant all";
|
||||
installPhase =
|
||||
''
|
||||
install -Dm644 jasmin.jar $out/share/java/jasmin.jar
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${jre}/bin/java $out/bin/jasmin \
|
||||
--add-flags "-jar $out/share/java/jasmin.jar"
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
minimal-module = callPackage ./test-assemble-hello-world {};
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "An assembler for the Java Virtual Machine";
|
||||
homepage = "http://jasmin.sourceforge.net/";
|
||||
downloadPage = "https://sourceforge.net/projects/jasmin/files/latest/download";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ fgaz ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
@ -0,0 +1,31 @@
|
||||
.class public HelloWorld
|
||||
.super java/lang/Object
|
||||
|
||||
;
|
||||
; standard initializer (calls java.lang.Object's initializer)
|
||||
;
|
||||
.method public <init>()V
|
||||
aload_0
|
||||
invokenonvirtual java/lang/Object/<init>()V
|
||||
return
|
||||
.end method
|
||||
|
||||
;
|
||||
; main() - prints out Hello World
|
||||
;
|
||||
.method public static main([Ljava/lang/String;)V
|
||||
.limit stack 2 ; up to two items can be pushed
|
||||
|
||||
; push System.out onto the stack
|
||||
getstatic java/lang/System/out Ljava/io/PrintStream;
|
||||
|
||||
; push a string onto the stack
|
||||
ldc "Hello World!"
|
||||
|
||||
; call the PrintStream.println() method.
|
||||
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
|
||||
|
||||
; done
|
||||
return
|
||||
.end method
|
||||
|
@ -0,0 +1,12 @@
|
||||
{ stdenv, jasmin, jre }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "jasmin-test-assemble-hello-world";
|
||||
meta.timeout = 60;
|
||||
buildCommand = ''
|
||||
${jasmin}/bin/jasmin ${./HelloWorld.j}
|
||||
${jre}/bin/java HelloWorld | grep "Hello World"
|
||||
touch $out
|
||||
'';
|
||||
}
|
||||
|
@ -8275,6 +8275,8 @@ in
|
||||
inherit installjdk pluginSupport;
|
||||
});
|
||||
|
||||
jasmin = callPackage ../development/compilers/jasmin { };
|
||||
|
||||
javacard-devkit = pkgsi686Linux.callPackage ../development/compilers/javacard-devkit { };
|
||||
|
||||
julia_07 = callPackage ../development/compilers/julia/0.7.nix {
|
||||
|
Loading…
Reference in New Issue
Block a user