about summary refs log tree commit diff
path: root/pkgs/development/java-modules
diff options
context:
space:
mode:
authorClaudio Bley <claudio.bley@gmail.com>2023-02-27 21:00:15 +0100
committerClaudio Bley <claudio.bley@gmail.com>2023-06-07 22:43:48 +0200
commit09966984ebbf4f1fef1aee251a109aa7d77fbe42 (patch)
tree36cc2a1862fc265cb620a4a2e1c4e877c6f09738 /pkgs/development/java-modules
parentf2b5cbf3517f72f70553ab8c97e1551b5735d770 (diff)
downloadnixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.tar
nixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.tar.gz
nixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.tar.bz2
nixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.tar.lz
nixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.tar.xz
nixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.tar.zst
nixlib-09966984ebbf4f1fef1aee251a109aa7d77fbe42.zip
javaPackages: add jogl 2.4.0
Diffstat (limited to 'pkgs/development/java-modules')
-rw-r--r--pkgs/development/java-modules/jogl/default.nix77
1 files changed, 76 insertions, 1 deletions
diff --git a/pkgs/development/java-modules/jogl/default.nix b/pkgs/development/java-modules/jogl/default.nix
index 7a49bcbda7fc..23449e6f0570 100644
--- a/pkgs/development/java-modules/jogl/default.nix
+++ b/pkgs/development/java-modules/jogl/default.nix
@@ -1,6 +1,81 @@
-{ lib, stdenv, fetchgit, ant, jdk8, git, xorg, udev, libGL, libGLU }:
+{ coreutils, lib, stdenv, fetchgit, ant, jdk8, jdk11, git, xorg, udev, libGL, libGLU, mesa, xmlstarlet }:
 
 {
+  jogl_2_4_0 =
+    let
+      version = "2.4.0";
+
+      gluegen-src = fetchgit {
+        url = "git://jogamp.org/srv/scm/gluegen.git";
+        rev = "v${version}";
+        hash = "sha256-qQzq7v2vMFeia6gXaNHS3AbOp9HhDRgISp7P++CKErA=";
+        fetchSubmodules = true;
+      };
+      jogl-src = fetchgit {
+        url = "git://jogamp.org/srv/scm/jogl.git";
+        rev = "v${version}";
+        hash = "sha256-PHDq7uFEQfJ2P0eXPUi0DGFR1ob/n5a68otgzpFnfzQ=";
+        fetchSubmodules = true;
+      };
+    in
+    stdenv.mkDerivation {
+      pname = "jogl";
+      inherit version;
+
+      srcs = [ gluegen-src jogl-src ];
+      sourceRoot = ".";
+
+      unpackCmd = "cp -r $curSrc \${curSrc##*-}";
+
+      nativeBuildInputs = [ ant jdk11 git xmlstarlet ];
+      buildInputs = [ udev xorg.libX11 xorg.libXrandr xorg.libXcursor xorg.libXi xorg.libXt xorg.libXxf86vm xorg.libXrender mesa ];
+
+      # Workaround build failure on -fno-common toolchains:
+      #   ld: ../obj/Bindingtest1p1Impl_JNI.o:(.bss+0x8): multiple definition of
+      #     `unsigned_size_t_1'; ../obj/TK_Surface_JNI.o:(.bss+0x8): first defined here
+      NIX_CFLAGS_COMPILE = "-fcommon"; # copied from 2.3.2, is this still needed?
+
+      buildPhase = ''
+        ( cd gluegen/make
+          substituteInPlace ../src/java/com/jogamp/common/util/IOUtil.java --replace '#!/bin/true' '#!${coreutils}/bin/true'
+
+          # set timestamp of files in jar to a fixed point in time
+          xmlstarlet ed --inplace \
+             --append //jar --type attr -n modificationtime --value 1980-01-01T00:00Z \
+             build.xml gluegen-cpptasks-base.xml
+
+          ant -Dtarget.sourcelevel=8 -Dtarget.targetlevel=8 -Dtarget.rt.jar='null.jar' )
+
+        ( cd jogl/make
+
+          # force way to do disfunctional "ant -Dsetup.addNativeBroadcom=false" and disable dependency on raspberrypi drivers
+          # if arm/aarch64 support will be added, this block might be commented out on those platforms
+          # on x86 compiling with default "setup.addNativeBroadcom=true" leads to unsatisfied import "vc_dispmanx_resource_delete" in libnewt.so
+          xmlstarlet ed --inplace --delete '//*[@if="setup.addNativeBroadcom"]' build-newt.xml
+
+          # set timestamp of files in jar to a fixed point in time
+          xmlstarlet ed --inplace \
+             --append //jar --type attr -n modificationtime --value 1980-01-01T00:00Z \
+             build.xml build-nativewindow.xml build-jogl.xml
+
+          ant -Dtarget.sourcelevel=8 -Dtarget.targetlevel=8 -Dtarget.rt.jar='null.jar' )
+      '';
+
+      installPhase = ''
+        mkdir -p $out/share/java
+        cp -v $NIX_BUILD_TOP/gluegen/build/gluegen-rt{,-natives-linux-amd64}.jar $out/share/java/
+        cp -v $NIX_BUILD_TOP/jogl/build/jar/jogl-all{,-natives-linux-amd64}.jar  $out/share/java/
+        cp -v $NIX_BUILD_TOP/jogl/build/nativewindow/nativewindow{,-awt,-natives-linux-amd64,-os-drm,-os-x11}.jar  $out/share/java/
+      '';
+
+      meta = with lib; {
+        description = "Java libraries for 3D Graphics, Multimedia and Processing";
+        homepage = "https://jogamp.org/";
+        license = licenses.bsd3;
+        platforms = [ "x86_64-linux" ];
+      };
+    };
+
   jogl_2_3_2 =
     let
       version = "2.3.2";