You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sci-libs/opencascade/opencascade-7.4.0-r4.ebuild

148 lines
3.9 KiB

# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# TODO:
# check the src files referenced in 51opencascade, i.e. resources and the like
# check where cmake gets it's '-s' linker flag to avoid pre-stripping (QA)
EAPI=7
inherit check-reqs cmake flag-o-matic java-pkg-opt-2
MY_PV="$(ver_rs 1- '_')"
DESCRIPTION="Development platform for CAD/CAE, 3D surface/solid modeling and data exchange"
HOMEPAGE="https://www.opencascade.com"
SRC_URI="https://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=refs/tags/V${MY_PV};sf=tgz -> ${P}.tar.gz"
S="${WORKDIR}/occt-V${MY_PV}"
LICENSE="|| ( Open-CASCADE-LGPL-2.1-Exception-1.0 LGPL-2.1 )"
SLOT="${PV}"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="debug doc +examples ffmpeg freeimage gles2 inspector java optimize qt5 tbb +vtk"
REQUIRED_USE="
inspector? ( qt5 )
qt5? ( examples )
?? ( optimize tbb )
"
RDEPEND="
app-eselect/eselect-opencascade
dev-cpp/eigen
dev-lang/tcl:0=
dev-lang/tk:0=
dev-tcltk/itcl
dev-tcltk/itk
dev-tcltk/tix
media-libs/freetype:2
media-libs/ftgl
virtual/glu
virtual/opengl
x11-libs/libXmu
ffmpeg? ( media-video/ffmpeg )
freeimage? ( media-libs/freeimage )
java? ( virtual/jdk:1.8 )
qt5? (
dev-qt/qtcore:5
dev-qt/qtgui:5
dev-qt/qtquickcontrols2:5
dev-qt/qtwidgets:5
dev-qt/qtxml:5
)
tbb? ( dev-cpp/tbb )
vtk? (
>=sci-libs/vtk-8.1.0[rendering]
<sci-libs/vtk-9
)
"
DEPEND="${RDEPEND}"
BDEPEND="
doc? ( app-doc/doxygen )
qt5? ( dev-qt/linguist-tools:5 )
"
# There's no easy way to test. Testing needs a rather big environment
# properly set up.
RESTRICT="test"
CHECKREQS_MEMORY="256M"
CHECKREQS_DISK_BUILD="3584M"
CMAKE_BUILD_TYPE=Release
PATCHES=(
"${FILESDIR}/${P}-find-qt.patch"
"${FILESDIR}/${P}-fix-install.patch"
"${FILESDIR}/${P}-fix-issue-with-cmake-path-variables.patch"
"${FILESDIR}/${P}-Gentoo-specific-avoid-pre-stripping-files.patch"
"${FILESDIR}/${P}-fix-flow-control-nesting.patch"
)
pkg_setup() {
check-reqs_pkg_setup
use java && java-pkg-opt-2_pkg_setup
}
src_prepare() {
cmake_src_prepare
use java && java-pkg-opt-2_src_prepare
}
src_configure() {
local mycmakeargs=(
-DBUILD_DOC_Overview=$(usex doc)
-DBUILD_Inspector=$(usex inspector)
-DBUILD_WITH_DEBUG=$(usex debug)
-DCMAKE_CONFIGURATION_TYPES="Gentoo"
-DCMAKE_INSTALL_PREFIX="/usr/$(get_libdir)/${P}/ros"
-DINSTALL_DIR_DOC="/usr/share/doc/${PF}"
-DINSTALL_DIR_CMAKE="/usr/$(get_libdir)/cmake"
-DINSTALL_SAMPLES=$(usex examples)
-DINSTALL_TEST_CASES=NO
-DUSE_D3D=no
-DUSE_FFMPEG=$(usex ffmpeg)
-DUSE_FREEIMAGE=$(usex freeimage)
-DUSE_GLES2=$(usex gles2)
-DUSE_TBB=$(usex tbb)
-DUSE_VTK=$(usex vtk)
)
use doc && mycmakeargs+=( -DINSTALL_DOC_Overview=ON )
use examples && mycmakeargs+=( -DBUILD_SAMPLES_QT=$(usex qt5) )
cmake_src_configure
# prepare /etc/env.d file
sed -e 's|VAR_CASROOT|'${ESYSROOT}'/usr/'$(get_libdir)'/'${P}'/ros|g' < "${FILESDIR}/${P}.env.in" >> "${T}/${PV}" || die
sed -i -e 's|ros/lib|ros/'$(get_libdir)'|' "${T}/${PV}" || die
# use TBB for memory allocation optimizations?
use tbb && (sed -i -e 's|^#MMGT_OPT=0$|MMGT_OPT=2|' "${T}/${PV}" || die)
if use optimize ; then
# use internal optimized memory manager?
sed -i -e 's|^#MMGT_OPT=0$|MMGT_OPT=1|' "${T}/${PV}" || die
# don't clear memory ?
sed -i -e 's|^#MMGT_CLEAR=1$|MMGT_CLEAR=0|' "${T}/${PV}" || die
fi
}
src_install() {
cmake_src_install
# respect slotting
insinto "/etc/env.d/${PN}"
doins "${T}/${PV}"
# remove examples
use examples || (rm -rf "${ED}/usr/$(get_libdir)/${P}/ros/share/${PN}/samples" || die)
use java || (rm -rf "${ED}/usr/$(get_libdir)/${P}/ros/share/${PN}/samples/java" || die)
use qt5 || (rm -rf "${ED}/usr/$(get_libdir)/${P}/ros/share/${PN}/samples/qt" || die)
}
pkg_postinst() {
eselect ${PN} set ${PV} || die "failed to switch to updated implementation"
einfo "You can switch between available ${PN} implementations using eselect ${PN}"
}