ROOT 6.16.00 Compilation error on OSX 10.14 - ::signbit not found

Dear all,

I am trying to compile ROOT 6.16.00 on OSX 10.14 with clang 10.0 (from Xcode 10.1) and I am facing the same error reported in this topic.

In file included from input_line_9:19:
In file included from /Users/maurizio/Software/cern_root/root/cmake_build/include/ROOT/TExecutor.hxx:16:
In file included from /Users/maurizio/Software/cern_root/root/cmake_build/include/TList.h:25:
In file included from /Users/maurizio/Software/cern_root/root/cmake_build/include/TSeqCollection.h:25:
In file included from /Users/maurizio/Software/cern_root/root/cmake_build/include/TCollection.h:29:
In file included from /Users/maurizio/Software/cern_root/root/cmake_build/include/TString.h:26:
In file included from /Users/maurizio/Software/cern_root/root/cmake_build/include/TMathBase.h:32:
/Applications/ error: no member named 'signbit' in the global namespace
using ::signbit;

For the report starting from the first warnings in G__Core see here

For completeness, this is the output of my cmake configuration

For those that suggest to use home-brew, I need to compile different versions of ROOT to use in different cases depending on the software I need and I couldn’t find a simple brew solution for that.

Any help is much appreciated.



ROOT Version: 6.16.00
Platform: OSX 10.14
Compiler: Apple clang 10.0

Have you tried to do what suggested in the topic you have linked, to use xcode-select --install ?

I am currently using a source build on 10.14 with clang 10 and I have not seen this problem


Dear Lorenzo,

Many thanks for your suggestion. I did some test and it seems that I have the command line tools installed.
See below.



$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
$ softwareupdate --list
Software Update Tool

Finding available software
Software Update found the following new or updated software:
   * macOS 10.14.3 Update- 
	macOS 10.14.3 Update ( ), 1925808K [recommended] [restart]
$ xcode-select -p

And this is the output of brew config, you can see the version of Command Line Tools (CLT), OSX and XCode

$ brew config
HEAD: 6a912c369125caca5e1e3929e942bbb946ce6367
Last commit: 8 days ago
Core tap ORIGIN:
Core tap HEAD: 3652191bbdfe76535a4b642938c74a204aecdcce
Core tap last commit: 7 hours ago
HOMEBREW_LOGS: /Users/maurizio/Library/Logs/Homebrew
CPU: quad-core 64-bit kabylake
Homebrew Ruby: 2.3.7 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Clang: 10.0 build 1000
Git: 2.17.2 => /Applications/
Curl: 7.54.0 => /usr/bin/curl
macOS: 10.14.2-x86_64
Xcode: 10.1
XQuartz: 2.7.11 => /opt/X11

I have the same issue and my build fails at the exact same place.
I would love to find a solution. I’ve yet to successfully build ROOT on Mojave with Xcode 10.
Is this something to do with headers in /usr/include versus the headers in /Applications/ ?
Recommendations to install ROOT via Homebrew or Macports is not a solution. We need to identify why some Macs with Mojave are clearly having an issue building from source.

Neither of the files you linked are found when I click. Could you please paste the full CMake command line and a new link to the output? Most people having problems to build ROOT are mixing up system software from Mac OS with things from Homebrew. If you have Homebrew or MacPorts, I recommend using -Dmacos_native=ON when configuring ROOT. If I can reproduce the problem, I will help to fix it.

I’ve resolved my issues and I am now able to successfully install root v6.16.00 on macOS 10.14 with Xcode 10 and Homebrew. Apologies for the long post, but I want to share my experiences with you as I struggled to get any decent information about resolving this issue.

I think the issue arises either from the standard “upgrade” procedure to macOS 10.14 Mojave or if you install legacy headers. If you install macOS 10.14 Mojave properly you should not have a /usr/include directory. For whatever reason, Apple have decided to move away from this Unix standard and instead all headers are now packaged within Xcode itself. Some people, including myself may have installed the legacy headers as instructed in the Xcode 10 README for other projects:

The Command Line Tools package installs the macOS system headers inside the macOS SDK. Software that compiles with the installed tools will search for headers within the macOS SDK provided by either Xcode at:
or the Command Line Tools at:
depending on which is selected using xcode-select.
The command line tools will search the SDK for system headers by default.
However, some software may fail to build correctly against the SDK and require macOS headers to be installed in the base system under /usr/include.
If you are the maintainer of such software, we encourage you to update your project to work with the SDK or file a bug report for issues that are preventing you from doing so. As a workaround, an extra package is provided which will install the headers to the base system.
In a future release, this package will no longer be provided. You can find this package at:
 To make sure that you're using the intended version of the command line tools, run xcode-select -s <path to Xcode> or xcode select -s /Library/Developer/CommandLineTools after installing.

When attempting to install ROOT v6.14.06 and subsequently ROOTv6.16.00 I kept running into “signbit” errors.
I detailed these in another post Problem installing ROOT v6.14.06 on macOS Mojave version 10.14.2
I noticed that ROOT attempted to link to these legacy headers in /usr/include

There may be other ways to remove the /usr/include directory (sudo does not work by default), but the way I approached it was to reinstall Mojave using recovery mode i.e. restart your Mac and the hold down command + R keys. Once the recovery screen opens choose to install Mojave. Installing this way is not a clean install (i.e. you will not erase everything on your Mac) and only overwrites system files not personal files & applications etc. This reinstall process successfully removed the /usr/include directory and any legacy headers residing within. I then made sure that Xcode and the command line tools were all installed successfully.

After this I ran brew update, brew outdated, brew upgrade and brew cleanup. If you want to use your Homebrew mysql and openssl make sure you run brew info for each of these and follow the instructions to export these to the PKG_CONFIG_PATH (if you use) and PATH.

After doing all of this I reinstalled ROOT, but I ran into a further problem at 76% when ROOT tries to build RMySQL. I noticed the following in the ROOT c++ build command -L/usr/local/opt/mysql@5.7/lib -lmysqlclient -lssl -lcrypto. Naturally this fails because libssl is not in the Homebrew mysql directory. Basically ROOT doesn’t pickup the Homebrew openssl lib directory despite successfully finding the Homebrew openssl lib during the CMake configure step e.g. the configure output message states

Found OpenSSL: /usr/local/Cellar/openssl/1.0.2q/lib/libcrypto.dylib (found version "1.0.2q")

Anyway you can solve this issue by simply exporting the Homebrew openssl path to your library path i.e. export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

I have not attempted using the -Dmacos_native=ON flag, which maybe resolves the issues addressed here? For me at least, the steps I’ve outline above work and ROOT now installs from source on macOS 10.14.3 with Xcode 10.1 and Homebrew v2.0.1 and appears to work perfectly.

This is because ROOT is using mysql_config to get the necessary flags, and mysql_config probably thinkgs that the SSL library is in a standard directory, so that you don’t need the -L... flag for it. It’s not exactly a problem in ROOT.

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