summaryrefslogtreecommitdiff
path: root/cad
diff options
context:
space:
mode:
Diffstat (limited to 'cad')
-rw-r--r--cad/freecad/Makefile7
-rw-r--r--cad/freecad/files/patch-spnav-support94
2 files changed, 99 insertions, 2 deletions
diff --git a/cad/freecad/Makefile b/cad/freecad/Makefile
index 4f8d87554a63..b10760856548 100644
--- a/cad/freecad/Makefile
+++ b/cad/freecad/Makefile
@@ -1,6 +1,6 @@
PORTNAME= FreeCAD
DISTVERSION= 1.0.0
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= cad
MAINTAINER= cmt@FreeBSD.org
@@ -102,10 +102,13 @@ CMAKE_ARGS+= -DOCC_INCLUDE_DIR="${LOCALBASE}/include/OpenCASCADE" \
CMAKE_INSTALL_PREFIX= ${PREFIX}/${PORTNAME}
-OPTIONS_DEFINE= COLLADA
+OPTIONS_DEFINE= COLLADA SPNAV
COLLADA_DESC= Install pycollada for Collada files import
COLLADA_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pycollada>0:graphics/py-pycollada@${PY_FLAVOR}
+SPNAV_DESC= Enable libspnav (SpaceMouse) support
+SPNAV_CMAKE_BOOL= FREECAD_SPNAV_SUPPORT
+SPNAV_LIB_DEPENDS= libspnav.so:misc/libspnav
.include <bsd.port.options.mk>
diff --git a/cad/freecad/files/patch-spnav-support b/cad/freecad/files/patch-spnav-support
new file mode 100644
index 000000000000..e9b364d61f60
--- /dev/null
+++ b/cad/freecad/files/patch-spnav-support
@@ -0,0 +1,94 @@
+commit f2b872ba4dc509622bda2d86ce42e2464d40832b
+Author: Christoph Moench-Tegeder <cmt@burggraben.net>
+Date: Mon Mar 24 01:03:53 2025 +0100
+
+ attempt to fix building with libspnav
+
+diff --git cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake
+index e9aa47fd6e..826c510ef0 100644
+--- cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake
++++ cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake
+@@ -142,6 +142,7 @@ macro(InitializeFreeCADBuildOptions)
+ option(BUILD_CLOUD "Build the FreeCAD cloud module" OFF)
+ option(ENABLE_DEVELOPER_TESTS "Build the FreeCAD unit tests suit" ON)
+
++ option(FREECAD_SPNAV_SUPPORT "Enable libspnav support" OFF)
+ if(MSVC)
+ set(FREECAD_3DCONNEXION_SUPPORT "NavLib" CACHE STRING "Select version of the 3Dconnexion device integration")
+ set_property(CACHE FREECAD_3DCONNEXION_SUPPORT PROPERTY STRINGS "NavLib" "Raw input")
+diff --git src/Gui/CMakeLists.txt src/Gui/CMakeLists.txt
+index 642f58568f..52cc393875 100644
+--- src/Gui/CMakeLists.txt
++++ src/Gui/CMakeLists.txt
+@@ -133,7 +133,8 @@ if(${Qt5WinExtras_FOUND})
+ )
+ endif()
+
+-IF(SPNAV_FOUND)
++IF(FREECAD_SPNAV_SUPPORT AND SPNAV_FOUND)
++ add_definitions(-D_USE_3DCONNEXION_SDK)
+ if(SPNAV_USE_X11)
+ add_definitions(-DSPNAV_USE_X11)
+ if (FREECAD_QT_MAJOR_VERSION EQUAL 5 AND UNIX AND NOT APPLE)
+@@ -175,7 +176,11 @@ IF(SPNAV_FOUND)
+ list(APPEND FreeCADGui_LIBS
+ ${SPNAV_LIBRARIES}
+ )
+-ENDIF(SPNAV_FOUND)
++ENDIF(FREECAD_SPNAV_SUPPORT AND SPNAV_FOUND)
++
++IF(FREECAD_SPNAV_SUPPORT AND NOT SPNAV_FOUND)
++ MESSAGE(FATAL_ERROR "libspnav support requested but libspnav not found")
++ENDIF(FREECAD_SPNAV_SUPPORT AND NOT SPNAV_FOUND)
+
+ IF(OCULUS_FOUND)
+ add_definitions(-DOCULUS_FOUND)
+diff --git src/Gui/GuiApplicationNativeEventAware.cpp src/Gui/GuiApplicationNativeEventAware.cpp
+index ba41901472..c0cf3c7666 100644
+--- src/Gui/GuiApplicationNativeEventAware.cpp
++++ src/Gui/GuiApplicationNativeEventAware.cpp
+@@ -33,7 +33,7 @@
+
+
+ #if defined(_USE_3DCONNEXION_SDK) || defined(SPNAV_FOUND)
+-#if defined(Q_OS_LINUX)
++#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
+ #if defined(SPNAV_USE_X11)
+ #include "3Dconnexion/GuiNativeEventLinuxX11.h"
+ #else
+@@ -59,7 +59,15 @@ Gui::GUIApplicationNativeEventAware::~GUIApplicationNativeEventAware() = default
+ void Gui::GUIApplicationNativeEventAware::initSpaceball(QMainWindow *window)
+ {
+ #if defined(_USE_3DCONNEXION_SDK) || defined(SPNAV_FOUND)
++# if defined(USE_3DCONNEXION_NAVLIB)
++ ParameterGrp::handle hViewGrp = App::GetApplication().GetParameterGroupByPath(
++ "User parameter:BaseApp/Preferences/View");
++ if (nativeEvent && hViewGrp->GetBool("LegacySpaceMouseDevices", false)) {
++ nativeEvent->initSpaceball(window);
++ }
++# else
+ nativeEvent->initSpaceball(window);
++# endif
+ #else
+ Q_UNUSED(window);
+ #endif
+diff --git src/Gui/View3DInventorViewer.cpp src/Gui/View3DInventorViewer.cpp
+index 694f834583..d32c2486b5 100644
+--- src/Gui/View3DInventorViewer.cpp
++++ src/Gui/View3DInventorViewer.cpp
+@@ -555,7 +555,15 @@ void View3DInventorViewer::init()
+ //filter a few qt events
+ viewerEventFilter = new ViewerEventFilter;
+ installEventFilter(viewerEventFilter);
++#if defined(USE_3DCONNEXION_NAVLIB)
++ ParameterGrp::handle hViewGrp = App::GetApplication().GetParameterGroupByPath(
++ "User parameter:BaseApp/Preferences/View");
++ if (hViewGrp->GetBool("LegacySpaceMouseDevices", false)) {
++ getEventFilter()->registerInputDevice(new SpaceNavigatorDevice);
++ }
++#else
+ getEventFilter()->registerInputDevice(new SpaceNavigatorDevice);
++#endif
+ getEventFilter()->registerInputDevice(new GesturesDevice(this));
+
+ try{