Простое окно

This commit is contained in:
Пытков Роман
2025-09-25 23:50:14 +03:00
parent 1698b43da6
commit 2332be6293
4 changed files with 142 additions and 40 deletions

View File

@@ -7,4 +7,44 @@ enable_language(ASM_NASM)
set(CMAKE_ASM_NASM_FLAGS "-f elf64")
set(CMAKE_ASM_NASM_FLAGS_DEBUG "-gdwarf")
add_executable(wayland asm.asm c.c)
find_package(PkgConfig REQUIRED)
# Находим программу wayland-scanner
find_program(WAYLAND_SCANNER wayland-scanner REQUIRED)
# Ищем директорию с протоколами Wayland
find_path(WAYLAND_PROTOCOLS_DIR
NAMES stable/xdg-shell/xdg-shell.xml
PATHS /usr/share/wayland-protocols /usr/local/share/wayland-protocols
REQUIRED
)
# Путь к протоколу xdg-shell
set(PROTOCOL_XML ${WAYLAND_PROTOCOLS_DIR}/stable/xdg-shell/xdg-shell.xml)
# Генерируем заголовочный файл протокола
add_custom_command(
OUTPUT xdg-shell-client-protocol.h
COMMAND ${WAYLAND_SCANNER} client-header ${PROTOCOL_XML} xdg-shell-client-protocol.h
DEPENDS ${PROTOCOL_XML}
)
# Генерируем исходный файл протокола
add_custom_command(
OUTPUT xdg-shell-client-protocol.c
COMMAND ${WAYLAND_SCANNER} private-code ${PROTOCOL_XML} xdg-shell-client-protocol.c
DEPENDS ${PROTOCOL_XML}
)
# Цель для генерации протокола
add_custom_target(generate-xdg-shell DEPENDS xdg-shell-client-protocol.h xdg-shell-client-protocol.c)
# Создаем исполняемый файл из ассемблерного, C и сгенерированного кода
add_executable(wayland asm.asm c.c xdg-shell-client-protocol.c)
# Зависимость от генерации протокола
add_dependencies(wayland generate-xdg-shell)
pkg_check_modules(WAYLAND_CLIENT REQUIRED wayland-client)
target_link_libraries(wayland ${WAYLAND_CLIENT_LIBRARIES})
target_include_directories(wayland PRIVATE ${WAYLAND_CLIENT_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})