File 0001-Allow-usage-of-system-provided-levmar.patch of Package meshlab

From 13e113de553d5a7de71bbd77687ee5dd2d8b5759 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Sun, 22 Jan 2023 07:07:41 +0100
Subject: [PATCH] Allow usage of system provided levmar

---
 src/external/levmar.cmake                     | 22 ++++++++++++++++++-
 .../edit_mutualcorrs/levmarmethods.h          |  2 +-
 src/meshlabplugins/edit_mutualcorrs/solver.h  |  2 +-
 .../filter_mutualglobal/levmarmethods.h       |  2 +-
 .../filter_mutualglobal/solver.h              |  2 +-
 .../filter_mutualinfo/levmarmethods.h         |  2 +-
 src/meshlabplugins/filter_mutualinfo/solver.h |  2 +-
 7 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/src/external/levmar.cmake b/src/external/levmar.cmake
index 96d76bf..155165b 100644
--- a/src/external/levmar.cmake
+++ b/src/external/levmar.cmake
@@ -3,8 +3,28 @@
 # SPDX-License-Identifier: BSL-1.0
 
 option(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LEVMAR "Allow download and use of levmar source" ON)
+option(MESHLAB_ALLOW_SYSTEM_LEVMAR "Allow use of system-provided levmar" ON)
 
-if(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LEVMAR)
+if (MESHLAB_ALLOW_SYSTEM_LEVMAR)
+	find_library(LEVMAR_LIBRARY NAMES levmar)
+	find_path(LEVMAR_INCLUDE_DIR NAMES levmar.h PATH_SUFFIXES levmar)
+
+	if (LEVMAR_LIBRARY AND LEVMAR_INCLUDE_DIR)
+	        message(STATUS "Found levmar: ${LEVMAR_LIBRARY} ${LEVMAR_INCLUDE_DIR}")
+		add_library(levmar::levmar UNKNOWN IMPORTED)
+		set_target_properties(levmar::levmar PROPERTIES
+			INTERFACE_INCLUDE_DIRECTORIES "${LEVMAR_INCLUDE_DIR}")
+		set_property(TARGET levmar::levmar APPEND PROPERTY
+			IMPORTED_LOCATION "${LEVMAR_LIBRARY}")
+	endif()
+endif()
+
+if (TARGET levmar::levmar)
+	message(STATUS "- levmar - using system-provided library")
+	add_library(external-levmar INTERFACE)
+	target_link_libraries(external-levmar INTERFACE levmar::levmar)
+
+elseif(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LEVMAR)
 	set(LEVMAR_VERSION "2.6.1")
 
 	set(LEVMAR_DIR "${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/levmar-${LEVMAR_VERSION}")
diff --git a/src/meshlabplugins/edit_mutualcorrs/levmarmethods.h b/src/meshlabplugins/edit_mutualcorrs/levmarmethods.h
index 77f257b..c1a15c8 100644
--- a/src/meshlabplugins/edit_mutualcorrs/levmarmethods.h
+++ b/src/meshlabplugins/edit_mutualcorrs/levmarmethods.h
@@ -12,7 +12,7 @@ sufficient to get a calibrated shot.<br>
 
 #include <list>
 
-#include "levmar.h"
+#include <levmar.h>
 
 
 struct LevmarCorrelation {
diff --git a/src/meshlabplugins/edit_mutualcorrs/solver.h b/src/meshlabplugins/edit_mutualcorrs/solver.h
index fc15e51..7d93079 100644
--- a/src/meshlabplugins/edit_mutualcorrs/solver.h
+++ b/src/meshlabplugins/edit_mutualcorrs/solver.h
@@ -5,7 +5,7 @@
 #include "alignset.h"
 
 #include "parameters.h"
-#include "levmar.h"
+#include <levmar.h>
 
 #include <iostream>
 #include <fstream>
diff --git a/src/meshlabplugins/filter_mutualglobal/levmarmethods.h b/src/meshlabplugins/filter_mutualglobal/levmarmethods.h
index 73e2e7a..a35d185 100644
--- a/src/meshlabplugins/filter_mutualglobal/levmarmethods.h
+++ b/src/meshlabplugins/filter_mutualglobal/levmarmethods.h
@@ -12,7 +12,7 @@ sufficient to get a calibrated shot.<br>
 
 #include <list>
 
-#include "levmar.h"
+#include <levmar.h>
 
 
 struct LevmarCorrelation {
diff --git a/src/meshlabplugins/filter_mutualglobal/solver.h b/src/meshlabplugins/filter_mutualglobal/solver.h
index db7cc5f..9e2e497 100644
--- a/src/meshlabplugins/filter_mutualglobal/solver.h
+++ b/src/meshlabplugins/filter_mutualglobal/solver.h
@@ -5,7 +5,7 @@
 #include "alignset.h"
 
 #include "parameters.h"
-#include "levmar.h"
+#include <levmar.h>
 
 #include <iostream>
 #include <fstream>
diff --git a/src/meshlabplugins/filter_mutualinfo/levmarmethods.h b/src/meshlabplugins/filter_mutualinfo/levmarmethods.h
index 73e2e7a..a35d185 100644
--- a/src/meshlabplugins/filter_mutualinfo/levmarmethods.h
+++ b/src/meshlabplugins/filter_mutualinfo/levmarmethods.h
@@ -12,7 +12,7 @@ sufficient to get a calibrated shot.<br>
 
 #include <list>
 
-#include "levmar.h"
+#include <levmar.h>
 
 
 struct LevmarCorrelation {
diff --git a/src/meshlabplugins/filter_mutualinfo/solver.h b/src/meshlabplugins/filter_mutualinfo/solver.h
index db7cc5f..9e2e497 100644
--- a/src/meshlabplugins/filter_mutualinfo/solver.h
+++ b/src/meshlabplugins/filter_mutualinfo/solver.h
@@ -5,7 +5,7 @@
 #include "alignset.h"
 
 #include "parameters.h"
-#include "levmar.h"
+#include <levmar.h>
 
 #include <iostream>
 #include <fstream>
-- 
2.49.0

openSUSE Build Service is sponsored by