aboutsummaryrefslogtreecommitdiff
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
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.
-rw-r--r--.gitmodules4
-rw-r--r--CMakeLists.txt17
-rw-r--r--plug/package.yaml3
-rw-r--r--rt/CMakeLists.txt33
m---------wlroots0
5 files changed, 30 insertions, 27 deletions
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 7b3b29a..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,4 +0,0 @@
-[submodule "wlroots"]
- path = wlroots
- url = https://gitlab.freedesktop.org/wlroots/wlroots.git
- branch = 0.18.0
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ab7aad2..848c090 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,22 +1,6 @@
cmake_minimum_required(VERSION 3.16)
project(montis LANGUAGES C)
-set(WLROOTS_SOURCE_DIR "${CMAKE_SOURCE_DIR}/wlroots")
-set(WLROOTS_BUILD_DIR "${CMAKE_BINARY_DIR}/wlroots")
-set(WLROOTS_LIB_STATIC "${WLROOTS_BUILD_DIR}/libwlroots-0.18.a")
-set(WLROOTS_LIB_LINK "${WLROOTS_BUILD_DIR}/libwlroots.a")
-
-add_custom_command(
- OUTPUT "${WLROOTS_LIB_LINK}"
- 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}")
add_subdirectory(rt)
@@ -28,6 +12,7 @@ add_custom_target(
COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_BINARY_DIR}/stack-work"
COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CMAKE_BINARY_DIR}/stack-work" "${CMAKE_SOURCE_DIR}/plug/.stack-work"
COMMAND "${CMAKE_COMMAND}" -E chdir "${CMAKE_SOURCE_DIR}/plug" stack build
+ # Not sure why stack is generating an a.out file, but remove it.
COMMAND "${CMAKE_COMMAND}" -E rm -f "${CMAKE_SOURCE_DIR}/plug/a.out"
DEPENDS montis
COMMENT "Building Haskell plugin with Stack"
diff --git a/plug/package.yaml b/plug/package.yaml
index d109932..bd42ced 100644
--- a/plug/package.yaml
+++ b/plug/package.yaml
@@ -71,7 +71,8 @@ executables:
- -shared
- -I../build/
- -I../rt/include/
- - -I../wlroots/include
+ - -I../build/wlroots/include
+ - -I../build/wlroots-src/include
- -DWLR_USE_UNSTABLE
tests:
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)
diff --git a/wlroots b/wlroots
deleted file mode 160000
-Subproject 4666996b2a34b53899aedafcd3586fb1c7a16af