mirror of
https://github.com/hyprwm/Hyprland
synced 2025-12-20 02:30:03 +01:00
46 lines
1.7 KiB
CMake
46 lines
1.7 KiB
CMake
cmake_minimum_required(VERSION 3.19)
|
|
|
|
project(
|
|
hyprctl
|
|
DESCRIPTION "Control utility for Hyprland"
|
|
)
|
|
|
|
pkg_check_modules(hyprctl_deps REQUIRED IMPORTED_TARGET hyprutils>=0.2.4 hyprwire re2)
|
|
|
|
file(GLOB_RECURSE HYPRCTL_SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "hw-protocols/*.cpp" "include/*.hpp")
|
|
|
|
add_executable(hyprctl ${HYPRCTL_SRCFILES})
|
|
|
|
target_link_libraries(hyprctl PUBLIC PkgConfig::hyprctl_deps)
|
|
target_include_directories(hyprctl PRIVATE "hw-protocols")
|
|
|
|
# Hyprwire
|
|
|
|
function(hyprprotocol protoPath protoName)
|
|
set(path ${CMAKE_CURRENT_SOURCE_DIR}/${protoPath})
|
|
add_custom_command(
|
|
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/${protoName}-client.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/${protoName}-client.hpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/${protoName}-spec.hpp
|
|
COMMAND hyprwire-scanner --client ${path}/${protoName}.xml
|
|
${CMAKE_CURRENT_SOURCE_DIR}/hw-protocols/
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_sources(hyprctl PRIVATE hw-protocols/${protoName}-client.cpp
|
|
hw-protocols/${protoName}-client.hpp
|
|
hw-protocols/${protoName}-spec.hpp)
|
|
endfunction()
|
|
|
|
hyprprotocol(hw-protocols hyprpaper_core)
|
|
|
|
# binary
|
|
install(TARGETS hyprctl)
|
|
|
|
# shell completions
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hyprctl.bash
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/bash-completion/completions
|
|
RENAME hyprctl)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hyprctl.fish
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/fish/vendor_completions.d)
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hyprctl.zsh
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/zsh/site-functions
|
|
RENAME _hyprctl)
|