ceph/README.cmake.md
J. Eric Ivancich e2c42e7b29 Renamed file to better indicate it contains markdown syntax.
Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
2016-05-25 15:44:47 -04:00

119 lines
2.8 KiB
Markdown

Overview
========
This is a work-in-progress CMake build system. Currently it builds
a limited set of targets, and only on Linux/Posix. The goals include
faster builds (see for yourself), cleaner builds (no libtool), and
improved portability (e.g., Windows).
Building Ceph
=============
To build out of source make an empty directory (often named **build**)
and run:
$ cmake [path to top level ceph-local directory]
To build in-source make an empty directory called (often named
**build**) and run **cmake**:
$ mkdir build
$ cd build
$ cmake ..
Once the configuring is done and the build files have been written to
the current build directory run:
$ make
To build only certain targets use:
$ make [target name]
To install:
$ make install
Options
=======
There is an option to build the RADOS gateway that is defaulted to ON
To build without the Rados Gateway:
$ cmake -DWITH_RADOSGW=OFF [path to top level ceph-local directory]
To build with debugging and alternate locations for a couple of
external dependencies:
$ cmake -DLEVELDB_PREFIX="/opt/hyperleveldb" -DOFED_PREFIX="/opt/ofed" \
-DCMAKE_INSTALL_PREFIX=/opt/accelio -DCMAKE_C_FLAGS="-O0 -g3 -gdwarf-4" \
..
More options will be implemented in the future.
Targets Built
==============
* ceph-mon
* ceph-osd
* ceph-mds
* cephfs
* ceph-syn
* rados
* radosgw (set ON as a default)
* librados-config
* ceph-conf
* monmaptool
* osdmaptool
* crushtool
* ceph-authtool
* init-ceph
* mkcephfs
* mon_store_converter
* ceph-fuse
Future work will be done to build more targets, check for libraries
and headers more thoroughly, and include tests to make this build
become more robust. CMake allows ceph to build onto many platforms
such as Windows though the shell scripts need bash/unix to run.
Developer Quick-Start
=====================
This is a CMake variant of the instructions found at
<http://docs.ceph.com/docs/jewel/dev/quick_guide>.
Development
-----------
The **run-cmake-check.sh** script will install Ceph dependencies,
compile everything in debug mode, and run a number of tests to verify
that the result behaves as expected. It will also build in-source
(i.e., create a *build* directory).
$ ./run-cmake-check.sh
Running a development deployment
--------------------------------
Assuming you ran **run-cmake-check.sh**, you'll have a **build**
directory from which you'll run the various commands.
$ cd build
Now you can run a development deployment:
$ ../src/vstart -d -n -x
You can also configure **vstart.sh** to use only one monitor and one
metadata server by using the following:
$ MON=1 MDS=1 ../src/vstart.sh -d -n -x
You can stop the development deployment with:
$ ../src/stop.sh
[See the non-cmake instructions for additional
details.](http://docs.ceph.com/docs/jewel/dev/quick_guide/)