@@ -5,58 +5,64 @@ set(QT_MIN_VERSION "6.6.0")
55set (CMAKE_CXX_STANDARD 20)
66set (CMAKE_CXX_STANDARD_REQUIRED ON )
77
8- option (BUILD_TESTING "Build tests" OFF )
9- option (ASAN "Enable ASAN" OFF ) # note: better output with gcc than clang
10- option (FRAME_POINTERS "Always keep frame pointers" ${ASAN} )
11-
12- option (INSTALL_QML_LIB "Installing the QML lib" ON )
13- option (CRASH_REPORTER "Enable the crash reporter" ON )
14- option (USE_JEMALLOC "Use jemalloc over the system malloc implementation" ON )
15- option (SOCKETS "Enable unix socket support" ON )
16- option (WAYLAND "Enable wayland support" ON )
17- option (WAYLAND_WLR_LAYERSHELL "Support the zwlr_layer_shell_v1 wayland protocol" ON )
18- option (WAYLAND_SESSION_LOCK "Support the ext_session_lock_v1 wayland protocol" ON )
19- option (WAYLAND_TOPLEVEL_MANAGEMENT "Support the zwlr_foreign_toplevel_management_v1 wayland protocol" ON )
20- option (X11 "Enable X11 support" ON )
21- option (HYPRLAND "Support hyprland specific features" ON )
22- option (HYPRLAND_IPC "Hyprland IPC" ON )
23- option (HYPRLAND_GLOBAL_SHORTCUTS "Hyprland Global Shortcuts" ON )
24- option (HYPRLAND_FOCUS_GRAB "Hyprland Focus Grabbing" ON )
25- option (SERVICE_STATUS_NOTIFIER "StatusNotifierItem service" ON )
26- option (SERVICE_PIPEWIRE "PipeWire service" ON )
27- option (SERVICE_MPRIS "Mpris service" ON )
28- option (SERVICE_PAM "Pam service" ON )
29- option (SERVICE_GREETD "Greet service" ON )
30- option (SERVICE_UPOWER "UPower service" ON )
31- option (SERVICE_NOTIFICATIONS "Notification server" ON )
8+ set (QS_BUILD_OPTIONS "" )
9+
10+ function (boption VAR NAME DEFAULT)
11+ cmake_parse_arguments (PARSE_ARGV 3 arg "" "REQUIRES" "" )
12+
13+ option (${VAR} ${NAME} ${DEFAULT} )
14+
15+ set (STATUS "${VAR} _status" )
16+ set (EFFECTIVE "${VAR} _effective" )
17+ set (${STATUS} ${${VAR} })
18+ set (${EFFECTIVE} ${${VAR} })
19+
20+ if (${${VAR} } AND DEFINED arg_REQUIRES)
21+ set (REQUIRED_EFFECTIVE "${arg_REQUIRES} _effective" )
22+ if (NOT ${${REQUIRED_EFFECTIVE} })
23+ set (${STATUS} "OFF (Requires ${arg_REQUIRES} )" )
24+ set (${EFFECTIVE} OFF )
25+ endif ()
26+ endif ()
27+
28+ set (${EFFECTIVE} "${${EFFECTIVE} }" PARENT_SCOPE)
29+
30+ message (STATUS " ${NAME} : ${${STATUS} }" )
31+
32+ string (APPEND QS_BUILD_OPTIONS "\\ n ${NAME} : ${${STATUS} }" )
33+ set (QS_BUILD_OPTIONS "${QS_BUILD_OPTIONS} " PARENT_SCOPE)
34+ endfunction ()
35+
36+ set (DISTRIBUTOR "Unset" CACHE STRING "Distributor" )
37+ string (APPEND QS_BUILD_OPTIONS " Distributor: ${DISTRIBUTOR} " )
3238
3339message (STATUS "Quickshell configuration" )
34- message (STATUS " QML lib installation : ${INSTALL_QML_LIB } " )
35- message ( STATUS " Crash reporter: ${CRASH_REPORTER} " )
36- message ( STATUS " Jemalloc: ${USE_JEMALLOC} " )
37- message ( STATUS " Build tests: ${BUILD_TESTING} " )
38- message ( STATUS " Sockets: ${SOCKETS} " )
39- message ( STATUS " Wayland: ${WAYLAND} " )
40- if (WAYLAND)
41- message ( STATUS " Wlroots Layershell: ${WAYLAND_WLR_LAYERSHELL} " )
42- message ( STATUS " Session Lock: ${WAYLAND_SESSION_LOCK} " )
43- message ( STATUS " Toplevel Management: ${WAYLAND_TOPLEVEL_MANAGEMENT} " )
44- endif ( )
45- message ( STATUS " X11: ${X11} " )
46- message ( STATUS " Services" )
47- message ( STATUS " StatusNotifier: ${SERVICE_STATUS_NOTIFIER} " )
48- message ( STATUS " PipeWire: ${SERVICE_PIPEWIRE} " )
49- message ( STATUS " Mpris: ${SERVICE_MPRIS} " )
50- message ( STATUS " Pam: ${SERVICE_PAM} " )
51- message ( STATUS " Greetd: ${SERVICE_GREETD} " )
52- message ( STATUS " UPower: ${SERVICE_UPOWER} " )
53- message ( STATUS " Notifications: ${SERVICE_NOTIFICATIONS} " )
54- message ( STATUS " Hyprland: ${HYPRLAND} " )
55- if (HYPRLAND )
56- message ( STATUS " IPC: ${HYPRLAND_IPC} " )
57- message ( STATUS " Focus Grabbing: ${HYPRLAND_FOCUS_GRAB} " )
58- message ( STATUS " Global Shortcuts: ${HYPRLAND_GLOBAL_SHORTCUTS} " )
59- endif ( )
40+ message (STATUS " Distributor : ${DISTRIBUTOR } " )
41+ boption(DISTRIBUTOR_DEBUGINFO_AVAILABLE "Distributor provided debuginfo" NO )
42+ boption(NO_PCH "Disable precompild headers (dev)" OFF )
43+ boption(BUILD_TESTING " Build tests (dev)" OFF )
44+ boption(ASAN "ASAN (dev)" OFF ) # note: better output with gcc than clang
45+ boption(FRAME_POINTERS "Keep Frame Pointers (dev)" ${ASAN} )
46+
47+ boption(CRASH_REPORTER "Crash Handling" ON )
48+ boption(USE_JEMALLOC "Use jemalloc" ON )
49+ boption(SOCKETS "Unix Sockets" ON )
50+ boption(WAYLAND "Wayland" ON )
51+ boption(WAYLAND_WLR_LAYERSHELL " Wlroots Layer-Shell" ON REQUIRES WAYLAND )
52+ boption(WAYLAND_SESSION_LOCK " Session Lock" ON REQUIRES WAYLAND )
53+ boption(WAYLAND_TOPLEVEL_MANAGEMENT " Foreign Toplevel Management" ON REQUIRES WAYLAND )
54+ boption(HYPRLAND " Hyprland" ON REQUIRES WAYLAND )
55+ boption(HYPRLAND_IPC " Hyprland IPC" ON REQUIRES HYPRLAND )
56+ boption(HYPRLAND_GLOBAL_SHORTCUTS " Hyprland Global Shortcuts" ON REQUIRES HYPRLAND )
57+ boption(HYPRLAND_FOCUS_GRAB " Hyprland Focus Grabbing" ON REQUIRES HYPRLAND )
58+ boption(X11 "X11" ON )
59+ boption(SERVICE_STATUS_NOTIFIER "System Tray" ON )
60+ boption(SERVICE_PIPEWIRE "PipeWire" ON )
61+ boption(SERVICE_MPRIS "Mpris" ON )
62+ boption(SERVICE_PAM "Pam" ON )
63+ boption(SERVICE_GREETD "Greetd" ON )
64+ boption(SERVICE_UPOWER "UPower" ON )
65+ boption(SERVICE_NOTIFICATIONS "Notifications" ON )
6066
6167if (NOT DEFINED GIT_REVISION)
6268 execute_process (
@@ -157,13 +163,11 @@ if (USE_JEMALLOC)
157163 target_link_libraries (quickshell PRIVATE ${JEMALLOC_LIBRARIES} )
158164endif ()
159165
160- if (INSTALL_QML_LIB)
161- install (
162- DIRECTORY ${CMAKE_BINARY_DIR} /qml_modules/
163- DESTINATION ${CMAKE_INSTALL_LIBDIR} /qt-6/qml
164- FILES_MATCHING PATTERN "*"
165- )
166- endif ()
166+ install (
167+ DIRECTORY ${CMAKE_BINARY_DIR} /qml_modules/
168+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /qt-6/qml
169+ FILES_MATCHING PATTERN "*"
170+ )
167171
168172install (CODE "
169173 execute_process(
0 commit comments