about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/opensubdiv
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/opensubdiv')
-rw-r--r--nixpkgs/pkgs/development/libraries/opensubdiv/default.nix78
1 files changed, 78 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/opensubdiv/default.nix b/nixpkgs/pkgs/development/libraries/opensubdiv/default.nix
new file mode 100644
index 000000000000..9c485949a5c0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/opensubdiv/default.nix
@@ -0,0 +1,78 @@
+{ config, lib, stdenv, fetchFromGitHub, cmake, pkg-config, xorg, libGLU
+, libGL, glew, ocl-icd, python3
+, cudaSupport ? config.cudaSupport
+, cudaPackages
+, openclSupport ? !cudaSupport
+, darwin
+}:
+
+stdenv.mkDerivation rec {
+  pname = "opensubdiv";
+  version = "3.5.1";
+
+  src = fetchFromGitHub {
+    owner = "PixarAnimationStudios";
+    repo = "OpenSubdiv";
+    rev = "v${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "sha256-uDKCT0Uoa5WQekMUFm2iZmzm+oWAZ6IWMwfpchkUZY0=";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ] ++ lib.optional cudaSupport [
+    cudaPackages.cuda_nvcc
+  ];
+  buildInputs =
+    [ libGLU libGL python3
+      # FIXME: these are not actually needed, but the configure script wants them.
+      glew xorg.libX11 xorg.libXrandr xorg.libXxf86vm xorg.libXcursor
+      xorg.libXinerama xorg.libXi
+    ]
+    ++ lib.optional (openclSupport && !stdenv.isDarwin) ocl-icd
+    ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [OpenCL Cocoa CoreVideo IOKit AppKit AGL ])
+    ++ lib.optional cudaSupport [
+      cudaPackages.cuda_cudart
+    ];
+
+  # It's important to set OSD_CUDA_NVCC_FLAGS,
+  # because otherwise OSD might piggyback unwanted architectures:
+  # https://github.com/PixarAnimationStudios/OpenSubdiv/blob/7d0ab5530feef693ac0a920585b5c663b80773b3/CMakeLists.txt#L602
+  preConfigure = lib.optionalString cudaSupport ''
+    cmakeFlagsArray+=(
+      -DOSD_CUDA_NVCC_FLAGS="${lib.concatStringsSep " " cudaPackages.cudaFlags.gencode}"
+    )
+  '';
+
+  cmakeFlags =
+    [ "-DNO_TUTORIALS=1"
+      "-DNO_REGRESSION=1"
+      "-DNO_EXAMPLES=1"
+      "-DNO_METAL=1" # don’t have metal in apple sdk
+      (lib.cmakeBool "NO_OPENCL" (!openclSupport))
+      (lib.cmakeBool "NO_CUDA" (!cudaSupport))
+    ] ++ lib.optionals (!stdenv.isDarwin) [
+      "-DGLEW_INCLUDE_DIR=${glew.dev}/include"
+      "-DGLEW_LIBRARY=${glew.dev}/lib"
+    ] ++ lib.optionals cudaSupport [
+    ] ++ lib.optionals (!openclSupport) [
+    ];
+
+  preBuild = let maxBuildCores = 16; in lib.optionalString cudaSupport ''
+    # https://github.com/PixarAnimationStudios/OpenSubdiv/issues/1313
+    NIX_BUILD_CORES=$(( NIX_BUILD_CORES < ${toString maxBuildCores} ? NIX_BUILD_CORES : ${toString maxBuildCores} ))
+  '';
+
+  postInstall = "rm $out/lib/*.a";
+
+  meta = {
+    description = "An Open-Source subdivision surface library";
+    homepage = "http://graphics.pixar.com/opensubdiv";
+    broken = openclSupport && cudaSupport;
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.eelco ];
+    license = lib.licenses.asl20;
+  };
+}