From: Bastien Nocera <hadess@hadess.net>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ v9 07/15] build: Add option to allow disabling bluetoothd
Date: Fri, 24 Apr 2026 11:11:10 +0200 [thread overview]
Message-ID: <20260424091324.3097084-8-hadess@hadess.net> (raw)
In-Reply-To: <20260424091324.3097084-1-hadess@hadess.net>
This makes it possible to build, for example, just the library, or the
command-line client, without also building and installing bluetoothd.
---
doc/meson.build | 3 +-
meson.build | 8 ++-
meson_options.txt | 1 +
src/meson.build | 164 +++++++++++++++++++++++-----------------------
4 files changed, 92 insertions(+), 84 deletions(-)
diff --git a/doc/meson.build b/doc/meson.build
index 3d5ccd7d3034..498b6a479067 100644
--- a/doc/meson.build
+++ b/doc/meson.build
@@ -146,7 +146,8 @@ bluetoothd_rst = configure_file(
output: 'bluetoothd.rst',
configuration: man_conf
)
-if rst2man.found()
+
+if get_option('daemon').enabled() and rst2man.found()
custom_target(
input: bluetoothd_rst,
output: 'bluetoothd.8',
diff --git a/meson.build b/meson.build
index 0b5cc0b7ce69..f716eae1f063 100644
--- a/meson.build
+++ b/meson.build
@@ -293,8 +293,12 @@ endif
# Fix permissions on install
install = find_program('install')
sh = find_program('sh')
-meson.add_install_script(sh, '-c', 'install -dm755 ${DESTDIR}/' + configdir)
-meson.add_install_script(sh, '-c', 'install -dm700 ${DESTDIR}/' + storagedir)
+if get_option('daemon').enabled()
+ meson.add_install_script(sh, '-c', 'install -dm755 ${DESTDIR}/' + configdir)
+endif
+if get_option('daemon').enabled() or get_option('mesh').enabled()
+ meson.add_install_script(sh, '-c', 'install -dm700 ${DESTDIR}/' + storagedir)
+endif
if get_option('mesh').enabled()
meson.add_install_script(sh, '-c', 'install -dm700 ${DESTDIR}/' + meshstoragedir)
endif
diff --git a/meson_options.txt b/meson_options.txt
index 54cfdbb0d7c1..79e75e33ddaf 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,6 +6,7 @@ option('tests', type: 'feature', value: 'auto', description: 'Enable testing too
option('tools', type: 'feature', value: 'enabled', description: 'Enable Bluetooth tools')
option('monitor', type: 'feature', value: 'enabled', description: 'Enable Bluetooth monitor')
option('client', type: 'feature', value: 'enabled', description: 'Enable command line client')
+option('daemon', type: 'feature', value: 'enabled', description: 'Enable bluetoothd daemon')
option('systemd', type: 'feature', value: 'enabled', description: 'Install systemd service files')
option('logind', type: 'feature', value: 'enabled', description: 'Enable logind integration in obexd')
option('udev', type: 'feature', value: 'enabled', description: 'Enable udev device support in tools')
diff --git a/src/meson.build b/src/meson.build
index 65b7131c86b4..4962b782a7b6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,88 +1,90 @@
subdir('shared')
-if get_option('datafiles').allowed()
- install_data('bluetooth.conf',
- install_dir: dbusconfdir / 'dbus-1/system.d'
- )
- install_data('main.conf',
- install_dir: configdir
- )
-endif
+if get_option('daemon').allowed()
+ if get_option('datafiles').allowed()
+ install_data('bluetooth.conf',
+ install_dir: dbusconfdir / 'dbus-1/system.d'
+ )
+ install_data('main.conf',
+ install_dir: configdir
+ )
+ endif
-if systemd_dep.found()
- configure_file(
- input: 'bluetooth.service.in',
- output: 'bluetooth.service',
- install: true,
- install_dir: systemdsystemunitdir,
- configuration: service_conf
+ if systemd_dep.found()
+ configure_file(
+ input: 'bluetooth.service.in',
+ output: 'bluetooth.service',
+ install: true,
+ install_dir: systemdsystemunitdir,
+ configuration: service_conf
+ )
+
+ install_data('org.bluez.service',
+ install_dir: dbussystembusdir
+ )
+ endif
+
+ genbuiltin = find_program('genbuiltin')
+ builtin_h = custom_target('src-builtin.h',
+ output: 'builtin.h',
+ capture: true,
+ command: [ genbuiltin, builtin_modules ]
)
- install_data('org.bluez.service',
- install_dir: dbussystembusdir
+ executable('bluetoothd',
+ sources: [ builtin_sources,
+ attrib_sources,
+ btio_sources,
+ builtin_h,
+ 'main.c',
+ 'log.c',
+ 'backtrace.c',
+ 'rfkill.c',
+ 'sdpd-server.c',
+ 'sdpd-request.c',
+ 'sdpd-service.c',
+ 'sdpd-database.c',
+ 'gatt-database.c',
+ 'sdp-xml.c',
+ 'sdp-client.c',
+ 'textfile.c',
+ 'uuid-helper.c',
+ 'plugin.c',
+ 'storage.c',
+ 'advertising.c',
+ 'agent.c',
+ 'bearer.c',
+ 'error.c',
+ 'adapter.c',
+ 'profile.c',
+ 'service.c',
+ 'gatt-client.c',
+ 'device.c',
+ 'dbus-common.c',
+ 'eir.c',
+ 'adv_monitor.c',
+ 'battery.c',
+ 'settings.c',
+ 'set.c' ],
+ dependencies: [
+ libbluetooth_internal_dep,
+ libgdbus_internal_dep,
+ libshared_glib_dep,
+ backtrace_dep,
+ glib_dep,
+ dbus_dep,
+ udevlib_dep,
+ builtin_deps
+ ],
+ override_options: [ 'b_lundef=false' ],
+ c_args: [
+ '-DBLUETOOTH_PLUGIN_BUILTIN',
+ '-DPLUGINDIR="@0@"'.format(plugindir),
+ '-DSTORAGEDIR="@0@"'.format(storagedir),
+ '-DCONFIGDIR="@0@"'.format(configdir)
+ ],
+ link_args: [ '-Wl,--gc-sections', external_plugins_link_args ],
+ install: true,
+ install_dir: pkglibexecdir
)
endif
-
-genbuiltin = find_program('genbuiltin')
-builtin_h = custom_target('src-builtin.h',
- output: 'builtin.h',
- capture: true,
- command: [ genbuiltin, builtin_modules ]
-)
-
-executable('bluetoothd',
- sources: [ builtin_sources,
- attrib_sources,
- btio_sources,
- builtin_h,
- 'main.c',
- 'log.c',
- 'backtrace.c',
- 'rfkill.c',
- 'sdpd-server.c',
- 'sdpd-request.c',
- 'sdpd-service.c',
- 'sdpd-database.c',
- 'gatt-database.c',
- 'sdp-xml.c',
- 'sdp-client.c',
- 'textfile.c',
- 'uuid-helper.c',
- 'plugin.c',
- 'storage.c',
- 'advertising.c',
- 'agent.c',
- 'bearer.c',
- 'error.c',
- 'adapter.c',
- 'profile.c',
- 'service.c',
- 'gatt-client.c',
- 'device.c',
- 'dbus-common.c',
- 'eir.c',
- 'adv_monitor.c',
- 'battery.c',
- 'settings.c',
- 'set.c' ],
- dependencies: [
- libbluetooth_internal_dep,
- libgdbus_internal_dep,
- libshared_glib_dep,
- backtrace_dep,
- glib_dep,
- dbus_dep,
- udevlib_dep,
- builtin_deps
- ],
- override_options: [ 'b_lundef=false' ],
- c_args: [
- '-DBLUETOOTH_PLUGIN_BUILTIN',
- '-DPLUGINDIR="@0@"'.format(plugindir),
- '-DSTORAGEDIR="@0@"'.format(storagedir),
- '-DCONFIGDIR="@0@"'.format(configdir)
- ],
- link_args: [ '-Wl,--gc-sections', external_plugins_link_args ],
- install: true,
- install_dir: pkglibexecdir
-)
--
2.53.0
next prev parent reply other threads:[~2026-04-24 9:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-24 9:11 [PATCH BlueZ v9 00/15] Add meson build system and HTML docs Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 01/15] build: Add meson wrap for libell Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 02/15] build: Add meson build system Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 03/15] build: Separate systemd and libsystemd dependencies Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 04/15] tools: Install gatttool if deprecated tools are enabled Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 05/15] tools: Install avinfo tool by default Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 06/15] emulator: Install the emulator if built Bastien Nocera
2026-04-24 9:11 ` Bastien Nocera [this message]
2026-04-24 9:11 ` [PATCH BlueZ v9 08/15] unit: Run test-bap tests concurrently Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 09/15] unit: Make gobex-transfer tests run concurrently Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 10/15] build: Only build profiles if the daemon is built Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 11/15] build: Only build gdbus library if there is a user Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 12/15] unit: Add integration tests Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 13/15] doc: Add HTML documentation Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 14/15] github: Add docs deployment Bastien Nocera
2026-04-24 9:11 ` [PATCH BlueZ v9 15/15] doc: Add introduction to GATT Bastien Nocera
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260424091324.3097084-8-hadess@hadess.net \
--to=hadess@hadess.net \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox