<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hi Petr,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I've noticed that ZLIB::ZLIB ends up in the INTERFACE_LINK_LIBRARIES target property for LLVMSupport in LLVMExports.cmake in the install tree. This means that an external project doing find_package(LLVM) and linking against LLVMSupport will get a dependency
 against ZLIB::ZLIB target which is not defined in that external dependency and thus result in a failure:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span>  Target "Foo" links to target "ZLIB::ZLIB" but the target was<br>
</span>
<div>  not found.  Perhaps a find_package() call is missing for an IMPORTED<br>
</div>
<span>  target, or an ALIAS target is missing?</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I would expect that INTERFACE_LINK_LIBRARIES in an export file to only list libraries and no imported target since it's meant for external consumption. Does that make sense? If yes, do you have an idea of what could cause this?</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Best regards,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thomas<br>
</div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> llvm-commits <llvm-commits-bounces@lists.llvm.org> on behalf of Petr Hosek via Phabricator via llvm-commits <llvm-commits@lists.llvm.org><br>
<b>Sent:</b> 29 February 2020 19:10<br>
<b>To:</b> phosek@google.com <phosek@google.com>; compnerd@compnerd.org <compnerd@compnerd.org>; smeenai@fb.com <smeenai@fb.com><br>
<b>Cc:</b> llvm-commits@lists.llvm.org <llvm-commits@lists.llvm.org>; zturner@roblox.com <zturner@roblox.com>; hiraditya@msn.com <hiraditya@msn.com><br>
<b>Subject:</b> [PATCH] D74176: [CMake] Link against ZLIB::ZLIB</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">     [This message was sent from somebody outside of your organisation]<br>
<br>
<br>
<br>
This revision was automatically updated to reflect the committed changes.<br>
phosek marked an inline comment as done.<br>
Closed by commit rG2181bf40d871: [CMake] Link against ZLIB::ZLIB (authored by phosek).<br>
<br>
Repository:<br>
  rG LLVM Github Monorepo<br>
<br>
CHANGES SINCE LAST ACTION<br>
  <a href="https://reviews.llvm.org/D74176/new/">https://reviews.llvm.org/D74176/new/</a><br>
<br>
<a href="https://reviews.llvm.org/D74176">https://reviews.llvm.org/D74176</a><br>
<br>
Files:<br>
  llvm/lib/Support/CMakeLists.txt<br>
<br>
<br>
Index: llvm/lib/Support/CMakeLists.txt<br>
===================================================================<br>
--- llvm/lib/Support/CMakeLists.txt<br>
+++ llvm/lib/Support/CMakeLists.txt<br>
@@ -1,5 +1,5 @@<br>
 if(LLVM_ENABLE_ZLIB)<br>
-  set(system_libs ${ZLIB_LIBRARY})<br>
+  set(imported_libs ZLIB::ZLIB)<br>
 endif()<br>
<br>
 if( MSVC OR MINGW )<br>
@@ -186,10 +186,29 @@<br>
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/ADT<br>
   ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support<br>
   ${Backtrace_INCLUDE_DIRS}<br>
-  LINK_LIBS ${system_libs} ${delayload_flags} ${Z3_LINK_FILES}<br>
+  LINK_LIBS ${system_libs} ${imported_libs} ${delayload_flags} ${Z3_LINK_FILES}<br>
   )<br>
<br>
-set_property(TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS "${system_libs}")<br>
+set(llvm_system_libs ${system_libs})<br>
+<br>
+if(LLVM_ENABLE_ZLIB)<br>
+  string(TOUPPER ${CMAKE_BUILD_TYPE} build_type)<br>
+  get_property(zlib_library TARGET ZLIB::ZLIB PROPERTY LOCATION_${build_type})<br>
+  if(NOT zlib_library)<br>
+    get_property(zlib_library TARGET ZLIB::ZLIB PROPERTY LOCATION)<br>
+  endif()<br>
+  get_filename_component(zlib_library ${zlib_library} NAME)<br>
+  if(zlib_library MATCHES "^${CMAKE_STATIC_LIBRARY_PREFIX}.*${CMAKE_STATIC_LIBRARY_SUFFIX}$")<br>
+    STRING(REGEX REPLACE "^${CMAKE_STATIC_LIBRARY_PREFIX}" "" zlib_library ${zlib_library})<br>
+    STRING(REGEX REPLACE "${CMAKE_STATIC_LIBRARY_SUFFIX}$" "" zlib_library ${zlib_library})<br>
+  elseif(zlib_library MATCHES "^${CMAKE_SHARED_LIBRARY_PREFIX}.*${CMAKE_SHARED_LIBRARY_SUFFIX}$")<br>
+    STRING(REGEX REPLACE "^${CMAKE_SHARED_LIBRARY_PREFIX}" "" zlib_library ${zlib_library})<br>
+    STRING(REGEX REPLACE "${CMAKE_SHARED_LIBRARY_SUFFIX}$" "" zlib_library ${zlib_library})<br>
+  endif()<br>
+  set(llvm_system_libs ${llvm_system_libs} "${zlib_library}")<br>
+endif()<br>
+<br>
+set_property(TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS "${llvm_system_libs}")<br>
<br>
 if(LLVM_WITH_Z3)<br>
   target_include_directories(LLVMSupport SYSTEM<br>
<br>
<br>
</div>
</span></font></div>
</body>
</html>