From b371c1185c9cf937f48d2ed083d708e80211f38e Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Tue, 3 Jun 2025 16:19:27 +0200 Subject: Add build option FLTK_USE_DBUS to allow build w/o dbus (PR #1252) Thanks to @lanodan for most of the source code. --- CMake/options.cmake | 1 + CMake/variables.cmake | 5 ++++- CMakeLists.txt | 1 + README.CMake.txt | 3 +++ src/CMakeLists.txt | 14 ++++++++------ 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/CMake/options.cmake b/CMake/options.cmake index 1ef64aad4..ea265515b 100644 --- a/CMake/options.cmake +++ b/CMake/options.cmake @@ -320,6 +320,7 @@ if(UNIX) endif() unset(FLTK_GRAPHICS_CAIRO CACHE) set(FLTK_GRAPHICS_CAIRO TRUE CACHE BOOL "all drawing to X11 windows uses Cairo") + option(FLTK_USE_DBUS "use D-Bus - required to detect the cursor theme" ON) option(FLTK_USE_SYSTEM_LIBDECOR "use libdecor from the system" ON) set(USE_SYSTEM_LIBDECOR 1) unset(FLTK_USE_XRENDER CACHE) diff --git a/CMake/variables.cmake b/CMake/variables.cmake index b2993f032..6fcaed395 100644 --- a/CMake/variables.cmake +++ b/CMake/variables.cmake @@ -44,9 +44,12 @@ if(WIN32) elseif(APPLE AND NOT FLTK_BACKEND_X11) list(APPEND FLTK_LDLIBS ${FLTK_COCOA_FRAMEWORKS}) elseif(FLTK_USE_WAYLAND) - foreach(_lib WLDCURSOR WLDCLIENT XKBCOMMON DBUS) + foreach(_lib WLDCURSOR WLDCLIENT XKBCOMMON) list(APPEND FLTK_LDLIBS "${${_lib}_LDFLAGS}") endforeach() + if(FLTK_USE_DBUS AND DBUS_FOUND) + list(APPEND FLTK_LDLIBS "${DBUS_LDFLAGS}") + endif() if(USE_SYSTEM_LIBDECOR) list(APPEND FLTK_LDLIBS ${SYSTEM_LIBDECOR_LDFLAGS}) endif(USE_SYSTEM_LIBDECOR) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a45b5cc1..b846da477 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -411,6 +411,7 @@ if(FLTK_USE_WAYLAND) else() fl_summary("" "Libdecor = Bundled") endif() + fl_summary_yn("Use DBUS" DBUS_FOUND) endif(FLTK_USE_WAYLAND) message("") diff --git a/README.CMake.txt b/README.CMake.txt index 6f1e5147c..c774a59cb 100644 --- a/README.CMake.txt +++ b/README.CMake.txt @@ -288,6 +288,9 @@ FLTK_OPTION_SVG - default ON FLTK has a built-in SVG library and can create (write) SVG image files. Turning this option off disables SVG (read and write) support. +FLTK_USE_DBUS - default ON (Wayland only). + Meaningful only under Wayland. Allows FLTK to detect the current cursor theme. + FLTK_USE_LIBDECOR_GTK - default ON (Wayland only). Meaningful only under Wayland and if FLTK_USE_SYSTEM_LIBDECOR is 'OFF'. Allows to use libdecor's GTK plugin to draw window titlebars. Otherwise diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ed1cfc276..b43794804 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -532,14 +532,16 @@ if(FLTK_USE_X11) endif(FLTK_USE_X11) if(FLTK_USE_WAYLAND) - pkg_check_modules(DBUS IMPORTED_TARGET dbus-1) set(IDIRS "${CMAKE_CURRENT_BINARY_DIR}") set(CDEFS "_GNU_SOURCE;HAVE_MEMFD_CREATE;HAVE_MKOSTEMP;HAVE_POSIX_FALLOCATE") set(COPTS "-fPIC") - if(DBUS_FOUND) - set(CDEFS "${CDEFS};HAS_DBUS") - set(IDIRS "${IDIRS};${DBUS_INCLUDE_DIRS}") - endif(DBUS_FOUND) + if(FLTK_USE_DBUS) + pkg_check_modules(DBUS IMPORTED_TARGET dbus-1) + if(DBUS_FOUND) + set(CDEFS "${CDEFS};HAS_DBUS") + set(IDIRS "${IDIRS};${DBUS_INCLUDE_DIRS}") + endif(DBUS_FOUND) + endif(FLTK_USE_DBUS) if(USE_SYSTEM_LIBDECOR) set(CDEFS "${CDEFS};USE_SYSTEM_LIBDECOR;LIBDECOR_PLUGIN_DIR=${LIBDECOR_PLUGIN_DIR}") if(GTK_FOUND) @@ -809,7 +811,7 @@ if(UNIX AND FLTK_USE_WAYLAND) append_optional_libs("PkgConfig::WLDCURSOR;PkgConfig::WLDCLIENT;PkgConfig::XKBCOMMON") - if(DBUS_FOUND) + if(FLTK_USE_DBUS AND DBUS_FOUND) append_optional_libs(PkgConfig::DBUS) endif() -- cgit v1.2.3