blob: 35e47a9675a209c0cba1e810c9b17fcec4fa21f7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
cmake_minimum_required(VERSION 3.10)
project (
ark
VERSION 0.1
LANGUAGES C)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_BUILD_TYPE Debug)
if(NOT TARGET wlroots_build)
set(WLROOTS_VERSION "0.18")
set(WLROOTS_URL "https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/${WLROOTS_VERSION}/wlroots-${WLROOTS_VERSION}.tar.gz")
set(WLROOTS_SOURCE_DIR "${CMAKE_BINARY_DIR}/wlroots-src")
set(WLROOTS_BUILD_DIR "${CMAKE_BINARY_DIR}/wlroots")
set(WLROOTS_LIB_STATIC "${WLROOTS_BUILD_DIR}/libwlroots-${WLROOTS_VERSION}.a")
set(WLROOTS_LIB_LINK "${WLROOTS_BUILD_DIR}/libwlroots.a")
add_custom_command(
OUTPUT "${WLROOTS_LIB_LINK}"
COMMAND sh -c "if [ ! -d \"$1\" ]; then mkdir -p \"$1\" && curl -L \"$2\" | tar xzf - --strip-components=1 -C \"$1\"; fi" sh "${WLROOTS_SOURCE_DIR}" "${WLROOTS_URL}"
COMMAND "${CMAKE_COMMAND}" -E make_directory "${WLROOTS_BUILD_DIR}"
COMMAND meson setup --reconfigure -Ddefault_library=static "${WLROOTS_BUILD_DIR}" "${WLROOTS_SOURCE_DIR}"
COMMAND meson compile -C "${WLROOTS_BUILD_DIR}"
COMMAND "${CMAKE_COMMAND}" -E create_symlink "${WLROOTS_LIB_STATIC}" "${WLROOTS_LIB_LINK}"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
COMMENT "Building wlroots via Meson (static)"
VERBATIM
)
add_custom_target(wlroots_build ALL DEPENDS "${WLROOTS_LIB_LINK}")
endif()
include_directories(include/ /usr/include/pixman-1
${CMAKE_CURRENT_BINARY_DIR}/
${WLROOTS_SOURCE_DIR}/include
${WLROOTS_BUILD_DIR}/include
${WLROOTS_BUILD_DIR}/protocol
)
add_definitions(-DWLR_USE_UNSTABLE)
execute_process(
COMMAND pkg-config --variable=pkgdatadir wayland-protocols
OUTPUT_VARIABLE WAYLAND_PROTOCOLS
RESULT_VARIABLE ec
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(${ec} EQUAL 0)
else()
message(FATAL_ERROR "Failed to execute pkg-config")
endif()
execute_process(
COMMAND pkg-config --variable=wayland_scanner wayland-scanner
OUTPUT_VARIABLE WAYLAND_SCANNER
RESULT_VARIABLE ec
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(${ec} EQUAL 0)
else()
message(FATAL_ERROR "Failed to execute pkg-config")
endif()
add_custom_command(
OUTPUT xdg-shell-protocol.h
COMMAND ${WAYLAND_SCANNER} server-header
${WAYLAND_PROTOCOLS}/stable/xdg-shell/xdg-shell.xml
xdg-shell-protocol.h
)
add_custom_command(
OUTPUT xdg-shell-protocol.c
COMMAND ${WAYLAND_SCANNER} private-code
${WAYLAND_PROTOCOLS}/stable/xdg-shell/xdg-shell.xml
xdg-shell-protocol.c
DEPENDS xdg-shell-protocol.h
)
file (GLOB_RECURSE SOURCES src/*.c)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(PkgConfig REQUIRED)
pkg_check_modules(WLREQ REQUIRED IMPORTED_TARGET
wayland-server
wayland-client
wayland-egl
wayland-cursor
xkbcommon
pixman-1
libinput
libudev
libseat
libdrm
gbm
egl
glesv2
)
add_executable (ark ${SOURCES} ${WLROOTS_LIB_LINK}
xdg-shell-protocol.c)
target_link_libraries(ark PRIVATE PkgConfig::WLREQ dl pthread ${WLROOTS_LIB_LINK})
pkg_check_modules(WLOPT IMPORTED_TARGET
cairo
lcms2
libdisplay-info
libliftoff
vulkan
xwayland
xcb
xcb-composite
xcb-dri3
xcb-errors
xcb-ewmh
xcb-icccm
xcb-present
xcb-render
xcb-renderutil
xcb-res
xcb-shm
xcb-xfixes
xcb-xinput
)
if(WLOPT_FOUND)
target_link_libraries(ark PRIVATE PkgConfig::WLOPT)
endif()
target_link_directories(ark PUBLIC
"${WLROOTS_BUILD_DIR}")
target_link_options(ark PRIVATE -rdynamic)
|