summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--README.md14
-rw-r--r--lib/renderers/CMakeLists.txt22
-rw-r--r--lib/renderers/curses/CMakeLists.txt14
-rw-r--r--lib/renderers/wayland/CMakeLists.txt26
-rw-r--r--lib/renderers/x11/CMakeLists.txt16
6 files changed, 60 insertions, 36 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f179e96..7c89bda 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,10 @@ SET(BEMENU_DESCRIPTION "Dynamic menu library and client program inspired by dmen
SET(BEMENU_VERSION "0.1.0")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMake)
+OPTION(BEMENU_CURSES_RENDERER "Build curses backend" ON)
+OPTION(BEMENU_X11_RENDERER "Build X11 backend" ON)
+OPTION(BEMENU_WAYLAND_RENDERER "Build wayland renderer" OFF)
+
INCLUDE(CTest)
INCLUDE(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
diff --git a/README.md b/README.md
index 35af368..3bd2c56 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,20 @@ bemenu
Dynamic menu library and client program inspired by dmenu
+## Renderers
+
+bemenu supports three different renderers:
+
+- ncurses
+- X11
+- Wayland
+
+Enable/disable the renderers by appending these CMake options when executing `cmake <dir>`:
+
+- `-DBEMENU_CURSES_RENDERER=[OFF|ON]`
+- `-DBEMENU_X11_RENDERER=[OFF|ON]`
+- `-DBEMENU_WAYLAND_RENDERER=[OFF|ON]`
+
## License
* [GNU GPLv3 (or any later version)](LICENSE-CLIENT) for client program[s] and
other sources except library and bindings
diff --git a/lib/renderers/CMakeLists.txt b/lib/renderers/CMakeLists.txt
index ef85317..a3350c7 100644
--- a/lib/renderers/CMakeLists.txt
+++ b/lib/renderers/CMakeLists.txt
@@ -1,8 +1,20 @@
-SET(RENDERERS
- "curses"
- "wayland"
- "x11"
-)
+SET(RENDERERS "")
+
+IF(BEMENU_CURSES_RENDERER)
+ LIST(APPEND RENDERERS "curses")
+ENDIF()
+
+IF(BEMENU_X11_RENDERER)
+ LIST(APPEND RENDERERS "x11")
+ENDIF()
+
+IF(BEMENU_WAYLAND_RENDERER)
+ LIST(APPEND RENDERERS "wayland")
+ENDIF()
+
+IF(NOT RENDERERS)
+ MESSAGE(FATAL_ERROR "At least one renderer should be enabled")
+ENDIF()
ADD_DEFINITIONS(-DPANGO_DISABLE_DEPRECATED)
diff --git a/lib/renderers/curses/CMakeLists.txt b/lib/renderers/curses/CMakeLists.txt
index 86acc02..09fad22 100644
--- a/lib/renderers/curses/CMakeLists.txt
+++ b/lib/renderers/curses/CMakeLists.txt
@@ -1,10 +1,8 @@
SET(CURSES_NEED_NCURSES TRUE)
-FIND_PACKAGE(Curses)
+FIND_PACKAGE(Curses REQUIRED)
-if (CURSES_FOUND)
- INCLUDE_DIRECTORIES(${CURSES_INCLUDE_DIRS})
- ADD_LIBRARY(bemenu-renderer-curses SHARED curses.c)
- SET_TARGET_PROPERTIES(bemenu-renderer-curses PROPERTIES PREFIX "")
- TARGET_LINK_LIBRARIES(bemenu-renderer-curses ${BEMENU_LIBRARIES} ${CURSES_LIBRARY} m)
- INSTALL(TARGETS bemenu-renderer-curses DESTINATION "${CMAKE_INSTALL_LIBDIR}/bemenu")
-endif ()
+INCLUDE_DIRECTORIES(${CURSES_INCLUDE_DIRS})
+ADD_LIBRARY(bemenu-renderer-curses SHARED curses.c)
+SET_TARGET_PROPERTIES(bemenu-renderer-curses PROPERTIES PREFIX "")
+TARGET_LINK_LIBRARIES(bemenu-renderer-curses ${BEMENU_LIBRARIES} ${CURSES_LIBRARY} m)
+INSTALL(TARGETS bemenu-renderer-curses DESTINATION "${CMAKE_INSTALL_LIBDIR}/bemenu")
diff --git a/lib/renderers/wayland/CMakeLists.txt b/lib/renderers/wayland/CMakeLists.txt
index 3aa66ac..8246908 100644
--- a/lib/renderers/wayland/CMakeLists.txt
+++ b/lib/renderers/wayland/CMakeLists.txt
@@ -1,15 +1,13 @@
-FIND_PACKAGE(Wayland)
-FIND_PACKAGE(Cairo)
-FIND_PACKAGE(Pango)
-FIND_PACKAGE(XKBCommon)
+FIND_PACKAGE(Wayland REQUIRED)
+FIND_PACKAGE(Cairo REQUIRED)
+FIND_PACKAGE(Pango REQUIRED)
+FIND_PACKAGE(XKBCommon REQUIRED)
-if (WAYLAND_FOUND AND CAIRO_FOUND AND PANGO_FOUND AND XKBCOMMON_FOUND)
- INCLUDE(Wayland)
- WAYLAND_ADD_PROTOCOL_CLIENT(proto-layer-shell "wlr-layer-shell-unstable-v1.xml" layer-shell)
- WAYLAND_ADD_PROTOCOL_CLIENT(proto-xdg-shell "xdg-shell.xml" xdg-shell)
- INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${WAYLAND_CLIENT_INCLUDE_DIR} ${XKBCOMMON_INCLUDE_DIR} ${CAIRO_INCLUDE_DIRS} ${PANGO_INCLUDE_DIRS})
- ADD_LIBRARY(bemenu-renderer-wayland SHARED wayland.c registry.c window.c ${proto-layer-shell} ${proto-xdg-shell})
- SET_TARGET_PROPERTIES(bemenu-renderer-wayland PROPERTIES PREFIX "")
- TARGET_LINK_LIBRARIES(bemenu-renderer-wayland ${BEMENU_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${XKBCOMMON_LIBRARIES} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} m)
- INSTALL(TARGETS bemenu-renderer-wayland DESTINATION "${CMAKE_INSTALL_LIBDIR}/bemenu")
-endif ()
+INCLUDE(Wayland)
+WAYLAND_ADD_PROTOCOL_CLIENT(proto-layer-shell "wlr-layer-shell-unstable-v1.xml" layer-shell)
+WAYLAND_ADD_PROTOCOL_CLIENT(proto-xdg-shell "xdg-shell.xml" xdg-shell)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${WAYLAND_CLIENT_INCLUDE_DIR} ${XKBCOMMON_INCLUDE_DIR} ${CAIRO_INCLUDE_DIRS} ${PANGO_INCLUDE_DIRS})
+ADD_LIBRARY(bemenu-renderer-wayland SHARED wayland.c registry.c window.c ${proto-layer-shell} ${proto-xdg-shell})
+SET_TARGET_PROPERTIES(bemenu-renderer-wayland PROPERTIES PREFIX "")
+TARGET_LINK_LIBRARIES(bemenu-renderer-wayland ${BEMENU_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${XKBCOMMON_LIBRARIES} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} m)
+INSTALL(TARGETS bemenu-renderer-wayland DESTINATION "${CMAKE_INSTALL_LIBDIR}/bemenu")
diff --git a/lib/renderers/x11/CMakeLists.txt b/lib/renderers/x11/CMakeLists.txt
index 7081e25..7bebe01 100644
--- a/lib/renderers/x11/CMakeLists.txt
+++ b/lib/renderers/x11/CMakeLists.txt
@@ -1,10 +1,8 @@
-FIND_PACKAGE(X11)
-FIND_PACKAGE(Cairo)
+FIND_PACKAGE(X11 REQUIRED)
+FIND_PACKAGE(Cairo REQUIRED)
-if (X11_FOUND AND X11_Xinerama_FOUND AND CAIRO_FOUND AND PANGO_FOUND)
- INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${X11_INCLUDE_DIR} ${X11_Xinerama_INCLUDE_PATH} ${CAIRO_INCLUDE_DIRS} ${PANGO_INCLUDE_DIRS})
- ADD_LIBRARY(bemenu-renderer-x11 SHARED x11.c window.c xkb_unicode.c)
- SET_TARGET_PROPERTIES(bemenu-renderer-x11 PROPERTIES PREFIX "")
- TARGET_LINK_LIBRARIES(bemenu-renderer-x11 ${BEMENU_LIBRARIES} ${X11_LIBRARIES} ${X11_Xinerama_LIB} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} m)
- INSTALL(TARGETS bemenu-renderer-x11 DESTINATION "${CMAKE_INSTALL_LIBDIR}/bemenu")
-endif ()
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${X11_INCLUDE_DIR} ${X11_Xinerama_INCLUDE_PATH} ${CAIRO_INCLUDE_DIRS} ${PANGO_INCLUDE_DIRS})
+ADD_LIBRARY(bemenu-renderer-x11 SHARED x11.c window.c xkb_unicode.c)
+SET_TARGET_PROPERTIES(bemenu-renderer-x11 PROPERTIES PREFIX "")
+TARGET_LINK_LIBRARIES(bemenu-renderer-x11 ${BEMENU_LIBRARIES} ${X11_LIBRARIES} ${X11_Xinerama_LIB} ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} m)
+INSTALL(TARGETS bemenu-renderer-x11 DESTINATION "${CMAKE_INSTALL_LIBDIR}/bemenu")