# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 # Modules provided by dev-cpp/eigen CMAKE_REMOVE_MODULES_LIST=( FindEigen3 ) inherit cmake cuda flag-o-matic multiprocessing DESCRIPTION="C++ library for geometric algorithms and data structures" HOMEPAGE="https://www.cgal.org/" if [[ ${PV} == *9999* ]]; then inherit git-r3 EGIT_REPO_URI="https://github.com/${PN^^}/${PN}.git" else SRC_URI=" https://github.com/CGAL/cgal/releases/download/v${PV}/${P^^}.tar.xz doc? ( https://github.com/CGAL/cgal/releases/download/v${PV}/${P^^}-doc_html.tar.xz ) " S="${WORKDIR}/${P^^}" KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" fi LICENSE="LGPL-3 GPL-3 Boost-1.0" SLOT="0/14" IUSE="doc test test-full" RESTRICT="!test? ( test )" # Referenced in the cmake files. RDEPEND=" dev-cpp/eigen:= dev-libs/boost:= dev-libs/gmp:=[cxx] dev-libs/mpfr:= virtual/zlib:= " DEPEND="${RDEPEND} test? ( net-libs/libssh[server] ) " BDEPEND=" virtual/pkgconfig " src_prepare() { if use doc; then rm -r "doc_html" || die mv "${WORKDIR}/doc_html" "${S}/" || die fi cmake_src_prepare } src_configure() { # Header only since 5.0 local mycmakeargs=( -DCMAKE_POLICY_DEFAULT_CMP0167="NEW" -DCGAL_INSTALL_LIB_DIR="$(get_libdir)" -DCGAL_INSTALL_CMAKE_DIR="$(get_libdir)/cmake/CGAL" # https://github.com/CGAL/cgal/wiki/Testing#using-ctest -DCGAL_ENABLE_TESTING="$(usex test)" # Forcibly wipe to get rid of NDEBUG. see below -DCMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE^^}="" ) if use test; then # include/CGAL/config.h:53:4: error: #error The test-suite needs no NDEBUG defined filter-flags -DNDEBUG* # cmake/modules/display-third-party-libs-versions.cmake # these need use flags eventually local deps=( VTK ) deps+=( # Ceres # GLPK # # GMP # ITK # ITT # LASLIB # libpointmatcher # METIS # MPFI # # MPFR # OpenCV # OpenGR # OSQP # SCIP # SuiteSparse # TBB # # VTK # # ZLIB # # LEDA # unused # # MKL # # RS # # RS3 # SCIP # # UMFPACK # Eigen3 Qt6 # # ESBTL # unused # # IPE # unused # # LibSSH # unused OpenMesh ) if use test-full; then # Optionally depends on sci-lib/vtk, which looks up a cuda compiler iff build with USE=cuda. # We therefore need to set the correct CUDAHOSTCXX and setup the sandbox. if has_version "sci-libs/vtk[cuda]" ; then cuda_add_sandbox addpredict "/dev/char/" local -x CUDAHOSTCXX="$(cuda_gccdir)" fi else deps+=( # Threads # Boost ) fi mycmakeargs+=( -DCGAL_CTEST_DISPLAY_MEM_AND_TIME="yes" # exits some tests early -DCGAL_TEST_SUITE="yes" -DCGAL_TEST_DRAW_FUNCTIONS="yes" -DCGAL_DISABLE_GMP="no" # -DCGAL_WITH_benchmark="$(usex test "$(usex benchmark)")" # wired up but not present -DCGAL_WITH_demos="$(usex test "$(usex test-full)")" -DCGAL_WITH_examples="$(usex test "$(usex test-full)")" ) if [[ -n "${deps[@]}" ]]; then mycmakeargs+=( # 964750 # this does not work as demos and examples are separate cmake calls that ignore mycmakeargs $(printf -- "-DCMAKE_DISABLE_FIND_PACKAGE_%s=yes " "${deps[@]}") ) fi fi cmake_src_configure } src_compile() { if use test; then local targets=( ALL_CGAL_TARGETS ) if use test-full; then targets+=( demos examples ) fi cmake_src_compile "${targets[@]}" fi } src_test() { # tests have split compilation & execution stages that do not depend on each other, but break when run out of order # We pass CMAKE_BUILD_PARALLEL_LEVEL to run compilation tests in parallel local -x CMAKE_BUILD_PARALLEL_LEVEL="$(get_makeopts_jobs)" einfo "using CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}" # We pass CTEST_PARALLEL_LEVEL to run execution tests in parallel local -x CTEST_PARALLEL_LEVEL="$(get_makeopts_jobs)" einfo "using CTEST_PARALLEL_LEVEL=${CTEST_PARALLEL_LEVEL}" local -x QT_QPA_PLATFORM="offscreen" local CMAKE_SKIP_TESTS=( region_growing_planes_on_point_set_3 mesh_3D_image_with_image_initialization ) cmake_src_test -j1 } src_install() { if use doc; then local HTML_DOCS=( "doc_html/." ) fi cmake_src_install # if use demos; then # dodoc -r demo # fi # if use examples; then # dodoc -r examples # fi }