Cannot compile Blender on MacOSX since September 21st

Yesterday it was still working. Now it isn’t.

On OSX 10.14.5 I get this error after make update and make:

/blender/extern/glog/include/glog/logging.h:640:9: error: use of overloaded operator '<<' is ambiguous (with operand types
      'std::ostream' (aka 'basic_ostream<char>') and 'const nullptr_t')
  (*os) << v;
  ~~~~~ ^  ~

It is then followed by a lot of ‘note:’ like this one:

/blender/extern/glog/include/glog/logging.h:696:3: note: in instantiation of function template specialization
      'google::MakeCheckOpValueString<nullptr_t>' requested here
  MakeCheckOpValueString(comb.ForVar2(), v2);

do you still have this issue or has it been fixed by now?

Temporary build issues can always occur, but usually are fixed quickly.


Hi Thomas,

Now compilation fails way sooner with a clang error, around 26% (before, compilation worked until 99%). So I can’t tell if the previous error was fixed.

This sort of clang error has happened before with a commit that used cpp functions that were not supported by clang and XCode on Mojave. Not sure if this is a similar case here, which is why I prefer to report it, even if temporary build failures happen from time to time.

CMake Warning at CMakeLists.txt:1779 (message):
  -fmacro-prefix-map flag is NOT supported by C/C++ compiler.  Disabling

/blender/source/blender/editors/interface/interface_templates.c:529:43: warning: suggest braces around initialization of subobject [-Wmissing-braces]
  uiSearchItemTooltipData tooltip_data = {0};
1 warning generated.
clang: error: unable to execute command: Illegal instruction: 4
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
Thread model: posix
InstalledDir: /Applications/
clang: note: diagnostic msg: PLEASE submit a bug report to and include the crash backtrace, preprocessed source, and associated run script.
clang: note: diagnostic msg: 

Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /var/folders/2l/zdf0str94330yfnmk87zl0bh0000gn/T/interface_view-bce9dc.cpp
clang: note: diagnostic msg: /var/folders/2l/zdf0str94330yfnmk87zl0bh0000gn/T/
clang: note: diagnostic msg: Crash backtrace is located in
clang: note: diagnostic msg: /Logs/DiagnosticReports/clang_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
clang: note: diagnostic msg: 

make[3]: *** [source/blender/editors/interface/CMakeFiles/bf_editor_interface.dir/] Error 254
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [source/blender/editors/interface/CMakeFiles/bf_editor_interface.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all] Error 2
make: *** [all] Error 2

I’ve tried compiling on Ubuntu 20 and everything works fine as opposed to MacOSX.

Can redo with Can’t redo with (Blender fails to compile macOS (clang seg fault)) though.


using TreeViewPtr = std::unique_ptr<AbstractTreeView>;
std::variant<TreeViewPtr> view; 

is causing this.


Hi, is this still an issue?
It’s a bit weird that this fails since the minimum target macOS version we build for is 10.13, so the compiler should throw errors when using functionality introduced later. What does xcodebuild -version output for you?

Just fixing that tree-view issue is simple. Though I’d prefer not having to do it as it would mean making code worse just for some old macOS setup.

Hi, thanks for asking. Yes, this is still an issue.

xcodebuild -version yields:
Xcode 10.3
Build version 10G8

And no I cannot update XCode because that’s the latest I can use on Mojave.
Your fix will be appreciated.

Hey there,

Same problem here with Xcode 10.0. The git repo tag is “v3.0.0”.

PS: It compiled perfectly when using “xcode-select” to specify Xcode 13 - but I cannot update to 13 as the Mojave compatibility.

Any updates on this issue? Thanks!


Try removing the build directory and build from scratch - that fixed this issue for me.

Thanks, billrey!

Unluckily, rebuilding from scratch didn’t work for me.


Could those with the issue test this patch?:

diff --git a/source/blender/editors/interface/ b/source/blender/editors/interface/
index 81b24c75020..a7cf7e6088b 100644
--- a/source/blender/editors/interface/
+++ b/source/blender/editors/interface/
@@ -24,6 +24,7 @@
 #include <memory>
+#include <type_traits>
 #include <variant>
 #include "DNA_screen_types.h"
@@ -35,9 +36,41 @@
 #include "UI_interface.hh"
 #include "UI_tree_view.hh"
+/* Old XCode versions (<= 10.3?) crash when using std::variant as below.
+ * See: */
+#ifdef __APPLE__
 using namespace blender;
 using namespace blender::ui;
+struct ViewVariant {
+  using TreeViewPtr = std::unique_ptr<AbstractTreeView>;
+  union {
+    char none;
+    TreeViewPtr tree_view;
+    /* Other views... */
+  };
+  enum {
+    TypeNone,
+    TypeTreeView,
+  } type = TypeNone;
+  ViewVariant() : none()
+  {
+  }
+  ~ViewVariant()
+  {
+    if (type == TypeTreeView) {
+      tree_view = nullptr;
+    }
+  }
  * Wrapper to store views in a #ListBase. There's no `uiView` base class, we just store views as a
  * #std::variant.
@@ -46,14 +79,25 @@ struct ViewLink : public Link {
   using TreeViewPtr = std::unique_ptr<AbstractTreeView>;
   std::string idname;
+  ViewVariant view;
   /* NOTE: Can't use std::get() on this until minimum macOS deployment target is 10.14. */
   std::variant<TreeViewPtr> view;
 template<class T> T *get_view_from_link(ViewLink &link)
+  if constexpr (std::is_same_v<T, AbstractTreeView>) {
+    return (link.view.type == ViewVariant::TypeTreeView) ? link.view.tree_view.get() : nullptr;
+  }
+  return nullptr;
   auto *t_uptr = std::get_if<std::unique_ptr<T>>(&link.view);
   return t_uptr ? t_uptr->get() : nullptr;
 AbstractTreeView *UI_block_add_view(uiBlock &block,
@@ -63,7 +107,12 @@ AbstractTreeView *UI_block_add_view(uiBlock &block,
   ViewLink *view_link = MEM_new<ViewLink>(__func__);
   BLI_addtail(&block.views, view_link);
+  view_link->view.tree_view = std::move(tree_view);
+  view_link->view.type = ViewVariant::TypeTreeView;
   view_link->view = std::move(tree_view);
   view_link->idname = idname;
   return get_view_from_link<AbstractTreeView>(*view_link);