From 4e20935b811efd84eacec08caf9eb134f9e25c86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eric=20M=C3=BCller?= <mueller@kip.uni-heidelberg.de>
Date: Thu, 21 Mar 2024 10:05:57 +0100
Subject: [PATCH] fix(open3d): Build w/o glu

The glew package requires the "depender" to set this preprocessor define
if a build w/o GLU support is requested.
(I.e. this removes the build dependency of glew on glu.)
---
 packages/open3d/glew-no-glu.patch | 15 +++++++++++++++
 packages/open3d/package.py        |  4 ++++
 2 files changed, 19 insertions(+)
 create mode 100644 packages/open3d/glew-no-glu.patch

diff --git a/packages/open3d/glew-no-glu.patch b/packages/open3d/glew-no-glu.patch
new file mode 100644
index 00000000..84baf0ec
--- /dev/null
+++ b/packages/open3d/glew-no-glu.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a87d542b5..509a50633 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -41,6 +41,10 @@ endif()
+ include(CMakeDependentOption)
+ 
+ # Open3D build options
++option(DEFINE_GLEW_NO_GLU         "Glew without GLU"                         OFF)
++if(DEFINE_GLEW_NO_GLU)
++    add_definitions(-DGLEW_NO_GLU)
++endif(DEFINE_GLEW_NO_GLU)
+ option(BUILD_SHARED_LIBS          "Build shared libraries"                   OFF)
+ option(BUILD_EXAMPLES             "Build Open3D examples programs"           ON )
+ option(BUILD_UNIT_TESTS           "Build Open3D unit tests"                  OFF)
diff --git a/packages/open3d/package.py b/packages/open3d/package.py
index 86883731..d97a7e03 100644
--- a/packages/open3d/package.py
+++ b/packages/open3d/package.py
@@ -85,6 +85,8 @@ class Open3d(CMakePackage, CudaPackage):
     # LLVM must be built with the C++ library
     conflicts("^llvm libcxx=none")
 
+    patch("glew-no-glu.patch")
+
     def patch(self):
         # Force Python libraries to be installed to self.prefix
         args = std_pip_args + ["--prefix=" + self.prefix]
@@ -148,6 +150,8 @@ class Open3d(CMakePackage, CudaPackage):
             # args.append(self.define("USE_SYSTEM_VTK", True))
         if self.spec.satisfies("@0.18:"):
            args.append(self.define("USE_SYSTEM_EMBREE", True))
+        # cf. https://github.com/spack/spack/issues/42839
+        args.append(self.define("DEFINE_GLEW_NO_GLU", True))
         # end EBRAINS
 
         if "+python" in self.spec:
-- 
GitLab