cmake_minimum_required(VERSION 3.12) project(lunarwm VERSION 0.0.1 LANGUAGES C CXX) execute_process(COMMAND pkg-config --variable=pkgdatadir wayland-protocols OUTPUT_VARIABLE WAYLAND_PROTOCOLS OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND pkg-config --variable=wayland_scanner wayland-scanner OUTPUT_VARIABLE WAYLAND_SCANNER OUTPUT_STRIP_TRAILING_WHITESPACE) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-protocol.h COMMAND ${WAYLAND_SCANNER} server-header ${WAYLAND_PROTOCOLS}/stable/xdg-shell/xdg-shell.xml ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-protocol.h MAIN_DEPENDENCY ${WAYLAND_PROTOCOLS}/stable/xdg-shell/xdg-shell.xml COMMENT "Generating xdg-shell-protocol.h" ) add_custom_target(xdg_shell_proto DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-protocol.h ) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) add_compile_options(-Wall -Wextra -Wno-missing-field-initializers) add_compile_definitions( XR_USE_PLATFORM_XLIB XR_USE_GRAPHICS_API_OPENGL WLR_USE_UNSTABLE ) list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/cmake ) find_package(OpenGL REQUIRED) find_package(OpenXR REQUIRED) find_package(glm REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(Wlroots REQUIRED wlroots-0.19) pkg_check_modules(X11 REQUIRED x11) pkg_check_modules(wayland REQUIRED wayland-server wayland-protocols) include_directories( ${wayland_INCLUDE_DIRS} ${X11_INCLUDE_DIRS} ${GLM_INCLUDE_DIRS} ${Wlroots_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ) set(SOURCES src/wlr/backend.cpp src/wlr/output.cpp src/wlr/openxr_gl.cpp src/compositor.cpp src/main.cpp ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell-protocol.h ) add_executable(${PROJECT_NAME} ${SOURCES}) target_link_libraries(${PROJECT_NAME} OpenGL::GL openxr_loader ${wayland_LIBRARIES} ${X11_LIBRARIES} ${GLM_LIBRARIES} ${Wlroots_LIBRARIES} )