Home | News | Documentation | Download

ROOT 6.22 binary on macOS with C++14/17

Hello,
Is there a plan to provide a binary distribution for macOS (10.15 or 11) with C++14/17 support or should I try to compile it from source (I never compiled it myself so I’m a bit worried about features/dependencies)

Thanks,
Zdenek

ROOT Version: 6.22/02
Platform: macOS 10.15 or 11
Compiler: clang12


For macOS 11 with the current master branch, we are building with C++17. That should be released with ROOT 6.24 (@Axel please correct me if I’m wrong).

…and you can grab the nightly from https://root.cern/download/nightly/?C=M;O=D

That said: our macOS nightlies are broken! I’ll fix them; once done they will include a macOS 11 Big Sur build for you to try. I’ll be back…

Once https://github.com/root-project/root/pull/6832 is in we will get
macOS nightlies, including Big Sur.

Hi,

Grab it here: curl -O https://root.cern/download/nightly/root_v6.23.01.macosx64-10.15-clang120.debug.tar.gz

Let us know whether you see any problems!

Cheers, Axel.

Hi,
This version is still C++11 only?

When I started it for the first time, I got

IncrementalExecutor::executeFunction: symbol '_ZN4Vc_16Common15checkLibraryAbiEjjPKc' unresolved while linking function '_GLOBAL__sub_I_cling_module_1'!
You are probably missing the definition of Vc_1::Common::checkLibraryAbi(unsigned int, unsigned int, char const*)

but it doesn’t happen on subsequent starts

My problem with C++11/14 is that my code uses auto lambda functions for RDataFrame ('auto' return without trailing return type; deduced return types are a C++14 extension) so it won’t compile with C++11, when I switch to C++14
I get errors with

.../root_623/root/include/ROOT/RDF/ActionHelpers.hxx:1451:26:error: 
      reference to 'index_sequence_for' is ambiguous
      using ind_t = std::index_sequence_for<ColTypes...>;

Cheers,
Zdenek

We build with whatever the compiler’s default version is; root [0] __cplusplus will tell you. If that’s not what you need then you’d have to build ROOT yourself.

I’m not an expert, but I thought that c++14 is the default in clang++ for some time?
(but I don’t know if this concerns xcode/apple/llvm version)?

in my case

root [0] __cplusplus
(long) 201103

for root_v6.23.01.macosx64-10.15-clang120.debug.tar.gz
but my Apple clang version 12.0.0 (clang-1200.0.32.27) with man clang++ shows gnu++14 as default

Try this:

echo '__cplusplus' | clang++ -E -x c++ -

For me and my clang 12.0.0 it says 199711L. Which we change to C++11 because we need it. I see what man clang++ says (it says it for me, too) but that seems to have only a weak correlation with reality :slight_smile: