1{ stdenv, lib, fetchFromGitHub, fetchpatch, cmake, pkg-config, doxygen,
2 libX11, libXinerama, libXrandr, libGLU, libGL,
3 glib, ilmbase, libxml2, pcre, zlib,
4 AGL, Accelerate, Carbon, Cocoa, Foundation,
5 boost,
6 jpegSupport ? true, libjpeg,
7 exrSupport ? false, openexr,
8 gifSupport ? true, giflib,
9 pngSupport ? true, libpng,
10 tiffSupport ? true, libtiff,
11 gdalSupport ? false, gdal,
12 curlSupport ? true, curl,
13 colladaSupport ? false, collada-dom,
14 opencascadeSupport ? false, opencascade-occt,
15 ffmpegSupport ? false, ffmpeg,
16 nvttSupport ? false, nvidia-texture-tools,
17 freetypeSupport ? true, freetype,
18 svgSupport ? false, librsvg,
19 pdfSupport ? false, poppler,
20 vncSupport ? false, libvncserver,
21 lasSupport ? false, libLAS,
22 luaSupport ? false, lua,
23 sdlSupport ? false, SDL2,
24 restSupport ? false, asio,
25 withApps ? false,
26 withExamples ? false, fltk,
27}:
28
29stdenv.mkDerivation rec {
30 pname = "openscenegraph";
31 version = "3.6.5";
32
33 src = fetchFromGitHub {
34 owner = "openscenegraph";
35 repo = "OpenSceneGraph";
36 rev = "OpenSceneGraph-${version}";
37 sha256 = "00i14h82qg3xzcyd8p02wrarnmby3aiwmz0z43l50byc9f8i05n1";
38 };
39
40 nativeBuildInputs = [ pkg-config cmake doxygen ];
41
42 buildInputs = lib.optionals (!stdenv.isDarwin) [
43 libX11 libXinerama libXrandr libGLU libGL
44 ] ++ [
45 glib ilmbase libxml2 pcre zlib
46 ] ++ lib.optional jpegSupport libjpeg
47 ++ lib.optional exrSupport openexr
48 ++ lib.optional gifSupport giflib
49 ++ lib.optional pngSupport libpng
50 ++ lib.optional tiffSupport libtiff
51 ++ lib.optional gdalSupport gdal
52 ++ lib.optional curlSupport curl
53 ++ lib.optional colladaSupport collada-dom
54 ++ lib.optional opencascadeSupport opencascade-occt
55 ++ lib.optional ffmpegSupport ffmpeg
56 ++ lib.optional nvttSupport nvidia-texture-tools
57 ++ lib.optional freetypeSupport freetype
58 ++ lib.optional svgSupport librsvg
59 ++ lib.optional pdfSupport poppler
60 ++ lib.optional vncSupport libvncserver
61 ++ lib.optional lasSupport libLAS
62 ++ lib.optional luaSupport lua
63 ++ lib.optional sdlSupport SDL2
64 ++ lib.optional restSupport asio
65 ++ lib.optionals withExamples [ fltk ]
66 ++ lib.optionals (!stdenv.isDarwin) [ ]
67 ++ lib.optionals stdenv.isDarwin [ AGL Accelerate Carbon Cocoa Foundation ]
68 ++ lib.optional (restSupport || colladaSupport) boost
69 ;
70
71 patches = [
72 (fetchpatch {
73 name = "opencascade-api-patch";
74 url = "https://github.com/openscenegraph/OpenSceneGraph/commit/bc2daf9b3239c42d7e51ecd7947d31a92a7dc82b.patch";
75 hash = "sha256-VR8YKOV/YihB5eEGZOGaIfJNrig1EPS/PJmpKsK284c=";
76 })
77 ];
78
79 cmakeFlags = lib.optional (!withApps) "-DBUILD_OSG_APPLICATIONS=OFF" ++ lib.optional withExamples "-DBUILD_OSG_EXAMPLES=ON";
80
81 meta = with lib; {
82 description = "A 3D graphics toolkit";
83 homepage = "http://www.openscenegraph.org/";
84 maintainers = with maintainers; [ aanderse raskin ];
85 platforms = with platforms; linux ++ darwin;
86 license = "OpenSceneGraph Public License - free LGPL-based license";
87 };
88}