2026-06-13 10:38:13 +02:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
2024-06-02 19:29:26 +02:00
|
|
|
set(CMAKE_C_STANDARD 11)
|
2026-06-13 10:38:13 +02:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Generate compile_commands.json for clangd" FORCE)
|
2024-06-02 19:29:26 +02:00
|
|
|
project(wlgol
|
2024-06-02 19:29:26 +02:00
|
|
|
VERSION 0.0.1
|
|
|
|
|
DESCRIPTION "Wayland Game Of Life"
|
|
|
|
|
LANGUAGES C)
|
2024-06-02 19:29:26 +02:00
|
|
|
|
2026-06-13 10:22:08 +02:00
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
|
pkg_check_modules(XKBCOMMON REQUIRED xkbcommon)
|
|
|
|
|
|
2024-06-02 19:29:26 +02:00
|
|
|
# Download xdg-shell.xml
|
|
|
|
|
# file(DOWNLOAD "https://cgit.freedesktop.org/wayland/wayland-protocols/plain/stable/xdg-shell/xdg-shell.xml" "${CMAKE_CURRENT_BINARY_DIR}/xdg-shell.xml")
|
|
|
|
|
|
|
|
|
|
# Generation of xdg-shell.h and xdg-shell.c
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/xdg-shell.h
|
|
|
|
|
COMMAND wayland-scanner client-header ${CMAKE_SOURCE_DIR}/xdg-shell.xml ${CMAKE_CURRENT_BINARY_DIR}/include/xdg-shell.h
|
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/xdg-shell.xml
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell.c
|
|
|
|
|
COMMAND wayland-scanner private-code ${CMAKE_SOURCE_DIR}/xdg-shell.xml ${CMAKE_CURRENT_BINARY_DIR}/xdg-shell.c
|
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/xdg-shell.xml
|
|
|
|
|
)
|
|
|
|
|
|
2026-11-08 14:46:04 +01:00
|
|
|
# viewporter
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/viewporter.h
|
|
|
|
|
COMMAND wayland-scanner client-header ${CMAKE_SOURCE_DIR}/viewporter.xml ${CMAKE_CURRENT_BINARY_DIR}/include/viewporter.h
|
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/viewporter.xml
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/viewporter.c
|
|
|
|
|
COMMAND wayland-scanner private-code ${CMAKE_SOURCE_DIR}/viewporter.xml ${CMAKE_CURRENT_BINARY_DIR}/viewporter.c
|
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/viewporter.xml
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# fractional-scale-v1
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/fractional-scale-v1.h
|
|
|
|
|
COMMAND wayland-scanner client-header ${CMAKE_SOURCE_DIR}/fractional-scale-v1.xml ${CMAKE_CURRENT_BINARY_DIR}/include/fractional-scale-v1.h
|
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/fractional-scale-v1.xml
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
add_custom_command(
|
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fractional-scale-v1.c
|
|
|
|
|
COMMAND wayland-scanner private-code ${CMAKE_SOURCE_DIR}/fractional-scale-v1.xml ${CMAKE_CURRENT_BINARY_DIR}/fractional-scale-v1.c
|
|
|
|
|
DEPENDS ${CMAKE_SOURCE_DIR}/fractional-scale-v1.xml
|
|
|
|
|
)
|
|
|
|
|
|
2024-06-02 19:29:26 +02:00
|
|
|
set(SOURCES
|
|
|
|
|
tkeyboard.c
|
2024-06-02 19:29:26 +02:00
|
|
|
tpointer.c
|
2026-11-08 14:46:04 +01:00
|
|
|
toml.c
|
|
|
|
|
config.c
|
|
|
|
|
grid.c
|
|
|
|
|
pattern.c
|
2024-06-02 19:29:26 +02:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/xdg-shell.c
|
2026-11-08 14:46:04 +01:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/viewporter.c
|
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/fractional-scale-v1.c
|
2024-06-02 19:29:26 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(GENHEADERS
|
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/xdg-shell.h
|
2026-11-08 14:46:04 +01:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/viewporter.h
|
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/fractional-scale-v1.h
|
2024-06-02 19:29:26 +02:00
|
|
|
)
|
|
|
|
|
|
2024-11-02 18:37:10 +01:00
|
|
|
add_executable(wlgol wlgol.c ${SOURCES} ${GENHEADERS})
|
2024-06-02 19:29:26 +02:00
|
|
|
|
|
|
|
|
target_include_directories(wlgol
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/include
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
2026-06-13 10:22:08 +02:00
|
|
|
PUBLIC ${XKBCOMMON_INCLUDE_DIRS}
|
2024-06-02 19:29:26 +02:00
|
|
|
)
|
|
|
|
|
|
2024-06-02 19:29:26 +02:00
|
|
|
target_link_libraries(wlgol
|
|
|
|
|
wayland-client
|
|
|
|
|
wayland-cursor
|
2026-11-08 14:46:04 +01:00
|
|
|
m
|
2026-06-13 10:22:08 +02:00
|
|
|
${XKBCOMMON_LIBRARIES}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_compile_options(wlgol PRIVATE
|
|
|
|
|
${XKBCOMMON_CFLAGS_OTHER}
|
2024-06-02 19:29:26 +02:00
|
|
|
)
|
2024-11-02 18:37:10 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enable_testing()
|
2026-11-08 14:46:04 +01:00
|
|
|
|
|
|
|
|
add_executable(test_config tests/test_config.c
|
|
|
|
|
${SOURCES}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(test_config
|
|
|
|
|
wayland-client
|
|
|
|
|
wayland-cursor
|
|
|
|
|
${XKBCOMMON_LIBRARIES}
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(test_config
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/include
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
|
|
PUBLIC ${XKBCOMMON_INCLUDE_DIRS}
|
|
|
|
|
)
|
|
|
|
|
target_compile_options(test_config PRIVATE
|
|
|
|
|
${XKBCOMMON_CFLAGS_OTHER}
|
|
|
|
|
)
|
|
|
|
|
add_test(NAME Config COMMAND test_config)
|
|
|
|
|
|
|
|
|
|
add_executable(test_grid tests/test_grid.c
|
|
|
|
|
${SOURCES}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(test_grid
|
|
|
|
|
wayland-client
|
|
|
|
|
wayland-cursor
|
|
|
|
|
m
|
|
|
|
|
${XKBCOMMON_LIBRARIES}
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(test_grid
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/include
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
|
|
PUBLIC ${XKBCOMMON_INCLUDE_DIRS}
|
|
|
|
|
)
|
|
|
|
|
target_compile_options(test_grid PRIVATE
|
|
|
|
|
${XKBCOMMON_CFLAGS_OTHER}
|
|
|
|
|
)
|
|
|
|
|
add_test(NAME Grid COMMAND test_grid)
|
|
|
|
|
|
|
|
|
|
add_executable(test_pattern tests/test_pattern.c
|
|
|
|
|
${SOURCES}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(test_pattern
|
|
|
|
|
wayland-client
|
|
|
|
|
wayland-cursor
|
|
|
|
|
m
|
|
|
|
|
${XKBCOMMON_LIBRARIES}
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(test_pattern
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/include
|
|
|
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
|
|
PUBLIC ${XKBCOMMON_INCLUDE_DIRS}
|
|
|
|
|
)
|
|
|
|
|
target_compile_options(test_pattern PRIVATE
|
|
|
|
|
${XKBCOMMON_CFLAGS_OTHER}
|
|
|
|
|
)
|
|
|
|
|
add_test(NAME Pattern COMMAND test_pattern)
|