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 @
This commit is contained in:
Adam J. Stewart 2020-03-05 10:52:20 -06:00 committed by GitHub
parent 752092f46a
commit 9940392c2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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