dbus/INSTALL
Simon McVittie 60d6f41c67 INSTALL: libexpat is not required if the dbus-daemon is not built
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-12-16 10:59:42 +00:00

131 lines
4.2 KiB
Text

DBus Installation
=================
Quick start
===========
This branch of dbus can be built by using Meson or CMake.
The Meson build system is the recommended build system for the master
branch (versions >= 1.15.0), except when building on Windows, for which
CMake is recommended (this recommendation might change to Meson in future).
Meson only supports out-of-tree builds, and must be passed a directory to put
built and generated sources into. We'll call that directory "build" here. It's
recommended to create a separate build directory for each configuration you
might want to use.
Basic configuration is done with:
``` sh
meson build/
```
This will create the build directory. If any dependencies are missing, you can
install them, or try to remove the dependency with a Meson configuration option
(see below).
Older versions of dbus required Autotools or CMake, with Autotools
recommended for Unix systems and CMake recommended for Windows systems.
Configuration flags
===================
When using Meson, to review the options which Meson chose, run:
``` sh
meson configure build/
```
With additional arguments meson configure can be used to change options for a
previously configured build directory. All options passed to this command are in
the form `-D "option"="value"`. For example:
``` sh
meson configure build/ -Dprefix=/tmp/install
```
See `meson_options.txt` for details of dbus-specific options, and
<https://mesonbuild.com/Builtin-options.html> for details of generic
Meson options.
When using CMake, inspect README.cmake to see the possible
configuration options and environment variables.
Building
========
To build with meson, here is a quick guide:
``` sh
cd dbus
meson setup build/ && cd build/
meson compile
meson test
```
Full build instructions can be found on mesonbuild website:
https://mesonbuild.com/Running-Meson.html
Building with CMake
-------------------
The CMake equivalent is:
``` sh
cd <dbus-src-root>
cmake -G <makefile-generator-name> [-D<option>] -B dbus-build-dir
cmake --build <dbus-build-dir>
cmake --build <dbus-build-dir> -t check
```
The installation of the build with CMake is performed with:
``` sh
cmake --build <dbus-build-dir> -t install [DESTDIR=<install-dir>]
```
When using makefile generator `-t install/fast` can also be used,
which prevents rebuilding.
CMake will automatically determine whether to build some features
based on what tools and/or libraries are installed on the host system.
The default build behaviour can be overridden using the
-DENABLE_<XXX> arguments to cmake.
A typical scenario in which it is desirable to override automatic
detection, is during packaging of binary builds, where a predictable
dependancy chain is required. For more details on cmake installation,
consult http://www.cmake.org/cmake/help/help.html.
Building as a subproject
========================
libdbus can be built as a Meson subproject, allowing larger projects that
require it to default to a system copy if available but fall back to a
vendored or downloaded copy if necessary. When doing this, it is usually
best to disable the shared library, dbus-daemon, tools and tests, leaving
only a static library: please see test/use-as-subproject/meson.build for
sample code and suggested build options.
External software dependencies
==============================
Usually required:
- expat (not required if dbus-daemon is not built)
Optional:
- libapparmor (for AppArmor LSM integration on Linux)
- libaudit (for AppArmor/SELinux audit logging on Linux)
- libcap-ng (for capabilities management on Linux)
- libselinux (for SELinux LSM integration on Linux)
- libsystemd (for logging, socket activation and session tracking on Linux)
- libX11 (for X11 autolaunching on Unix platforms)
- doxygen (for API documentation)
- xsltproc (for Spec & other XML documentation)
- Docbook XSL stylesheets (for Spec & other XML documentation)
- ducktype (for additional documentation)
- qhelpgenerator (for additional documentation)
- yelp-build (for additional documentation)
- GLib (for improved test coverage)
- Python 3 (for improved test coverage)