summaryrefslogtreecommitdiffstats
path: root/README.cmake.md
blob: 347f2ed09d4e2bf69bb49b3e49b58c208f8ea0ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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" \
      ..

If you often pipe `make`to `less` and would like to maintain the
diagnostic colors for errors and warnings (and if your compiler
supports it), you can invoke `cmake` with:

    $ cmake -DDIAGNOSTICS_COLOR=always [...]

Then you'll get the diagnostic colors when you execute:

    $ make | less -R

Other available values for DIAGNOSTICS_COLOR are 'auto' (default) and
'never'.


**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/)