ceph/README.windows.rst
Lucian Petrut d024506f64 cmake: allow building CLI tools on Windows
For now, we'll only build some of the Ceph CLI binaries when
targeting Windows. In order to avoid over complicating the
cmake files, it was decided that the build script should pick
the targets that are to be compiled.

To keep the build script relatively simple, we'll stop supporting
Ninja, sticking to "make". Another reason for that is that some
targets cannot be compiled using Ninja:

http://paste.openstack.org/raw/796649/

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-08-31 12:11:55 +00:00

50 lines
2.0 KiB
ReStructuredText

About
-----
Ceph Windows support is currently a work in progress. For now, the main focus
is the client side, allowing Windows hosts to consume rados, rbd and cephfs
resources.
Building
--------
At the moment, mingw gcc is the only supported compiler for building ceph
components for Windows. Support for msvc and clang will be added soon.
`win32_build.sh`_ can be used for cross compiling Ceph and its dependencies.
It may be called from a Linux environment, including Windows Subsystem for
Linux. MSYS2 and CygWin may also work but those weren't tested.
.. _win32_build.sh: win32_build.sh
The script accepts the following flags:
============ =============================== ===============================
Flag Description Default value
============ =============================== ===============================
CEPH_DIR The Ceph source code directory. The same as the script.
BUILD_DIR The directory where the $CEPH_DIR/build
generated artifacts will be
placed.
DEPS_DIR The directory where the Ceph $CEPH_DIR/build.deps
dependencies will be built.
NUM_WORKERS The number of workers to use The number of vcpus
when building Ceph. available
CLEAN_BUILD Clean the build directory.
SKIP_BUILD Run cmake without actually
performing the build.
============ =============================== ===============================
Current status
--------------
The rados and rbd binaries and libs compile successfully and can be used on
Windows, successfully connecting to the cluster and consuming pools.
The libraries have to be built statically at the moment. The reason is that
there are a few circular library dependencies or unspecified dependencies,
which isn't supported when building DLLs. This mostly affects ``cls`` libraries.
A significant number of tests from the ``tests`` directory have been port,
providing adequate coverage.