diff options
| author | Josh Rahm <joshuarahm@gmail.com> | 2026-01-01 20:20:14 -0700 |
|---|---|---|
| committer | Josh Rahm <joshuarahm@gmail.com> | 2026-01-01 20:20:14 -0700 |
| commit | 88b5144ba82393e9efbffc8ba7ecc225d99dc9ed (patch) | |
| tree | ae04d8a78820876778545b5d066b32fd3aeb3e32 /rt | |
| parent | 10c542f7a991756f195742389e26ef56a2ec9361 (diff) | |
| download | montis-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.txt | 33 |
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) |