summary refs log tree commit diff
path: root/pkgs/development/libraries/java/classpath/default.nix
blob: eff52cc177b6b0b5e16454057587f07e7bd9f5e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{ fetchurl, stdenv, javac, jvm, antlr, pkgconfig, gtk, gconf }:

stdenv.mkDerivation rec {
  name = "classpath-0.99";

  src = fetchurl {
    url = "mirror://gnu/classpath/${name}.tar.gz";
    sha256 = "1j7cby4k66f1nvckm48xcmh352b1d1b33qk7l6hi7dp9i9zjjagr";
  };

  patches = [ ./missing-casts.patch ];

  buildInputs = [ javac jvm antlr pkgconfig gtk gconf ];

  configurePhase = ''
    # GCJ tries to compile all of Classpath during the `configure' run when
    # trying to build in the source tree (see
    # http://www.mail-archive.com/classpath@gnu.org/msg15079.html), thus we
    # build out-of-tree.
    mkdir ../build
    cd ../build
    echo "building in \`$PWD'"

    ../${name}/configure --prefix="$out"                        \
         --enable-fast-install --disable-dependency-tracking    \
         ${configureFlags}
  '';

  /* Plug-in support requires Xulrunner and all that.  Maybe someday,
     optionally.

    Compilation with `-Werror' is disabled because of this:

      native/jni/native-lib/cpnet.c: In function 'cpnet_addMembership':
      native/jni/native-lib/cpnet.c:583: error: dereferencing type-punned pointer will break strict-aliasing rules
      native/jni/native-lib/cpnet.c: In function 'cpnet_dropMembership':
      native/jni/native-lib/cpnet.c:598: error: dereferencing type-punned pointer will break strict-aliasing rules

   */

  configureFlags = "--disable-Werror --disable-plugin --with-antlr-jar=${antlr}/lib/antlr.jar";

  meta = {
    description = "Essential libraries for Java";

    longDescription = ''
      GNU Classpath, Essential Libraries for Java, is a GNU project to create
      free core class libraries for use with virtual machines and compilers
      for the Java programming language.
    '';

    homepage = http://www.gnu.org/software/classpath/;

    # The exception makes it similar to LGPLv2+ AFAICS.
    license = "GPLv2+ + exception";

    maintainers = [ ];
  };
}