[llvm] [cmake] Allow multiple LibEdit_LIBRARIES (PR #93896)

Romain Geissler via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 13 09:03:43 PDT 2024


Romain-Geissler-1A wrote:

In my case with a statically linked libedit (& ncurses/libtinfo) pkg-config (in static mode, with `--static`) is aware of the `-ltinfo` dependency. I was able to make my build work, without forcing `LibEdit_LIBRARIES` to any value, with a patch like this:

```
Author: Romain Geissler <romain.geissler at amadeus.com>
Date:   Tue Aug 13 02:22:31 2024 +0000
    
    Use include and libraries from libedit's pkg-config, which can be a list.

diff --git a/llvm/cmake/modules/FindLibEdit.cmake b/llvm/cmake/modules/FindLibEdit.cmake
index b3f49e1477f0..06266d05a24d 100644
--- a/llvm/cmake/modules/FindLibEdit.cmake
+++ b/llvm/cmake/modules/FindLibEdit.cmake
@@ -54,12 +54,16 @@ find_package_handle_standard_args(LibEdit
                                   REQUIRED_VARS
                                     LibEdit_INCLUDE_DIRS
                                     LibEdit_LIBRARIES
+                                    PC_LIBEDIT_LIBRARIES
+                                    PC_LIBEDIT_LIBDIR
+                                    PC_LIBEDIT_INCLUDE_DIRS
                                   VERSION_VAR
                                     LibEdit_VERSION_STRING)
 mark_as_advanced(LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES)

 if (LibEdit_FOUND AND NOT TARGET LibEdit::LibEdit)
   add_library(LibEdit::LibEdit INTERFACE IMPORTED)
-  target_link_libraries(LibEdit::LibEdit INTERFACE ${LibEdit_LIBRARIES})
-  target_include_directories(LibEdit::LibEdit INTERFACE ${LibEdit_INCLUDE_DIRS})
+  target_link_libraries(LibEdit::LibEdit INTERFACE ${PC_LIBEDIT_LIBRARIES})
+  target_link_directories(LibEdit::LibEdit INTERFACE ${PC_LIBEDIT_LIBDIR})
+  target_include_directories(LibEdit::LibEdit INTERFACE ${PC_LIBEDIT_INCLUDE_DIRS})
 endif()
```

However if I understand correctly your usage (forcing manually `LibEdit_LIBRARIES`) it would break you if something like was merged. I wonder what to do here (I don't really like the idea of manually providing `LibEdit_LIBRARIES` myself while it seems at least in some cases pkg-config is good enough to find the necessary libraries.

https://github.com/llvm/llvm-project/pull/93896


More information about the llvm-commits mailing list