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