From 7c4c6e72ad55d5618e90ab831a93e7d2553bb8c5 Mon Sep 17 00:00:00 2001
From: Geoffrey Malcolm Oxberry <goxberry@gmail.com>
Date: Tue, 16 Jan 2018 03:34:41 -0800
Subject: [PATCH] vtk@:6.1.0 : disable Obj-C gc for XCode >= 5.1

Apple removed support for Objective-C garbage collection in binaries
in XCode 5.1, but VTK 6.1.0 and earlier set flags for garbage
collection, resulting in a compile-time bug when compiling VTK using
any recent version of XCode (i.e., Apple Clang).

This commit fixes this bug by removing the garbage collection flags
via setting the variable `VTK_REQUIRED_OBJCXX_FLAGS` to the empty
string. This variable has the same value (i.e., the empty string) in
the root-level CMakeLists.txt file for VTK 6.2.0 and later.
---
 var/spack/repos/builtin/packages/vtk/package.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py
index bce6cc2475..caf11b1fc7 100644
--- a/var/spack/repos/builtin/packages/vtk/package.py
+++ b/var/spack/repos/builtin/packages/vtk/package.py
@@ -114,4 +114,16 @@ def cmake_args(self):
                 '-DNETCDF_CXX_LIBRARY={0}'.format(netcdf_cxx_lib),
             ])
 
+            # Garbage collection is unsupported in Xcode starting with
+            # version 5.1; if the Apple clang version of the compiler
+            # is 5.1.0 or later, unset the required Objective-C flags
+            # to remove the garbage collection flags.  Versions of VTK
+            # after 6.1.0 set VTK_REQUIRED_OBJCXX_FLAGS to the empty
+            # string. This fix was recommended on the VTK mailing list
+            # in March 2014 (see
+            # https://public.kitware.com/pipermail/vtkusers/2014-March/083368.html)
+            if (self.compiler.is_apple and
+                self.compiler.version >= Version('5.1.0')):
+                cmake_args.extend(['-DVTK_REQUIRED_OBJCXX_FLAGS=""'])
+
         return cmake_args
-- 
GitLab