refactor(cmake): Cleanup
This commit is contained in:
parent
b97e4c56c5
commit
43a17c3b36
@ -8,21 +8,25 @@ project(polybar C CXX)
|
|||||||
set(CMAKE_MODULE_PATH
|
set(CMAKE_MODULE_PATH
|
||||||
${CMAKE_MODULE_PATH}
|
${CMAKE_MODULE_PATH}
|
||||||
${PROJECT_SOURCE_DIR}/cmake
|
${PROJECT_SOURCE_DIR}/cmake
|
||||||
|
${PROJECT_SOURCE_DIR}/cmake/common
|
||||||
${PROJECT_SOURCE_DIR}/cmake/modules)
|
${PROJECT_SOURCE_DIR}/cmake/modules)
|
||||||
|
|
||||||
include(utils)
|
include(utils)
|
||||||
include(build/core)
|
include(01-core)
|
||||||
include(build/options)
|
include(02-opts)
|
||||||
include(build/targets)
|
include(03-libs)
|
||||||
include(build/summary)
|
include(04-targets)
|
||||||
|
include(05-summary)
|
||||||
|
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/man)
|
add_subdirectory(doc)
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/bin)
|
add_subdirectory(doc/zsh)
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/doc ${PROJECT_BINARY_DIR}/doc)
|
add_subdirectory(include)
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/doc/zsh ${PROJECT_BINARY_DIR}/doc/zsh)
|
add_subdirectory(lib)
|
||||||
|
add_subdirectory(man)
|
||||||
|
add_subdirectory(src bin)
|
||||||
|
|
||||||
if(BUILD_TESTS)
|
if(BUILD_TESTS)
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/tests ${PROJECT_BINARY_DIR}/tests)
|
add_subdirectory(tests)
|
||||||
else()
|
else()
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/tests ${PROJECT_BINARY_DIR}/tests EXCLUDE_FROM_ALL)
|
add_subdirectory(tests EXCLUDE_FROM_ALL)
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
#
|
#
|
||||||
# Core setup
|
# Core setup
|
||||||
#
|
#
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
|
||||||
# Export compile commands used for custom targets
|
# Export compile commands used for custom targets
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
@ -59,7 +62,7 @@ elseif(CXXLIB_GCC)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_CCACHE)
|
if(ENABLE_CCACHE)
|
||||||
require_binary(ccache)
|
querybin(ccache)
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${BINPATH_ccache})
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${BINPATH_ccache})
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${BINPATH_ccache})
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${BINPATH_ccache})
|
||||||
endif()
|
endif()
|
70
cmake/02-opts.cmake
Normal file
70
cmake/02-opts.cmake
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#
|
||||||
|
# Build options
|
||||||
|
#
|
||||||
|
|
||||||
|
checklib(ENABLE_ALSA "pkg-config" alsa)
|
||||||
|
checklib(ENABLE_CURL "pkg-config" libcurl)
|
||||||
|
checklib(ENABLE_I3 "binary" i3)
|
||||||
|
checklib(ENABLE_MPD "pkg-config" libmpdclient)
|
||||||
|
checklib(ENABLE_NETWORK "cmake" Libiw)
|
||||||
|
checklib(WITH_XRM "pkg-config" xcb-xrm)
|
||||||
|
checklib(WITH_XRANDR_MONITORS "pkg-config" "xrandr>=1.5.0;randrproto>=1.5.0;xcb-proto>=1.12")
|
||||||
|
|
||||||
|
option(CXXLIB_CLANG "Link against libc++" OFF)
|
||||||
|
option(CXXLIB_GCC "Link against stdlibc++" OFF)
|
||||||
|
|
||||||
|
option(BUILD_IPC_MSG "Build ipc messager" ON)
|
||||||
|
option(BUILD_TESTS "Build testsuite" OFF)
|
||||||
|
|
||||||
|
option(ENABLE_CCACHE "Enable ccache support" ${DEBUG})
|
||||||
|
option(ENABLE_ALSA "Enable alsa support" ON)
|
||||||
|
option(ENABLE_CURL "Enable curl support" ON)
|
||||||
|
option(ENABLE_I3 "Enable i3 support" ON)
|
||||||
|
option(ENABLE_MPD "Enable mpd support" ON)
|
||||||
|
option(ENABLE_NETWORK "Enable network support" ON)
|
||||||
|
option(ENABLE_XKEYBOARD "Enable xkeyboard support" ON)
|
||||||
|
|
||||||
|
option(WITH_XRANDR "xcb-randr support" ON)
|
||||||
|
option(WITH_XRANDR_MONITORS "xcb-randr monitor support" ON)
|
||||||
|
option(WITH_XRENDER "xcb-render support" OFF)
|
||||||
|
option(WITH_XDAMAGE "xcb-damage support" OFF)
|
||||||
|
option(WITH_XSYNC "xcb-sync support" OFF)
|
||||||
|
option(WITH_XCOMPOSITE "xcb-composite support" OFF)
|
||||||
|
option(WITH_XKB "xcb-xkb support" ON)
|
||||||
|
option(WITH_XRM "xcb-xrm support" ON)
|
||||||
|
|
||||||
|
option(DEBUG_LOGGER "Debug logging" ${DEBUG})
|
||||||
|
option(DEBUG_LOGGER_VERBOSE "Debug logging (verbose)" OFF)
|
||||||
|
option(DEBUG_HINTS "Debug clickable areas" OFF)
|
||||||
|
option(DEBUG_WHITESPACE "Debug whitespace" OFF)
|
||||||
|
option(DEBUG_FONTCONFIG "Debug fontconfig" OFF)
|
||||||
|
|
||||||
|
set(SETTING_ALSA_SOUNDCARD "default"
|
||||||
|
CACHE STRING "Name of the ALSA soundcard driver")
|
||||||
|
set(SETTING_BSPWM_SOCKET_PATH "/tmp/bspwm_0_0-socket"
|
||||||
|
CACHE STRING "Path to bspwm socket")
|
||||||
|
set(SETTING_BSPWM_STATUS_PREFIX "W"
|
||||||
|
CACHE STRING "Prefix prepended to the bspwm status line")
|
||||||
|
set(SETTING_CONNECTION_TEST_IP "8.8.8.8"
|
||||||
|
CACHE STRING "Address to ping when testing network connection")
|
||||||
|
set(SETTING_PATH_ADAPTER "/sys/class/power_supply/%adapter%"
|
||||||
|
CACHE STRING "Path to adapter")
|
||||||
|
set(SETTING_PATH_BACKLIGHT_MAX "/sys/class/backlight/%card%/max_brightness"
|
||||||
|
CACHE STRING "Path to file containing the maximum backlight value")
|
||||||
|
set(SETTING_PATH_BACKLIGHT_VAL "/sys/class/backlight/%card%/brightness"
|
||||||
|
CACHE STRING "Path to file containing the current backlight value")
|
||||||
|
set(SETTING_PATH_BATTERY "/sys/class/power_supply/%battery%"
|
||||||
|
CACHE STRING "Path to battery")
|
||||||
|
set(SETTING_PATH_CPU_INFO "/proc/stat"
|
||||||
|
CACHE STRING "Path to file containing cpu info")
|
||||||
|
set(SETTING_PATH_MEMORY_INFO "/proc/meminfo"
|
||||||
|
CACHE STRING "Path to file containing memory info")
|
||||||
|
set(SETTING_PATH_MESSAGING_FIFO "/tmp/polybar_mqueue.%pid%"
|
||||||
|
CACHE STRING "Path to file containing the current temperature")
|
||||||
|
set(SETTING_PATH_TEMPERATURE_INFO "/sys/class/thermal/thermal_zone%zone%/temp"
|
||||||
|
CACHE STRING "Path to file containing the current temperature")
|
||||||
|
|
||||||
|
if(DEBUG)
|
||||||
|
set(DEBUG_HINTS_OFFSET_X 0 CACHE INTEGER "Debug hint offset x")
|
||||||
|
set(DEBUG_HINTS_OFFSET_Y 0 CACHE INTEGER "Debug hint offset y")
|
||||||
|
endif()
|
22
cmake/03-libs.cmake
Normal file
22
cmake/03-libs.cmake
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#
|
||||||
|
# Check libraries
|
||||||
|
#
|
||||||
|
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
list(APPEND libs ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
|
||||||
|
querylib(TRUE "pkg-config" cairo-fc libs dirs)
|
||||||
|
|
||||||
|
querylib(ENABLE_ALSA "pkg-config" alsa libs dirs)
|
||||||
|
querylib(ENABLE_CURL "pkg-config" libcurl libs dirs)
|
||||||
|
querylib(ENABLE_MPD "pkg-config" libmpdclient libs dirs)
|
||||||
|
querylib(ENABLE_NETWORK "cmake" Libiw libs dirs)
|
||||||
|
|
||||||
|
querylib(WITH_XCOMPOSITE "pkg-config" xcb-composite libs dirs)
|
||||||
|
querylib(WITH_XDAMAGE "pkg-config" xcb-damage libs dirs)
|
||||||
|
querylib(WITH_XKB "pkg-config" xcb-xkb libs dirs)
|
||||||
|
querylib(WITH_XRANDR "pkg-config" xcb-randr libs dirs)
|
||||||
|
querylib(WITH_XRANDR_MONITORS "pkg-config" "xrandr>=1.5.0;randrproto>=1.5.0;xcb-proto>=1.12" libs dirs)
|
||||||
|
querylib(WITH_XRENDER "pkg-config" xcb-render libs dirs)
|
||||||
|
querylib(WITH_XRM "pkg-config" xcb-xrm libs dirs)
|
||||||
|
querylib(WITH_XSYNC "pkg-config" xcb-sync libs dirs)
|
41
cmake/05-summary.cmake
Normal file
41
cmake/05-summary.cmake
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Output build summary
|
||||||
|
#
|
||||||
|
|
||||||
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
|
||||||
|
|
||||||
|
message(STATUS " Build:")
|
||||||
|
message_colored(STATUS " Type: ${CMAKE_BUILD_TYPE}" "37;2")
|
||||||
|
message_colored(STATUS " CC: ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}" "37;2")
|
||||||
|
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}" "37;2")
|
||||||
|
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}" "37;2")
|
||||||
|
|
||||||
|
message(STATUS " Targets:")
|
||||||
|
colored_option(" polybar-msg" BUILD_IPC_MSG)
|
||||||
|
colored_option(" testsuite" BUILD_TESTS)
|
||||||
|
|
||||||
|
message(STATUS " Module supprt:")
|
||||||
|
colored_option(" alsa" ENABLE_ALSA)
|
||||||
|
colored_option(" curl" ENABLE_CURL)
|
||||||
|
colored_option(" i3" ENABLE_I3)
|
||||||
|
colored_option(" mpd" ENABLE_MPD)
|
||||||
|
colored_option(" network" ENABLE_NETWORK)
|
||||||
|
|
||||||
|
message(STATUS " X extensions:")
|
||||||
|
colored_option(" xcb-randr" WITH_XRANDR)
|
||||||
|
colored_option(" xcb-randr (monitor support)" WITH_XRANDR_MONITORS)
|
||||||
|
colored_option(" xcb-render" WITH_XRENDER)
|
||||||
|
colored_option(" xcb-damage" WITH_XDAMAGE)
|
||||||
|
colored_option(" xcb-sync" WITH_XSYNC)
|
||||||
|
colored_option(" xcb-composite" WITH_XCOMPOSITE)
|
||||||
|
colored_option(" xcb-xkb" WITH_XKB)
|
||||||
|
colored_option(" xcb-xrm" WITH_XRM)
|
||||||
|
|
||||||
|
if(DEBUG)
|
||||||
|
message(STATUS " Debug options:")
|
||||||
|
colored_option(" Trace logging" DEBUG_LOGGER)
|
||||||
|
colored_option(" Trace logging (verbose)" DEBUG_LOGGER_VERBOSE)
|
||||||
|
colored_option(" Draw clickable areas" DEBUG_HINTS)
|
||||||
|
colored_option(" Print fc-match details" DEBUG_FONTCONFIG)
|
||||||
|
colored_option(" Enable window shading" DEBUG_SHADED)
|
||||||
|
endif()
|
@ -1,125 +0,0 @@
|
|||||||
#
|
|
||||||
# Build options
|
|
||||||
#
|
|
||||||
|
|
||||||
# Default value for: ENABLE_ALSA {{{
|
|
||||||
|
|
||||||
find_package(ALSA QUIET)
|
|
||||||
if(NOT DEFINED ENABLE_ALSA AND NOT ALSA_FOUND)
|
|
||||||
set(ENABLE_ALSA OFF CACHE STRING "Module support for alsa-lib")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Default value for: ENABLE_NETWORK {{{
|
|
||||||
|
|
||||||
find_package(Libiw QUIET)
|
|
||||||
if(NOT DEFINED ENABLE_NETWORK AND NOT LIBIW_FOUND)
|
|
||||||
set(ENABLE_NETWORK OFF CACHE STRING "Module support for wireless_tools")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Default value for: ENABLE_MPD {{{
|
|
||||||
|
|
||||||
find_package(LibMPDClient QUIET)
|
|
||||||
if(NOT DEFINED ENABLE_MPD AND NOT LIBMPDCLIENT_FOUND)
|
|
||||||
set(ENABLE_MPD OFF CACHE STRING "Module support for libmpdclient")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Default value for: ENABLE_I3 {{{
|
|
||||||
|
|
||||||
find_program(I3_BINARY i3)
|
|
||||||
if(NOT DEFINED ENABLE_I3 AND NOT I3_BINARY)
|
|
||||||
set(ENABLE_I3 OFF CACHE STRING "Module support for i3wm")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Default value for: ENABLE_CURL {{{
|
|
||||||
|
|
||||||
find_package(CURL QUIET)
|
|
||||||
if(NOT DEFINED ENABLE_CURL AND NOT CURL_FOUND)
|
|
||||||
set(ENABLE_CURL OFF CACHE STRING "Module support for libcurl")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
|
|
||||||
# Default value for: WITH_XRM {{{
|
|
||||||
|
|
||||||
if(NOT DEFINED WITH_XRM)
|
|
||||||
pkg_check_modules(XRM QUIET xcb-xrm)
|
|
||||||
set(WITH_XRM ${XRM_FOUND} CACHE BOOL "Enable xcb-xrm support")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
|
|
||||||
# Define build options {{{
|
|
||||||
|
|
||||||
option(CXXLIB_CLANG "Link against libc++" OFF)
|
|
||||||
option(CXXLIB_GCC "Link against stdlibc++" OFF)
|
|
||||||
|
|
||||||
option(BUILD_IPC_MSG "Build ipc messager" ON)
|
|
||||||
option(BUILD_TESTS "Build testsuite" OFF)
|
|
||||||
|
|
||||||
if(DEBUG)
|
|
||||||
option(DEBUG_LOGGER "Debug logging" OFF)
|
|
||||||
option(DEBUG_LOGGER_VERBOSE "Debug logging (verbose)" OFF)
|
|
||||||
option(DEBUG_HINTS "Debug clickable areas" OFF)
|
|
||||||
option(DEBUG_WHITESPACE "Debug whitespace" OFF)
|
|
||||||
option(DEBUG_FONTCONFIG "Debug fontconfig" OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(ENABLE_CCACHE "Enable ccache support" OFF)
|
|
||||||
option(ENABLE_ALSA "Enable alsa support" ON)
|
|
||||||
option(ENABLE_CURL "Enable curl support" ON)
|
|
||||||
option(ENABLE_I3 "Enable i3 support" ON)
|
|
||||||
option(ENABLE_MPD "Enable mpd support" ON)
|
|
||||||
option(ENABLE_NETWORK "Enable network support" ON)
|
|
||||||
|
|
||||||
option(WITH_XRANDR "xcb-randr support" ON)
|
|
||||||
option(WITH_XRENDER "xcb-render support" OFF)
|
|
||||||
option(WITH_XDAMAGE "xcb-damage support" OFF)
|
|
||||||
option(WITH_XSYNC "xcb-sync support" OFF)
|
|
||||||
option(WITH_XCOMPOSITE "xcb-composite support" OFF)
|
|
||||||
option(WITH_XKB "xcb-xkb support" ON)
|
|
||||||
option(WITH_XRM "xcb-xrm support" ON)
|
|
||||||
|
|
||||||
if(NOT DEFINED ENABLE_XRANDR_MONITORS)
|
|
||||||
pkg_check_modules(XRANDR QUIET xrandr>=1.5.0 randrproto>=1.5.0 xcb-proto>=1.12)
|
|
||||||
if(NOT XRANDR_FOUND)
|
|
||||||
set(XRANDR_FOUND OFF)
|
|
||||||
endif()
|
|
||||||
set(ENABLE_XRANDR_MONITORS ${XRANDR_FOUND} CACHE BOOL "Enable XRandR monitor feature (requires version 1.5+)")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Set cache vars {{{
|
|
||||||
|
|
||||||
set(SETTING_ALSA_SOUNDCARD "default"
|
|
||||||
CACHE STRING "Name of the ALSA soundcard driver")
|
|
||||||
set(SETTING_BSPWM_SOCKET_PATH "/tmp/bspwm_0_0-socket"
|
|
||||||
CACHE STRING "Path to bspwm socket")
|
|
||||||
set(SETTING_BSPWM_STATUS_PREFIX "W"
|
|
||||||
CACHE STRING "Prefix prepended to the bspwm status line")
|
|
||||||
set(SETTING_CONNECTION_TEST_IP "8.8.8.8"
|
|
||||||
CACHE STRING "Address to ping when testing network connection")
|
|
||||||
set(SETTING_PATH_ADAPTER "/sys/class/power_supply/%adapter%"
|
|
||||||
CACHE STRING "Path to adapter")
|
|
||||||
set(SETTING_PATH_BACKLIGHT_MAX "/sys/class/backlight/%card%/max_brightness"
|
|
||||||
CACHE STRING "Path to file containing the maximum backlight value")
|
|
||||||
set(SETTING_PATH_BACKLIGHT_VAL "/sys/class/backlight/%card%/brightness"
|
|
||||||
CACHE STRING "Path to file containing the current backlight value")
|
|
||||||
set(SETTING_PATH_BATTERY "/sys/class/power_supply/%battery%"
|
|
||||||
CACHE STRING "Path to battery")
|
|
||||||
set(SETTING_PATH_CPU_INFO "/proc/stat"
|
|
||||||
CACHE STRING "Path to file containing cpu info")
|
|
||||||
set(SETTING_PATH_MEMORY_INFO "/proc/meminfo"
|
|
||||||
CACHE STRING "Path to file containing memory info")
|
|
||||||
set(SETTING_PATH_MESSAGING_FIFO "/tmp/polybar_mqueue.%pid%"
|
|
||||||
CACHE STRING "Path to file containing the current temperature")
|
|
||||||
set(SETTING_PATH_TEMPERATURE_INFO "/sys/class/thermal/thermal_zone%zone%/temp"
|
|
||||||
CACHE STRING "Path to file containing the current temperature")
|
|
||||||
|
|
||||||
set(DEBUG_HINTS_OFFSET_X 0 CACHE INTEGER "Debug hint offset x")
|
|
||||||
set(DEBUG_HINTS_OFFSET_Y 0 CACHE INTEGER "Debug hint offset y")
|
|
||||||
|
|
||||||
# }}}
|
|
@ -1,82 +0,0 @@
|
|||||||
#
|
|
||||||
# Output build summary
|
|
||||||
#
|
|
||||||
|
|
||||||
function(colored_option message_level text var color_on color_off)
|
|
||||||
string(ASCII 27 esc)
|
|
||||||
if(${var})
|
|
||||||
message(${message_level} "${esc}[${color_on}m${text}${esc}[0m")
|
|
||||||
else()
|
|
||||||
message(${message_level} "${esc}[${color_off}m${text}${esc}[0m")
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
message(STATUS " Build:")
|
|
||||||
if(CMAKE_BUILD_TYPE)
|
|
||||||
message_colored(STATUS " Type: ${CMAKE_BUILD_TYPE}" "37;2")
|
|
||||||
else()
|
|
||||||
message_colored(STATUS " Type: NONE" "33;1")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
|
||||||
if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
|
||||||
if(NOT DEFINED ${DEBUG_LOGGER})
|
|
||||||
set(DEBUG_LOGGER ON)
|
|
||||||
endif()
|
|
||||||
if(NOT DEFINED ${ENABLE_CCACHE})
|
|
||||||
set(ENABLE_CCACHE ON)
|
|
||||||
endif()
|
|
||||||
message_colored(STATUS " CC: ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}" "37;2")
|
|
||||||
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}" "37;2")
|
|
||||||
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS}${CMAKE_EXE_LINKER_FLAGS_DEBUG}" "37;2")
|
|
||||||
elseif(CMAKE_BUILD_TYPE_LOWER STREQUAL "release")
|
|
||||||
message_colored(STATUS " CC: ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}" "37;2")
|
|
||||||
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}" "37;2")
|
|
||||||
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS}${CMAKE_EXE_LINKER_FLAGS_RELEASE}" "37;2")
|
|
||||||
elseif(CMAKE_BUILD_TYPE_LOWER STREQUAL "sanitize")
|
|
||||||
message_colored(STATUS " CC: ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_SANITIZE}" "37;2")
|
|
||||||
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_SANITIZE}" "37;2")
|
|
||||||
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS}${CMAKE_EXE_LINKER_FLAGS_SANITIZE}" "37;2")
|
|
||||||
elseif(CMAKE_BUILD_TYPE_LOWER STREQUAL "minsizerel")
|
|
||||||
message_colored(STATUS " CC: ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_MINSIZEREL}" "37;2")
|
|
||||||
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_MINSIZEREL}" "37;2")
|
|
||||||
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS}${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}" "37;2")
|
|
||||||
elseif(CMAKE_BUILD_TYPE_LOWER STREQUAL "relwithdebinfo")
|
|
||||||
message_colored(STATUS " CC: ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO}" "37;2")
|
|
||||||
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" "37;2")
|
|
||||||
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS}${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}" "37;2")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_EXE_LINKER_FLAGS)
|
|
||||||
message_colored(STATUS " LD: ${CMAKE_EXE_LINKER_FLAGS}" "37;2")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS " Targets:")
|
|
||||||
colored_option(STATUS " polybar-msg" BUILD_IPC_MSG "32;1" "37;2")
|
|
||||||
colored_option(STATUS " testsuite" BUILD_TESTS "32;1" "37;2")
|
|
||||||
|
|
||||||
message(STATUS " Module supprt:")
|
|
||||||
colored_option(STATUS " alsa" ENABLE_ALSA "32;1" "37;2")
|
|
||||||
colored_option(STATUS " curl" ENABLE_CURL "32;1" "37;2")
|
|
||||||
colored_option(STATUS " i3" ENABLE_I3 "32;1" "37;2")
|
|
||||||
colored_option(STATUS " mpd" ENABLE_MPD "32;1" "37;2")
|
|
||||||
colored_option(STATUS " network" ENABLE_NETWORK "32;1" "37;2")
|
|
||||||
message(STATUS " X extensions:")
|
|
||||||
colored_option(STATUS " xcb-randr" WITH_XRANDR "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-randr (monitor support)" ENABLE_XRANDR_MONITORS "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-render" WITH_XRENDER "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-damage" WITH_XDAMAGE "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-sync" WITH_XSYNC "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-composite" WITH_XCOMPOSITE "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-xkb" WITH_XKB "32;1" "37;2")
|
|
||||||
colored_option(STATUS " xcb-xrm" WITH_XRM "32;1" "37;2")
|
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
|
||||||
message(STATUS " Debug options:")
|
|
||||||
colored_option(STATUS " Trace logging" DEBUG_LOGGER "32;1" "37;2")
|
|
||||||
colored_option(STATUS " Trace logging (verbose)" DEBUG_LOGGER_VERBOSE "32;1" "37;2")
|
|
||||||
colored_option(STATUS " Draw clickable areas" DEBUG_HINTS "32;1" "37;2")
|
|
||||||
colored_option(STATUS " Print fc-match details" DEBUG_FONTCONFIG "32;1" "37;2")
|
|
||||||
colored_option(STATUS " Enable window shading" DEBUG_SHADED "32;1" "37;2")
|
|
||||||
message(STATUS "--------------------------")
|
|
||||||
endif()
|
|
@ -2,7 +2,7 @@
|
|||||||
# Collection of cmake utility functions
|
# Collection of cmake utility functions
|
||||||
#
|
#
|
||||||
|
|
||||||
# message_colored : Outputs a colorized message {{{
|
# message_colored {{{
|
||||||
|
|
||||||
function(message_colored message_level text color)
|
function(message_colored message_level text color)
|
||||||
string(ASCII 27 esc)
|
string(ASCII 27 esc)
|
||||||
@ -10,17 +10,19 @@ function(message_colored message_level text color)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
# require_binary : Locates binary by name and exports its path to BINPATH_${name} {{{
|
# colored_option {{{
|
||||||
|
|
||||||
function(require_binary binary_name)
|
function(colored_option text flag)
|
||||||
find_program(BINPATH_${binary_name} ${binary_name})
|
if(${flag})
|
||||||
if(NOT BINPATH_${binary_name})
|
message_colored(STATUS "${text}" "32;1")
|
||||||
message_colored(FATAL_ERROR "Failed to locate ${binary_name} binary" 31)
|
else()
|
||||||
|
message_colored(STATUS "${text}" "37;2")
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
# make_executable : Builds an executable target {{{
|
|
||||||
|
# make_executable {{{
|
||||||
|
|
||||||
function(make_executable target_name)
|
function(make_executable target_name)
|
||||||
set(zero_value_args)
|
set(zero_value_args)
|
||||||
@ -45,8 +47,7 @@ function(make_executable target_name)
|
|||||||
add_executable(${target_name} ${BIN_SOURCES})
|
add_executable(${target_name} ${BIN_SOURCES})
|
||||||
|
|
||||||
# set the output file basename the same for static and shared
|
# set the output file basename the same for static and shared
|
||||||
set_target_properties(${target_name}
|
set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${target_name})
|
||||||
PROPERTIES OUTPUT_NAME ${target_name})
|
|
||||||
|
|
||||||
# link libraries from pkg-config imports
|
# link libraries from pkg-config imports
|
||||||
foreach(DEP ${BIN_PKG_DEPENDS})
|
foreach(DEP ${BIN_PKG_DEPENDS})
|
||||||
@ -57,13 +58,16 @@ function(make_executable target_name)
|
|||||||
# link libraries from cmake imports
|
# link libraries from cmake imports
|
||||||
foreach(DEP ${BIN_CMAKE_DEPENDS})
|
foreach(DEP ${BIN_CMAKE_DEPENDS})
|
||||||
string(TOUPPER ${DEP} DEP)
|
string(TOUPPER ${DEP} DEP)
|
||||||
target_link_libraries(${target_name} ${${DEP}_LIB}
|
target_link_libraries(${target_name}
|
||||||
|
${${DEP}_LIB}
|
||||||
${${DEP}_LIBRARY}
|
${${DEP}_LIBRARY}
|
||||||
${${DEP}_LIBRARIES})
|
${${DEP}_LIBRARIES})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# link libraries that are build as part of this project
|
# link libraries that are build as part of this project
|
||||||
target_link_libraries(${target_name} ${BIN_TARGET_DEPENDS} ${BIN_RAW_DEPENDS})
|
target_link_libraries(${target_name}
|
||||||
|
${BIN_TARGET_DEPENDS}
|
||||||
|
${BIN_RAW_DEPENDS})
|
||||||
|
|
||||||
# install targets
|
# install targets
|
||||||
install(TARGETS ${target_name}
|
install(TARGETS ${target_name}
|
||||||
@ -74,7 +78,7 @@ function(make_executable target_name)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
# make_library : Builds a library target {{{
|
# make_library {{{
|
||||||
|
|
||||||
function(make_library target_name)
|
function(make_library target_name)
|
||||||
set(zero_value_args SHARED STATIC)
|
set(zero_value_args SHARED STATIC)
|
||||||
@ -112,7 +116,9 @@ function(make_library target_name)
|
|||||||
|
|
||||||
foreach(library_target_name ${library_targets})
|
foreach(library_target_name ${library_targets})
|
||||||
message(STATUS "${library_target_name}")
|
message(STATUS "${library_target_name}")
|
||||||
add_library(${library_target_name} ${LIB_HEADERS_ABS} ${LIB_SOURCES})
|
add_library(${library_target_name}
|
||||||
|
${LIB_HEADERS_ABS}
|
||||||
|
${LIB_SOURCES})
|
||||||
|
|
||||||
# link libraries from pkg-config imports
|
# link libraries from pkg-config imports
|
||||||
foreach(DEP ${LIB_PKG_DEPENDS})
|
foreach(DEP ${LIB_PKG_DEPENDS})
|
||||||
@ -123,7 +129,8 @@ function(make_library target_name)
|
|||||||
# link libraries from cmake imports
|
# link libraries from cmake imports
|
||||||
foreach(DEP ${LIB_CMAKE_DEPENDS})
|
foreach(DEP ${LIB_CMAKE_DEPENDS})
|
||||||
string(TOUPPER ${DEP} DEP)
|
string(TOUPPER ${DEP} DEP)
|
||||||
target_link_libraries(${library_target_name} ${${DEP}_LIB}
|
target_link_libraries(${library_target_name}
|
||||||
|
${${DEP}_LIB}
|
||||||
${${DEP}_LIBRARY}
|
${${DEP}_LIBRARY}
|
||||||
${${DEP}_LIBRARIES})
|
${${DEP}_LIBRARIES})
|
||||||
endforeach()
|
endforeach()
|
||||||
@ -161,9 +168,10 @@ function(make_library target_name)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
# find_font : Query fontconfig fonts {{{
|
|
||||||
|
|
||||||
function(font_query output_variable fontname)
|
# queryfont {{{
|
||||||
|
|
||||||
|
function(queryfont output_variable fontname)
|
||||||
set(multi_value_args FIELDS)
|
set(multi_value_args FIELDS)
|
||||||
cmake_parse_arguments(ARG "" "" "${multi_value_args}" ${ARGN})
|
cmake_parse_arguments(ARG "" "" "${multi_value_args}" ${ARGN})
|
||||||
|
|
||||||
@ -189,12 +197,12 @@ function(font_query output_variable fontname)
|
|||||||
|
|
||||||
foreach(match LISTS ${output})
|
foreach(match LISTS ${output})
|
||||||
if(${match} MATCHES ".*${fontname}.*$")
|
if(${match} MATCHES ".*${fontname}.*$")
|
||||||
list(APPEND FONT_QUERY_MATCHES ${match})
|
list(APPEND matches ${match})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(FONT_QUERY_MATCHES)
|
if(matches)
|
||||||
list(GET FONT_QUERY_MATCHES 0 output_variable)
|
list(GET matches 0 output_variable)
|
||||||
set(output_variable "${output_variable}" PARENT_SCOPE)
|
set(output_variable "${output_variable}" PARENT_SCOPE)
|
||||||
message(STATUS "Found font: ${output_variable}")
|
message(STATUS "Found font: ${output_variable}")
|
||||||
else()
|
else()
|
||||||
@ -203,3 +211,57 @@ function(font_query output_variable fontname)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
# querybin {{{
|
||||||
|
|
||||||
|
function(querybin binary_name)
|
||||||
|
find_program(BIN_${binary_name} ${binary_name})
|
||||||
|
if(NOT BIN_${binary_name})
|
||||||
|
message_colored(FATAL_ERROR "Failed to locate ${binary_name} binary" 31)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
# querylib {{{
|
||||||
|
|
||||||
|
function(querylib flag type pkg out_library out_include_dirs)
|
||||||
|
if(${flag})
|
||||||
|
if(${type} STREQUAL "cmake")
|
||||||
|
find_package(${pkg} REQUIRED)
|
||||||
|
string(TOUPPER ${pkg} pkg_upper)
|
||||||
|
list(APPEND ${out_library} ${${pkg_upper}_LIBRARY})
|
||||||
|
list(APPEND ${out_include_dirs} ${${pkg_upper}_INCLUDE_DIR})
|
||||||
|
elseif(${type} STREQUAL "pkg-config")
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(PKG_${flag} REQUIRED ${pkg})
|
||||||
|
list(APPEND ${out_library} ${PKG_${flag}_LIBRARIES})
|
||||||
|
list(APPEND ${out_include_dirs} ${PKG_${flag}_INCLUDE_DIRS})
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Invalid lookup type '${type}'")
|
||||||
|
endif()
|
||||||
|
set(${out_library} ${${out_library}} PARENT_SCOPE)
|
||||||
|
set(${out_include_dirs} ${${out_include_dirs}} PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
# checklib {{{
|
||||||
|
|
||||||
|
function(checklib flag type pkg)
|
||||||
|
if(NOT DEFINED ${flag})
|
||||||
|
if(${type} STREQUAL "cmake")
|
||||||
|
find_package(${pkg} QUIET)
|
||||||
|
set(${flag} ${${pkg}_FOUND} CACHE BOOL "")
|
||||||
|
elseif(${type} STREQUAL "pkg-config")
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(PKG_${flag} QUIET ${pkg})
|
||||||
|
set(${flag} ${PKG_${flag}_FOUND} CACHE BOOL "")
|
||||||
|
elseif(${type} STREQUAL "binary")
|
||||||
|
find_program(BIN_${flag} ${pkg})
|
||||||
|
set(${flag} ${BIN_${flag}} CACHE BOOL "")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Invalid lookup type '${type}'")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# }}}
|
@ -1,31 +0,0 @@
|
|||||||
# - Try to find LibMPDClient
|
|
||||||
# Once done, this will define
|
|
||||||
#
|
|
||||||
# LIBMPDCLIENT_FOUND - System has LibMPDClient
|
|
||||||
# LIBMPDCLIENT_INCLUDE_DIRS - The LibMPDClient include directories
|
|
||||||
# LIBMPDCLIENT_LIBRARIES - The libraries needed to use LibMPDClient
|
|
||||||
# LIBMPDCLIENT_DEFINITIONS - Compiler switches required for using LibMPDClient
|
|
||||||
|
|
||||||
find_package(PkgConfig)
|
|
||||||
pkg_check_modules(PC_LIBMPDCLIENT QUIET libmpdclient)
|
|
||||||
set(LIBMPDCLIENT_DEFINITIONS ${PC_LIBMPDCLIENT_CFLAGS_OTHER})
|
|
||||||
|
|
||||||
find_path(LIBMPDCLIENT_INCLUDE_DIR
|
|
||||||
NAMES mpd/player.h
|
|
||||||
HINTS ${PC_LIBMPDCLIENT_INCLUDEDIR} ${PC_LIBMPDCLIENT_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
find_library(LIBMPDCLIENT_LIBRARY
|
|
||||||
NAMES mpdclient
|
|
||||||
HINTS ${PC_LIBMPDCLIENT_LIBDIR} ${PC_LIBMPDCLIENT_LIBRARY_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(LIBMPDCLIENT_LIBRARIES ${LIBMPDCLIENT_LIBRARY})
|
|
||||||
set(LIBMPDCLIENT_INCLUDE_DIRS ${LIBMPDCLIENT_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(LibMPDClient DEFAULT_MSG
|
|
||||||
LIBMPDCLIENT_LIBRARY LIBMPDCLIENT_INCLUDE_DIR
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(LIBMPDCLIENT_LIBRARY LIBMPDCLIENT_INCLUDE_DIR)
|
|
@ -1,250 +0,0 @@
|
|||||||
# Try to find XCB on a Unix system
|
|
||||||
#
|
|
||||||
# This will define:
|
|
||||||
#
|
|
||||||
# XCB_FOUND - True if xcb is available
|
|
||||||
# XCB_LIBRARIES - Link these to use xcb
|
|
||||||
# XCB_INCLUDE_DIRS - Include directory for xcb
|
|
||||||
# XCB_DEFINITIONS - Compiler flags for using xcb
|
|
||||||
#
|
|
||||||
# In addition the following more fine grained variables will be defined:
|
|
||||||
#
|
|
||||||
# XCB_XCB_FOUND XCB_XCB_INCLUDE_DIR XCB_XCB_LIBRARY
|
|
||||||
# XCB_UTIL_FOUND XCB_UTIL_INCLUDE_DIR XCB_UTIL_LIBRARY
|
|
||||||
# XCB_COMPOSITE_FOUND XCB_COMPOSITE_INCLUDE_DIR XCB_COMPOSITE_LIBRARY
|
|
||||||
# XCB_DAMAGE_FOUND XCB_DAMAGE_INCLUDE_DIR XCB_DAMAGE_LIBRARY
|
|
||||||
# XCB_XFIXES_FOUND XCB_XFIXES_INCLUDE_DIR XCB_XFIXES_LIBRARY
|
|
||||||
# XCB_RENDER_FOUND XCB_RENDER_INCLUDE_DIR XCB_RENDER_LIBRARY
|
|
||||||
# XCB_RANDR_FOUND XCB_RANDR_INCLUDE_DIR XCB_RANDR_LIBRARY
|
|
||||||
# XCB_SHAPE_FOUND XCB_SHAPE_INCLUDE_DIR XCB_SHAPE_LIBRARY
|
|
||||||
# XCB_DRI2_FOUND XCB_DRI2_INCLUDE_DIR XCB_DRI2_LIBRARY
|
|
||||||
# XCB_GLX_FOUND XCB_GLX_INCLUDE_DIR XCB_GLX_LIBRARY
|
|
||||||
# XCB_SHM_FOUND XCB_SHM_INCLUDE_DIR XCB_SHM_LIBRARY
|
|
||||||
# XCB_XV_FOUND XCB_XV_INCLUDE_DIR XCB_XV_LIBRARY
|
|
||||||
# XCB_SYNC_FOUND XCB_SYNC_INCLUDE_DIR XCB_SYNC_LIBRARY
|
|
||||||
# XCB_XTEST_FOUND XCB_XTEST_INCLUDE_DIR XCB_XTEST_LIBRARY
|
|
||||||
# XCB_ICCCM_FOUND XCB_ICCCM_INCLUDE_DIR XCB_ICCCM_LIBRARY
|
|
||||||
# XCB_EWMH_FOUND XCB_EWMH_INCLUDE_DIR XCB_EWMH_LIBRARY
|
|
||||||
# XCB_IMAGE_FOUND XCB_IMAGE_INCLUDE_DIR XCB_IMAGE_LIBRARY
|
|
||||||
# XCB_RENDERUTIL_FOUND XCB_RENDERUTIL_INCLUDE_DIR XCB_RENDERUTIL_LIBRARY
|
|
||||||
# XCB_KEYSYMS_FOUND XCB_KEYSYMS_INCLUDE_DIR XCB_KEYSYMS_LIBRARY
|
|
||||||
#
|
|
||||||
# Copyright (c) 2011 Fredrik Höglund <fredrik@kde.org>
|
|
||||||
# Copyright (c) 2013 Martin Gräßlin <mgraesslin@kde.org>
|
|
||||||
#
|
|
||||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
|
||||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
|
||||||
|
|
||||||
set(knownComponents XCB
|
|
||||||
COMPOSITE
|
|
||||||
DAMAGE
|
|
||||||
DRI2
|
|
||||||
EWMH
|
|
||||||
GLX
|
|
||||||
ICCCM
|
|
||||||
IMAGE
|
|
||||||
KEYSYMS
|
|
||||||
RANDR
|
|
||||||
RENDER
|
|
||||||
RENDERUTIL
|
|
||||||
SHAPE
|
|
||||||
SHM
|
|
||||||
SYNC
|
|
||||||
UTIL
|
|
||||||
XFIXES
|
|
||||||
XTEST
|
|
||||||
XV
|
|
||||||
XINERAMA
|
|
||||||
XKB)
|
|
||||||
|
|
||||||
unset(unknownComponents)
|
|
||||||
|
|
||||||
set(pkgConfigModules)
|
|
||||||
set(requiredComponents)
|
|
||||||
|
|
||||||
if (XCB_FIND_COMPONENTS)
|
|
||||||
set(comps ${XCB_FIND_COMPONENTS})
|
|
||||||
else()
|
|
||||||
set(comps ${knownComponents})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# iterate through the list of requested components, and check that we know them all.
|
|
||||||
# If not, fail.
|
|
||||||
foreach(comp ${comps})
|
|
||||||
list(FIND knownComponents ${comp} index )
|
|
||||||
if("${index}" STREQUAL "-1")
|
|
||||||
list(APPEND unknownComponents "${comp}")
|
|
||||||
else()
|
|
||||||
if("${comp}" STREQUAL "XCB")
|
|
||||||
list(APPEND pkgConfigModules "xcb")
|
|
||||||
elseif("${comp}" STREQUAL "COMPOSITE")
|
|
||||||
list(APPEND pkgConfigModules "xcb-composite")
|
|
||||||
elseif("${comp}" STREQUAL "DAMAGE")
|
|
||||||
list(APPEND pkgConfigModules "xcb-damage")
|
|
||||||
elseif("${comp}" STREQUAL "DRI2")
|
|
||||||
list(APPEND pkgConfigModules "xcb-dri2")
|
|
||||||
elseif("${comp}" STREQUAL "EWMH")
|
|
||||||
list(APPEND pkgConfigModules "xcb-ewmh")
|
|
||||||
elseif("${comp}" STREQUAL "GLX")
|
|
||||||
list(APPEND pkgConfigModules "xcb-glx")
|
|
||||||
elseif("${comp}" STREQUAL "ICCCM")
|
|
||||||
list(APPEND pkgConfigModules "xcb-icccm")
|
|
||||||
elseif("${comp}" STREQUAL "IMAGE")
|
|
||||||
list(APPEND pkgConfigModules "xcb-image")
|
|
||||||
elseif("${comp}" STREQUAL "KEYSYMS")
|
|
||||||
list(APPEND pkgConfigModules "xcb-keysyms")
|
|
||||||
elseif("${comp}" STREQUAL "RANDR")
|
|
||||||
list(APPEND pkgConfigModules "xcb-randr")
|
|
||||||
elseif("${comp}" STREQUAL "RENDER")
|
|
||||||
list(APPEND pkgConfigModules "xcb-render")
|
|
||||||
elseif("${comp}" STREQUAL "RENDERUTIL")
|
|
||||||
list(APPEND pkgConfigModules "xcb-renderutil")
|
|
||||||
elseif("${comp}" STREQUAL "SHAPE")
|
|
||||||
list(APPEND pkgConfigModules "xcb-shape")
|
|
||||||
elseif("${comp}" STREQUAL "SHM")
|
|
||||||
list(APPEND pkgConfigModules "xcb-shm")
|
|
||||||
elseif("${comp}" STREQUAL "SYNC")
|
|
||||||
list(APPEND pkgConfigModules "xcb-sync")
|
|
||||||
elseif("${comp}" STREQUAL "UTIL")
|
|
||||||
list(APPEND pkgConfigModules "xcb-util")
|
|
||||||
elseif("${comp}" STREQUAL "XFIXES")
|
|
||||||
list(APPEND pkgConfigModules "xcb-xfixes")
|
|
||||||
elseif("${comp}" STREQUAL "XTEST")
|
|
||||||
list(APPEND pkgConfigModules "xcb-xtest")
|
|
||||||
elseif("${comp}" STREQUAL "XV")
|
|
||||||
list(APPEND pkgConfigModules "xcb-xv")
|
|
||||||
elseif("${comp}" STREQUAL "XINERAMA")
|
|
||||||
list(APPEND pkgConfigModules "xcb-xinerama")
|
|
||||||
elseif("${comp}" STREQUAL "XKB")
|
|
||||||
list(APPEND pkgConfigModules "xcb-xkb")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
|
|
||||||
if(DEFINED unknownComponents)
|
|
||||||
set(msgType STATUS)
|
|
||||||
if(XCB_FIND_REQUIRED)
|
|
||||||
set(msgType FATAL_ERROR)
|
|
||||||
endif()
|
|
||||||
if(NOT XCB_FIND_QUIETLY)
|
|
||||||
message(${msgType} "XCB: requested unknown components ${unknownComponents}")
|
|
||||||
endif()
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
macro(_XCB_HANDLE_COMPONENT _comp)
|
|
||||||
set(_header )
|
|
||||||
set(_lib )
|
|
||||||
if("${_comp}" STREQUAL "XCB")
|
|
||||||
set(_header "xcb/xcb.h")
|
|
||||||
set(_lib "xcb")
|
|
||||||
elseif("${_comp}" STREQUAL "COMPOSITE")
|
|
||||||
set(_header "xcb/composite.h")
|
|
||||||
set(_lib "xcb-composite")
|
|
||||||
elseif("${_comp}" STREQUAL "DAMAGE")
|
|
||||||
set(_header "xcb/damage.h")
|
|
||||||
set(_lib "xcb-damage")
|
|
||||||
elseif("${_comp}" STREQUAL "DRI2")
|
|
||||||
set(_header "xcb/dri2.h")
|
|
||||||
set(_lib "xcb-dri2")
|
|
||||||
elseif("${_comp}" STREQUAL "EWMH")
|
|
||||||
set(_header "xcb/xcb_ewmh.h")
|
|
||||||
set(_lib "xcb-ewmh")
|
|
||||||
elseif("${_comp}" STREQUAL "GLX")
|
|
||||||
set(_header "xcb/glx.h")
|
|
||||||
set(_lib "xcb-glx")
|
|
||||||
elseif("${_comp}" STREQUAL "ICCCM")
|
|
||||||
set(_header "xcb/xcb_icccm.h")
|
|
||||||
set(_lib "xcb-icccm")
|
|
||||||
elseif("${_comp}" STREQUAL "IMAGE")
|
|
||||||
set(_header "xcb/xcb_image.h")
|
|
||||||
set(_lib "xcb-image")
|
|
||||||
elseif("${_comp}" STREQUAL "KEYSYMS")
|
|
||||||
set(_header "xcb/xcb_keysyms.h")
|
|
||||||
set(_lib "xcb-keysyms")
|
|
||||||
elseif("${_comp}" STREQUAL "RANDR")
|
|
||||||
set(_header "xcb/randr.h")
|
|
||||||
set(_lib "xcb-randr")
|
|
||||||
elseif("${_comp}" STREQUAL "RENDER")
|
|
||||||
set(_header "xcb/render.h")
|
|
||||||
set(_lib "xcb-render")
|
|
||||||
elseif("${_comp}" STREQUAL "RENDERUTIL")
|
|
||||||
set(_header "xcb/xcb_renderutil.h")
|
|
||||||
set(_lib "xcb-render-util")
|
|
||||||
elseif("${_comp}" STREQUAL "SHAPE")
|
|
||||||
set(_header "xcb/shape.h")
|
|
||||||
set(_lib "xcb-shape")
|
|
||||||
elseif("${_comp}" STREQUAL "SHM")
|
|
||||||
set(_header "xcb/shm.h")
|
|
||||||
set(_lib "xcb-shm")
|
|
||||||
elseif("${_comp}" STREQUAL "SYNC")
|
|
||||||
set(_header "xcb/sync.h")
|
|
||||||
set(_lib "xcb-sync")
|
|
||||||
elseif("${_comp}" STREQUAL "UTIL")
|
|
||||||
set(_header "xcb/xcb_util.h")
|
|
||||||
set(_lib "xcb-util")
|
|
||||||
elseif("${_comp}" STREQUAL "XFIXES")
|
|
||||||
set(_header "xcb/xfixes.h")
|
|
||||||
set(_lib "xcb-xfixes")
|
|
||||||
elseif("${_comp}" STREQUAL "XTEST")
|
|
||||||
set(_header "xcb/xtest.h")
|
|
||||||
set(_lib "xcb-xtest")
|
|
||||||
elseif("${_comp}" STREQUAL "XV")
|
|
||||||
set(_header "xcb/xv.h")
|
|
||||||
set(_lib "xcb-xv")
|
|
||||||
elseif("${_comp}" STREQUAL "XINERAMA")
|
|
||||||
set(_header "xcb/xinerama.h")
|
|
||||||
set(_lib "xcb-xinerama")
|
|
||||||
elseif("${_comp}" STREQUAL "XKB")
|
|
||||||
set(_header "xcb/xkb.h")
|
|
||||||
set(_lib "xcb-xkb")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_path(XCB_${_comp}_INCLUDE_DIR NAMES ${_header} HINTS ${PKG_XCB_INCLUDE_DIRS})
|
|
||||||
find_library(XCB_${_comp}_LIBRARY NAMES ${_lib} HINTS ${PKG_XCB_LIBRARY_DIRS})
|
|
||||||
|
|
||||||
if(XCB_${_comp}_INCLUDE_DIR AND XCB_${_comp}_LIBRARY)
|
|
||||||
list(APPEND XCB_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR})
|
|
||||||
list(APPEND XCB_LIBRARIES ${XCB_${_comp}_LIBRARY})
|
|
||||||
if (NOT XCB_FIND_QUIETLY)
|
|
||||||
message(STATUS "XCB[${_comp}]: Found component ${_comp}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(XCB_FIND_REQUIRED_${_comp})
|
|
||||||
list(APPEND requiredComponents XCB_${_comp}_FOUND)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package_handle_standard_args(XCB_${_comp} DEFAULT_MSG XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR)
|
|
||||||
|
|
||||||
# compatibility for old variable naming
|
|
||||||
set(XCB_${_comp}_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR})
|
|
||||||
set(XCB_${_comp}_LIBRARIES ${XCB_${_comp}_LIBRARY})
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
IF (NOT WIN32)
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# Use pkg-config to get the directories and then use these values
|
|
||||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
|
||||||
find_package(PkgConfig)
|
|
||||||
pkg_check_modules(PKG_XCB QUIET ${pkgConfigModules})
|
|
||||||
|
|
||||||
set(XCB_DEFINITIONS ${PKG_XCB_CFLAGS})
|
|
||||||
|
|
||||||
foreach(comp ${comps})
|
|
||||||
_xcb_handle_component(${comp})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if(XCB_INCLUDE_DIRS)
|
|
||||||
list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS ${requiredComponents})
|
|
||||||
|
|
||||||
# compatibility for old variable naming
|
|
||||||
set(XCB_INCLUDE_DIR ${XCB_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
ENDIF (NOT WIN32)
|
|
@ -4,15 +4,15 @@
|
|||||||
|
|
||||||
set(MODULES_LEFT "bspwm i3")
|
set(MODULES_LEFT "bspwm i3")
|
||||||
set(MODULES_CENTER "mpd")
|
set(MODULES_CENTER "mpd")
|
||||||
set(MODULES_RIGHT "xbacklight volume xkeyboard memory cpu wlan eth battery temperature date powermenu")
|
set(MODULES_RIGHT "filesystem xbacklight volume xkeyboard memory cpu wlan eth battery temperature date powermenu")
|
||||||
|
|
||||||
set(FONT_FIXED "fixed:pixelsize=10")
|
set(FONT_FIXED "fixed:pixelsize=10")
|
||||||
set(FONT_UNIFONT "unifont:fontformat=truetype")
|
set(FONT_UNIFONT "unifont:fontformat=truetype")
|
||||||
set(FONT_SIJI "siji:pixelsize=10")
|
set(FONT_SIJI "siji:pixelsize=10")
|
||||||
|
|
||||||
font_query(FONT_FIXED "${FONT_FIXED}" FIELDS family pixelsize)
|
queryfont(FONT_FIXED ${FONT_FIXED} FIELDS family pixelsize)
|
||||||
font_query(FONT_UNIFONT "${FONT_UNIFONT}" FIELDS family fontformat)
|
queryfont(FONT_UNIFONT ${FONT_UNIFONT} FIELDS family fontformat)
|
||||||
font_query(FONT_SIJI "${FONT_SIJI}" FIELDS family pixelsize)
|
queryfont(FONT_SIJI ${FONT_SIJI} FIELDS family pixelsize)
|
||||||
|
|
||||||
# Strip disabled modules {{{
|
# Strip disabled modules {{{
|
||||||
|
|
||||||
|
@ -91,12 +91,9 @@ type = internal/fs
|
|||||||
interval = 25
|
interval = 25
|
||||||
|
|
||||||
mount-0 = /
|
mount-0 = /
|
||||||
mount-1 = /home
|
|
||||||
mount-2 = /invalid/mountpoint
|
|
||||||
|
|
||||||
label-mounted = %mountpoint%: %percentage_free%%
|
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
label-unmounted = %mountpoint%: not mounted
|
|
||||||
label-unmounted-foreground = ${colors.foreground-alt}
|
label-unmounted-foreground = ${colors.foreground-alt}
|
||||||
|
|
||||||
[module/bspwm]
|
[module/bspwm]
|
||||||
|
38
include/CMakeLists.txt
Normal file
38
include/CMakeLists.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#
|
||||||
|
# Generate settings.hpp
|
||||||
|
#
|
||||||
|
|
||||||
|
list(APPEND dirs ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
if(WITH_XRANDR)
|
||||||
|
list(APPEND XPP_EXTENSION_LIST xpp::randr::extension)
|
||||||
|
endif()
|
||||||
|
if(WITH_XRENDER)
|
||||||
|
list(APPEND XPP_EXTENSION_LIST xpp::render::extension)
|
||||||
|
endif()
|
||||||
|
if(WITH_XDAMAGE)
|
||||||
|
list(APPEND XPP_EXTENSION_LIST xpp::damage::extension)
|
||||||
|
endif()
|
||||||
|
if(WITH_XSYNC)
|
||||||
|
list(APPEND XPP_EXTENSION_LIST xpp::sync::extension)
|
||||||
|
endif()
|
||||||
|
if(WITH_XCOMPOSITE)
|
||||||
|
list(APPEND XPP_EXTENSION_LIST xpp::composite::extension)
|
||||||
|
endif()
|
||||||
|
if(WITH_XKB)
|
||||||
|
list(APPEND XPP_EXTENSION_LIST xpp::xkb::extension)
|
||||||
|
endif()
|
||||||
|
string(REPLACE ";" ", " XPP_EXTENSION_LIST "${XPP_EXTENSION_LIST}")
|
||||||
|
|
||||||
|
execute_process(COMMAND git describe --tags --dirty=-git
|
||||||
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE APP_VERSION
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
settings.hpp.cmake
|
||||||
|
settings.hpp
|
||||||
|
ESCAPE_QUOTES @ONLY)
|
||||||
|
|
||||||
|
set(libs ${libs} PARENT_SCOPE)
|
||||||
|
set(dirs ${dirs} PARENT_SCOPE)
|
@ -9,7 +9,7 @@
|
|||||||
#include "utils/env.hpp"
|
#include "utils/env.hpp"
|
||||||
#include "utils/file.hpp"
|
#include "utils/file.hpp"
|
||||||
#include "utils/string.hpp"
|
#include "utils/string.hpp"
|
||||||
#ifdef WITH_XRM
|
#if WITH_XRM
|
||||||
#include "x11/xresources.hpp"
|
#include "x11/xresources.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -284,12 +284,12 @@ class config {
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
T dereference_xrdb(string var) const {
|
T dereference_xrdb(string var) const {
|
||||||
size_t pos;
|
size_t pos;
|
||||||
#ifndef WITH_XRM
|
#if not WITH_XRM
|
||||||
m_log.warn("No built-in support for xrdb (requires xcb-util-xrm). Using default value for `%s`", var);
|
m_log.warn("No built-in support for xrdb (requires xcb-util-xrm). Using default value for `%s`", var);
|
||||||
if ((pos = var.find(":")) != string::npos) {
|
if ((pos = var.find(":")) != string::npos) {
|
||||||
return var.substr(pos + 1);
|
return convert<T>(var.substr(pos + 1));
|
||||||
}
|
}
|
||||||
return fallback;
|
return convert<T>("");
|
||||||
#else
|
#else
|
||||||
if (!m_xrm) {
|
if (!m_xrm) {
|
||||||
throw application_error("xrm is not initialized");
|
throw application_error("xrm is not initialized");
|
||||||
@ -346,7 +346,7 @@ class config {
|
|||||||
string m_file;
|
string m_file;
|
||||||
string m_barname;
|
string m_barname;
|
||||||
sectionmap_t m_sections{};
|
sectionmap_t m_sections{};
|
||||||
#ifdef WITH_XRM
|
#if WITH_XRM
|
||||||
unique_ptr<xresource_manager> m_xrm;
|
unique_ptr<xresource_manager> m_xrm;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -28,13 +28,13 @@
|
|||||||
#cmakedefine01 WITH_XRM
|
#cmakedefine01 WITH_XRM
|
||||||
|
|
||||||
#if WITH_XRANDR
|
#if WITH_XRANDR
|
||||||
#cmakedefine01 ENABLE_XRANDR_MONITORS
|
#cmakedefine01 WITH_XRANDR_MONITORS
|
||||||
#else
|
#else
|
||||||
#define ENABLE_XRANDR_MONITORS 0
|
#define WITH_XRANDR_MONITORS 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if WITH_XKB
|
#if WITH_XKB
|
||||||
#define ENABLE_XKEYBOARD 1
|
#cmakedefine01 ENABLE_XKEYBOARD
|
||||||
#else
|
#else
|
||||||
#define ENABLE_XKEYBOARD 0
|
#define ENABLE_XKEYBOARD 0
|
||||||
#endif
|
#endif
|
||||||
@ -104,7 +104,7 @@ const auto print_build_info = [](bool extended = false) {
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
printf("X extensions: %crandr (%cmonitors) %crender %cdamage %csync %ccomposite %cxkb %cxrm\n",
|
printf("X extensions: %crandr (%cmonitors) %crender %cdamage %csync %ccomposite %cxkb %cxrm\n",
|
||||||
(WITH_XRANDR ? '+' : '-'),
|
(WITH_XRANDR ? '+' : '-'),
|
||||||
(ENABLE_XRANDR_MONITORS ? '+' : '-'),
|
(WITH_XRANDR_MONITORS ? '+' : '-'),
|
||||||
(WITH_XRENDER ? '+' : '-'),
|
(WITH_XRENDER ? '+' : '-'),
|
||||||
(WITH_XDAMAGE ? '+' : '-'),
|
(WITH_XDAMAGE ? '+' : '-'),
|
||||||
(WITH_XSYNC ? '+' : '-'),
|
(WITH_XSYNC ? '+' : '-'),
|
||||||
|
47
lib/CMakeLists.txt
Normal file
47
lib/CMakeLists.txt
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#
|
||||||
|
# Configure libs
|
||||||
|
#
|
||||||
|
|
||||||
|
# Library: concurrentqueue {{{
|
||||||
|
|
||||||
|
list(APPEND dirs ${CMAKE_CURRENT_LIST_DIR}/concurrentqueue/include)
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
# Library: xpp {{{
|
||||||
|
|
||||||
|
if(WITH_XRANDR)
|
||||||
|
list(APPEND XCB_PROTOS randr)
|
||||||
|
endif()
|
||||||
|
if(WITH_XRENDER)
|
||||||
|
list(APPEND XCB_PROTOS render)
|
||||||
|
endif()
|
||||||
|
if(WITH_XDAMAGE)
|
||||||
|
list(APPEND XCB_PROTOS damage)
|
||||||
|
endif()
|
||||||
|
if(WITH_XSYNC)
|
||||||
|
list(APPEND XCB_PROTOS sync)
|
||||||
|
endif()
|
||||||
|
if(WITH_XCOMPOSITE)
|
||||||
|
list(APPEND XCB_PROTOS composite)
|
||||||
|
endif()
|
||||||
|
if(WITH_XKB)
|
||||||
|
list(APPEND XCB_PROTOS xkb)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(xpp)
|
||||||
|
list(APPEND libs ${XPP_LIBRARIES})
|
||||||
|
list(APPEND dirs ${XPP_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
# Library: i3ipcpp {{{
|
||||||
|
|
||||||
|
if(ENABLE_I3)
|
||||||
|
add_subdirectory(i3ipcpp)
|
||||||
|
list(APPEND libs ${I3IPCPP_LIBRARIES})
|
||||||
|
list(APPEND dirs ${I3IPCPP_INCLUDE_DIRS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# }}}
|
||||||
|
|
||||||
|
set(libs ${libs} PARENT_SCOPE)
|
||||||
|
set(dirs ${dirs} PARENT_SCOPE)
|
@ -1,171 +1,83 @@
|
|||||||
#
|
#
|
||||||
# Create executable
|
# Configure src
|
||||||
#
|
#
|
||||||
|
|
||||||
file(GLOB_RECURSE SOURCES RELATIVE ${PROJECT_SOURCE_DIR}/src *.c[p]*)
|
# Source tree {{{
|
||||||
list(REMOVE_ITEM SOURCES ipc.cpp)
|
|
||||||
|
|
||||||
# Locate dependencies {{{
|
file(GLOB_RECURSE files RELATIVE ${CMAKE_CURRENT_LIST_DIR} *.c[p]*)
|
||||||
|
list(REMOVE_ITEM files ipc.cpp)
|
||||||
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
if(NOT ENABLE_ALSA)
|
||||||
find_package(PkgConfig)
|
list(REMOVE_ITEM files modules/volume.cpp)
|
||||||
find_package(Threads REQUIRED)
|
list(REMOVE_ITEM files adapters/alsa/control.cpp)
|
||||||
pkg_check_modules(CAIRO REQUIRED cairo-fc)
|
list(REMOVE_ITEM files adapters/alsa/mixer.cpp)
|
||||||
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${CAIRO_LIBRARIES})
|
|
||||||
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/include)
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/lib/concurrentqueue/include)
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${CAIRO_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
# xpp library
|
|
||||||
set(XCB_PROTOS xproto)
|
|
||||||
if(WITH_XRANDR)
|
|
||||||
if(ENABLE_XRANDR_MONITORS)
|
|
||||||
pkg_check_modules(XRANDR REQUIRED xrandr>=1.5.0 randrproto>=1.5.0 xcb-proto>=1.12)
|
|
||||||
endif()
|
endif()
|
||||||
set(XCB_PROTOS "${XCB_PROTOS}" randr)
|
if(NOT ENABLE_CURL)
|
||||||
set(XPP_EXTENSION_LIST ${XPP_EXTENSION_LIST} xpp::randr::extension)
|
list(REMOVE_ITEM files modules/github.cpp)
|
||||||
else()
|
list(REMOVE_ITEM files utils/http.cpp)
|
||||||
list(REMOVE_ITEM SOURCES x11/extensions/randr.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_XRENDER)
|
if(NOT ENABLE_MPD)
|
||||||
set(XCB_PROTOS "${XCB_PROTOS}" render)
|
list(REMOVE_ITEM files modules/mpd.cpp)
|
||||||
set(XPP_EXTENSION_LIST ${XPP_EXTENSION_LIST} xpp::render::extension)
|
list(REMOVE_ITEM files adapters/mpd.cpp)
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES x11/extensions/render.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_XDAMAGE)
|
if(NOT ENABLE_NETWORK)
|
||||||
set(XCB_PROTOS "${XCB_PROTOS}" damage)
|
list(REMOVE_ITEM files modules/network.cpp)
|
||||||
set(XPP_EXTENSION_LIST ${XPP_EXTENSION_LIST} xpp::damage::extension)
|
list(REMOVE_ITEM files adapters/net.cpp)
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES x11/extensions/damage.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_XSYNC)
|
if(NOT ENABLE_I3)
|
||||||
set(XCB_PROTOS "${XCB_PROTOS}" sync)
|
list(REMOVE_ITEM files modules/i3.cpp)
|
||||||
set(XPP_EXTENSION_LIST ${XPP_EXTENSION_LIST} xpp::sync::extension)
|
list(REMOVE_ITEM files utils/i3.cpp)
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES x11/extensions/sync.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_XCOMPOSITE)
|
if(NOT WITH_XRANDR)
|
||||||
set(XCB_PROTOS "${XCB_PROTOS}" composite)
|
list(REMOVE_ITEM files x11/extensions/randr.cpp)
|
||||||
set(XPP_EXTENSION_LIST ${XPP_EXTENSION_LIST} xpp::composite::extension)
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES x11/extensions/composite.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_XKB)
|
if(NOT WITH_XRENDER)
|
||||||
set(XCB_PROTOS "${XCB_PROTOS}" xkb)
|
list(REMOVE_ITEM files x11/extensions/render.cpp)
|
||||||
set(XPP_EXTENSION_LIST ${XPP_EXTENSION_LIST} xpp::xkb::extension)
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES x11/extensions/xkb.cpp modules/xkeyboard.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_XRM)
|
if(NOT WITH_XDAMAGE)
|
||||||
pkg_check_modules(XCB_UTIL_XRM REQUIRED xcb-xrm)
|
list(REMOVE_ITEM files x11/extensions/damage.cpp)
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${XCB_UTIL_XRM_LIBRARIES})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${XCB_UTIL_XRM_INCLUDE_DIRS})
|
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT WITH_XSYNC)
|
||||||
string(REPLACE ";" ", " XPP_EXTENSION_LIST "${XPP_EXTENSION_LIST}")
|
list(REMOVE_ITEM files x11/extensions/sync.cpp)
|
||||||
|
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/lib/xpp ${PROJECT_BINARY_DIR}/lib/xpp)
|
|
||||||
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${XPP_LIBRARIES})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${XPP_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Optional dependency: alsalib {{{
|
|
||||||
|
|
||||||
if(ENABLE_ALSA)
|
|
||||||
find_package(ALSA REQUIRED)
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${ALSA_LIBRARY})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${ALSA_INCLUDE_DIR})
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES adapters/alsa/mixer.cpp adapters/alsa/control.cpp modules/volume.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT WITH_XCOMPOSITE)
|
||||||
# }}}
|
list(REMOVE_ITEM files x11/extensions/composite.cpp)
|
||||||
# Optional dependency: libmpdclient {{{
|
|
||||||
|
|
||||||
if(ENABLE_MPD)
|
|
||||||
find_package(LibMPDClient REQUIRED)
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${LIBMPDCLIENT_LIBRARY})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${LIBMPDCLIENT_INCLUDE_DIR})
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES adapters/mpd.cpp modules/mpd.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT WITH_XKB)
|
||||||
# }}}
|
list(REMOVE_ITEM files x11/extensions/xkb.cpp)
|
||||||
# Optional dependency: libiw {{{
|
|
||||||
|
|
||||||
if(ENABLE_NETWORK)
|
|
||||||
find_package(Libiw REQUIRED)
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${LIBIW_LIBRARY})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${LIBIW_INCLUDE_DIR})
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES adapters/net.cpp modules/network.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT WITH_XRM)
|
||||||
# }}}
|
list(REMOVE_ITEM files x11/xresources.cpp)
|
||||||
# Optional dependency: i3ipcpp {{{
|
|
||||||
|
|
||||||
if(ENABLE_I3)
|
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/lib/i3ipcpp ${PROJECT_BINARY_DIR}/lib/i3ipcpp)
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${I3IPCPP_LIBRARIES})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${I3IPCPP_INCLUDE_DIRS})
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES modules/i3.cpp utils/i3.cpp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# }}}
|
|
||||||
# Optional dependency: libcurl {{{
|
|
||||||
|
|
||||||
if(ENABLE_CURL)
|
|
||||||
find_package(CURL REQUIRED)
|
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} ${CURL_LIBRARY})
|
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} ${CURL_INCLUDE_DIR})
|
|
||||||
else()
|
|
||||||
list(REMOVE_ITEM SOURCES utils/http.cpp modules/github.cpp)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Create executable target {{{
|
# Target: polybar {{{
|
||||||
|
|
||||||
make_executable(${PROJECT_NAME} SOURCES
|
make_executable(polybar
|
||||||
${SOURCES}
|
SOURCES
|
||||||
|
${files}
|
||||||
INCLUDE_DIRS
|
INCLUDE_DIRS
|
||||||
${APP_INCLUDE_DIRS}
|
${dirs}
|
||||||
RAW_DEPENDS
|
RAW_DEPENDS
|
||||||
${APP_LIBRARIES})
|
${libs}
|
||||||
|
Threads::Threads)
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} Threads::Threads)
|
target_compile_options(polybar PUBLIC $<$<CXX_COMPILER_ID:GNU>:$<$<CONFIG:MinSizeRel>:-flto>>)
|
||||||
|
|
||||||
target_compile_options(${PROJECT_NAME} PUBLIC
|
|
||||||
$<$<CXX_COMPILER_ID:GNU>:$<$<CONFIG:MinSizeRel>:-flto>>)
|
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
# Create executable target: ipc messager {{{
|
# Target: polybar-msg {{{
|
||||||
|
|
||||||
if(BUILD_IPC_MSG)
|
if(BUILD_IPC_MSG)
|
||||||
make_executable(${PROJECT_NAME}-msg SOURCES ipc.cpp utils/env.cpp utils/file.cpp)
|
make_executable(polybar-msg
|
||||||
target_compile_options(${PROJECT_NAME}-msg PUBLIC
|
SOURCES
|
||||||
$<$<CXX_COMPILER_ID:GNU>:$<$<CONFIG:MinSizeRel>:-flto>>)
|
ipc.cpp
|
||||||
|
utils/env.cpp
|
||||||
|
utils/file.cpp)
|
||||||
|
target_compile_options(polybar-msg PUBLIC $<$<CXX_COMPILER_ID:GNU>:$<$<CONFIG:MinSizeRel>:-flto>>)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
set(APP_BINARY ${PROJECT_SOURCE_DIR}/bin/${PROJECT_NAME} PARENT_SCOPE)
|
set(libs ${libs} PARENT_SCOPE)
|
||||||
set(APP_LIBRARIES ${APP_LIBRARIES} PARENT_SCOPE)
|
set(dirs ${dirs} PARENT_SCOPE)
|
||||||
set(APP_INCLUDE_DIRS ${APP_INCLUDE_DIRS} PARENT_SCOPE)
|
|
||||||
|
|
||||||
execute_process(COMMAND git describe --tags --dirty=-git
|
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
||||||
OUTPUT_VARIABLE APP_VERSION
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
|
||||||
|
|
||||||
configure_file(
|
|
||||||
${PROJECT_SOURCE_DIR}/include/settings.hpp.cmake
|
|
||||||
${CMAKE_SOURCE_DIR}/include/settings.hpp
|
|
||||||
ESCAPE_QUOTES @ONLY)
|
|
||||||
|
@ -123,7 +123,7 @@ void config::parse_file() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_XRM
|
#if WITH_XRM
|
||||||
// Initialize the xresource manage if there are any xrdb refs
|
// Initialize the xresource manage if there are any xrdb refs
|
||||||
// present in the configuration
|
// present in the configuration
|
||||||
if (!m_xrm && value.find("${xrdb") != string::npos) {
|
if (!m_xrm && value.find("${xrdb") != string::npos) {
|
||||||
|
@ -79,7 +79,7 @@ int main(int argc, char** argv) {
|
|||||||
//==================================================
|
//==================================================
|
||||||
if (cli->has("list-monitors")) {
|
if (cli->has("list-monitors")) {
|
||||||
for (auto&& mon : randr_util::get_monitors(conn, conn.root(), true)) {
|
for (auto&& mon : randr_util::get_monitors(conn, conn.root(), true)) {
|
||||||
if (ENABLE_XRANDR_MONITORS && mon->output == XCB_NONE) {
|
if (WITH_XRANDR_MONITORS && mon->output == XCB_NONE) {
|
||||||
printf("%s: %ix%i+%i+%i (XRandR monitor)\n", mon->name.c_str(), mon->w, mon->h, mon->x, mon->y);
|
printf("%s: %ix%i+%i+%i (XRandR monitor)\n", mon->name.c_str(), mon->w, mon->h, mon->x, mon->y);
|
||||||
} else {
|
} else {
|
||||||
printf("%s: %ix%i+%i+%i\n", mon->name.c_str(), mon->w, mon->h, mon->x, mon->y);
|
printf("%s: %ix%i+%i+%i\n", mon->name.c_str(), mon->w, mon->h, mon->x, mon->y);
|
||||||
|
@ -55,7 +55,7 @@ namespace randr_util {
|
|||||||
* Check for XRandR monitor support
|
* Check for XRandR monitor support
|
||||||
*/
|
*/
|
||||||
bool check_monitor_support() {
|
bool check_monitor_support() {
|
||||||
return ENABLE_XRANDR_MONITORS && g_major_version >= 1 && g_minor_version >= 5;
|
return WITH_XRANDR_MONITORS && g_major_version >= 1 && g_minor_version >= 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -85,7 +85,7 @@ namespace randr_util {
|
|||||||
return monitors;
|
return monitors;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_XRANDR_MONITORS
|
#if WITH_XRANDR_MONITORS
|
||||||
if (check_monitor_support()) {
|
if (check_monitor_support()) {
|
||||||
for (auto&& mon : conn.get_monitors(root, true).monitors()) {
|
for (auto&& mon : conn.get_monitors(root, true).monitors()) {
|
||||||
try {
|
try {
|
||||||
@ -110,7 +110,7 @@ namespace randr_util {
|
|||||||
auto name_iter = info.name();
|
auto name_iter = info.name();
|
||||||
string name{name_iter.begin(), name_iter.end()};
|
string name{name_iter.begin(), name_iter.end()};
|
||||||
|
|
||||||
#if ENABLE_XRANDR_MONITORS
|
#if WITH_XRANDR_MONITORS
|
||||||
if (check_monitor_support()) {
|
if (check_monitor_support()) {
|
||||||
auto mon = std::find_if(
|
auto mon = std::find_if(
|
||||||
monitors.begin(), monitors.end(), [&name](const monitor_t& mon) { return mon->name == name; });
|
monitors.begin(), monitors.end(), [&name](const monitor_t& mon) { return mon->name == name; });
|
||||||
|
@ -9,15 +9,12 @@
|
|||||||
#include "utils/math.hpp"
|
#include "utils/math.hpp"
|
||||||
#include "utils/memory.hpp"
|
#include "utils/memory.hpp"
|
||||||
#include "utils/process.hpp"
|
#include "utils/process.hpp"
|
||||||
#include "x11/atoms.hpp"
|
|
||||||
#include "x11/connection.hpp"
|
|
||||||
#include "x11/ewmh.hpp"
|
#include "x11/ewmh.hpp"
|
||||||
#include "x11/icccm.hpp"
|
#include "x11/icccm.hpp"
|
||||||
#include "x11/tray_manager.hpp"
|
#include "x11/tray_manager.hpp"
|
||||||
#include "x11/window.hpp"
|
#include "x11/window.hpp"
|
||||||
#include "x11/winspec.hpp"
|
#include "x11/winspec.hpp"
|
||||||
#include "x11/xembed.hpp"
|
#include "x11/xembed.hpp"
|
||||||
#include "x11/xresources.hpp"
|
|
||||||
|
|
||||||
// ====================================================================================================
|
// ====================================================================================================
|
||||||
//
|
//
|
||||||
|
@ -3,25 +3,22 @@
|
|||||||
#
|
#
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -include common/test.hpp")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -include common/test.hpp")
|
||||||
|
|
||||||
include_directories(
|
link_libraries(${libs})
|
||||||
${APP_INCLUDE_DIRS}
|
include_directories(${dirs})
|
||||||
${PROJECT_SOURCE_DIR}/src
|
include_directories(${PROJECT_SOURCE_DIR}/src)
|
||||||
${CMAKE_CURRENT_LIST_DIR}
|
include_directories(${CMAKE_CURRENT_LIST_DIR})
|
||||||
${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
link_libraries(${APP_LIBRARIES})
|
|
||||||
|
|
||||||
function(unit_test file)
|
function(unit_test file)
|
||||||
string(REPLACE "/" "_" testname ${file})
|
string(REPLACE "/" "_" testname ${file})
|
||||||
add_executable(unit_test.${testname} ${CMAKE_CURRENT_LIST_DIR}/unit_tests/${file}.cpp ${SOURCE_DEPS})
|
add_executable(unit_test.${testname} unit_tests/${file}.cpp)
|
||||||
add_test(unit_test.${testname} unit_test.${testname})
|
add_test(unit_test.${testname} unit_test.${testname})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
unit_test("utils/color")
|
unit_test(utils/color)
|
||||||
unit_test("utils/math")
|
unit_test(utils/math)
|
||||||
unit_test("utils/memory")
|
unit_test(utils/memory)
|
||||||
unit_test("utils/string")
|
unit_test(utils/string)
|
||||||
unit_test("components/command_line")
|
unit_test(components/command_line)
|
||||||
#unit_test("x11/color")
|
|
||||||
|
|
||||||
# XXX: Requires mocked xcb connection
|
# XXX: Requires mocked xcb connection
|
||||||
#unit_test("x11/connection")
|
#unit_test("x11/connection")
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
#include <csignal>
|
|
||||||
|
|
||||||
#include "utils/color.hpp"
|
|
||||||
#include "x11/color.cpp"
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
using namespace polybar;
|
|
||||||
|
|
||||||
"color"_test = [] {
|
|
||||||
color test{"#33990022"};
|
|
||||||
expect(color_util::hex<unsigned char>(test) == "#1E0006");
|
|
||||||
expect(color_util::hex<unsigned short int>(test) == "#33990022");
|
|
||||||
};
|
|
||||||
|
|
||||||
"channels"_test = [] {
|
|
||||||
color test{"#eefb9281"};
|
|
||||||
expect(color_util::alpha_channel<unsigned char>(test) == 0xee);
|
|
||||||
expect(color_util::red_channel<unsigned char>(test) == 0xfb);
|
|
||||||
expect(color_util::green_channel<unsigned char>(test) == 0x92);
|
|
||||||
expect(color_util::blue_channel<unsigned char>(test) == 0x81);
|
|
||||||
};
|
|
||||||
|
|
||||||
"base"_test = [] {
|
|
||||||
color test{"#eefb9281"};
|
|
||||||
auto hex = color_util::hex<unsigned char>(test);
|
|
||||||
expect(std::strtoul(&hex[0], 0, 16) == 0x0);
|
|
||||||
};
|
|
||||||
|
|
||||||
"cache"_test = [] {
|
|
||||||
expect(g_colorstore.size() == size_t{0});
|
|
||||||
auto c1 = color::parse("#100");
|
|
||||||
expect(g_colorstore.size() == size_t{1});
|
|
||||||
auto c2 = color::parse("#200");
|
|
||||||
expect(g_colorstore.size() == size_t{2});
|
|
||||||
auto c3 = color::parse("#200");
|
|
||||||
expect(g_colorstore.size() == size_t{2});
|
|
||||||
expect((unsigned int)g_colorstore.find("#100")->second == (unsigned int)c1);
|
|
||||||
};
|
|
||||||
|
|
||||||
"predefined"_test = [] {
|
|
||||||
expect(color_util::hex<unsigned short int>(g_colorblack) == "#FF000000");
|
|
||||||
expect(color_util::hex<unsigned short int>(g_colorwhite) == "#FFFFFFFF");
|
|
||||||
};
|
|
||||||
|
|
||||||
"parse"_test = [] {
|
|
||||||
expect(color_util::hex<unsigned short int>(color::parse("#ff9900", g_colorblack)) == "#FFFF9900");
|
|
||||||
expect(color_util::hex<unsigned short int>(color::parse("invalid", g_colorwhite)) == "#FFFFFFFF");
|
|
||||||
expect(color_util::hex<unsigned char>(color::parse("33990022", g_colorwhite)) == "#1E0006");
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user