aboutsummaryrefslogtreecommitdiff
path: root/rt
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2026-01-01 20:20:14 -0700
committerJosh Rahm <joshuarahm@gmail.com>2026-01-01 20:20:14 -0700
commit88b5144ba82393e9efbffc8ba7ecc225d99dc9ed (patch)
treeae04d8a78820876778545b5d066b32fd3aeb3e32 /rt
parent10c542f7a991756f195742389e26ef56a2ec9361 (diff)
downloadmontis-88b5144ba82393e9efbffc8ba7ecc225d99dc9ed.tar.gz
montis-88b5144ba82393e9efbffc8ba7ecc225d99dc9ed.tar.bz2
montis-88b5144ba82393e9efbffc8ba7ecc225d99dc9ed.zip
[refactor] Change the project to download wlroots rather than include it.
The build system will now just download wlroots directly rather than having it as a submodule. Submodules are really brittle and not well supported. This is the much more correct approach.
Diffstat (limited to 'rt')
-rw-r--r--rt/CMakeLists.txt33
1 files changed, 27 insertions, 6 deletions
diff --git a/rt/CMakeLists.txt b/rt/CMakeLists.txt
index 22025fb..742d2f0 100644
--- a/rt/CMakeLists.txt
+++ b/rt/CMakeLists.txt
@@ -7,10 +7,31 @@ project (
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_BUILD_TYPE Debug)
-include_directories(include/ ../wlroots/include /usr/include/pixman-1
+set(WLROOTS_VERSION "0.18")
+set(WLROOTS_URL "https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/${WLROOTS_VERSION}/wlroots-${WLROOTS_VERSION}.tar.gz")
+set(WLROOTS_TARBALL "${CMAKE_BINARY_DIR}/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
+)
+
+include_directories(include/ /usr/include/pixman-1
${CMAKE_CURRENT_BINARY_DIR}/
- ${CMAKE_CURRENT_BINARY_DIR}/../wlroots/include
- ${CMAKE_CURRENT_BINARY_DIR}/../wlroots/protocol
+ ${WLROOTS_SOURCE_DIR}/include
+ ${WLROOTS_BUILD_DIR}/include
+ ${WLROOTS_BUILD_DIR}/protocol
)
add_definitions(-DWLR_USE_UNSTABLE)
@@ -74,7 +95,7 @@ file (GLOB_RECURSE SOURCES src/*.c)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-add_executable (montis ${SOURCES} ${PLUGIN_LOAD} ${PLUGIN_INTF}
+add_executable (montis ${SOURCES} ${PLUGIN_LOAD} ${PLUGIN_INTF} ${WLROOTS_LIB_LINK}
xdg-shell-protocol.c)
find_package(PkgConfig REQUIRED)
@@ -95,7 +116,7 @@ pkg_check_modules(WLREQ REQUIRED IMPORTED_TARGET
glesv2
)
-target_link_libraries(montis PRIVATE PkgConfig::WLREQ dl wlroots pthread)
+target_link_libraries(montis PRIVATE PkgConfig::WLREQ dl pthread ${WLROOTS_LIB_LINK})
pkg_check_modules(WLOPT IMPORTED_TARGET
cairo
@@ -124,5 +145,5 @@ if(WLOPT_FOUND)
endif()
target_link_directories(montis PUBLIC
- "${CMAKE_CURRENT_BINARY_DIR}/../wlroots")
+ "${WLROOTS_BUILD_DIR}")
target_link_options(montis PRIVATE -rdynamic)