From 9940392c2b9fde3598f2f36936ab69e27b71bdd2 Mon Sep 17 00:00:00 2001
From: "Adam J. Stewart" <ajstewart426@gmail.com>
Date: Thu, 5 Mar 2020 10:52:20 -0600
Subject: [PATCH] New package: opensubdiv (#15310)

* [opensubdiv] created stub for opensubdiv

* [opensubdiv] added homepage and description

* [opensubdiv] removed boilerplate

* [opensubdiv] working on dependencies and variants

* [opensubdiv] fixed syntax error

* [opensubdiv] defined spec

* [opensubdiv] added dev version

* [opensubdiv] building on CudaPackage

* [opensubdiv] always build with open gl and depends_on('gl')

* [opensubdiv] applying cuda flags

* [opensubdiv] worked on doc variant

* [opensubdiv] added some x11 libraries

* [opensubdiv] depends on glfw

* [opensubdiv] locating glew

* [opensubdiv] added openmp variant

* [opensubdiv] flake8 fixing

* [opensubdiv] fixed develop version name

* [opensubdiv] fixed description to not need @
---
 .../builtin/packages/opensubdiv/package.py    | 85 +++++++++++++++++++
 1 file changed, 85 insertions(+)
 create mode 100644 var/spack/repos/builtin/packages/opensubdiv/package.py

diff --git a/var/spack/repos/builtin/packages/opensubdiv/package.py b/var/spack/repos/builtin/packages/opensubdiv/package.py
new file mode 100644
index 0000000000..69f9aeba4c
--- /dev/null
+++ b/var/spack/repos/builtin/packages/opensubdiv/package.py
@@ -0,0 +1,85 @@
+# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+
+from spack import *
+
+
+class Opensubdiv(CMakePackage, CudaPackage):
+    """OpenSubdiv is a set of open source libraries that
+    implement high performance subdivision surface (subdiv)
+    evaluation on massively parallel CPU and GPU architectures.
+    This code path is optimized for drawing deforming surfaces
+    with static topology at interactive framerates."""
+
+    homepage = "http://graphics.pixar.com/opensubdiv/docs/intro.html"
+    url      = "https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v3_4_0.tar.gz"
+    git      = "https://github.com/PixarAnimationStudios/OpenSubdiv"
+
+    version('develop', branch='dev')
+    version('3_4_0',     sha256='d932b292f83371c7518960b2135c7a5b931efb43cdd8720e0b27268a698973e4')
+
+    variant('tbb', default=False, description='Builds with Intel TBB support')
+    variant('openmp', default=False, description='Builds with OpenMP support')
+    variant('doc', default=False, description='Builds documentation. Requires Python 2')
+
+    depends_on('cmake@2.8.6:', type='build')
+    depends_on('graphviz', type='build', when='+doc')
+    depends_on('doxygen', type='build', when='+doc')
+    depends_on('py-docutils', type='build', when='+doc')
+    depends_on('python@2.6:2.999', type='build', when='+doc')
+    depends_on('gl')
+    depends_on('glew@1.9.0:')
+    depends_on('glfw@3.0.0:')
+    depends_on('intel-tbb@4.0:', when='+tbb')
+    depends_on('libxrandr')
+    depends_on('libxcursor')
+    depends_on('libxinerama')
+    depends_on('llvm-openmp', when='+openmp')
+
+    def cmake_args(self):
+        spec = self.spec
+        args = []
+
+        args.append('-DNO_EXAMPLES=1')    # disable examples build
+        args.append('-DNO_TUTORIALS=1')   # disable tutorials build
+        args.append('-DNO_REGRESSION=1')  # disable regression tests build
+        args.append('-DNO_PTEX=1')        # disable PTex support
+        args.append('-DNO_OPENCL=1')      # disable OpenCL
+        args.append('-DNO_CLEW=1')        # disable CLEW wrapper library
+        args.append('-DNO_METAL=1')       # disable Metal
+
+        args.append('-DNO_OPENGL=0')      # OpenGL always on
+        args.append('-DGLEW_LOCATION={0}'.format(spec['glew'].prefix))
+
+        if '+cuda' in spec:
+            args.append('-DNO_CUDA=0')
+
+            cuda_arch = [x for x in spec.variants['cuda_arch'].value if x]
+            if cuda_arch:
+                args.append('-DOSD_CUDA_NVCC_FLAGS={0}'.format(
+                    ' '.join(self.cuda_flags(cuda_arch))))
+            else:
+                args.append('-DOSD_CUDA_NVCC_FLAGS=')
+
+        else:
+            args.append('-DNO_CUDA=1')
+
+        if '+tbb' in spec:
+            args.append('-DNO_TBB=0')
+        else:
+            args.append('-DNO_TBB=1')
+
+        if '+doc' in spec:
+            args.append('-DNO_DOC=0')
+        else:
+            args.append('-DNO_DOC=1')
+
+        if '+openmp' in spec:
+            args.append('-DNO_OMP=0')
+        else:
+            args.append('-DNO_OMP=1')
+
+        return args
-- 
GitLab