Files

272 lines
9.5 KiB
Tcl

# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup github 1.0
PortGroup cmake 1.1
PortGroup active_variants 1.1
PortGroup boost 1.0
github.setup AcademySoftwareFoundation openvdb 13.0.0 v
github.tarball_from archive
revision 1
categories graphics
license {MPL-2 LGPL-2.1+}
maintainers {mcalhoun @MarcusCalhoun-Lopez} \
@jasonliu-- openmaintainer
homepage https://www.${name}.org/
description sparse volumetric data structure and tools
long_description OpenVDB is an open source C++ library \
comprising a novel hierarchical data structure \
and a large suite of tools for the efficient \
storage and manipulation of sparse volumetric \
data discretized on three-dimensional grids. \
It was developed by DreamWorks Animation for \
use in volumetric applications typically \
encountered in computer-generated graphics and \
animation.
checksums rmd160 2bbb492dad918fdffa48b66a5764f01a2f385002 \
sha256 4d6a91df5f347017496fe8d22c3dbb7c4b5d7289499d4eb4d53dd2c75bb454e1 \
size 4891966
depends_build-append port:pkgconfig
depends_lib-append port:zlib \
port:blosc \
port:onetbb \
path:lib/pkgconfig/glfw3.pc:glfw
patchfiles patch-threading.diff
# it uses constexpr if statement
compiler.cxx_standard 2017
# Blacklist macports-clang-16+ to prevent
# error: no template named 'unary_function' in namespace 'std'
compiler.blacklist-append {macports-clang-1[6-9]}
boost.version 1.88
# Use OpenGL framework instead of mesa
configure.pre_args-delete -DCMAKE_FIND_FRAMEWORK=LAST
# Disable building command-line tools.
# We control whether to build them using the +utils variant below.
configure.args-append -DOPENVDB_BUILD_BINARIES=OFF
# avoid
# ccache: error: Failed to create directory
# ${prefix}/var/macports/build/.ccache/tmp: Operation not permitted
# use latest ABI version (default is 3)
configure.args-append -DUSE_CCACHE=OFF \
-DOPENVDB_ABI_VERSION_NUMBER=[lindex [split ${version} .] 0]
# Enable SIMD compiler flags
if {${configure.build_arch} ni [list ppc ppc64]} {
configure.args-append \
-DOPENVDB_SIMD=AVX
}
if {[string match *gcc* ${configure.compiler}] \
&& ${configure.build_arch} in [list i386 ppc]} {
# https://github.com/AcademySoftwareFoundation/openvdb/issues/1801
patchfiles-append patch-libatomic.diff
}
# Disable CMake uninstall target
configure.args-append -DOPENVDB_ENABLE_UNINSTALL=OFF
pre-test {
if {![variant_isset tests]} {
ui_warn "'tests' variant must be activated to enable full test support"
}
}
# All of the CMake module files are getting installed, regardless of
# whether the option has been enabled or not. This issue has been
# reported (and a patch has been submitted) upstream:
# https://github.com/AcademySoftwareFoundation/openvdb/pull/1643
# If and when the patch gets accepted and merged into upstream, the
# following code should be deleted from this Portfile when the patch
# gets incorporated into a future upstream release.
post-destroot {
set lib_cmake_path ${prefix}/lib/cmake/OpenVDB
if {![variant_isset logging]} {
delete ${destroot}$lib_cmake_path/FindLog4cplus.cmake
}
if {![variant_isset openexr]} {
delete ${destroot}$lib_cmake_path/FindIlmBase.cmake
delete ${destroot}$lib_cmake_path/FindOpenEXR.cmake
}
if {![variant_isset jemalloc]} {
delete ${destroot}$lib_cmake_path/FindJemalloc.cmake
}
if {![variant_isset utils]} {
delete ${destroot}$lib_cmake_path/OpenVDBUtils.cmake
}
delete ${destroot}$lib_cmake_path/OpenVDBHoudiniSetup.cmake
delete ${destroot}$lib_cmake_path/OpenVDBMayaSetup.cmake
}
############################ OpenVDB Core ############################
variant tests description {Build unit tests} {
depends_lib-append port:gtest
configure.args-append -DOPENVDB_BUILD_UNITTESTS=ON
if {[variant_isset nanovdb]} {
configure.args-append -DNANOVDB_BUILD_UNITTESTS=ON
}
test.run yes
}
variant docs description {Build documentation} {
depends_build-append path:bin/doxygen:doxygen
configure.args-append -DOPENVDB_BUILD_DOCS=ON \
-DOPENVDB_DOXYGEN_AX=OFF \
-DOPENVDB_DOXYGEN_HOUDINI=OFF
if {![variant_isset nanovdb]} {
configure.args-append -DOPENVDB_DOXYGEN_NANOVDB=OFF
}
}
variant nanovdb description {Build the NanoVDB library} {
configure.args-append -DOPENVDB_BUILD_NANOVDB=ON \
-DNANOVDB_BUILD_TOOLS=OFF \
-DNANOVDB_USE_INTRINSICS=ON \
-DNANOVDB_USE_OPENVDB=ON
}
variant logging description {Build and enable logging support} {
depends_lib-append port:log4cplus
configure.args-append -DUSE_LOG4CPLUS=ON
}
variant openexr description {Build with OpenEXR support} {
depends_lib-append port:imath \
port:openexr
configure.args-append -DUSE_EXR=ON
}
variant png description {Build with PNG support} {
depends_lib-append port:libpng
configure.args-append -DUSE_PNG=ON
}
variant jemalloc \
description {Use jemalloc as the concurrent memory allocator} \
{
depends_lib-append path:lib/pkgconfig/jemalloc.pc:jemalloc
configure.args-append -DCONCURRENT_MALLOC=Jemalloc
}
############### OpenVDB Binaries (command-line tools) ################
variant utils description {Build OpenVDB command-line tools} {
configure.args-replace -DOPENVDB_BUILD_BINARIES=OFF \
-DOPENVDB_BUILD_BINARIES=ON
if {[variant_isset nanovdb]} {
configure.args-replace -DNANOVDB_BUILD_TOOLS=OFF \
-DNANOVDB_BUILD_TOOLS=ON
}
configure.args-append -DOPENVDB_BUILD_VDB_LOD=ON \
-DOPENVDB_BUILD_VDB_RENDER=ON \
-DOPENVDB_BUILD_VDB_VIEW=ON \
-DOPENVDB_BUILD_VDB_TOOL=ON
# OpenVDB tool (vdb_tool) options
if {[variant_isset tests]} {
configure.args-append -DBUILD_TEST=ON
}
if {[variant_isset nanovdb]} {
configure.args-append -DOPENVDB_TOOL_USE_NANO=ON
}
if {[variant_isset png]} {
configure.args-append -DOPENVDB_TOOL_USE_PNG=ON
}
# There is currently a configure error when trying to build vdb_tool
# using OpenEXR. This issue has already been reported upstream:
# https://github.com/AcademySoftwareFoundation/openvdb/issues/1541
# if {[variant_isset openexr]} {
# configure.args-append -DOPENVDB_TOOL_USE_EXR=ON
# }
if {[variant_isset jpg]} {
configure.args-append -DOPENVDB_TOOL_USE_JPG=ON
}
if {[variant_isset alembic]} {
configure.args-append -DOPENVDB_TOOL_USE_ABC=ON
}
}
variant jpg requires utils \
description {Build OpenVDB tool (vdb_tool) with JPG support} \
{
depends_lib-append port:libjpeg-turbo
}
variant alembic requires utils \
description {Build OpenVDB tool (vdb_tool) with Alembic support} \
{
depends_lib-append port:alembic
}
############################## NanoVDB ###############################
variant examples requires nanovdb description {Build NanoVDB examples} {
configure.args-append -DNANOVDB_BUILD_EXAMPLES=ON
}
variant benchmark requires nanovdb examples \
description {Build NanoVDB benchmark in examples} \
{
depends_lib-append port:gtest
configure.args-append -DNANOVDB_BUILD_BENCHMARK=ON
}
############################# PyOpenVDB ##############################
set python_suffixes {310 311 312 313 314}
set python_ports {}
foreach s $python_suffixes {
lappend python_ports python$s
}
foreach s $python_suffixes {
set p python$s
set v [string index $s 0].[string range $s 1 end]
set i [lsearch -exact $python_ports $p]
set c [lreplace $python_ports $i $i]
variant $p conflicts {*}${c} \
description "Build the PyOpenVDB Python ${v} module" \
"
depends_lib-append port:${p} \
port:py${s}-numpy
boost.require_numpy yes
require_active_variants [boost::depends_portname] ${p}
require_active_variants [boost::depends_portname]-numpy ${p}
# Find correct Python version
patchfiles-append patch-python_version.diff
post-patch {
reinplace s|__MACPORTS_PYTHON_VERSION__|${v}|g \
${worksrcpath}/${name}/${name}/python/CMakeLists.txt
}
configure.args-append -DOPENVDB_BUILD_PYTHON_MODULE=ON \
-DUSE_NUMPY=ON
"
}
default_variants +docs +nanovdb +examples +openexr +jemalloc \
+utils +png +jpg
# While alembic builds, it does not work correctly on BE platforms:
# https://github.com/alembic/alembic/issues/449
if {${configure.build_arch} ni [list ppc ppc64]} {
default_variants-append \
+alembic
}