build on MacOS

Since we’ve switched to C++ 17, and the default clang shipped with Xcode 9 does not support all the C++ 17 language features, it’s suggested to install clang using brew:

brew install --with-toolchain llvm

and install all the necessary bits:

brew install nss snappy ccache cmake pkg-config
pip install cython

install FUSE if you want to build the FUSE support:

brew cask install osxfuse

apply the patch at https://gist.github.com/tchaikov/c3f324a7c36fc9774739cea319d5c49b , to address https://public.kitware.com/Bug/view.php?id=15943 . We cannot bump up the required cmake version yet, because RHEL/CentOS does not have the newer cmake yet.

then, under the source directory of Ceph:

mkdir build
cd build
PKG_CONFIG_PATH=/usr/local/Cellar/nss/3.33/lib/pkgconfig \
  CC=/usr/local/opt/llvm/bin/clang \
  CXX=/usr/local/opt/llvm/bin/clang++ \
  cmake .. -DBOOST_J=4 \
  -DENABLE_GIT_VERSION=OFF \
  -DWITH_MANPAGE=OFF \
  -DWITH_LIBCEPHFS=OFF \
  -DWITH_XFS=OFF \
  -DWITH_KRBD=OFF \
  -DWITH_LTTNG=OFF \
  -DWITH_BABELTRACE=OFF \
  -DWITH_BLUESTORE=OFF \
  -DWITH_RADOSGW=OFF \
  -DWITH_SPDK=OFF \
  -DSNAPPY_ROOT_DIR=/usr/local/Cellar/snappy/1.1.7

The paths to nss and snappy might vary if newer versions of the packages are installed.

Currently, the most practical uses for Ceph on MacOS might be FUSE and some other librados based applications.