# `llbuild` requires various products to link against `curses`; Gentoo doesn't
# offer `curses` as an alias for `ncurses`, so `llbuild` has to link against
# `ncurses` explicitly. `ncurses` on Gentoo also doesn't expose the `curses`
# terminfo database interface (e.g., `set_curterm`, `del_curterm`, etc.), so we
# have to also explicitly link against `tinfo`.

--- a/llbuild/Package.swift
+++ b/llbuild/Package.swift
@@ -227,7 +227,8 @@ let package = Package(
             path: "lib/llvm/Support",
             linkerSettings: [
                 .linkedLibrary("m", .when(platforms: [.linux])),
-                .linkedLibrary("ncurses", .when(platforms: [.linux, .macOS, .android]))]
+                .linkedLibrary("ncurses", .when(platforms: [.linux, .macOS, .android])),
+                .linkedLibrary("tinfo", .when(platforms: [.linux]))]
         ),
     ],
     cxxLanguageStandard: .cxx14
--- a/llbuild/lib/llvm/Support/CMakeLists.txt
+++ b/llbuild/lib/llvm/Support/CMakeLists.txt
@@ -65,5 +65,5 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
 endif()
 
 if(${CMAKE_SYSTEM_NAME} MATCHES "Android|Darwin|Linux")
-  target_link_libraries(llvmSupport PRIVATE curses)
+  target_link_libraries(llvmSupport PRIVATE ncurses tinfo)
 endif()
--- a/llbuild/products/libllbuild/CMakeLists.txt
+++ b/llbuild/products/libllbuild/CMakeLists.txt
@@ -28,7 +28,7 @@ endif()
 
 if(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
   target_link_libraries(libllbuild PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
 
 target_include_directories(libllbuild
@@ -79,7 +79,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
     llbuildNinja
     llvmSupport
     SQLite::SQLite3
-    curses)
+    ncurses tinfo)
 
   # Manually set up the remaining framework structure.
   set(LLBUILD_FW_INPUTS)
--- a/llbuild/products/llbuild/CMakeLists.txt
+++ b/llbuild/products/llbuild/CMakeLists.txt
@@ -16,5 +16,5 @@ endif()
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(llbuild PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
--- a/llbuild/products/swift-build-tool/CMakeLists.txt
+++ b/llbuild/products/swift-build-tool/CMakeLists.txt
@@ -10,7 +10,7 @@ target_link_libraries(swift-build-tool PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(swift-build-tool PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
 
 install(TARGETS swift-build-tool
--- a/llbuild/unittests/Basic/CMakeLists.txt
+++ b/llbuild/unittests/Basic/CMakeLists.txt
@@ -14,5 +14,5 @@ target_link_libraries(BasicTests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(BasicTests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
--- a/llbuild/unittests/BuildSystem/CMakeLists.txt
+++ b/llbuild/unittests/BuildSystem/CMakeLists.txt
@@ -16,5 +16,5 @@ target_link_libraries(BuildSystemTests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(BuildSystemTests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
--- a/llbuild/unittests/CAPI/CMakeLists.txt
+++ b/llbuild/unittests/CAPI/CMakeLists.txt
@@ -15,5 +15,5 @@ target_link_libraries(CAPITests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(CAPITests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
--- a/llbuild/unittests/CAS/CMakeLists.txt
+++ b/llbuild/unittests/CAS/CMakeLists.txt
@@ -8,6 +8,6 @@ target_link_libraries(CASTests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(CASTests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
 
--- a/llbuild/unittests/Core/CMakeLists.txt
+++ b/llbuild/unittests/Core/CMakeLists.txt
@@ -15,6 +15,6 @@ target_link_libraries(CoreTests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(CoreTests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
 
--- a/llbuild/unittests/Evo/CMakeLists.txt
+++ b/llbuild/unittests/Evo/CMakeLists.txt
@@ -11,6 +11,6 @@ target_link_libraries(EvoTests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(EvoTests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
 
--- a/llbuild/unittests/Ninja/CMakeLists.txt
+++ b/llbuild/unittests/Ninja/CMakeLists.txt
@@ -8,5 +8,5 @@ target_link_libraries(NinjaTests PRIVATE
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(NinjaTests PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
--- a/llbuild/utils/adjust-times/CMakeLists.txt
+++ b/llbuild/utils/adjust-times/CMakeLists.txt
@@ -7,5 +7,5 @@ target_link_libraries(adjust-times PRIVATE llvmSupport)
 
 if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
   target_link_libraries(adjust-times PRIVATE
-    curses)
+    ncurses tinfo)
 endif()
