+++ /dev/null
-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/)
make
This assumes you make your build dir a subdirectory of the ceph.git
-checkout. If you put it elsewhere, just replace .. above with a
+checkout. If you put it elsewhere, just replace .. above with a
correct path to the checkout.
+To build only certain targets use:
+
+ make [target name]
+
+To install:
+
+ make install
+
+CMake Options
+-------------
+
+If you run the `cmake` command by hand, there are many options you can
+set with "-D". For example the option to build the RADOS Gateway is
+defaulted to ON. To build without the RADOS Gateway:
+
+ cmake -DWITH_RADOSGW=OFF [path to top level ceph directory]
+
+Another example below is building 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" \
+ ..
+
+To view an exhaustive list of -D options, you can invoke `cmake` with:
+
+ cmake -LH
+
+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'.
+
Building packages
-----------------
Running unit tests
==================
-To run build and run all tests, use ctest:
+To build and run all tests (in parallel using all processors), use `ctest`:
cd build
make
ctest -j$(nproc)
-To run an individual test manually, run the ctest command with -R
-(regex matching):
+(Note: Many targets built from src/test are not run using `ctest`.
+Targets starting with "unittest" are run in `make check` and thus can
+be run with `ctest`. Targets starting with "ceph_test" can not, and should
+be run by hand.)
+
+To build and run all tests and their dependencies without other
+unnecessary targets in Ceph:
+
+ cd build
+ make check -j$(nproc)
+
+To run an individual test manually, run `ctest` with -R (regex matching):
+
+ ctest -R [regex matching test name(s)]
- ctest -R [test name]
+(Note: `ctest` does not build the test it's running or the dependencies needed
+to run it)
To run an individual test manually and see all the tests output, run
-the ctest command with the -V (verbose) flag:
+`ctest` with the -V (verbose) flag:
- ctest -V -R [test name]
+ ctest -V -R [regex matching test name(s)]
-To run an tests manually and run the jobs in parallel, run the ctest
-command with the -j flag:
+To run an tests manually and run the jobs in parallel, run `ctest` with
+the -j flag:
ctest -j [number of jobs]
-There are many other flags you can give the ctest command for better control
+There are many other flags you can give `ctest` for better control
over manual test execution. To view these options run:
man ctest