ROOT Compilation failed with Mac OS Big Sur version 11.2.2 on Mac arm64


I am trying to install root v6-22-08 on Mac arm64

I did cmake -Dimt=OFF -Dbuiltin_glew=ON …/
and make -j4

and I get the following error;

[ 93%] Building CXX object gui/gui/CMakeFiles/Gui.dir/src/TGWindow.cxx.o
[ 93%] Building CXX object roofit/roofitcore/CMakeFiles/RooFitCore.dir/src/RooCacheManager.cxx.o
In file included from /Users/sara/work/root/tree/dataframe/src/RDFActionHelpers.cxx:11:
In file included from /Users/sara/work/root/tree/dataframe/inc/ROOT/RDF/ActionHelpers.hxx:36:
In file included from /Users/sara/work/root/tree/treeplayer/inc/TTreeReader.h:26:
In file included from /Users/sara/work/root/tree/treeplayer/inc/TTreeReaderUtils.h:26:
In file included from /Users/sara/work/root/tree/treeplayer/inc/TBranchProxy.h:23:
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:98:20: error: no type named 'ObjectPtr' in 'TClass'
   virtual TClass::ObjectPtr NewObject() const {
           ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:102:20: error: no type named 'ObjectPtr' in 'TClass'
   virtual TClass::ObjectPtr NewObject(void *arena) const {
           ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:115:20: error: no type named 'ObjectPtr' in 'TClass'
   virtual TClass::ObjectPtr NewObjectArray(Int_t nElements) const {
           ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:119:20: error: no type named 'ObjectPtr' in 'TClass'
   virtual TClass::ObjectPtr NewObjectArray(Int_t nElements, void *arena) const {
           ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:100:54: error: expected ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject();
                                                     ^
                                                     : 
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:100:35: note: to match this '?'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject();
                                  ^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:100:54: error: initializer list cannot be used on the right hand side of
      operator ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject();
                                                     ^~
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:100:45: error: no member named 'ObjectPtr' in 'TClass'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject();
                                    ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:104:54: error: expected ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject(arena);
                                                     ^
                                                     : 
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:104:35: note: to match this '?'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject(arena);
                                  ^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:104:54: error: initializer list cannot be used on the right hand side of
      operator ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject(arena);
                                                     ^~
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:104:45: error: no member named 'ObjectPtr' in 'TClass'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObject(arena);
                                    ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:117:54: error: expected ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements);
                                                     ^
                                                     : 
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:117:35: note: to match this '?'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements);
                                  ^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:117:54: error: initializer list cannot be used on the right hand side of
      operator ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements);
                                                     ^~
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:117:45: error: no member named 'ObjectPtr' in 'TClass'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements);
                                    ~~~~~~~~^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:121:54: error: expected ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements, arena);
                                                     ^
                                                     : 
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:121:35: note: to match this '?'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements, arena);
                                  ^
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:121:54: error: initializer list cannot be used on the right hand side of
      operator ':'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements, arena);
                                                     ^~
/Users/sara/work/root/core/cont/inc/TVirtualCollectionProxy.h:121:45: error: no member named 'ObjectPtr' in 'TClass'
      return fClass.GetClass()==0 ? TClass::ObjectPtr{} : fClass->NewObjectArray(nElements, arena);
                                    ~~~~~~~~^
16 errors generated.
make[2]: *** [tree/dataframe/CMakeFiles/ROOTDataFrame.dir/src/RDFActionHelpers.cxx.o] Error 1
make[1]: *** [tree/dataframe/CMakeFiles/ROOTDataFrame.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 93%] Building CXX object proof/proofplayer/CMakeFiles/ProofPlayer.dir/src/TPerfStats.cxx.o
[ 93%] Building CXX object gui/gui/CMakeFiles/Gui.dir/src/TGXYLayout.cxx.o

Any help would be appreciated. Thanks!

Please read tips for efficient and successful posting and posting code

_ROOT Version: root_v6.22.08
_Platform: Mac OS Big Sur 11.2.2
_Compiler: Apple clang version 12.0.0
_Target: arm64-apple-darwin20.3.0

TClass::ObjectPtr is a new type so most likely cmake picked up an (old) existing ROOT installation (and using its header). Try to start from a fresh build directory and if it is not enough (or the one you tried was already fresh/empty), try

ROOTSYS= LD_LIBRARY_PATH= cmake -Dimt=OFF -Dbuiltin_glew=ON …/

Hi @pcanal,

Thank you for your reply. I just tried it. But I’m still getting the same error. Any other options?

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.