and cc.has_header_symbol('time.h', 'clock_getres', args: compile_args_c),
)
-glib = dependency(
- 'glib-2.0', version: '>=2.40',
- required: get_option('modular_tests'),
- fallback: ['glib', 'libglib_dep'],
- default_options: [
- 'tests=false',
- ],
-)
-if platform_windows
- gio = dependency('gio-windows-2.0', required: glib.found())
- have_gio_unix = false
+# Controls whether message bus daemon is built. Tests which depend on
+# a running dbus-daemon will be disabled if message_bus is not set.
+message_bus = get_option('message_bus')
+
+if get_option('modular_tests').disabled()
+ glib = dependency('', required: false)
+else
+ glib = dependency(
+ 'glib-2.0', version: '>=2.40',
+ required: get_option('modular_tests'),
+ fallback: ['glib', 'libglib_dep'],
+ default_options: [
+ 'tests=false',
+ ],
+ )
+endif
+
+if glib.found()
+ if platform_windows
+ gio = dependency('gio-windows-2.0', required: glib.found())
+ have_gio_unix = false
+ else
+ gio = dependency('gio-unix-2.0', required: glib.found())
+ have_gio_unix = gio.found()
+ endif
else
- gio = dependency('gio-unix-2.0', required: glib.found())
- have_gio_unix = gio.found()
+ gio = dependency('', required: false)
+ have_gio_unix = false
endif
use_glib = glib.found() and gio.found()
config.set('DBUS_WITH_GLIB', use_glib)
-expat = dependency('expat')
+if message_bus
+ expat = dependency('expat')
+else
+ expat = dependency('', required: false)
+endif
+
if expat.type_name() == 'internal'
# Configure-time checks can't act on subprojects that haven't been
# built yet, but we know that subprojects/expat.wrap is a new enough
-use_traditional_activation = get_option('traditional_activation')
+use_traditional_activation = message_bus and get_option('traditional_activation')
config.set('ENABLE_TRADITIONAL_ACTIVATION', use_traditional_activation)
if not (use_systemd or use_traditional_activation)
windows_output_debug = get_option('windows_output_debug_string')
config.set('DBUS_USE_OUTPUT_DEBUG_STRING', windows_output_debug)
+# Controls whether the tools are built.
+tools = get_option('tools')
+
# DBUS_ENABLE_EMBEDDED_TESTS controls unit tests built in to .c files
# and some stuff in the test/ subdir.
embedded_tests = get_option('embedded_tests')
endif
subdir('dbus')
-subdir('bus')
-subdir('tools')
+if message_bus
+ subdir('bus')
+endif
+if tools
+ subdir('tools')
+endif
subdir('test')
subdir('doc')
subdir('cmake')
'Building Ducktype docs': ducktype.found(),
'Building XML docs': build_xml_docs,
'Building launchd support': use_launchd,
+ 'Building dbus-daemon': message_bus,
+ 'Building tools': tools,
'System bus socket': data_config.get('DBUS_SYSTEM_SOCKET'),
'System bus address': config.get('DBUS_SYSTEM_BUS_DEFAULT_ADDRESS'),
'System bus PID file': data_config.get('DBUS_SYSTEM_PID_FILE'),
description: 'Audit logging support for SELinux and AppArmor'
)
+option(
+ 'message_bus',
+ type: 'boolean',
+ value: 'true',
+ description: 'Enable dbus-daemon'
+)
+
option(
'modular_tests',
type: 'feature',
value: 'nobody'
)
+option(
+ 'tools',
+ type: 'boolean',
+ value: 'true',
+ description: 'Enable CLI tools such as dbus-send and dbus-monitor'
+)
+
option(
'traditional_activation',
type: 'boolean',
files += dst
endforeach
-files += meson.project_build_root() / 'bus' / 'session.conf'
-files += meson.current_build_dir() / 'valid-config-files/session.conf'
+if message_bus
+ files += meson.project_build_root() / 'bus' / 'session.conf'
+ files += meson.current_build_dir() / 'valid-config-files/session.conf'
-if platform_unix
- files += meson.project_build_root() / 'bus' / 'system.conf'
- files += meson.current_build_dir() / 'valid-config-files-system/system.conf'
+ if platform_unix
+ files += meson.project_build_root() / 'bus' / 'system.conf'
+ files += meson.current_build_dir() / 'valid-config-files-system/system.conf'
+ endif
endif
-
run_result = run_command(find_program('copy_data_for_tests.py'), files, check: true)
files_not_found = run_result.stdout().split()
test_env.set('DBUS_TEST_EXEC', meson.current_build_dir())
test_env.set('DBUS_TEST_DATA', meson.current_build_dir() / 'data')
-test_env.set('DBUS_TEST_DAEMON', dbus_daemon.full_path())
-test_env.set('DBUS_TEST_DBUS_LAUNCH', dbus_launch.full_path())
-test_env.set('DBUS_TEST_DBUS_MONITOR', dbus_monitor.full_path())
-test_env.set('DBUS_TEST_DBUS_SEND', dbus_send.full_path())
+if message_bus
+ test_env.set('DBUS_TEST_DAEMON', dbus_daemon.full_path())
+endif
+
+if tools
+ test_env.set('DBUS_TEST_DBUS_MONITOR', dbus_monitor.full_path())
+ test_env.set('DBUS_TEST_DBUS_SEND', dbus_send.full_path())
+endif
+
+if message_bus and tools
+ test_env.set('DBUS_TEST_DBUS_LAUNCH', dbus_launch.full_path())
+endif
-if platform_unix
- test_env.set('DBUS_TEST_DBUS_UUIDGEN', dbus_uuidgen.full_path())
+if platform_unix and tools
+ test_env.set('DBUS_TEST_DBUS_UUIDGEN', dbus_uuidgen.full_path())
endif
if platform_windows
test_data_config.set('TEST_LAUNCH_HELPER_BINARY', '/bin/false')
endif
-if platform_unix and use_glib
+if message_bus and tools and platform_unix and use_glib
test_apparmor_activation = executable('test-apparmor-activation',
'sd-activation.c',
include_directories: root_include,
# the "name-test" subdir in fact contains a bunch of tests now that need a
# temporary bus to be running to do stuff with. The directory should be renamed.
-subdir('name-test')
+if message_bus and tools
+ subdir('name-test')
+endif
tests = []
if embedded_tests
tests += [
- {
- 'name': 'bus',
- 'srcs': [ 'bus/main.c', 'bus/common.c' ],
- 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
- 'install': false,
- },
- {
- 'name': 'bus-dispatch-sha1',
- 'srcs': [ 'bus/dispatch-sha1.c', 'bus/common.c' ],
- 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
- 'install': false,
- 'suite': ['slow'],
- },
{
'name': 'marshal-recursive',
'srcs': [
},
]
+ if message_bus
+ tests += [
+ {
+ 'name': 'bus',
+ 'srcs': [ 'bus/main.c', 'bus/common.c' ],
+ 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
+ 'install': false,
+ },
+ {
+ 'name': 'bus-dispatch-sha1',
+ 'srcs': [ 'bus/dispatch-sha1.c', 'bus/common.c' ],
+ 'link': [ libdbus_testutils, libdbus_daemon_internal, ],
+ 'install': false,
+ 'suite': ['slow'],
+ },
+ ]
+ endif
+
if use_traditional_activation
tests += [
{
suites = test.get('suite', ['dbus'])
install = test.get('install', true)
+ if suites.contains('runs-dbus-daemon') and not (message_bus and tools)
+ continue
+ endif
+
if test.get('test', true)
exe_name = 'test-' + name
else
scripts = []
-if platform_unix and use_glib
+if message_bus and tools and platform_unix and use_glib
scripts += [
{ 'name': 'test-dbus-daemon-fork.sh', },
{ 'name': 'transient-services.sh',
]
endif
-dbus_launch = executable('dbus-launch',
- dbus_launch_sources,
- include_directories: root_include,
- link_with: libdbus,
- dependencies: [ x11, ],
- install: true,
-)
-
+if message_bus
+ dbus_launch = executable('dbus-launch',
+ dbus_launch_sources,
+ include_directories: root_include,
+ link_with: libdbus,
+ dependencies: [ x11, ],
+ install: true,
+ )
+endif
dbus_monitor = executable('dbus-monitor',
'dbus-print-message.c',
install: true,
)
-dbus_run_session = executable('dbus-run-session',
- 'dbus-run-session.c',
- 'tool-common.c',
- include_directories: root_include,
- link_with: libdbus_internal,
- install: true,
-)
+if message_bus
+ dbus_run_session = executable('dbus-run-session',
+ 'dbus-run-session.c',
+ 'tool-common.c',
+ include_directories: root_include,
+ link_with: libdbus_internal,
+ install: true,
+ )
+endif
dbus_send = executable('dbus-send',
'dbus-print-message.c',