+MultipolygonWithHolesGraphicsItem::MultipolygonWithHolesGraphicsItem(P * p_)
+ : poly(p_), painterostream(0),
+ draw_vertices(true)
+{
+ setVerticesPen(QPen(::Qt::red, 3.));
+ if(poly->number_of_polygons_with_holes() == 0){
+ this->hide();
+ }
+ updateBoundingBox();
+ setZValue(0);
+}
+
+template
+QRectF
+MultipolygonWithHolesGraphicsItem::boundingRect() const
+{
+ return bounding_rect;
+}
+
+
+
+
+template
+void
+MultipolygonWithHolesGraphicsItem::paint(QPainter *painter,
+ const QStyleOptionGraphicsItem * /*option*/,
+ QWidget * /*widget*/)
+{
+ using Polygon_with_holes_2 = typename P::Polygon_with_holes_2;
+ using General_polygon_2 = typename Polygon_with_holes_2::General_polygon_2;
+ Converter convert;
+
+ for(const auto& pwh : poly->polygons_with_holes()){
+ QPainterPath border;
+ General_polygon_2 boundary = pwh.outer_boundary();
+ painter->setPen(this->edgesPen());
+
+ typename General_polygon_2::Vertex_iterator it = pwh.outer_boundary().vertices_begin();
+ QPointF firstPoint = convert(*it);
+ border.moveTo(firstPoint);
+ painterostream = PainterOstream(painter);
+
+ for(++it;
+ it != pwh.outer_boundary().vertices_end();
+ ++it){
+ border.lineTo(convert(*it));
+ }
+ border.lineTo(firstPoint);
+
+
+ for(typename Polygon_with_holes_2::Hole_const_iterator hit = pwh.holes_begin();
+ hit != pwh.holes_end();
+ ++hit){
+ typename General_polygon_2::Vertex_iterator it = hit->vertices_begin();
+ QPointF firstPoint = convert(*it);
+ border.moveTo(firstPoint);
+ for(++it;
+ it != hit->vertices_end();
+ ++it){
+ border.lineTo(convert(*it));
+ }
+ border.lineTo(firstPoint);
+ }
+
+ painter->setBrush(this->brush());
+ painter->drawPath(border);
+ }
+
+
+ if(drawVertices()) {
+ painter->setPen(verticesPen());
+ QTransform matrix = painter->worldTransform();
+ painter->resetTransform();
+
+ for(const auto& pwh : poly->polygons_with_holes()){
+ for(typename General_polygon_2::Vertex_iterator it = pwh.outer_boundary().vertices_begin();
+ it != pwh.outer_boundary().vertices_end();
+ it++){
+ QPointF point = matrix.map(convert(*it));
+ painter->drawPoint(point);
+ }
+ for(typename Polygon_with_holes_2::Hole_const_iterator hit = pwh.holes_begin();
+ hit != pwh.holes_end();
+ ++hit){
+ for(typename General_polygon_2::Vertex_iterator it = hit->vertices_begin();
+ it != hit->vertices_end();
+ it++){
+ QPointF point = matrix.map(convert(*it));
+ painter->drawPoint(point);
+ }
+ }
+ }
+ }
+}
+
+// We let the bounding box only grow, so that when vertices get removed
+// the maximal bbox gets refreshed in the GraphicsView
+template
+void
+MultipolygonWithHolesGraphicsItem::updateBoundingBox()
+{
+ Converter convert;
+ prepareGeometryChange();
+ if(poly->number_of_polygons_with_holes() == 0){
+ return;
+ }
+ bounding_rect = convert(poly->bbox());
+}
+
+
+template
+void
+MultipolygonWithHolesGraphicsItem::modelChanged()
+{
+ if((poly->number_of_polygons_with_holes() == 0) ){
+ this->hide();
+ } else if((poly->number_of_polygons_with_holes() > 0) && (! this->isVisible())){
+ this->show();
+ }
+ updateBoundingBox();
+ update();
+}
+
+
+} // namespace Qt
+} // namespace CGAL
+
+#endif // CGAL_QT_MYLTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H
diff --git a/GraphicsView/include/CGAL/Qt/camera_impl.h b/GraphicsView/include/CGAL/Qt/camera_impl.h
index 2997b4778e45..1c8c4c4ceab8 100644
--- a/GraphicsView/include/CGAL/Qt/camera_impl.h
+++ b/GraphicsView/include/CGAL/Qt/camera_impl.h
@@ -1225,7 +1225,7 @@ Vec Camera::pivotPoint() const { return frame()->pivotPoint(); }
/*! Sets the Camera's position() and orientation() from an OpenGL ModelView
matrix.
-This enables a Camera initialisation from an other OpenGL application. \p
+This enables a Camera initialization from an other OpenGL application. \p
modelView is a 16 GLdouble vector representing a valid OpenGL ModelView matrix,
such as one can get using: \code GLdouble mvm[16];
glGetDoublev(GL_MODELVIEW_MATRIX, mvm);
diff --git a/GraphicsView/include/CGAL/Qt/manipulatedFrame.h b/GraphicsView/include/CGAL/Qt/manipulatedFrame.h
index b763a646580e..52cc92105bad 100644
--- a/GraphicsView/include/CGAL/Qt/manipulatedFrame.h
+++ b/GraphicsView/include/CGAL/Qt/manipulatedFrame.h
@@ -270,13 +270,11 @@ private Q_SLOTS:
/*! @name Mouse event handlers */
//@{
protected:
- virtual void mousePressEvent(QMouseEvent *const event, Camera *const camera);
- virtual void mouseMoveEvent(QMouseEvent *const event, Camera *const camera);
- virtual void mouseReleaseEvent(QMouseEvent *const event,
- Camera *const camera);
- virtual void mouseDoubleClickEvent(QMouseEvent *const event,
- Camera *const camera);
- virtual void wheelEvent(QWheelEvent *const event, Camera *const camera);
+ void mousePressEvent (QMouseEvent *const event, Camera *const camera) override;
+ void mouseMoveEvent (QMouseEvent *const event, Camera *const camera) override;
+ void mouseReleaseEvent (QMouseEvent *const event, Camera *const camera) override;
+ void mouseDoubleClickEvent(QMouseEvent *const event, Camera *const camera) override;
+ void wheelEvent(QWheelEvent *const event, Camera *const camera) override;
//@}
public:
@@ -299,7 +297,7 @@ private Q_SLOTS:
/*! @name MouseGrabber implementation */
//@{
public:
- virtual void checkIfGrabsMouse(int x, int y, const Camera *const camera);
+ void checkIfGrabsMouse(int x, int y, const Camera *const camera) override;
//@}
#ifndef DOXYGEN
diff --git a/GraphicsView/include/CGAL/Qt/qglviewer.h b/GraphicsView/include/CGAL/Qt/qglviewer.h
index 8ee3b4135f29..e24a5fcd6d7f 100644
--- a/GraphicsView/include/CGAL/Qt/qglviewer.h
+++ b/GraphicsView/include/CGAL/Qt/qglviewer.h
@@ -478,7 +478,6 @@ public Q_SLOTS:
qreal bufferTextureMaxU() const { return bufferTextureMaxU_; }
/*! Same as bufferTextureMaxU(), but for the v texture coordinate. */
qreal bufferTextureMaxV() const { return bufferTextureMaxV_; }
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0))
// These methods are part of the QGLWidget public API.
// As of version 2.7.0, the use of QOpenGLWidget instead means that they have
// to be provided for backward compatibility.
@@ -486,7 +485,6 @@ public Q_SLOTS:
const QFont &font = QFont());
void renderText(double x, double y, double z, const QString &str,
const QFont &font = QFont());
-#endif
public Q_SLOTS:
void copyBufferToTexture(GLint, GLenum = GL_NONE);
diff --git a/GraphicsView/include/CGAL/Qt/qglviewer_impl.h b/GraphicsView/include/CGAL/Qt/qglviewer_impl.h
index 7387b1f48745..01e8a68433d4 100644
--- a/GraphicsView/include/CGAL/Qt/qglviewer_impl.h
+++ b/GraphicsView/include/CGAL/Qt/qglviewer_impl.h
@@ -354,7 +354,6 @@ camera is manipulated) : main drawing method. Should be overloaded. \arg
postDraw() : display of visual hints (world axis, FPS...) */
CGAL_INLINE_FUNCTION
void CGAL::QGLViewer::paintGL() {
- makeCurrent();
// Clears screen, set model view matrix...
preDraw();
// Used defined method. Default calls draw()
@@ -364,7 +363,6 @@ void CGAL::QGLViewer::paintGL() {
draw();
// Add visual hints: axis, camera, grid...
postDraw();
- doneCurrent();
Q_EMIT drawFinished(true);
}
@@ -720,7 +718,6 @@ CGAL_INLINE_FUNCTION
void CGAL::QGLViewer::drawLight(GLenum, qreal ) const {
}
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0))
CGAL_INLINE_FUNCTION
void CGAL::QGLViewer::renderText(int x, int y, const QString &str,
const QFont &font) {
@@ -742,7 +739,6 @@ void CGAL::QGLViewer::renderText(double x, double y, double z, const QString &st
const Vec proj = camera_->projectedCoordinatesOf(Vec(x, y, z));
renderText(int(proj.x), int(proj.y), str, font);
}
-#endif
/*! Draws \p text at position \p x, \p y (expressed in screen coordinates
pixels, origin in the upper left corner of the widget).
diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_const_decorator.h b/HalfedgeDS/include/CGAL/HalfedgeDS_const_decorator.h
index 14093079bcee..6e3428f98618 100644
--- a/HalfedgeDS/include/CGAL/HalfedgeDS_const_decorator.h
+++ b/HalfedgeDS/include/CGAL/HalfedgeDS_const_decorator.h
@@ -133,8 +133,8 @@ normalized_border_is_valid( bool verb) const {
Halfedge_const_iterator e = hds->halfedges_begin();
size_type count = 0;
- while( e != hds->halfedges_end() && ! e->is_border() && !
- e->opposite()->is_border()) {
+ while( e != hds->halfedges_end() && ! e->is_border() &&
+ ! e->opposite()->is_border()) {
++e;
++e;
++count;
diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h
index f13214b9bf92..871a27e91799 100644
--- a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h
+++ b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h
@@ -604,7 +604,7 @@ class HalfedgeDS_vector
// This guard is needed here because, rr==ll==begin, might be true
// at this point, causing the decrement to result in undefined
- // behaviour.
+ // behavior.
// [Fernando Cacciola]
if ( ll < rr )
{
diff --git a/Hash_map/include/CGAL/Hash_map/internal/chained_map.h b/Hash_map/include/CGAL/Hash_map/internal/chained_map.h
index bea9b0993f00..785443e2beea 100644
--- a/Hash_map/include/CGAL/Hash_map/internal/chained_map.h
+++ b/Hash_map/include/CGAL/Hash_map/internal/chained_map.h
@@ -17,6 +17,7 @@
#define CGAL_HASH_MAP_INTERNAL_CHAINED_MAP_H
#include
+#include
#include
#include
#include
@@ -44,7 +45,7 @@ class chained_map
chained_map_elem* table;
chained_map_elem* table_end;
- chained_map_elem* free;
+ chained_map_elem* freelist;
std::size_t table_size;
std::size_t table_size_1;
@@ -143,10 +144,10 @@ void chained_map::init_table(std::size_t n)
std::allocator_traits::construct(alloc,table + i);
}
- free = table + t;
+ freelist = table + t;
table_end = table + t + t/2;
- for (Item p = table; p < free; ++p)
+ for (Item p = table; p < freelist; ++p)
{ p->succ = nullptr;
p->k = nullkey;
}
@@ -160,10 +161,10 @@ inline void chained_map::insert(std::size_t x, T y)
q->k = x;
q->i = y;
} else {
- free->k = x;
- free->i = y;
- free->succ = q->succ;
- q->succ = free++;
+ freelist->k = x;
+ freelist->i = y;
+ freelist->succ = q->succ;
+ q->succ = freelist++;
}
}
@@ -213,7 +214,7 @@ T& chained_map::access(Item p, std::size_t x)
// index x not present, insert it
- if (free == table_end) // table full: rehash
+ if (freelist == table_end) // table full: rehash
{ rehash();
p = HASH(x);
}
@@ -224,7 +225,7 @@ T& chained_map::access(Item p, std::size_t x)
return p->i;
}
- q = free++;
+ q = freelist++;
q->k = x;
init_inf(q->i); // initializes q->i to xdef
q->succ = p->succ;
@@ -245,7 +246,7 @@ chained_map::chained_map(const chained_map& D)
{
init_table(D.table_size);
- for(Item p = D.table; p < D.free; ++p)
+ for(Item p = D.table; p < D.freelist; ++p)
{ if (p->k != nullkey || p >= D.table + D.table_size)
{ insert(p->k,p->i);
//D.copy_inf(p->i); // see chapter Implementation
@@ -257,7 +258,7 @@ chained_map::chained_map(chained_map&& D)
noexcept(std::is_nothrow_move_constructible_v && std::is_nothrow_move_constructible_v)
: table(std::exchange(D.table, nullptr))
, table_end(std::exchange(D.table_end, nullptr))
- , free(std::exchange(D.free, nullptr))
+ , freelist(std::exchange(D.freelist, nullptr))
, table_size(std::exchange(D.table_size, 0))
, table_size_1(std::exchange(D.table_size_1, 0))
, alloc(std::move(D.alloc))
@@ -272,7 +273,7 @@ chained_map& chained_map::operator=(const chained_ma
init_table(D.table_size);
- for(Item p = D.table; p < D.free; ++p)
+ for(Item p = D.table; p < D.freelist; ++p)
{ if (p->k != nullkey || p >= D.table + D.table_size)
{ insert(p->k,p->i);
//copy_inf(p->i); // see chapter Implementation
@@ -289,7 +290,7 @@ chained_map& chained_map::operator=(chained_map::statistics() const
std::size_t n = 0;
for (Item p = table; p < table + table_size; ++p)
if (p ->k != nullkey) ++n;
- std::size_t used_in_overflow = free - (table + table_size );
+ std::size_t used_in_overflow = freelist - (table + table_size );
n += used_in_overflow;
std::cout << "number of entries: " << n << "\n";
std::cout << "fraction of entries in first position: " <<
diff --git a/Hash_map/package_info/Hash_map/dependencies b/Hash_map/package_info/Hash_map/dependencies
index 25b30f26b795..b611de33d8e7 100644
--- a/Hash_map/package_info/Hash_map/dependencies
+++ b/Hash_map/package_info/Hash_map/dependencies
@@ -1,3 +1,5 @@
Hash_map
Installation
+Kernel_23
+Profiling_tools
STL_Extension
diff --git a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt
index 5eeb1961f16a..250921f012f7 100644
--- a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt
+++ b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt
@@ -18,10 +18,10 @@ endif()
include_directories(BEFORE include)
create_single_source_cgal_program("heat_method.cpp")
-target_link_libraries(heat_method PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program("heat_method_polyhedron.cpp")
-target_link_libraries(heat_method_polyhedron PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_polyhedron PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program("heat_method_surface_mesh.cpp")
-target_link_libraries(heat_method_surface_mesh PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_surface_mesh PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program("heat_method_surface_mesh_direct.cpp")
-target_link_libraries(heat_method_surface_mesh_direct PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_surface_mesh_direct PRIVATE CGAL::Eigen3_support)
diff --git a/Heat_method_3/include/CGAL/Heat_method_3/internal/Intrinsic_Delaunay_triangulation_3.h b/Heat_method_3/include/CGAL/Heat_method_3/internal/Intrinsic_Delaunay_triangulation_3.h
index 65d78512514d..77a399704ec1 100644
--- a/Heat_method_3/include/CGAL/Heat_method_3/internal/Intrinsic_Delaunay_triangulation_3.h
+++ b/Heat_method_3/include/CGAL/Heat_method_3/internal/Intrinsic_Delaunay_triangulation_3.h
@@ -25,7 +25,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/Heat_method_3/test/Heat_method_3/CMakeLists.txt b/Heat_method_3/test/Heat_method_3/CMakeLists.txt
index 314f023165cd..056f15040a38 100644
--- a/Heat_method_3/test/Heat_method_3/CMakeLists.txt
+++ b/Heat_method_3/test/Heat_method_3/CMakeLists.txt
@@ -18,10 +18,10 @@ endif()
include_directories(BEFORE include)
create_single_source_cgal_program("heat_method_concept.cpp")
-target_link_libraries(heat_method_concept PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_concept PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program("heat_method_surface_mesh_test.cpp")
-target_link_libraries(heat_method_surface_mesh_test PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_surface_mesh_test PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program("heat_method_surface_mesh_direct_test.cpp")
-target_link_libraries(heat_method_surface_mesh_direct_test PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_surface_mesh_direct_test PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program("heat_method_surface_mesh_intrinsic_test.cpp")
-target_link_libraries(heat_method_surface_mesh_intrinsic_test PUBLIC CGAL::Eigen3_support)
+target_link_libraries(heat_method_surface_mesh_intrinsic_test PRIVATE CGAL::Eigen3_support)
diff --git a/Installation/.reuse/dep5 b/Installation/.reuse/dep5
deleted file mode 100644
index ef2e017a3975..000000000000
--- a/Installation/.reuse/dep5
+++ /dev/null
@@ -1,12 +0,0 @@
-Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: CGAL
-Upstream-Contact: CGAL Editorial Board
-Source: https://github.com/CGAL/cgal
-
-Files: *.cmake *.md doc/* doc_html/* scripts/* developer_scripts/* package_info/* demo/* examples/* src/* test/* benchmarks/* benchmark/* data/* cmake/*
-Copyright: 1995-2023 The CGAL Project
-License: CC0-1.0
-
-Files: include/CGAL/Qt/ImageInterface.ui include/CGAL/Qt/resources/qglviewer-icon.xpm AUTHORS CMakeLists.txt README auxiliary/cgal_create_cmake_script.1 auxiliary/gmp/README include/CGAL/license/gpl_package_list.txt auxiliary/cgal_app.icns copyright VERSION
-Copyright: 1995-2023 The CGAL Project
-License: CC0-1.0
diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md
index a8ddd38c1a1c..f1b4b336cc32 100644
--- a/Installation/CHANGES.md
+++ b/Installation/CHANGES.md
@@ -1,8 +1,13 @@
# Release History
+## [Release 6.0.1](https://github.com/CGAL/cgal/releases/tag/v6.0.1)
+
+### [Poisson Surface Reconstruction](https://doc.cgal.org/6.0.1/Manual/packages.html#PkgPoissonSurfaceReconstruction3)
+- Made the implicit function thread-safe so that the parallel version of `make_mesh_3()` can be used.
+
## [Release 6.0](https://github.com/CGAL/cgal/releases/tag/v6.0)
-Release date: June 2024
+Release date: September 2024
### General Changes
@@ -13,6 +18,8 @@ Release date: June 2024
- LLVM Clang version 15.0.7 or later (on Linux)
- Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on macOS)
- The minimal supported version of Boost is now 1.72.0.
+- GMP/MPFR are no longer mandatory to use CGAL, [Boost.Multiprecision](https://www.boost.org/doc/libs/1_72_0/libs/multiprecision/doc/html/index.html).
+ can be used instead.
- The CGAL `Core` library is no longer based on GMP, but on
[Boost.Multiprecision](https://www.boost.org/doc/libs/1_72_0/libs/multiprecision/doc/html/index.html).
Either GMP backend or Boost backend can be used.
@@ -144,10 +151,6 @@ Release date: June 2024
to the [`GenericMap`](https://doc.cgal.org/6.0/Combinatorial_map/classGenericMap.html)
concept, which enables users to insert an edge between two different faces in order to create faces with holes.
-- Added new meshing criterion `edge_distance`, an upper bound for the distance from the edge to the 1D feature.
-- **Breaking change**: the concept `MeshEdgeCriteria_3` was modified to include the new meshing criterion `edge_distance`.
-
-
### [Quadtrees, Octrees, and Orthtrees](https://doc.cgal.org/6.0/Manual/packages.html#PkgOrthtree)
- **Breaking change**:
@@ -225,6 +228,9 @@ Release date: June 2024
as well as the class `Triangle_accessor`. These were no longer used for several releases.
- **Breaking change**: Removed the class templates `CGAL::Gray_image_mesh_domain_3`, `CGAL::Implicit_mesh_domain_3`,
and `CGAL::Labeled_image_mesh_domain_3`, which were deprecated since CGAL-4.13.
+- Added new meshing criterion `edge_distance`, an upper bound for the distance from the edge to the 1D feature.
+- **Breaking change**: the concept `MeshEdgeCriteria_3` was modified to include the new meshing criterion `edge_distance`.
+
### [3D Surface Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesher3)
@@ -1914,7 +1920,7 @@ Release date: April 2018
after the observer is notified that the edge has been removed. This is
symmetric (opposite) to the order of notification when an edge is inserted.
- The user can restore old (non-symmetric) behaviour by defining the macro:
+ The user can restore old (non-symmetric) behavior by defining the macro:
`CGAL_NON_SYMETRICAL_OBSERVER_EDGE_REMOVAL_BACKWARD_COMPATIBILITY`
@@ -3455,7 +3461,7 @@ Release date: October 2013
vertices which would move of very small displacements.
- Introduce new data structures and options for speed-up and
compacity. Note that `Compact_mesh_cell_base_3` and
- `Mesh_vertex_base_3` are now our favoured implementations of the
+ `Mesh_vertex_base_3` are now our favored implementations of the
concepts MeshCellBase\_3 and MeshVertexBase\_3.
- Introduce a new constructor for `Polyhedral_mesh_domain_3` that
takes a bounding polyhedron to be meshed along with a polyhedral
@@ -4566,9 +4572,9 @@ fixes for this release.
- The new macro CGAL\_NO\_DEPRECATED\_CODE can be defined to disable
deprecated code, helping users discover if they rely on code that
may be removed in subsequent releases.
-- Assertion behaviour: It is not possible anymore to set the CONTINUE
+- Assertion behavior: It is not possible anymore to set the CONTINUE
mode for assertion failures. Functions that allow to change the
- assertion behaviour are now declared in
+ assertion behavior are now declared in
``.
- Qt3 based demos are still there but the documentation has been
removed as the CGAL::Qt\_Widget will be deprecated.
@@ -5117,7 +5123,7 @@ static runtime (/ML).
- 2D Placement of Streamlines (new package)
Visualizing vector fields is important for many application domains.
A good way to do it is to generate streamlines that describe the
- flow behaviour. This package implements the "Farthest Point Seeding"
+ flow behavior. This package implements the "Farthest Point Seeding"
algorithm for placing streamlines in 2D vector fields. It generates
a list of streamlines corresponding to an input flow using a
specified separating distance. The algorithm uses a Delaunay
@@ -5139,7 +5145,7 @@ static runtime (/ML).
structures. The package supports exact or inexact operations on
primitives which move along polynomial trajectories.
- Smallest Enclosing Ellipsoid (new package)
- This algorithm is new in the chapter Geometric Optimisation.
+ This algorithm is new in the chapter Geometric Optimization.
- 2D Arrangement (major revision)
This package can be used to construct, maintain, alter, and display
arrangements in the plane. Once an arrangement is constructed, the
@@ -5154,9 +5160,9 @@ static runtime (/ML).
construction history of the arrangement, such that it is possible to
obtain the originating curve of an arrangement subcurve.
-- Geometric Optimisation (major revision)
+- Geometric Optimization (major revision)
The underlying QP solver which is the foundation for several
- algorithms in the Geometric Optimisation chapter has been completely
+ algorithms in the Geometric Optimization chapter has been completely
rewritten.
- 3D Triangulation (new functionality)
Regular\_triangulation\_3 now offers vertex removal.
@@ -5482,7 +5488,7 @@ The following functionality has been added or changed:
Face\_handle or Vertex\_handle.
- New classes Triangulation\_vertex\_base\_with\_info\_2 (and 3)
and Triangulation\_face\_base\_with\_info\_2 (and 3) to make
- easier the customisation of base classes in most cases.
+ easier the customization of base classes in most cases.
- 2D Triangulation
- Regular triangulation provides an easy access to hidden points.
- The Triangulation\_hierarchy\_2, which provide an efficient
@@ -5984,7 +5990,7 @@ kernels themselves can be used as traits classes in many instances.
- The traits class requirements have been changed.
- The simplicity test has a completely new implementation.
- Properties like convexity, simplicity and area can now be cached
- by polygons. You need to set a flag to select this behaviour.
+ by polygons. You need to set a flag to select this behavior.
@@ -6157,7 +6163,7 @@ The following functionality has been added:
stored within a class, debugging is easier using this kernel. This
kernel can also be faster in some cases than the reference-counted
Cartesian kernel.
-- New optimisation algorithms
+- New optimization algorithms
- Min\_annulus\_d - Algorithm for computing the smallest enclosing
annulus of points in arbitrary dimension
- Polytope\_distance\_d - Algorithm for computing the (squared)
@@ -6214,7 +6220,7 @@ The following functionality has been added:
triangulations.
- Triangulations in 3D were added, both Delaunay triangulations and
regular triangulations.
-- Min\_quadrilateral optimisations have been added. These are
+- Min\_quadrilateral optimizations have been added. These are
algorithms to compute the minimum enclosing rectangle/parallelogram
(arbitrary orientation) and the minimum enclosing strip of a convex
point set.
diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt
index c5df6f680c64..6e6104b6f0c5 100644
--- a/Installation/CMakeLists.txt
+++ b/Installation/CMakeLists.txt
@@ -361,13 +361,17 @@ include(${CGAL_MODULES_DIR}/CGAL_enable_end_of_configuration_hook.cmake)
cgal_setup_module_path()
if(RUNNING_CGAL_AUTO_TEST OR CGAL_TEST_SUITE)
- message(STATUS "Operating system:")
- execute_process(
- COMMAND uname -a
- TIMEOUT 5
- OUTPUT_VARIABLE uname_a
- ERROR_VARIABLE uname_a)
- message(STATUS "${uname_a}")
+ find_program(LSB_RELEASE_EXEC lsb_release)
+ if(LSB_RELEASE_EXEC)
+ execute_process(
+ COMMAND ${LSB_RELEASE_EXEC} -ds
+ OUTPUT_VARIABLE LSB_RELEASE_ID_SHORT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ message(STATUS "Operating system: ${LSB_RELEASE_ID_SHORT} ${CMAKE_SYSTEM_PROCESSOR}")
+ else()
+ message(STATUS "Operating system: ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}")
+ endif()
cgal_display_compiler_version()
endif()
@@ -480,8 +484,11 @@ if(CMAKE_COMPILER_IS_GNUCXX)
endif()
-message("== Generate version files (DONE) ==\n")
+if(CGAL_TEST_SUITE)
+ include(display-third-party-libs-versions)
+endif()
+message("== Generate version files (DONE) ==\n")
#--------------------------------------------------------------------------------------------------
#
# -= External libraries =-
@@ -934,7 +941,7 @@ if(CGAL_BRANCH_BUILD)
find_package(Doxygen REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(Qt6 COMPONENTS Core Widgets OpenGL Gui REQUIRED)
- find_package(VTK COMPONENTS vtkImagingGeneral vtkIOImage NO_MODULE)
+ find_package(VTK COMPONENTS ImagingGeneral IOImage NO_MODULE)
if(VTK_FOUND)
get_target_property(VTK_INCLUDE_DIRS VTK::IOImage INTERFACE_INCLUDE_DIRECTORIES)
endif()
diff --git a/Installation/REUSE.toml b/Installation/REUSE.toml
new file mode 100644
index 000000000000..34a4baee4359
--- /dev/null
+++ b/Installation/REUSE.toml
@@ -0,0 +1,47 @@
+version = 1
+SPDX-PackageName = "CGAL"
+SPDX-PackageSupplier = "CGAL Editorial Board "
+SPDX-PackageDownloadLocation = "https://github.com/CGAL/cgal"
+
+[[annotations]]
+path = [
+ "**.cmake",
+ "**.md",
+ "doc/**",
+ "doc_html/**",
+ "scripts/**",
+ "developer_scripts/**",
+ "package_info/**",
+ "demo/**",
+ "examples/**",
+ "src/**",
+ "test/**",
+ "benchmarks/**",
+ "benchmark/**",
+ "data/**",
+ "cmake/**",
+ "**/*.natvis",
+]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "1995-2024 The CGAL Project"
+SPDX-License-Identifier = "CC0-1.0"
+
+[[annotations]]
+path = [
+ "REUSE.toml",
+ "lib/cmake/CGAL/CGALConfig-installation-dirs.cmake.in",
+ "include/CGAL/Qt/ImageInterface.ui",
+ "include/CGAL/Qt/resources/qglviewer-icon.xpm",
+ "AUTHORS",
+ "CMakeLists.txt",
+ "README",
+ "auxiliary/cgal_create_cmake_script.1",
+ "auxiliary/gmp/README",
+ "include/CGAL/license/gpl_package_list.txt",
+ "auxiliary/cgal_app.icns",
+ "copyright",
+ "VERSION",
+]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "1995-2024 The CGAL Project"
+SPDX-License-Identifier = "CC0-1.0"
diff --git a/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake b/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake
index c51173216b3f..d6d992267bb5 100644
--- a/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake
+++ b/Installation/cmake/modules/CGAL_CreateSingleSourceCGALProgram.cmake
@@ -23,10 +23,6 @@ function(create_single_source_cgal_program firstfile )
if(EXISTS "${firstfile}")
- if(CXX_FEATURES AND NOT COMMAND target_compile_features)
- message(STATUS "NOTICE: ${exe_name}.cpp requires a CMake version >= 3.1 to detect C++ features, and will not be compiled.")
- return()
- endif()
if(CXX_FEATURES)
set(MISSING_CXX_FEATURES ${CXX_FEATURES})
if(CMAKE_CXX_COMPILE_FEATURES)
diff --git a/Installation/cmake/modules/CGAL_LASLIB_support.cmake b/Installation/cmake/modules/CGAL_LASLIB_support.cmake
index 7c65da9ebf04..e471c93f02b9 100644
--- a/Installation/cmake/modules/CGAL_LASLIB_support.cmake
+++ b/Installation/cmake/modules/CGAL_LASLIB_support.cmake
@@ -1,8 +1,19 @@
-if(LASLIB_FOUND AND NOT TARGET CGAL::LASLIB_support)
- add_library(CGAL::LASLIB_support INTERFACE IMPORTED)
- set_target_properties(CGAL::LASLIB_support PROPERTIES
- INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_LASLIB"
- INTERFACE_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}"
- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR};${LASZIP_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "${LASLIB_LIBRARIES}")
+if(LASLIB_FOUND)
+ if (NOT TARGET CGAL::LASLIB_support)
+ if (NOT TARGET LASlib)
+ # message(STATUS "Found using MODULE mode")
+ add_library(CGAL::LASLIB_support INTERFACE IMPORTED)
+ set_target_properties(CGAL::LASLIB_support PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_LASLIB"
+ INTERFACE_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR}"
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${LASLIB_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "${LASLIB_LIBRARIES}")
+ else()
+ # message(STATUS "Found using CONFIG mode")
+ add_library(CGAL::LASLIB_support INTERFACE IMPORTED)
+ set_target_properties(CGAL::LASLIB_support PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS "CGAL_LINKED_WITH_LASLIB")
+ target_link_libraries(CGAL::LASLIB_support INTERFACE LASlib)
+ endif()
+ endif()
endif()
diff --git a/Installation/cmake/modules/CGAL_Macros.cmake b/Installation/cmake/modules/CGAL_Macros.cmake
index 7ded524d97ca..596bc592a157 100644
--- a/Installation/cmake/modules/CGAL_Macros.cmake
+++ b/Installation/cmake/modules/CGAL_Macros.cmake
@@ -16,12 +16,10 @@ if( NOT CGAL_MACROS_FILE_INCLUDED )
macro( cache_set var )
set ( ${var} ${ARGN} CACHE INTERNAL "" )
- set ( ${var} ${ARGN} CACHE INTERNAL "" )
endmacro()
macro( typed_cache_set type doc var )
set ( ${var} ${ARGN} CACHE ${type} ${doc} FORCE )
- set ( ${var} ${ARGN} CACHE ${type} ${doc} FORCE )
endmacro()
macro( cache_get var )
diff --git a/Installation/cmake/modules/CGAL_OpenMesh_support.cmake b/Installation/cmake/modules/CGAL_OpenMesh_support.cmake
new file mode 100644
index 000000000000..97df95c8115b
--- /dev/null
+++ b/Installation/cmake/modules/CGAL_OpenMesh_support.cmake
@@ -0,0 +1,17 @@
+
+if(OpenMesh_FOUND AND NOT TARGET CGAL::OpenMesh_support)
+
+ add_library(CGAL::OpenMesh_support INTERFACE IMPORTED)
+
+ if(TARGET OpenMeshCore)
+ target_link_libraries(CGAL::OpenMesh_support INTERFACE OpenMeshCore)
+ endif()
+
+ if(TARGET OpenMeshTools)
+ target_link_libraries(CGAL::OpenMesh_support INTERFACE OpenMeshTools)
+ endif()
+
+ target_compile_definitions(CGAL::OpenMesh_support
+ INTERFACE "CGAL_USE_OPENMESH;NOMINMAX;_USE_MATH_DEFINES")
+
+endif()
diff --git a/Installation/cmake/modules/CGAL_SetupCGAL_CoreDependencies.cmake b/Installation/cmake/modules/CGAL_SetupCGAL_CoreDependencies.cmake
index 816ae656fb43..94d2d839375a 100644
--- a/Installation/cmake/modules/CGAL_SetupCGAL_CoreDependencies.cmake
+++ b/Installation/cmake/modules/CGAL_SetupCGAL_CoreDependencies.cmake
@@ -49,7 +49,7 @@ set_property(GLOBAL PROPERTY CGAL_Core_FOUND TRUE)
function(CGAL_setup_CGAL_Core_dependencies target)
find_package( Boost 1.72 REQUIRED )
- if (!CGAL_DISABLE_GMP AND GMP_FOUND)
+ if (NOT CGAL_DISABLE_GMP AND GMP_FOUND)
use_CGAL_GMP_support(CGAL_Core INTERFACE)
endif()
target_compile_definitions(${target} INTERFACE CGAL_USE_CORE=1)
diff --git a/Installation/cmake/modules/CGAL_SetupCGAL_Qt6Dependencies.cmake b/Installation/cmake/modules/CGAL_SetupCGAL_Qt6Dependencies.cmake
index e8bc2f8c788e..fa87506ddcb4 100644
--- a/Installation/cmake/modules/CGAL_SetupCGAL_Qt6Dependencies.cmake
+++ b/Installation/cmake/modules/CGAL_SetupCGAL_Qt6Dependencies.cmake
@@ -76,9 +76,9 @@ if(NOT CGAL_Qt6_MISSING_DEPS)
POSITION_INDEPENDENT_CODE TRUE
EXCLUDE_FROM_ALL TRUE
AUTOMOC TRUE)
- target_link_libraries(CGAL_Qt6_moc_and_resources PUBLIC CGAL::CGAL Qt6::Widgets Qt6::OpenGLWidgets)
+ target_link_libraries(CGAL_Qt6_moc_and_resources PRIVATE CGAL::CGAL Qt6::Widgets Qt6::OpenGLWidgets)
if(Qt6Svg_FOUND)
- target_link_libraries(CGAL_Qt6_moc_and_resources PUBLIC Qt6::Svg)
+ target_link_libraries(CGAL_Qt6_moc_and_resources PRIVATE Qt6::Svg)
endif()
add_library(CGAL::CGAL_Qt6_moc_and_resources ALIAS CGAL_Qt6_moc_and_resources)
add_library(CGAL::Qt6_moc_and_resources ALIAS CGAL_Qt6_moc_and_resources)
diff --git a/Installation/cmake/modules/FindCORE.cmake b/Installation/cmake/modules/FindCORE.cmake
index 6effa1d5e520..adb2ad05f15f 100644
--- a/Installation/cmake/modules/FindCORE.cmake
+++ b/Installation/cmake/modules/FindCORE.cmake
@@ -3,8 +3,6 @@
# CORE_INCLUDE_DIR - the CORE include directory
# CORE_LIBRARIES - Libraries needed to use CORE
-# TODO: support Windows and MacOSX
-
# CORE needs GMP
include(FindPackageHandleStandardArgs)
@@ -17,7 +15,7 @@ if(GMP_FOUND)
find_path(CORE_INCLUDE_DIR NAMES CORE.h DOC "The directory containing the CORE include files")
find_library(CORE_LIBRARIES NAMES core++ DOC "Path to the core++ library")
-
+
get_filename_component(CORE_LIBRARIES_DIR ${CORE_LIBRARIES} PATH)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CORE "DEFAULT_MSG" CORE_LIBRARIES CORE_INCLUDE_DIR )
diff --git a/Installation/cmake/modules/FindGMP.cmake b/Installation/cmake/modules/FindGMP.cmake
index f452c0287f7e..38108f3420a1 100644
--- a/Installation/cmake/modules/FindGMP.cmake
+++ b/Installation/cmake/modules/FindGMP.cmake
@@ -5,8 +5,6 @@
# GMP_LIBRARIES_DIR - directory where the GMP libraries are located
# GMP_LIBRARIES - Link these to use GMP
-# TODO: support MacOSX
-
include(FindPackageHandleStandardArgs)
include(${CMAKE_CURRENT_LIST_DIR}/CGAL_GeneratorSpecificSettings.cmake)
diff --git a/Installation/cmake/modules/FindGMPXX.cmake b/Installation/cmake/modules/FindGMPXX.cmake
index 277e4b19ef19..ce05fd703462 100644
--- a/Installation/cmake/modules/FindGMPXX.cmake
+++ b/Installation/cmake/modules/FindGMPXX.cmake
@@ -4,8 +4,6 @@
# GMPXX_INCLUDE_DIR - the GMPXX include directory
# GMPXX_LIBRARIES - Libraries needed to use GMPXX
-# TODO: support Windows and MacOSX
-
# GMPXX needs GMP
find_package( GMP QUIET )
diff --git a/Installation/cmake/modules/FindLASLIB.cmake b/Installation/cmake/modules/FindLASLIB.cmake
index 2353480c2452..89a8d7fc6930 100644
--- a/Installation/cmake/modules/FindLASLIB.cmake
+++ b/Installation/cmake/modules/FindLASLIB.cmake
@@ -9,14 +9,16 @@
# first look in user defined locations
find_path(LASLIB_INCLUDE_DIR
NAMES lasreader.hpp
- PATHS /usr/local/include/LASlib/
+ PATHS /usr/local/include/LASlib/
ENV LASLIB_INC_DIR
)
-
+
find_path(LASZIP_INCLUDE_DIR
NAMES mydefs.hpp
PATHS /usr/local/include/LASzip/
${LASLIB_INCLUDE_DIR}/../../LASzip/src
+ ${LASLIB_INCLUDE_DIR}/../LASzip
+ ${LASLIB_INCLUDE_DIR}
)
find_library(LASLIB_LIBRARIES
@@ -24,12 +26,27 @@ find_library(LASLIB_LIBRARIES
PATHS ENV LD_LIBRARY_PATH
ENV LIBRARY_PATH
/usr/local/lib
+ /usr/local/lib/LASlib
${LASLIB_INCLUDE_DIR}/../../lib
ENV LASLIB_LIB_DIR
)
+if (NOT LASLIB_LIBRARIES)
+ #library was renamed in recent versions of LAStools
+ find_library(LASLIB_LIBRARIES
+ NAMES LASlib
+ PATHS ENV LD_LIBRARY_PATH
+ ENV LIBRARY_PATH
+ /usr/local/lib
+ /usr/local/lib/LASlib
+ ${LASLIB_INCLUDE_DIR}/../../lib
+ ENV LASLIB_LIB_DIR
+ )
+endif()
-if(LASLIB_LIBRARIES AND LASLIB_INCLUDE_DIR)
+if(LASLIB_LIBRARIES AND LASLIB_INCLUDE_DIR AND LASZIP_INCLUDE_DIR)
+ if (NOT ${LASLIB_INCLUDE_DIR} STREQUAL ${LASZIP_INCLUDE_DIR})
+ list(APPEND LASLIB_INCLUDE_DIR ${LASZIP_INCLUDE_DIR})
+ endif()
set(LASLIB_FOUND TRUE)
set(LASLIB_USE_FILE "UseLASLIB")
endif()
-
diff --git a/Installation/cmake/modules/FindMPFR.cmake b/Installation/cmake/modules/FindMPFR.cmake
index 4d1bc43553d8..b0507120ce05 100644
--- a/Installation/cmake/modules/FindMPFR.cmake
+++ b/Installation/cmake/modules/FindMPFR.cmake
@@ -4,8 +4,6 @@
# MPFR_LIBRARIES_DIR - Directory where the MPFR libraries are located
# MPFR_LIBRARIES - the MPFR libraries
-# TODO: support MacOSX
-
include(FindPackageHandleStandardArgs)
include(${CMAKE_CURRENT_LIST_DIR}/CGAL_GeneratorSpecificSettings.cmake)
diff --git a/Installation/cmake/modules/FindOpenMesh.cmake b/Installation/cmake/modules/FindOpenMesh.cmake
deleted file mode 100644
index 86b6eaebc9e1..000000000000
--- a/Installation/cmake/modules/FindOpenMesh.cmake
+++ /dev/null
@@ -1,79 +0,0 @@
-#This modules tries to find OpenMesh
-# Once done this will define
-#
-# OpenMesh_FOUND - system has OpenMesh
-# OPENMESH_INCLUDE_DIR - OpenMesh include directory
-# OPENMESH_LIBRARIES - OpenMesh libraries
-#
-
-find_package(OpenMesh NO_MODULE QUIET)
-
-# Is it already configured?
-if (NOT OpenMesh_FOUND)
-
- find_path(OPENMESH_INCLUDE_DIR
- NAMES OpenMesh/Core/Mesh/ArrayKernel.hh
- HINTS ENV OPENMESH_INC_DIR
- ENV OPENMESH_DIR
- /usr/include
- /usr/local/include
- PATH_SUFFIXES src
- DOC "The directory containing the OpenMesh header files WITHOUT the OpenMesh prefix"
- )
-
- find_library(OPENMESH_LIBRARY_RELEASE NAMES "OpenMeshCore"
- HINTS ENV OPENMESH_LIB_DIR
- ENV OPENMESH_DIR
- PATH_SUFFIXES lib
- DOC "Path to the OpenMeshCore library"
- )
-
- find_library(OPENMESH_LIBRARY_DEBUG NAMES "OpenMeshCored"
- HINTS ENV OPENMESH_LIB_DIR
- ENV OPENMESH_DIR
- PATH_SUFFIXES lib
- DOC "Path to the OpenMeshCored library"
- )
-
- if(OPENMESH_LIBRARY_RELEASE)
- if(OPENMESH_LIBRARY_DEBUG)
- set(OPENMESH_LIBRARIES optimized ${OPENMESH_LIBRARY_RELEASE} debug ${OPENMESH_LIBRARY_DEBUG})
- else()
- set(OPENMESH_LIBRARIES ${OPENMESH_LIBRARY_RELEASE})
- endif()
- endif()
-endif()
-
-include( FindPackageHandleStandardArgs )
-
-find_package_handle_standard_args(OpenMesh
- REQUIRED_VARS OPENMESH_INCLUDE_DIR OPENMESH_LIBRARIES
- FOUND_VAR OpenMesh_FOUND
- )
-
-if(OpenMesh_FOUND AND NOT TARGET OpenMesh::OpenMesh)
- add_library(OpenMesh::OpenMesh UNKNOWN IMPORTED)
-
- if(TARGET OpenMeshCore)
- target_link_libraries(OpenMesh::OpenMesh INTERFACE OpenMeshCore)
- return()
- endif()
-
- set_target_properties(OpenMesh::OpenMesh PROPERTIES
- INTERFACE_COMPILE_DEFINITIONS "CGAL_USE_OPENMESH;NOMINMAX;_USE_MATH_DEFINES"
- INTERFACE_INCLUDE_DIRECTORIES "${OPENMESH_INCLUDE_DIR}")
-
- if(OPENMESH_LIBRARY_RELEASE)
- set_property(TARGET OpenMesh::OpenMesh APPEND PROPERTY
- IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(OpenMesh::OpenMesh PROPERTIES
- IMPORTED_LOCATION_RELEASE "${OPENMESH_LIBRARY_RELEASE}")
- endif()
-
- if(OPENMESH_LIBRARY_DEBUG)
- set_property(TARGET OpenMesh::OpenMesh APPEND PROPERTY
- IMPORTED_CONFIGURATIONS DEBUG)
- set_target_properties(OpenMesh::OpenMesh PROPERTIES
- IMPORTED_LOCATION_DEBUG "${OPENMESH_LIBRARY_DEBUG}")
- endif()
-endif()
diff --git a/Installation/cmake/modules/UseLASLIB.cmake b/Installation/cmake/modules/UseLASLIB.cmake
index 1af7a023ceb0..f1ffb0bd9065 100644
--- a/Installation/cmake/modules/UseLASLIB.cmake
+++ b/Installation/cmake/modules/UseLASLIB.cmake
@@ -3,4 +3,4 @@
add_definitions(-DCGAL_LINKED_WITH_LASLIB)
-message(DEPRECATION "This file UseLASLIB.cmake is deprecated, and the imported target `CGAL::TBB_support` from CGAL_LASLIB_support.cmake should be used instead.")
+message(DEPRECATION "This file UseLASLIB.cmake is deprecated, and the imported target `CGAL::LASLIB_support` from CGAL_LASLIB_support.cmake should be used instead.")
diff --git a/Installation/cmake/modules/UseOpenMesh.cmake b/Installation/cmake/modules/UseOpenMesh.cmake
deleted file mode 100644
index 23449d7cdf99..000000000000
--- a/Installation/cmake/modules/UseOpenMesh.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-# This module setups the compiler for using the OpenMesh library.
-# It assumes that find_package(OpenMesh) was already called.
-
-include_directories ( ${OPENMESH_INCLUDE_DIR} )
-add_definitions( -DNOMINMAX -D_USE_MATH_DEFINES )
diff --git a/Installation/cmake/modules/display-third-party-libs-versions.cmake b/Installation/cmake/modules/display-third-party-libs-versions.cmake
new file mode 100644
index 000000000000..96ef4e149929
--- /dev/null
+++ b/Installation/cmake/modules/display-third-party-libs-versions.cmake
@@ -0,0 +1,106 @@
+set(LIBRARIES_TO_CHECK
+ Eigen3 Qt6 TBB OpenMesh Boost
+ GMP Threads SuiteSparse MPFI METIS
+ VTK SCIP OSQP LASLIB GLPK
+ ITT Ceres MPFR libpointmatcher ITK
+ OpenGR OpenCV ZLIB
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/CGAL_TweakFindBoost.cmake)
+
+function(get_library_version header_path major_macro minor_macro patchlevel_macro version_var)
+ if(EXISTS ${header_path})
+ file(READ ${header_path} HEADER_CONTENT)
+ if("${HEADER_CONTENT}" MATCHES "#define[ \t]+${major_macro}[ \t]+([0-9]+)")
+ set(VERSION_MAJOR ${CMAKE_MATCH_1})
+ endif()
+ if("${HEADER_CONTENT}" MATCHES "#define[ \t]+${minor_macro}[ \t]+([0-9]+)")
+ set(VERSION_MINOR ${CMAKE_MATCH_1})
+ endif()
+ if("${HEADER_CONTENT}" MATCHES "#define[ \t]+${patchlevel_macro}[ \t]+([0-9]+)")
+ set(VERSION_PATCHLEVEL ${CMAKE_MATCH_1})
+ else()
+ set(VERSION_PATCHLEVEL "")
+ endif()
+ if(VERSION_PATCHLEVEL)
+ set(${version_var} "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCHLEVEL}" PARENT_SCOPE)
+ elseif(VERSION_MAJOR GREATER_EQUAL 0 OR VERSION_MINOR GREATER_EQUAL 0)
+ set(${version_var} "${VERSION_MAJOR}.${VERSION_MINOR}" PARENT_SCOPE)
+ endif()
+ endif()
+endfunction()
+
+function(check_library cgal_3rdparty_lib)
+ set(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
+ set(CMAKE_FIND_PACKAGE_QUIET TRUE)
+ string(TOUPPER ${cgal_3rdparty_lib} cgal_3rdparty_lib_upper)
+ find_package(${cgal_3rdparty_lib} QUIET)
+ set(CMAKE_FIND_PACKAGE_QUIET FALSE)
+ if(${cgal_3rdparty_lib}_FOUND)
+ set(version_var "")
+ if(DEFINED ${cgal_3rdparty_lib}_VERSION)
+ set(version_var ${${cgal_3rdparty_lib}_VERSION})
+ elseif(DEFINED ${cgal_3rdparty_lib}_VERSION_STRING)
+ set(version_var ${${cgal_3rdparty_lib}_VERSION_STRING})
+ elseif(DEFINED ${cgal_3rdparty_lib_upper}_VERSION)
+ set(version_var ${${cgal_3rdparty_lib_upper}_VERSION})
+ elseif(DEFINED ${cgal_3rdparty_lib_upper}_VERSION_STRING)
+ set(version_var ${${cgal_3rdparty_lib_upper}_VERSION_STRING})
+ elseif(${cgal_3rdparty_lib} STREQUAL "GMP")
+ set(version_var "")
+ get_library_version("${GMP_INCLUDE_DIR}/gmp.h" "__GNU_MP_VERSION" "__GNU_MP_VERSION_MINOR" "__GNU_MP_VERSION_PATCHLEVEL" version_var)
+ if(NOT version_var)
+ file(READ "${GMP_INCLUDE_DIR}/gmp.h" GMP_HEADER_CONTENT)
+ string(REGEX MATCHALL "#include[ \t]+\"([^\"]+)\"" INCLUDED_HEADERS "${GMP_HEADER_CONTENT}")
+ foreach(INCLUDED_HEADER ${INCLUDED_HEADERS})
+ string(REGEX REPLACE "#include[ \t]+\"([^\"]+)\"" "\\1" GMP_ARCH_HEADER "${INCLUDED_HEADER}")
+ set(GMP_ARCH_HEADER_PATH "${GMP_INCLUDE_DIR}/${GMP_ARCH_HEADER}")
+ if(EXISTS ${GMP_ARCH_HEADER_PATH})
+ get_library_version("${GMP_ARCH_HEADER_PATH}" "__GNU_MP_VERSION" "__GNU_MP_VERSION_MINOR" "__GNU_MP_VERSION_PATCHLEVEL" version_var)
+ if(version_var)
+ break()
+ endif()
+ endif()
+ endforeach()
+ endif()
+ elseif(${cgal_3rdparty_lib} STREQUAL "GLPK")
+ get_library_version("${GLPK_INCLUDE_DIR}/glpk.h" "GLP_MAJOR_VERSION" "GLP_MINOR_VERSION" "" version_var)
+ elseif(${cgal_3rdparty_lib} STREQUAL "MPFR")
+ get_library_version("${MPFR_INCLUDE_DIR}/mpfr.h" "MPFR_VERSION_MAJOR" "MPFR_VERSION_MINOR" "MPFR_VERSION_PATCHLEVEL" version_var)
+ elseif(${cgal_3rdparty_lib} STREQUAL "METIS")
+ get_library_version("${METIS_INCLUDE_DIR}/metis.h" "METIS_VER_MAJOR" "METIS_VER_MINOR" "METIS_VER_SUBMINOR" version_var)
+ elseif(${cgal_3rdparty_lib} STREQUAL "SuiteSparse")
+ get_library_version("${SuiteSparse_Config_INCLUDE_DIR}/SuiteSparse_config.h" "SUITESPARSE_MAIN_VERSION" "SUITESPARSE_SUB_VERSION" "SUITESPARSE_SUBSUB_VERSION" version_var)
+ elseif(${cgal_3rdparty_lib} STREQUAL "LASLIB")
+ get_library_version("${LASLIB_INCLUDE_DIR}/lasdefinitions.hpp" "LAS_TOOLS_VERSION" "" "" version_var)
+ elseif(${cgal_3rdparty_lib} STREQUAL "ITT")
+ get_library_version("${ITT_INCLUDE_DIR}/ittnotify.h" "ITT_MAJOR" "ITT_MINOR" "" version_var)
+ elseif(${cgal_3rdparty_lib} STREQUAL "OpenMesh")
+ if (TARGET OpenMeshCore)
+ get_target_property(OpenMesh_INCLUDE_DIRS OpenMeshCore INTERFACE_INCLUDE_DIRECTORIES)
+ set(CONFIG_FILE_PATH "${OpenMesh_INCLUDE_DIRS}/OpenMesh/Core/System/config.h")
+ if(EXISTS ${CONFIG_FILE_PATH})
+ file(READ ${CONFIG_FILE_PATH} CONFIG_CONTENT)
+ if("${CONFIG_CONTENT}" MATCHES "#define[ \t]+OM_VERSION[ \t]+(0x[0-9A-F]+)")
+ set(VERSION_HEX ${CMAKE_MATCH_1})
+ math(EXPR VERSION_MAJOR "(${VERSION_HEX} & 0xF0000) >> 16")
+ math(EXPR VERSION_MINOR "(${VERSION_HEX} & 0x0FF00) >> 8")
+ math(EXPR VERSION_PATCH "(${VERSION_HEX} & 0x000FF)")
+ set(version_var "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
+ endif()
+ endif()
+ endif()
+ endif()
+ if(version_var)
+ message(STATUS "Third-party library ${cgal_3rdparty_lib} ${version_var}")
+ else()
+ message(STATUS "Third-party library ${cgal_3rdparty_lib} found")
+ endif()
+ else()
+ message(STATUS "Third-party library ${cgal_3rdparty_lib} not found")
+ endif()
+endfunction()
+
+foreach(cgal_3rdparty_lib IN LISTS LIBRARIES_TO_CHECK)
+ check_library(${cgal_3rdparty_lib})
+endforeach()
diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h
index bd5dafbf0171..ff437a7f444f 100644
--- a/Installation/include/CGAL/config.h
+++ b/Installation/include/CGAL/config.h
@@ -37,6 +37,13 @@
#endif
#ifdef CGAL_INCLUDE_WINDOWS_DOT_H
+
+#if defined(_MSC_VER) && defined(_DEBUG)
+// Include support for memory leak detection
+// This is only available in debug mode and when _CRTDBG_MAP_ALLOC is defined.
+// It will include which will redefine `malloc` and `free`.
+# define _CRTDBG_MAP_ALLOC 1
+#endif
// Mimic users including this file which defines min max macros
// and other names leading to name clashes
#include
@@ -243,20 +250,6 @@
# define CGAL_SUNPRO_INITIALIZE(C)
#endif
-//----------------------------------------------------------------------//
-// MacOSX specific.
-//----------------------------------------------------------------------//
-
-#ifdef __APPLE__
-# if defined(__GNUG__) && (__GNUG__ == 4) && (__GNUC_MINOR__ == 0) \
- && defined(__OPTIMIZE__) && !defined(CGAL_NO_WARNING_FOR_MACOSX_GCC_4_0_BUG)
-# warning "Your configuration may exhibit run-time errors in CGAL code"
-# warning "This appears with g++ 4.0 on MacOSX when optimizing"
-# warning "You can disable this warning using -DCGAL_NO_WARNING_FOR_MACOSX_GCC_4_0_BUG"
-# warning "For more information, see https://www.cgal.org/FAQ.html#mac_optimization_bug"
-# endif
-#endif
-
//-------------------------------------------------------------------//
// When the global min and max are no longer defined (as macros)
// because of NOMINMAX flag definition, we define our own global
diff --git a/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h b/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h
index cf07529839b1..8f3640a725df 100644
--- a/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h
+++ b/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h
@@ -9,7 +9,7 @@
//
// Author(s) : Andreas Fabri
//
-// Warning: this file is generated, see include/CGAL/licence/README.md
+// Warning: this file is generated, see include/CGAL/license/README.md
// not entirely true due to the backward compatibility issue
#ifndef CGAL_LICENSE_POLYGON_MESH_PROCESSING_COMBINATORIAL_REPAIR_H
diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h
index 6840e2546e38..57c2faa11bc5 100644
--- a/Installation/include/CGAL/version.h
+++ b/Installation/include/CGAL/version.h
@@ -17,12 +17,12 @@
#define CGAL_VERSION_H
#ifndef SWIG
-#define CGAL_VERSION 6.0-beta2
+#define CGAL_VERSION 6.1-dev
#define CGAL_GIT_HASH abcdef
#endif
-#define CGAL_VERSION_NR 1060000920
+#define CGAL_VERSION_NR 1060100900
#define CGAL_SVN_REVISION 99999
-#define CGAL_RELEASE_DATE 20240701
+#define CGAL_RELEASE_DATE 20241130
#include
diff --git a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake
index df15f9e31080..d634917b94b8 100644
--- a/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake
+++ b/Installation/lib/cmake/CGAL/CGALConfigVersion.cmake
@@ -1,8 +1,8 @@
set(CGAL_MAJOR_VERSION 6)
-set(CGAL_MINOR_VERSION 0)
+set(CGAL_MINOR_VERSION 1)
set(CGAL_BUGFIX_VERSION 0)
include(${CMAKE_CURRENT_LIST_DIR}/CGALConfigBuildVersion.cmake)
-set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "6.0-beta2")
+set(CGAL_VERSION_PUBLIC_RELEASE_VERSION "6.1-dev")
set(CGAL_VERSION_PUBLIC_RELEASE_NAME "CGAL-${CGAL_VERSION_PUBLIC_RELEASE_VERSION}")
if (CGAL_BUGFIX_VERSION AND CGAL_BUGFIX_VERSION GREATER 0)
diff --git a/Installation/test/Installation/CMakeLists.txt b/Installation/test/Installation/CMakeLists.txt
index fa828e9e82b3..5fb67b8eae23 100644
--- a/Installation/test/Installation/CMakeLists.txt
+++ b/Installation/test/Installation/CMakeLists.txt
@@ -33,7 +33,7 @@ find_package(TBB QUIET)
include(CGAL_TBB_support)
create_single_source_cgal_program("test_TBB.cpp")
if(TARGET CGAL::TBB_support)
- target_link_libraries(test_TBB PUBLIC CGAL::TBB_support)
+ target_link_libraries(test_TBB PRIVATE CGAL::TBB_support)
endif()
create_link_to_program(CGAL)
diff --git a/Installation/test/Installation/test_configuration.cmake.in b/Installation/test/Installation/test_configuration.cmake.in
index 4f4a08bc8dd6..fa820a795a5c 100644
--- a/Installation/test/Installation/test_configuration.cmake.in
+++ b/Installation/test/Installation/test_configuration.cmake.in
@@ -11,4 +11,4 @@ if(NOT ${CGAL_DIR_PATH} STREQUAL ${CGAL_GIVEN_DIR_PATH})
message( FATAL_ERROR "The CGAL_DIR is wrong !")
endif()
add_executable(test_configuration @CMAKE_CURRENT_SOURCE_DIR@/test_configuration.cpp)
-target_link_libraries(test_configuration PUBLIC CGAL::CGAL)
+target_link_libraries(test_configuration PRIVATE CGAL::CGAL)
diff --git a/Installation/test/Installation/test_configuration_qt.cmake.in b/Installation/test/Installation/test_configuration_qt.cmake.in
index 0001202e61c6..5dda5a91bc2f 100644
--- a/Installation/test/Installation/test_configuration_qt.cmake.in
+++ b/Installation/test/Installation/test_configuration_qt.cmake.in
@@ -11,4 +11,4 @@ if(NOT ${CGAL_DIR_PATH} STREQUAL ${CGAL_GIVEN_DIR_PATH})
message( FATAL_ERROR "The CGAL_DIR is wrong !")
endif()
add_executable(test_configuration @CMAKE_CURRENT_SOURCE_DIR@/test_configuration_qt.cpp)
-target_link_libraries(test_configuration PUBLIC CGAL::CGAL CGAL::CGAL_Qt6)
+target_link_libraries(test_configuration PRIVATE CGAL::CGAL CGAL::CGAL_Qt6)
diff --git a/Intersections_2/test/Intersections_2/test_intersections_2.cpp b/Intersections_2/test/Intersections_2/test_intersections_2.cpp
index c86e91915394..8219881120dc 100644
--- a/Intersections_2/test/Intersections_2/test_intersections_2.cpp
+++ b/Intersections_2/test/Intersections_2/test_intersections_2.cpp
@@ -537,7 +537,7 @@ struct Test
// point intersection
check_intersection (S(p( 0, -1), p( 10, 0)), R(p( 2, 1), p( 8, -6)), P(3.42105, -0.657895));
check_intersection (S(p( 0, 0), p( 10, 0)), R(p( 1, 6), p( 1, -3)), P(1, 0));
- check_intersection (S(p( 0, 0), p( 10, 0)), R(p( 1, 6), p( 1, -3)), P(1, 0));
+ check_intersection (S(p( 0, 0), p( 10, 0)), R(p( 1, -3), p( 1, 6)), P(1, 0));
check_intersection (S(p( 0, 0), p( 10, 0)), R(p( 0, 0), p(-10, 4)), P(0, 0)); // start of ray is exactly on the segment
check_intersection (S(p( 0, 0), p( 10, 0)), R(p( 4, 0), p(-10, 4)), P(4, 0)); // start of ray is a segment extremity
@@ -757,7 +757,7 @@ struct Test
// segment intersection
check_intersection (L(p( 18, 6), p( 0, 0)), Rec(p( 2, 0), p(6, 3)));
- check_intersection