Author: rinrab
Date: Tue May 12 18:18:27 2026
New Revision: 1934149
Log:
Implement finding a curses library using a cmake MODULE. This also brings
support for the PDCurses backend, if one is installed.
* CMakeLists.txt
(SVN_ENABLE_TUI): Use find_package(CURSES) unless pkg-config mode is on.
* build/cmake/FindCURSES.cmake: New cmake module.
Added:
subversion/trunk/build/cmake/FindCURSES.cmake
Modified:
subversion/trunk/CMakeLists.txt
Modified: subversion/trunk/CMakeLists.txt
==============================================================================
--- subversion/trunk/CMakeLists.txt Tue May 12 18:17:41 2026
(r1934148)
+++ subversion/trunk/CMakeLists.txt Tue May 12 18:18:27 2026
(r1934149)
@@ -634,7 +634,8 @@ if (SVN_ENABLE_TUI)
pkg_check_modules(ncurses REQUIRED IMPORTED_TARGET ncurses)
target_link_libraries(external-ncurses INTERFACE PkgConfig::ncurses)
else()
- message(SEND_ERROR "not supported")
+ find_package(CURSES REQUIRED)
+ target_link_libraries(external-ncurses INTERFACE CURSES::CURSES)
endif()
endif()
Added: subversion/trunk/build/cmake/FindCURSES.cmake
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ subversion/trunk/build/cmake/FindCURSES.cmake Tue May 12 18:18:27
2026 (r1934149)
@@ -0,0 +1,52 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# FindCURSES.cmake -- Find the curses library
+#
+
+find_path(CURSES_INCLUDE_DIR
+ NAMES curses.h
+ PATH_SUFFIXES
+ include
+)
+
+find_library(CURSES_LIBRARY
+ NAMES ncurses pdcurses curses
+ PATH_SUFFIXES lib
+)
+
+mark_as_advanced(
+ CURSES_INCLUDE_DIR
+ CURSES_LIBRARY
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+ CURSES
+ REQUIRED_VARS
+ CURSES_INCLUDE_DIR
+ CURSES_LIBRARY
+)
+
+if (CURSES_FOUND)
+ add_library(CURSES::CURSES IMPORTED STATIC)
+ set_target_properties(CURSES::CURSES PROPERTIES
+ IMPORTED_LOCATION ${CURSES_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${CURSES_INCLUDE_DIR}
+ )
+endif()