git: 166dc5d6e337 - main - cad/libfive: Add: Software library and set of tools for solid modeling
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 20 Sep 2026 13:24:12 UTC
The branch main has been updated by 0mp:
URL: https://cgit.FreeBSD.org/ports/commit/?id=166dc5d6e337b7bbc36200393aa4bddcc9f85b3b
commit 166dc5d6e337b7bbc36200393aa4bddcc9f85b3b
Author: Hiroo Ono <hiroo.ono+freebsd@gmail.com>
AuthorDate: 2026-09-20 12:25:47 +0000
Commit: Mateusz Piotrowski <0mp@FreeBSD.org>
CommitDate: 2026-09-20 13:24:07 +0000
cad/libfive: Add: Software library and set of tools for solid modeling
0mp@ improved Makefile formatting, fixed pkg-plist, fixed DISTVERSION,
and patched the default compiler flags.
PR: 298706
Co-authored-by: Mateusz Piotrowski <0mp@FreeBSD.org>
---
cad/Makefile | 1 +
cad/libfive/Makefile | 52 ++++++++++++
cad/libfive/distinfo | 3 +
cad/libfive/files/patch-CMakeLists.txt | 20 +++++
.../files/patch-studio_include_studio_camera.hpp | 10 +++
.../files/patch-studio_include_studio_view.hpp | 11 +++
cad/libfive/files/patch-studio_src_bbox.cpp | 10 +++
cad/libfive/files/patch-studio_src_camera.cpp | 11 +++
cad/libfive/files/patch-studio_src_view.cpp | 10 +++
cad/libfive/pkg-descr | 4 +
cad/libfive/pkg-plist | 97 ++++++++++++++++++++++
11 files changed, 229 insertions(+)
diff --git a/cad/Makefile b/cad/Makefile
index ecbb755f78c0..83fb879f5e67 100644
--- a/cad/Makefile
+++ b/cad/Makefile
@@ -77,6 +77,7 @@
SUBDIR += lepton-eda
SUBDIR += lib3mf
SUBDIR += libbgcode
+ SUBDIR += libfive
SUBDIR += libgdsii
SUBDIR += libopencad
SUBDIR += librecad
diff --git a/cad/libfive/Makefile b/cad/libfive/Makefile
new file mode 100644
index 000000000000..0e9a38948d3b
--- /dev/null
+++ b/cad/libfive/Makefile
@@ -0,0 +1,52 @@
+PORTNAME= libfive
+DISTVERSION= g20251112
+CATEGORIES= cad
+
+MAINTAINER= hiroo.ono+freebsd@gmail.com
+COMMENT= Infrastructure for solid modeling
+WWW= https://libfive.com/
+
+LICENSE= GPLv2+ MPL20
+LICENSE_COMB= multi
+LICENSE_FILE= ${WRKSRC}/README.md
+
+BUILD_DEPENDS= ${LOCALBASE}/include/eigen3/Eigen/Core:math/eigen3 \
+ ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers
+LIB_DEPENDS= libboost_container.so:devel/boost-libs \
+ libpng16.so:graphics/png
+
+USES= cmake gl pkgconfig
+USE_GITHUB= yes
+GH_TAGNAME= c9e97343e0af998cd1696e85583eccba95532b96
+USE_GL= opengl
+USE_QT= 3d base
+
+CMAKE_ARGS= -DCMAKE_INSTALL_LIBDIR:STRING=lib
+CMAKE_ON= ${WITH_DEBUG:DENABLE_DEBUG}
+
+OPTIONS_DEFINE= GUILE PYTHON STUDIO
+OPTIONS_DEFAULT= GUILE PYTHON STUDIO
+OPTIONS_SUB=
+
+STUDIO_DESC= Build Studio Application
+
+GUILE_USES= guile:3.0
+GUILE_CMAKE_ON= -DBUILD_GUILE_BINDINGS:BOOL=ON
+GUILE_CMAKE_OFF= -DBUILD_GUILE_BINDINGS:BOOL=OFF
+GUILE_BINARY_ALIAS= guild=guild3 guile=guile3
+PYTHON_USES= python
+PYTHON_CMAKE_ON= -DBUILD_PYTHON_BINDINGS:BOOL=ON \
+ -DPYTHON_SITE_PACKAGES_DIR:STRING=${PYTHON_SITELIBDIR}
+PYTHON_CMAKE_OFF= -DBUILD_PYTHON_BINDINGS:BOOL=OFF
+STUDIO_USES= qt:6
+STUDIO_CMAKE_ON= -DBUILD_STUDIO_APP:BOOL=ON
+STUDIO_CMAKE_OFF= -DBUILD_STUDIO_APP:BOOL=OFF
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MSTUDIO} && !(${PORT_OPTIONS:MGUILE} || \
+ ${PORT_OPTIONS:MPYTHON})
+IGNORE= STUDIO option needs either GUILE or PYTHON option
+.endif
+
+.include <bsd.port.mk>
diff --git a/cad/libfive/distinfo b/cad/libfive/distinfo
new file mode 100644
index 000000000000..465417e981a4
--- /dev/null
+++ b/cad/libfive/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1789270800
+SHA256 (libfive-libfive-0.0.0-20251112-c9e97343e0af998cd1696e85583eccba95532b96_GH0.tar.gz) = 022849a9ccbac740ad16866df626f2e6a0ad07602521e25fb984e74461a66247
+SIZE (libfive-libfive-0.0.0-20251112-c9e97343e0af998cd1696e85583eccba95532b96_GH0.tar.gz) = 917986
diff --git a/cad/libfive/files/patch-CMakeLists.txt b/cad/libfive/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..342a3353890b
--- /dev/null
+++ b/cad/libfive/files/patch-CMakeLists.txt
@@ -0,0 +1,20 @@
+--- CMakeLists.txt.orig 2025-11-12 13:52:17 UTC
++++ CMakeLists.txt
+@@ -64,7 +64,7 @@ if(NOT MSVC)
+ endif()
+
+ set(CMAKE_CXX_FLAGS_DEBUG "-O0")
+- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DEIGEN_NO_DEBUG")
++ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DEIGEN_NO_DEBUG")
+ else()
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+ set(CMAKE_CXX_FLAGS "/EHsc /WX /D_USE_MATH_DEFINES /D_SCL_SECURE_NO_WARNINGS")
+@@ -124,7 +124,7 @@ if (UNIX AND NOT(APPLE))
+
+ if (UNIX AND NOT(APPLE))
+ find_package(Threads REQUIRED)
+- set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
++ # set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
+ endif(UNIX AND NOT(APPLE))
+
+ ################################################################################
diff --git a/cad/libfive/files/patch-studio_include_studio_camera.hpp b/cad/libfive/files/patch-studio_include_studio_camera.hpp
new file mode 100644
index 000000000000..4dd3362a7538
--- /dev/null
+++ b/cad/libfive/files/patch-studio_include_studio_camera.hpp
@@ -0,0 +1,10 @@
+--- studio/include/studio/camera.hpp.orig 2026-08-26 03:38:22 UTC
++++ studio/include/studio/camera.hpp
+@@ -21,6 +21,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
+ #include <QMatrix4x4>
+ #include <QObject>
+ #include <QPropertyAnimation>
++#include <QQuaternion>
+
+ namespace Studio {
+ class Camera : public QObject
diff --git a/cad/libfive/files/patch-studio_include_studio_view.hpp b/cad/libfive/files/patch-studio_include_studio_view.hpp
new file mode 100644
index 000000000000..a646b85887d6
--- /dev/null
+++ b/cad/libfive/files/patch-studio_include_studio_view.hpp
@@ -0,0 +1,11 @@
+--- studio/include/studio/view.hpp.orig 2025-11-12 13:52:17 UTC
++++ studio/include/studio/view.hpp
+@@ -110,7 +110,7 @@ protected slots:
+ void varsDragged(QMap<libfive::Tree::Id, float> vs);
+
+ protected slots:
+- void update() { QOpenGLWidget::update(); }
++ void update() { QWidget::update(); }
+ void redrawPicker();
+
+ protected:
diff --git a/cad/libfive/files/patch-studio_src_bbox.cpp b/cad/libfive/files/patch-studio_src_bbox.cpp
new file mode 100644
index 000000000000..1bf2303d7c2d
--- /dev/null
+++ b/cad/libfive/files/patch-studio_src_bbox.cpp
@@ -0,0 +1,10 @@
+--- studio/src/bbox.cpp.orig 2026-08-26 03:29:16 UTC
++++ studio/src/bbox.cpp
+@@ -18,6 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
+ */
+ #include <cmath>
+ #include <boost/math/constants/constants.hpp>
++#include <QQuaternion>
+
+ #include "studio/bbox.hpp"
+ #include "studio/camera.hpp"
diff --git a/cad/libfive/files/patch-studio_src_camera.cpp b/cad/libfive/files/patch-studio_src_camera.cpp
new file mode 100644
index 000000000000..e87129e97752
--- /dev/null
+++ b/cad/libfive/files/patch-studio_src_camera.cpp
@@ -0,0 +1,11 @@
+--- studio/src/camera.cpp.orig 2026-08-26 03:28:33 UTC
++++ studio/src/camera.cpp
+@@ -18,6 +18,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
+ */
+ #include <cmath>
+
++#include <QQuaternion>
++
+ #include "studio/camera.hpp"
+
+ namespace Studio {
diff --git a/cad/libfive/files/patch-studio_src_view.cpp b/cad/libfive/files/patch-studio_src_view.cpp
new file mode 100644
index 000000000000..a39f6681d8a9
--- /dev/null
+++ b/cad/libfive/files/patch-studio_src_view.cpp
@@ -0,0 +1,10 @@
+--- studio/src/view.cpp.orig 2025-11-12 13:52:17 UTC
++++ studio/src/view.cpp
+@@ -19,6 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
+ #include <QMouseEvent>
+ #include <QMessageBox>
+ #include <QPainter>
++#include <QQuaternion>
+
+ #include "studio/color.hpp"
+ #include "studio/view.hpp"
diff --git a/cad/libfive/pkg-descr b/cad/libfive/pkg-descr
new file mode 100644
index 000000000000..c7d51c2e28e2
--- /dev/null
+++ b/cad/libfive/pkg-descr
@@ -0,0 +1,4 @@
+libfive is a software library and set of tools for solid modeling,
+especially suited for parametric and procedural design. It is
+infrastructure for generative design, mass customization, and
+domain-specific CAD tools.
diff --git a/cad/libfive/pkg-plist b/cad/libfive/pkg-plist
new file mode 100644
index 000000000000..3bff3e48a9e7
--- /dev/null
+++ b/cad/libfive/pkg-plist
@@ -0,0 +1,97 @@
+%%STUDIO%%bin/ONStudio
+include/libfive.h
+include/libfive/eval/base.hpp
+include/libfive/eval/clause.hpp
+include/libfive/eval/deck.hpp
+include/libfive/eval/eval_array.hpp
+include/libfive/eval/eval_array_size.hpp
+include/libfive/eval/eval_deriv_array.hpp
+include/libfive/eval/eval_feature.hpp
+include/libfive/eval/eval_interval.hpp
+include/libfive/eval/eval_jacobian.hpp
+include/libfive/eval/evaluator.hpp
+include/libfive/eval/feature.hpp
+include/libfive/eval/interval.hpp
+include/libfive/eval/tape.hpp
+include/libfive/oracle/oracle.hpp
+include/libfive/oracle/oracle_clause.hpp
+include/libfive/oracle/oracle_context.hpp
+include/libfive/oracle/oracle_storage.hpp
+include/libfive/oracle/transformed_oracle.hpp
+include/libfive/oracle/transformed_oracle_clause.hpp
+include/libfive/render/axes.hpp
+include/libfive/render/brep/brep.hpp
+include/libfive/render/brep/contours.hpp
+include/libfive/render/brep/dc/dc_contourer.hpp
+include/libfive/render/brep/dc/dc_flags.hpp
+include/libfive/render/brep/dc/dc_mesher.hpp
+include/libfive/render/brep/dc/dc_neighbors.hpp
+include/libfive/render/brep/dc/dc_tree.hpp
+include/libfive/render/brep/dc/dc_worker_pool.hpp
+include/libfive/render/brep/dc/intersection.hpp
+include/libfive/render/brep/dc/marching.hpp
+include/libfive/render/brep/default_new_delete.hpp
+include/libfive/render/brep/dual.hpp
+include/libfive/render/brep/edge_tables.hpp
+include/libfive/render/brep/free_thread_handler.hpp
+include/libfive/render/brep/hybrid/hybrid_debug.hpp
+include/libfive/render/brep/hybrid/hybrid_mesher.hpp
+include/libfive/render/brep/hybrid/hybrid_neighbors.hpp
+include/libfive/render/brep/hybrid/hybrid_tree.hpp
+include/libfive/render/brep/hybrid/hybrid_worker_pool.hpp
+include/libfive/render/brep/indexes.hpp
+include/libfive/render/brep/manifold_tables.hpp
+include/libfive/render/brep/mesh.hpp
+include/libfive/render/brep/neighbor_tables.hpp
+include/libfive/render/brep/neighbors.hpp
+include/libfive/render/brep/object_pool.hpp
+include/libfive/render/brep/per_thread_brep.hpp
+include/libfive/render/brep/progress.hpp
+include/libfive/render/brep/region.hpp
+include/libfive/render/brep/root.hpp
+include/libfive/render/brep/settings.hpp
+include/libfive/render/brep/simplex/qef.hpp
+include/libfive/render/brep/simplex/simplex_debug.hpp
+include/libfive/render/brep/simplex/simplex_mesher.hpp
+include/libfive/render/brep/simplex/simplex_neighbors.hpp
+include/libfive/render/brep/simplex/simplex_tree.hpp
+include/libfive/render/brep/simplex/simplex_worker_pool.hpp
+include/libfive/render/brep/simplex/surface_edge_map.hpp
+include/libfive/render/brep/util.hpp
+include/libfive/render/brep/vol/vol_neighbors.hpp
+include/libfive/render/brep/vol/vol_tree.hpp
+include/libfive/render/brep/vol/vol_worker_pool.hpp
+include/libfive/render/brep/worker_pool.hpp
+include/libfive/render/brep/xtree.hpp
+include/libfive/render/discrete/heightmap.hpp
+include/libfive/render/discrete/voxels.hpp
+include/libfive/solve/solver.hpp
+include/libfive/tree/archive.hpp
+include/libfive/tree/data.hpp
+include/libfive/tree/deserializer.hpp
+include/libfive/tree/key.hpp
+include/libfive/tree/opcode.hpp
+include/libfive/tree/operations.hpp
+include/libfive/tree/serializer.hpp
+include/libfive/tree/tree.hpp
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/kernel.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/lib.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/sandbox.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/stdlib/csg.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/stdlib/shapes.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/stdlib/text.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/stdlib/transforms.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/util.go
+%%GUILE%%%%GUILE_SITE_CCACHE%%/libfive/vec.go
+lib/libfive-stdlib.so
+lib/libfive.so
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/__init__.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/ffi.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/runner.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/shape.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/stdlib/__init__.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/stdlib/csg.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/stdlib/shapes.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/stdlib/text.py
+%%PYTHON%%%%PYTHON_SITELIBDIR%%/libfive/stdlib/transforms.py
+libdata/pkgconfig/libfive.pc