Installation for macOS
- This guide supplements the information available on the Installation for Linux page, and includes the steps required to get GAMBIT up and running on a clean Mac Mini with an M1 (arm64) processor. The steps should however be applicable to other Macs as well.
- This guide assumes that you want to use the AppleClang compiler that ships with macOS. If you want to use GCC instead, you can certainly do that, it’s just more work. You need to install it, install whatever dependencies are relevant for you, and then follow the instructions on the Installation for Linux page. Be careful to specify that you want to use GCC everywhere; you may run into linking problems if you build some dependencies accidentally with Clang. In general it is easier to just build using the built-in AppleClang.
Installing GAMBIT with Clang
Upgrade to latest version of
numpy will fail to install if you don’t):
python3 -m pip install --upgrade pip
NB: You must use the system
pip3 in the steps below)! In case of doubt (if you have installed other Python versions) check with
which python3 and
which pip3 what
pip3 points to, and use the following instead:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/$USER/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
brew install boost brew install cmake brew install eigen brew install gfortran brew install gsl brew install firstname.lastname@example.org brew install libomp brew install libx11 brew install ossp-uuid brew install pkg-config pip3 install numpy pip3 install pyyaml
If you want scanners to be parallelised:
brew install openmpi
If you want to use the classy or DarkAges backends:
pip3 install cython pip3 install scipy
If you want to use the DarkAges backend:
pip3 install dill pip3 install future
echo 'export PATH="/email@example.com/bin:$PATH"' >> ~/.zprofile . ~/.zprofile
Configure GAMBIT. Key optional extras:
-D WITH_MPI=ONif you want scanners to be parallelised.
-D WITH_HEPMC=ONif you want HepMC enabled.
cmake -D PYTHON_EXECUTABLE=/usr/bin/python3 -D PYTHON_LIBRARY=/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/Current/Python3 -D PYTHON_INCLUDE_DIR=/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Headers ..
From this point, refer to the Building GAMBIT section of the Linux guide for possible
make targets and
Installing ROOT (optional)
If you want to use Restframes, GReAT or the HepLike backend, prepare for some pain: you also need ROOT. First install XCode from the app store (yes, all 12.6GB of it).
You can then do:
brew install root echo 'pushd /opt/homebrew >/dev/null; . bin/thisroot.sh; popd >/dev/null' >> ~/.zprofile . ~/.zprofile
cmake in your GAMBIT
build dir with the optional extra(s):
-D WITH_ROOT=ONif you want just ROOT enabled (and therefore GReAT and HepLike but no RestFrames).
-D WITH_ROOT=ON -DWITH_RESTFRAMES=ONif you want RestFrames too.
If you want to use GReAT, now do:
make great cmake ..
Now, rebuild GAMBIT itself (
make -j8 or similar, depending on how many cores you have). You should also be able to build HepLike under the
make backends target, or directly with:
GAMBIT and GReAT should work fine like this. Restframes may or may not manage to link in the end, depending on your version of OSX, your hardware and exactly when you are trying to do this. The situation is exactly the same if you instead build ROOT from source. At the time of writing, the ROOT authors have not updated ROOT to work with recent versions of Xcode (>13.0), and you will get linking errors arising from hardcoded links in the ROOT binaries to various OSX libraries that changed location between XCode 13.0 and 13.1:
ld: file not found: /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication for architecture arm64
Of course you are a Mac user and likely expect that “everything just works”; have a word to the ROOT authors about that, and the wisdom of hardcoding library paths rather than determining (or even at least confirming!) them at cmake time.