diff --git a/sci-mathematics/cgal/Manifest b/sci-mathematics/cgal/Manifest
index d6a72f9b75d5e..d7c075889f434 100644
--- a/sci-mathematics/cgal/Manifest
+++ b/sci-mathematics/cgal/Manifest
@@ -10,3 +10,5 @@ DIST CGAL-6.1-doc_html.tar.xz 65517356 BLAKE2B 19dd8660be8ab84373809559e808e5777
DIST CGAL-6.1.1-doc_html.tar.xz 65520064 BLAKE2B 05de9df026b7643375554a3d2b28e498071559555a3d4f2c74fe55151f89b3c746c7d76401795ac4694593e74e01d38ef1ed40997810423ec5cab46ef0ef4003 SHA512 223701d046ff41b3f4096e1fcb432404a18b49ec92f8a4a4bbc01d35a32318bc17caf45ddec9318feb2be602c5e00c172216dff8dc7d7d7b27321c740043b803
DIST CGAL-6.1.1.tar.xz 26305296 BLAKE2B 4c96527dac7c1fd26d4a4de5df5bec3e2c4fcd0eae64edf5809e600a6623be1b2561354d7be2dfe44589dd37cba34f169d30d65fa78f42a1f296200a47477c2f SHA512 dc6ae82526697df986c755f0a2d4754b04810b8910bec794bed4f822cc2e15d6174e85649241295022acddca3cd10408e7b279b6da93e0506d44e7fc1e03b7c6
DIST CGAL-6.1.tar.xz 26293988 BLAKE2B 21a154e26b54c985edcee10d5401020b272e1ff4a477b4eeaf9cffec0043f4fb4973c30088804a20a5ff9c7d974c65c198d5a8e626fa33910b5ab6175df973be SHA512 8921dad4802bb276348a6fccb5a4e0e191f0f03bd9224eeaa8f5525eab87c4dc949741bb0cb11e4127a080090635ae2f243fa5904376488e5b7dd966e0c312a5
+DIST CGAL-6.2-doc_html.tar.xz 74966988 BLAKE2B 667d164b0286cab7dbea9005d5a39d4115556568d3b4d05f2cf6ae38664b10784d72c18edca9b4538c44da6e4996187127e0f67d708fef2df762454923ca135d SHA512 651eb366083aa05877d5e743a501cd07480d1d8ac4dc48343ab991522d1a2c1b475a4183fddb27809d7f8b2d97983d9e2f92ad1068765411c832d675861e282d
+DIST CGAL-6.2.tar.xz 26596404 BLAKE2B 783d3adc86a369ec79a2b5acb4e421b1c64590929c4cc2e9de90e3ede6e926ac49723db0694778df66551cec05047aed356f598e436923b9a801b98670f0e56a SHA512 5f0a3e24d56250b1651fe9016d14da9dcc1af0dd1347b4daa0bf6ae8c512ab831ea66ce5655133497f9965071d2e200582b36ba29961ecb5cdc896b47a5d7e17
diff --git a/sci-mathematics/cgal/cgal-6.2.ebuild b/sci-mathematics/cgal/cgal-6.2.ebuild
new file mode 100644
index 0000000000000..a54f36906bc4c
--- /dev/null
+++ b/sci-mathematics/cgal/cgal-6.2.ebuild
@@ -0,0 +1,187 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CMAKE_BUILD_TYPE="Debug"
+
+# 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/"
+
+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^^}"
+
+LICENSE="LGPL-3 GPL-3 Boost-1.0"
+SLOT="0/14"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+
+IUSE="demos doc examples test"
+RESTRICT="!test? ( test )"
+
+# This seems wrong.
+RDEPEND="
+ dev-cpp/eigen:=
+ dev-libs/boost:=
+ dev-libs/gmp:=[cxx]
+ dev-libs/mpfr:=
+ virtual/zlib:=
+ x11-libs/libX11:=
+ virtual/glu:=
+ virtual/opengl:=
+"
+DEPEND="${RDEPEND}
+ test? (
+ net-libs/libssh[server]
+ demos? (
+ dev-qt/qtbase:6[gui,opengl,widgets]
+ )
+ examples? (
+ amd64? (
+ media-gfx/openmesh
+ )
+ dev-qt/qtbase:6[gui,opengl,widgets]
+ )
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.11.1-fix-buildsystem.patch"
+)
+
+pkg_pretend() {
+ if ! use test && { use demos || use examples; }; then
+ ewarn "The \"demos\" and \"examples\" useflag require USE=\"test\""
+ fi
+}
+
+src_prepare() {
+ if use doc; then
+ rm -r "doc_html" || die
+ mv "${WORKDIR}/doc_html" "${S}/" || die
+ fi
+
+ if use examples; then
+ rm -Rf \
+ examples/BGL_polyhedron_3 \
+ examples/BGL_surface_mesh \
+ examples/Isosurfacing_3 \
+ examples/Mesh_3 \
+ examples/Polygon_mesh_processing \
+ examples/Surface_mesh_simplification \
+ || die
+ fi
+
+ cmake_src_prepare
+}
+
+src_compile() {
+ cmake_src_compile demos
+ cmake_src_compile examples
+ cmake_src_compile ALL_CGAL_TARGETS
+}
+
+src_configure() {
+ # Header only
+ filter-flags -DNDEBUG*
+
+ local deps=(
+ ESBTL
+ F2C
+ GLPK
+ IPE
+ ITT
+ LASLIB
+ LEDA
+ libpointmatcher
+ LibSSH
+ MKL
+ MPFI
+ # MPFR
+ OpenCV
+ OpenGR
+ OpenMesh
+ OSQP
+ RS
+ RS3
+ SCIP
+ TBB
+ UMFPACK
+ VTK
+ )
+
+ local mycmakeargs=(
+ -DCMAKE_POLICY_DEFAULT_CMP0167="NEW"
+ # 964750
+ "$(printf -- "-DCMAKE_DISABLE_FIND_PACKAGE_%s=yes " "${deps[@]}")"
+
+ -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)"
+ -DCGAL_CTEST_DISPLAY_MEM_AND_TIME="yes"
+ # exits some tests early
+ -DCGAL_TEST_SUITE="yes"
+ -DCGAL_TEST_DRAW_FUNCTIONS="yes"
+ -DCGAL_WITH_GMPXX="yes"
+
+ # -DCGAL_WITH_benchmark="$(usex test "$(usex benchmark)")" # wired up but not present
+ -DCGAL_WITH_demos="$(usex test "$(usex demos)")"
+ -DCGAL_WITH_examples="$(usex test "$(usex examples)")"
+ )
+
+ # 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 use test && { use demos || use examples; }; then
+ if has_version "sci-libs/vtk[cuda]" ; then
+ cuda_add_sandbox -w
+ addpredict "/dev/char/"
+ fi
+ fi
+
+ cmake_src_configure
+}
+
+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"
+ 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 demos
+ fi
+
+ if use examples; then
+ dodoc -r examples
+ fi
+}
diff --git a/sci-mathematics/cgal/cgal-9999.ebuild b/sci-mathematics/cgal/cgal-9999.ebuild
new file mode 100644
index 0000000000000..8f67037d87f7e
--- /dev/null
+++ b/sci-mathematics/cgal/cgal-9999.ebuild
@@ -0,0 +1,238 @@
+# 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="demos doc examples test"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ test? ( || (
+ demos examples
+ ) )
+"
+
+# 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]
+ demos? (
+ dev-qt/qtbase:6[gui,opengl,widgets]
+ )
+ examples? (
+ amd64? (
+ media-gfx/openmesh
+ )
+ dev-qt/qtbase:6[gui,opengl,widgets]
+ )
+ )
+"
+BDEPEND="
+ virtual/pkgconfig
+"
+
+pkg_pretend() {
+ if ! use test && { use demos || use examples; }; then
+ ewarn "The \"demos\" and \"examples\" useflag require USE=\"test\""
+ fi
+}
+
+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=(
+ Ceres
+ GLPK
+ # GMP
+ ITK
+ ITT
+ LASLIB
+ libpointmatcher
+ METIS
+ MPFI
+ # MPFR
+ OpenCV
+ OpenGR
+ OSQP
+ SCIP
+ SuiteSparse
+ TBB
+ VTK
+ # ZLIB
+ )
+
+ if use demos || use examples; 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/"
+ fi
+
+ deps+=(
+ LEDA
+ # MKL
+ # RS
+ # RS3
+ SCIP
+ # UMFPACK
+ )
+ fi
+
+ if ! use demos; then
+ deps+=(
+ # Eigen3
+ )
+ fi
+
+ if ! use demos && ! use examples; then
+ deps+=(
+ # Boost
+ # Threads
+ Qt6
+ )
+ fi
+
+ if use examples; then
+ deps+=(
+ ESBTL
+ )
+ else
+ deps+=(
+ IPE
+ LibSSH
+ OpenMesh
+ )
+ 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 demos)")"
+ -DCGAL_WITH_examples="$(usex test "$(usex examples)")"
+ )
+ 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
+ if use demos; then
+ cmake_src_compile demos
+ fi
+
+ if use examples; then
+ cmake_src_compile examples
+ fi
+
+ cmake_src_compile ALL_CGAL_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
+ )
+
+ 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
+}
diff --git a/sci-mathematics/cgal/metadata.xml b/sci-mathematics/cgal/metadata.xml
index 9036bcf839d6f..3c0baafee110a 100644
--- a/sci-mathematics/cgal/metadata.xml
+++ b/sci-mathematics/cgal/metadata.xml
@@ -22,6 +22,9 @@
CGAL/cgal