diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/opensubdiv')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/opensubdiv/default.nix | 78 |
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; + }; +} |