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 | |
| 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.
| -rw-r--r-- | .gitmodules | 4 | ||||
| -rw-r--r-- | CMakeLists.txt | 17 | ||||
| -rw-r--r-- | plug/package.yaml | 3 | ||||
| -rw-r--r-- | rt/CMakeLists.txt | 33 | ||||
| m--------- | wlroots | 0 |
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 |