mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
media-libs/opensubdiv: add 3.6.1
Introduce a subslot to match the SONAME. Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/43084 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -1 +1,2 @@
|
||||
DIST opensubdiv-3.6.0.tar.gz 40746688 BLAKE2B 23f92fa028ae32b430350998299dab3fbb87b8530755abd435ce059223998a8f3d48de17c746028362fd1d2eee33e8a4c7a55b8cf4083202cfd0b6d27de008c7 SHA512 a976733a26e2c0f6510f59d4372b1b33f5404a9d536bcbd6ae3a1a0ffd1bba5495df7108bebc854d5c069575772c97c0d00f0f16f79e87611376ba84e9ae7a4b
|
||||
DIST opensubdiv-3.6.1.tar.gz 40745394 BLAKE2B 1dfb24b22ddc3874e4aaf03feb1944cf91008b52bfcf44f039831f2945f58f9a777903d073748ecc477a2fda0cb46b2f79045489fc0aee77acbcfceb011e1c06 SHA512 afc30951642d978c7fd82549f0b03eae7dbf4f28642cf7e42e4a09ac550e111555c391f21dee239d5ee5522b758038d2cc7553fe2db818dad6dcf2ab5fd22358
|
||||
|
||||
254
media-libs/opensubdiv/opensubdiv-3.6.1.ebuild
Normal file
254
media-libs/opensubdiv/opensubdiv-3.6.1.ebuild
Normal file
@@ -0,0 +1,254 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
|
||||
inherit cmake cuda flag-o-matic python-any-r1 toolchain-funcs virtualx xdg
|
||||
|
||||
MY_PV="$(ver_rs "1-3" '_')"
|
||||
|
||||
DESCRIPTION="An Open-Source subdivision surface library"
|
||||
HOMEPAGE="https://graphics.pixar.com/opensubdiv/docs/intro.html"
|
||||
SRC_URI="https://github.com/PixarAnimationStudios/OpenSubdiv/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
|
||||
S="${WORKDIR}/OpenSubdiv-${MY_PV}"
|
||||
|
||||
# Modfied Apache-2.0 license, where section 6 has been replaced.
|
||||
# See for example CMakeLists.txt for details.
|
||||
LICENSE="Apache-2.0"
|
||||
# MATCHES SONAME
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
|
||||
IUSE="X cuda doc examples glfw opencl +opengl openmp ptex python tbb test tutorials"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
# TODO needed for stringify due to unwrapped KERNEL_FILES in opensubdiv/{far,osd}/CMakeLists.txt
|
||||
REQUIRED_USE="
|
||||
|| ( opencl opengl )
|
||||
ptex? ( glfw )
|
||||
"
|
||||
|
||||
BDEPEND="
|
||||
doc? (
|
||||
app-text/doxygen
|
||||
dev-python/docutils
|
||||
)
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
"
|
||||
|
||||
# opengl requires GLX, libglvnd[X]
|
||||
RDEPEND="
|
||||
examples? (
|
||||
opengl? (
|
||||
glfw? (
|
||||
>=media-libs/glfw-3.4[X?]
|
||||
)
|
||||
)
|
||||
)
|
||||
opengl? ( media-libs/libglvnd[X] )
|
||||
opencl? ( virtual/opencl )
|
||||
openmp? ( || (
|
||||
sys-devel/gcc:*[openmp]
|
||||
llvm-runtimes/openmp
|
||||
) )
|
||||
ptex? ( media-libs/ptex )
|
||||
tbb? ( dev-cpp/tbb:= )
|
||||
test? ( >=media-libs/glfw-3.4[X] )
|
||||
"
|
||||
|
||||
# CUDA_RUNTIME is statically linked
|
||||
DEPEND="
|
||||
${RDEPEND}
|
||||
test? (
|
||||
glfw? (
|
||||
>=media-libs/glfw-3.4[X?]
|
||||
)
|
||||
)
|
||||
cuda? ( dev-util/nvidia-cuda-toolkit:= )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-3.6.0-use-gnuinstalldirs.patch"
|
||||
"${FILESDIR}/${PN}-3.6.0-cudaflags.patch"
|
||||
)
|
||||
|
||||
pkg_pretend() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
|
||||
|
||||
if use cuda; then
|
||||
# When building binary packages we build all major targets unless specified otherwise
|
||||
if [[ -z "${CUDAARCHS+x}" ]]; then
|
||||
case ${MERGE_TYPE} in
|
||||
source) CUDAARCHS="native" ;;
|
||||
# buildonly) CUDAARCHS="all" ;;
|
||||
buildonly) CUDAARCHS="all-major" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# check if user provided --gpu-architecture/-arch flag instead of CUDAARCHS
|
||||
for f in ${NVCCFLAGS}; do
|
||||
if [[ ${f} == -arch* || ${f} == --gpu-architecture* ]]; then
|
||||
CUDAARCHS="NVCC"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${CUDAARCHS}" == "NVCC" ]]; then
|
||||
unset CUDAARCHS
|
||||
else
|
||||
export CUDAARCHS
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
cmake_src_prepare
|
||||
|
||||
sed \
|
||||
-e "/install(/s/^/#DONOTINSTALL /g" \
|
||||
-i \
|
||||
regression/*/CMakeLists.txt \
|
||||
tools/stringify/CMakeLists.txt \
|
||||
|| die
|
||||
|
||||
sed \
|
||||
-e "/install( TARGETS osd_static_[cg]pu/s/^/#DONOTINSTALL /g" \
|
||||
-i \
|
||||
opensubdiv/CMakeLists.txt \
|
||||
|| die
|
||||
|
||||
if use cuda; then
|
||||
# do this little headstand to filter out lto from NVCCFLAGS
|
||||
local CFLAGS_orig="${CFLAGS}" CXXFLAGS_orig="${CXXFLAGS}"
|
||||
filter-lto
|
||||
|
||||
cuda_src_prepare
|
||||
|
||||
CFLAGS="${CFLAGS_orig}"
|
||||
CXXFLAGS="${CXXFLAGS_orig}"
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DCMAKE_INSTALL_BINDIR="share/${PN}/bin"
|
||||
|
||||
# DirectX
|
||||
-DNO_DX="yes"
|
||||
|
||||
# MacOS
|
||||
-DNO_MACOS_FRAMEWORK="yes"
|
||||
-DNO_METAL="yes"
|
||||
|
||||
-DNO_DOC="$(usex !doc)"
|
||||
-DNO_EXAMPLES="$(usex !examples)"
|
||||
-DNO_TUTORIALS="$(usex !tutorials)"
|
||||
-DNO_REGRESSION="$(usex !test)"
|
||||
-DNO_TESTS="$(usex !test)"
|
||||
|
||||
-DNO_PTEX="$(usex !ptex)"
|
||||
|
||||
# GUI
|
||||
-DNO_OPENGL="$(usex !opengl)"
|
||||
|
||||
# Backends
|
||||
-DNO_CUDA="$(usex !cuda)"
|
||||
-DNO_OMP="$(usex !openmp)"
|
||||
-DNO_TBB="$(usex !tbb)"
|
||||
-DNO_OPENCL="$(usex !opencl)"
|
||||
)
|
||||
|
||||
if use cuda; then
|
||||
# The old cmake CUDA module doesn't use environment variable to initialize flags
|
||||
mycmakeargs+=(
|
||||
-DCUDA_PROPAGATE_HOST_FLAGS="no"
|
||||
-DCUDA_NVCC_FLAGS="-forward-unknown-opts ${NVCCFLAGS}"
|
||||
)
|
||||
fi
|
||||
|
||||
if use opencl; then
|
||||
mycmakeargs+=(
|
||||
# not packaged https://github.com/martijnberger/clew
|
||||
-DNO_CLEW="yes"
|
||||
)
|
||||
fi
|
||||
|
||||
if use opengl; then
|
||||
mycmakeargs+=(
|
||||
-DNO_GLTESTS="$(usex !test)"
|
||||
# GLEW support is unmaintained in favour of their own GL handler code.
|
||||
# Turning this on will lead to crashes when using their GPU backend.
|
||||
-DNO_GLEW="yes"
|
||||
-DNO_GLFW="$(usex !glfw)"
|
||||
)
|
||||
if use glfw; then
|
||||
mycmakeargs+=(
|
||||
-DGLFW_LOCATION="${ESYSROOT}/usr/$(get_libdir)"
|
||||
-DNO_GLFW_X11="$(usex !X)"
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
if use ptex; then
|
||||
mycmakeargs+=(
|
||||
-DPTEX_LOCATION="${ESYSROOT}/usr/$(get_libdir)"
|
||||
)
|
||||
fi
|
||||
|
||||
if ! use python; then
|
||||
mycmakeargs+=(
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Python="yes"
|
||||
)
|
||||
fi
|
||||
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
src_test() {
|
||||
xdg_environment_reset
|
||||
|
||||
CMAKE_SKIP_TESTS=(
|
||||
# Fails due to CL & CUDA kernels, works outside
|
||||
"glImaging"
|
||||
)
|
||||
|
||||
if ! test -w /dev/dri/card0; then
|
||||
CMAKE_SKIP_TESTS+=(
|
||||
"osd_regression"
|
||||
)
|
||||
fi
|
||||
|
||||
# "far_tutorial_1_2 breaks with gcc and > -O1"
|
||||
tc-is-gcc && is-flagq '-O@(2|3|fast)' && CMAKE_SKIP_TESTS+=( "far_tutorial_1_2" )
|
||||
|
||||
if use cuda; then
|
||||
cuda_add_sandbox -w
|
||||
addpredict /dev/char/
|
||||
addwrite /dev/dri/card0
|
||||
addwrite /dev/dri/renderD128
|
||||
addwrite /dev/udmabuf
|
||||
fi
|
||||
|
||||
virtx cmake_src_test
|
||||
|
||||
if use examples && use opengl && use glfw; then
|
||||
|
||||
local KERNELS=( CPU )
|
||||
use openmp && KERNELS+=( OPENMP )
|
||||
use tbb && KERNELS+=( TBB )
|
||||
|
||||
# use cuda && KERNELS+=( CUDA )
|
||||
# use opencl && KERNELS+=( CL )
|
||||
|
||||
use opengl && use X && KERNELS+=( XFB )
|
||||
use opengl && KERNELS+=( GLSL )
|
||||
|
||||
#Bug https://bugs.gentoo.org/924516
|
||||
virtx "${BUILD_DIR}/bin/glImaging" -w test -l 3 -s 256 256 -a -k "$(IFS=","; echo "${KERNELS[*]}")"
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user